[{"data":1,"prerenderedAt":17993},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"blog-page-en":444,"blog-posts-en":461},[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":52,"body":446,"description":447,"extension":448,"meta":449,"navigation":450,"ogImage":446,"path":452,"schema":453,"seo":456,"stem":459,"__hash__":460},"blog/3.blog.yml",null,"Practical guides on building and deploying SaaS products without burning cash. Docker, Nuxt, Django, privacy-first web development, and the stuff we wish someone had told us when we started.","yml",{},{"icon":451},"i-lucide-newspaper","/blog",{"website":454},{"name":52,"description":455},"Articles about SaaS development, landing pages, and web development",{"title":457,"description":458},"Blog - SaaS Development, Infrastructure & Web Dev Tips | websideproject","Practical guides on building SaaS products, infrastructure deployment, Docker, Nuxt, Django, and privacy-first web development. Real-world solutions for founders.","3.blog","5kKRSRTL7RYcgQ3ogIy_7kxdMpF-mUr8Gyx-porersI",[462,2191,17728],{"id":463,"title":464,"authors":465,"badge":470,"body":472,"date":2176,"description":2177,"extension":2178,"image":2179,"meta":2181,"navigation":936,"ogImage":446,"path":2182,"published":936,"seo":2183,"stem":2184,"tags":2185,"__hash__":2190},"posts/3.blog/2.fix-nuxt-content-404.md","Nuxt Content 404 issues? One config can fix it",[466],{"name":467,"avatar":468},"Benjamin",{"src":469},"profile/benjamin.webp",{"label":471},"Guide",{"type":473,"value":474,"toc":2163},"minimark",[475,487,492,495,498,501,504,508,511,514,522,532,535,539,546,553,610,616,619,623,629,719,730,733,737,740,802,809,812,826,829,832,835,838,842,845,1180,1183,1188,1191,1304,1307,1309,1313,1316,2096,2100,2107,2110,2118,2121,2124,2130,2133,2137,2140,2143,2146,2148,2159],[476,477,480,484],"callout",{"color":478,"icon":479},"neutral","i-lucide-info",[481,482,483],"p",{},"This post is about prodction issue cause by prerendering.",[481,485,486],{},"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.",[488,489,491],"h2",{"id":490},"intro","Intro",[481,493,494],{},"Enabled prerendering today. I wanted to optimize the performance and the D1 db reads a bit.",[481,496,497],{},"Pushed to production and I was really lucky that someone reported a 404 error on my shared blog post on discord.",[481,499,500],{},"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.",[481,502,503],{},"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?",[488,505,507],{"id":506},"the-problem","The Problem",[481,509,510],{},"After poking around, I found it. The file exists. The route is there. But direct URLs 404.",[481,512,513],{},"Blog index to post? Works.\nDirect link or refresh? 404.",[481,515,516,517,521],{},"Took way too long to spot it. That extra ",[518,519,520],"code",{},"/"," at the end, just like an annoying comma in large codebase:",[481,523,524,525,528,529],{},"Navigate from index: ",[518,526,527],{},"/blog/my-post","\nHit the URL directly: ",[518,530,531],{},"/blog/my-post/",[481,533,534],{},"One character.",[488,536,538],{"id":537},"why-this-breaks","Why This Breaks",[481,540,541,542,545],{},"Prerendering creates ",[518,543,544],{},"/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.",[481,547,548,549,552],{},"Your Nuxt Content query uses ",[518,550,551],{},"route.path",":",[554,555,560],"pre",{"className":556,"code":557,"language":558,"meta":559,"style":559},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","queryCollection('posts').path(route.path).first()\n","typescript","",[518,561,562],{"__ignoreMap":559},[563,564,567,571,575,579,583,585,588,591,594,597,599,602,604,607],"span",{"class":565,"line":566},"line",1,[563,568,570],{"class":569},"s2Zo4","queryCollection",[563,572,574],{"class":573},"sTEyZ","(",[563,576,578],{"class":577},"sMK4o","'",[563,580,582],{"class":581},"sfazB","posts",[563,584,578],{"class":577},[563,586,587],{"class":573},")",[563,589,590],{"class":577},".",[563,592,593],{"class":569},"path",[563,595,596],{"class":573},"(route",[563,598,590],{"class":577},[563,600,601],{"class":573},"path)",[563,603,590],{"class":577},[563,605,606],{"class":569},"first",[563,608,609],{"class":573},"()\n",[481,611,612,613,615],{},"Route path is now ",[518,614,531],{}," (with slash). Content query looks for exact match. Finds nothing. Returns null. You get 404.",[481,617,618],{},"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.",[488,620,622],{"id":621},"the-fix","The Fix",[481,624,625,626,552],{},"One line in ",[518,627,628],{},"nuxt.config.ts",[554,630,634],{"className":556,"code":631,"highlights":632,"language":558,"meta":559,"style":559},"nitro: {\n  prerender: {\n    autoSubfolderIndex: false,\n    routes: ['/blog'],\n    crawlLinks: true\n  }\n}\n",[633],3,[518,635,636,647,657,673,696,707,713],{"__ignoreMap":559},[563,637,638,642,644],{"class":565,"line":566},[563,639,641],{"class":640},"sBMFI","nitro",[563,643,552],{"class":577},[563,645,646],{"class":577}," {\n",[563,648,650,653,655],{"class":565,"line":649},2,[563,651,652],{"class":640},"  prerender",[563,654,552],{"class":577},[563,656,646],{"class":577},[563,658,661,664,666,670],{"class":659,"line":633},[565,660],"highlight",[563,662,663],{"class":640},"    autoSubfolderIndex",[563,665,552],{"class":577},[563,667,669],{"class":668},"sfNiH"," false",[563,671,672],{"class":577},",\n",[563,674,676,679,681,685,687,689,691,694],{"class":565,"line":675},4,[563,677,678],{"class":640},"    routes",[563,680,552],{"class":577},[563,682,684],{"class":683},"swJcz"," [",[563,686,578],{"class":577},[563,688,452],{"class":581},[563,690,578],{"class":577},[563,692,693],{"class":683},"]",[563,695,672],{"class":577},[563,697,699,702,704],{"class":565,"line":698},5,[563,700,701],{"class":640},"    crawlLinks",[563,703,552],{"class":577},[563,705,706],{"class":668}," true\n",[563,708,710],{"class":565,"line":709},6,[563,711,712],{"class":577},"  }\n",[563,714,716],{"class":565,"line":715},7,[563,717,718],{"class":577},"}\n",[481,720,721,722,725,726,729],{},"That's it. This tells Nuxt to create ",[518,723,724],{},"/blog/post.html"," instead of ",[518,727,728],{},"/blog/post/index.html",". No subfolder, no index file, no trailing slash.",[481,731,732],{},"Refresh now? Works.",[488,734,736],{"id":735},"why-not-just-handle-it-in-code","Why Not Just Handle It in Code?",[481,738,739],{},"You could normalize the path in your component:",[554,741,743],{"className":556,"code":742,"language":558,"meta":559,"style":559},"const normalizedPath = computed(() => route.path.replace(/\\/$/, ''))\n",[518,744,745],{"__ignoreMap":559},[563,746,747,751,754,757,760,762,765,768,771,773,775,777,780,782,784,787,791,793,796,799],{"class":565,"line":566},[563,748,750],{"class":749},"spNyl","const",[563,752,753],{"class":573}," normalizedPath ",[563,755,756],{"class":577},"=",[563,758,759],{"class":569}," computed",[563,761,574],{"class":573},[563,763,764],{"class":577},"()",[563,766,767],{"class":749}," =>",[563,769,770],{"class":573}," route",[563,772,590],{"class":577},[563,774,593],{"class":573},[563,776,590],{"class":577},[563,778,779],{"class":569},"replace",[563,781,574],{"class":573},[563,783,520],{"class":577},[563,785,786],{"class":573},"\\/",[563,788,790],{"class":789},"s7zQu","$",[563,792,520],{"class":577},[563,794,795],{"class":577},",",[563,797,798],{"class":577}," ''",[563,800,801],{"class":573},"))\n",[481,803,804,805,590],{},"This makes both URLs work. But now you have a worse problem: ",[806,807,808],"strong",{},"split analytics",[481,810,811],{},"Umami (or GA, whatever you use) sees these as different pages:",[813,814,815,821],"ul",{},[816,817,818,820],"li",{},[518,819,527],{}," - 45 views",[816,822,823,825],{},[518,824,531],{}," - 23 views",[481,827,828],{},"Which one is the \"real\" number? Neither. You're splitting your traffic data for no reason.",[481,830,831],{},"Same with SEO. Google sees two URLs for the same content. Not ideal.",[481,833,834],{},"The config fix gives you one canonical URL. All traffic counts correctly. SEO stays clean. That's what you want.",[836,837],"hr",{},[488,839,841],{"id":840},"the-workaround-if-you-must","The Workaround (If You Must)",[481,843,844],{},"Actually I fixed like this first, but I was not satisfied with this approach. Here's how to handle it in code:",[554,846,854],{"className":847,"code":848,"highlights":849,"language":853,"meta":559,"style":559},"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",[715,850,851,852],13,14,15,"vue",[518,855,856,883,897,911,932,938,944,987,992,1020,1059,1072,1078,1097,1123,1137,1146,1151,1160,1165,1170],{"__ignoreMap":559},[563,857,858,861,864,867,870,872,875,878,880],{"class":565,"line":566},[563,859,860],{"class":577},"\u003C",[563,862,863],{"class":683},"script",[563,865,866],{"class":749}," setup",[563,868,869],{"class":749}," lang",[563,871,756],{"class":577},[563,873,874],{"class":577},"\"",[563,876,877],{"class":581},"ts",[563,879,874],{"class":577},[563,881,882],{"class":577},">\n",[563,884,885,887,890,892,895],{"class":565,"line":649},[563,886,750],{"class":749},[563,888,889],{"class":573}," route ",[563,891,756],{"class":577},[563,893,894],{"class":569}," useRoute",[563,896,609],{"class":573},[563,898,899,901,904,906,909],{"class":565,"line":633},[563,900,750],{"class":749},[563,902,903],{"class":573}," appConfig ",[563,905,756],{"class":577},[563,907,908],{"class":569}," useAppConfig",[563,910,609],{"class":573},[563,912,913,915,918,921,924,927,930],{"class":565,"line":675},[563,914,750],{"class":749},[563,916,917],{"class":577}," {",[563,919,920],{"class":573}," locale ",[563,922,923],{"class":577},"}",[563,925,926],{"class":577}," =",[563,928,929],{"class":569}," useI18n",[563,931,609],{"class":573},[563,933,934],{"class":565,"line":698},[563,935,937],{"emptyLinePlaceholder":936},true,"\n",[563,939,940],{"class":565,"line":709},[563,941,943],{"class":942},"sHwdD","// Normalize path by removing trailing slash\n",[563,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985],{"class":946,"line":715},[565,660],[563,948,750],{"class":749},[563,950,753],{"class":573},[563,952,756],{"class":577},[563,954,759],{"class":569},[563,956,574],{"class":573},[563,958,764],{"class":577},[563,960,767],{"class":749},[563,962,770],{"class":573},[563,964,590],{"class":577},[563,966,593],{"class":573},[563,968,590],{"class":577},[563,970,779],{"class":569},[563,972,574],{"class":573},[563,974,520],{"class":577},[563,976,786],{"class":573},[563,978,790],{"class":789},[563,980,520],{"class":577},[563,982,795],{"class":577},[563,984,798],{"class":577},[563,986,801],{"class":573},[563,988,990],{"class":565,"line":989},8,[563,991,937],{"emptyLinePlaceholder":936},[563,993,995,997,999,1002,1004,1007,1009,1011,1014,1017],{"class":565,"line":994},9,[563,996,750],{"class":749},[563,998,917],{"class":577},[563,1000,1001],{"class":683}," data",[563,1003,552],{"class":577},[563,1005,1006],{"class":573}," post ",[563,1008,923],{"class":577},[563,1010,926],{"class":577},[563,1012,1013],{"class":789}," await",[563,1015,1016],{"class":569}," useAsyncData",[563,1018,1019],{"class":573},"(\n",[563,1021,1023,1026,1029,1032,1035,1037,1040,1042,1045,1047,1050,1052,1054,1057],{"class":565,"line":1022},10,[563,1024,1025],{"class":577},"  `",[563,1027,1028],{"class":581},"blog-post-",[563,1030,1031],{"class":577},"${",[563,1033,1034],{"class":573},"normalizedPath",[563,1036,590],{"class":577},[563,1038,1039],{"class":573},"value",[563,1041,923],{"class":577},[563,1043,1044],{"class":581},"-",[563,1046,1031],{"class":577},[563,1048,1049],{"class":573},"locale",[563,1051,590],{"class":577},[563,1053,1039],{"class":573},[563,1055,1056],{"class":577},"}`",[563,1058,672],{"class":577},[563,1060,1062,1065,1068,1070],{"class":565,"line":1061},11,[563,1063,1064],{"class":749},"  async",[563,1066,1067],{"class":577}," ()",[563,1069,767],{"class":749},[563,1071,646],{"class":577},[563,1073,1075],{"class":565,"line":1074},12,[563,1076,1077],{"class":942},"    // Use normalized path for querying\n",[563,1079,1081,1084,1087,1089,1092,1094],{"class":1080,"line":850},[565,660],[563,1082,1083],{"class":749},"    const",[563,1085,1086],{"class":573}," path",[563,1088,926],{"class":577},[563,1090,1091],{"class":573}," normalizedPath",[563,1093,590],{"class":577},[563,1095,1096],{"class":573},"value\n",[563,1098,1100,1102,1105,1107,1109,1112,1114,1116,1118,1120],{"class":1099,"line":851},[565,660],[563,1101,1083],{"class":749},[563,1103,1104],{"class":573}," result",[563,1106,926],{"class":577},[563,1108,1013],{"class":789},[563,1110,1111],{"class":569}," queryCollection",[563,1113,574],{"class":683},[563,1115,578],{"class":577},[563,1117,582],{"class":581},[563,1119,578],{"class":577},[563,1121,1122],{"class":683},")\n",[563,1124,1126,1129,1131,1133,1135],{"class":1125,"line":852},[565,660],[563,1127,1128],{"class":577},"      .",[563,1130,593],{"class":569},[563,1132,574],{"class":683},[563,1134,593],{"class":573},[563,1136,1122],{"class":683},[563,1138,1140,1142,1144],{"class":565,"line":1139},16,[563,1141,1128],{"class":577},[563,1143,606],{"class":569},[563,1145,609],{"class":683},[563,1147,1149],{"class":565,"line":1148},17,[563,1150,937],{"emptyLinePlaceholder":936},[563,1152,1154,1157],{"class":565,"line":1153},18,[563,1155,1156],{"class":789},"    return",[563,1158,1159],{"class":573}," result\n",[563,1161,1163],{"class":565,"line":1162},19,[563,1164,712],{"class":577},[563,1166,1168],{"class":565,"line":1167},20,[563,1169,1122],{"class":573},[563,1171,1173,1176,1178],{"class":565,"line":1172},21,[563,1174,1175],{"class":577},"\u003C/",[563,1177,863],{"class":683},[563,1179,882],{"class":577},[481,1181,1182],{},"Both URLs work now. But analytics are still split. Not the solution I'd recommend.",[1184,1185,1187],"h3",{"id":1186},"performance-tip","Performance Tip",[481,1189,1190],{},"While you're here, add this to prevent client-side re-queries:",[554,1192,1195],{"className":556,"code":1193,"highlights":1194,"language":558,"meta":559,"style":559},"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",[715],[518,1196,1197,1219,1237,1247,1252,1257,1262,1296,1300],{"__ignoreMap":559},[563,1198,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217],{"class":565,"line":566},[563,1200,750],{"class":749},[563,1202,917],{"class":577},[563,1204,1001],{"class":683},[563,1206,552],{"class":577},[563,1208,1006],{"class":573},[563,1210,923],{"class":577},[563,1212,926],{"class":577},[563,1214,1013],{"class":789},[563,1216,1016],{"class":569},[563,1218,1019],{"class":573},[563,1220,1221,1223,1225,1227,1229,1231,1233,1235],{"class":565,"line":649},[563,1222,1025],{"class":577},[563,1224,1028],{"class":581},[563,1226,1031],{"class":577},[563,1228,1034],{"class":573},[563,1230,590],{"class":577},[563,1232,1039],{"class":573},[563,1234,1056],{"class":577},[563,1236,672],{"class":577},[563,1238,1239,1241,1243,1245],{"class":565,"line":633},[563,1240,1064],{"class":749},[563,1242,1067],{"class":577},[563,1244,767],{"class":749},[563,1246,646],{"class":577},[563,1248,1249],{"class":565,"line":675},[563,1250,1251],{"class":942},"    // query logic\n",[563,1253,1254],{"class":565,"line":698},[563,1255,1256],{"class":577},"  },\n",[563,1258,1259],{"class":565,"line":709},[563,1260,1261],{"class":577},"  {\n",[563,1263,1265,1268,1270,1273,1277,1279,1281,1284,1286,1288,1291,1293],{"class":1264,"line":715},[565,660],[563,1266,1267],{"class":569},"    getCachedData",[563,1269,552],{"class":577},[563,1271,1272],{"class":577}," (",[563,1274,1276],{"class":1275},"sHdIc","key",[563,1278,587],{"class":577},[563,1280,767],{"class":749},[563,1282,1283],{"class":569}," useNuxtApp",[563,1285,764],{"class":573},[563,1287,590],{"class":577},[563,1289,1290],{"class":573},"payload",[563,1292,590],{"class":577},[563,1294,1295],{"class":573},"data[key]\n",[563,1297,1298],{"class":565,"line":989},[563,1299,712],{"class":577},[563,1301,1302],{"class":565,"line":994},[563,1303,1122],{"class":573},[481,1305,1306],{},"This tells Nuxt to use the prerendered data instead of querying again on the client. Small optimization, but it adds up.",[836,1308],{},[488,1310,1312],{"id":1311},"complete-example","Complete Example",[481,1314,1315],{},"Here's a working blog setup with the config fix:",[1317,1318,1320,1661,1964],"code-tree",{"default-value":1319},"pages/blog/[slug].vue",[554,1321,1323],{"className":847,"code":1322,"filename":1319,"language":853,"meta":559,"style":559},"\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",[518,1324,1325,1345,1357,1361,1383,1402,1412,1430,1446,1454,1458,1462,1488,1492,1496,1500,1521,1563,1567,1575,1579,1588,1599,1620,1642,1652],{"__ignoreMap":559},[563,1326,1327,1329,1331,1333,1335,1337,1339,1341,1343],{"class":565,"line":566},[563,1328,860],{"class":577},[563,1330,863],{"class":683},[563,1332,866],{"class":749},[563,1334,869],{"class":749},[563,1336,756],{"class":577},[563,1338,874],{"class":577},[563,1340,877],{"class":581},[563,1342,874],{"class":577},[563,1344,882],{"class":577},[563,1346,1347,1349,1351,1353,1355],{"class":565,"line":649},[563,1348,750],{"class":749},[563,1350,889],{"class":573},[563,1352,756],{"class":577},[563,1354,894],{"class":569},[563,1356,609],{"class":573},[563,1358,1359],{"class":565,"line":633},[563,1360,937],{"emptyLinePlaceholder":936},[563,1362,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381],{"class":565,"line":675},[563,1364,750],{"class":749},[563,1366,917],{"class":577},[563,1368,1001],{"class":683},[563,1370,552],{"class":577},[563,1372,1006],{"class":573},[563,1374,923],{"class":577},[563,1376,926],{"class":577},[563,1378,1013],{"class":789},[563,1380,1016],{"class":569},[563,1382,1019],{"class":573},[563,1384,1385,1387,1389,1391,1394,1396,1398,1400],{"class":565,"line":698},[563,1386,1025],{"class":577},[563,1388,1028],{"class":581},[563,1390,1031],{"class":577},[563,1392,1393],{"class":573},"route",[563,1395,590],{"class":577},[563,1397,593],{"class":573},[563,1399,1056],{"class":577},[563,1401,672],{"class":577},[563,1403,1404,1406,1408,1410],{"class":565,"line":709},[563,1405,1064],{"class":749},[563,1407,1067],{"class":577},[563,1409,767],{"class":749},[563,1411,646],{"class":577},[563,1413,1414,1416,1418,1420,1422,1424,1426,1428],{"class":565,"line":715},[563,1415,1156],{"class":789},[563,1417,1013],{"class":789},[563,1419,1111],{"class":569},[563,1421,574],{"class":683},[563,1423,578],{"class":577},[563,1425,582],{"class":581},[563,1427,578],{"class":577},[563,1429,1122],{"class":683},[563,1431,1432,1434,1436,1438,1440,1442,1444],{"class":565,"line":989},[563,1433,1128],{"class":577},[563,1435,593],{"class":569},[563,1437,574],{"class":683},[563,1439,1393],{"class":573},[563,1441,590],{"class":577},[563,1443,593],{"class":573},[563,1445,1122],{"class":683},[563,1447,1448,1450,1452],{"class":565,"line":994},[563,1449,1128],{"class":577},[563,1451,606],{"class":569},[563,1453,609],{"class":683},[563,1455,1456],{"class":565,"line":1022},[563,1457,1256],{"class":577},[563,1459,1460],{"class":565,"line":1061},[563,1461,1261],{"class":577},[563,1463,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486],{"class":565,"line":1074},[563,1465,1267],{"class":569},[563,1467,552],{"class":577},[563,1469,1272],{"class":577},[563,1471,1276],{"class":1275},[563,1473,587],{"class":577},[563,1475,767],{"class":749},[563,1477,1283],{"class":569},[563,1479,764],{"class":573},[563,1481,590],{"class":577},[563,1483,1290],{"class":573},[563,1485,590],{"class":577},[563,1487,1295],{"class":573},[563,1489,1490],{"class":565,"line":850},[563,1491,712],{"class":577},[563,1493,1494],{"class":565,"line":851},[563,1495,1122],{"class":573},[563,1497,1498],{"class":565,"line":852},[563,1499,937],{"emptyLinePlaceholder":936},[563,1501,1502,1505,1507,1510,1513,1515,1518],{"class":565,"line":1139},[563,1503,1504],{"class":789},"if",[563,1506,1272],{"class":573},[563,1508,1509],{"class":577},"!",[563,1511,1512],{"class":573},"post",[563,1514,590],{"class":577},[563,1516,1517],{"class":573},"value) ",[563,1519,1520],{"class":577},"{\n",[563,1522,1523,1526,1529,1531,1534,1537,1539,1543,1545,1548,1550,1553,1556,1558,1561],{"class":565,"line":1148},[563,1524,1525],{"class":789},"  throw",[563,1527,1528],{"class":569}," createError",[563,1530,574],{"class":683},[563,1532,1533],{"class":577},"{",[563,1535,1536],{"class":683}," statusCode",[563,1538,552],{"class":577},[563,1540,1542],{"class":1541},"sbssI"," 404",[563,1544,795],{"class":577},[563,1546,1547],{"class":683}," statusMessage",[563,1549,552],{"class":577},[563,1551,1552],{"class":577}," '",[563,1554,1555],{"class":581},"Post not found",[563,1557,578],{"class":577},[563,1559,1560],{"class":577}," }",[563,1562,1122],{"class":683},[563,1564,1565],{"class":565,"line":1153},[563,1566,718],{"class":577},[563,1568,1569,1571,1573],{"class":565,"line":1162},[563,1570,1175],{"class":577},[563,1572,863],{"class":683},[563,1574,882],{"class":577},[563,1576,1577],{"class":565,"line":1167},[563,1578,937],{"emptyLinePlaceholder":936},[563,1580,1581,1583,1586],{"class":565,"line":1172},[563,1582,860],{"class":577},[563,1584,1585],{"class":683},"template",[563,1587,882],{"class":577},[563,1589,1591,1594,1597],{"class":565,"line":1590},22,[563,1592,1593],{"class":577},"  \u003C",[563,1595,1596],{"class":683},"div",[563,1598,882],{"class":577},[563,1600,1602,1605,1608,1611,1614,1616,1618],{"class":565,"line":1601},23,[563,1603,1604],{"class":577},"    \u003C",[563,1606,1607],{"class":683},"h1",[563,1609,1610],{"class":577},">",[563,1612,1613],{"class":573},"{{ post.title }}",[563,1615,1175],{"class":577},[563,1617,1607],{"class":683},[563,1619,882],{"class":577},[563,1621,1623,1625,1628,1631,1633,1635,1637,1639],{"class":565,"line":1622},24,[563,1624,1604],{"class":577},[563,1626,1627],{"class":683},"ContentRenderer",[563,1629,1630],{"class":749}," :value",[563,1632,756],{"class":577},[563,1634,874],{"class":577},[563,1636,1512],{"class":581},[563,1638,874],{"class":577},[563,1640,1641],{"class":577}," />\n",[563,1643,1645,1648,1650],{"class":565,"line":1644},25,[563,1646,1647],{"class":577},"  \u003C/",[563,1649,1596],{"class":683},[563,1651,882],{"class":577},[563,1653,1655,1657,1659],{"class":565,"line":1654},26,[563,1656,1175],{"class":577},[563,1658,1585],{"class":683},[563,1660,882],{"class":577},[554,1662,1665],{"className":556,"code":1663,"filename":1664,"language":558,"meta":559,"style":559},"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",[518,1666,1667,1700,1704,1724,1742,1759,1777,1794,1809,1818,1846,1852,1856,1871,1876,1889,1905,1921,1931,1937,1941,1945],{"__ignoreMap":559},[563,1668,1669,1672,1674,1677,1679,1682,1684,1687,1689,1692,1694,1697],{"class":565,"line":566},[563,1670,1671],{"class":789},"import",[563,1673,917],{"class":577},[563,1675,1676],{"class":573}," defineContentConfig",[563,1678,795],{"class":577},[563,1680,1681],{"class":573}," defineCollection",[563,1683,795],{"class":577},[563,1685,1686],{"class":573}," z",[563,1688,1560],{"class":577},[563,1690,1691],{"class":789}," from",[563,1693,1552],{"class":577},[563,1695,1696],{"class":581},"@nuxt/content",[563,1698,1699],{"class":577},"'\n",[563,1701,1702],{"class":565,"line":649},[563,1703,937],{"emptyLinePlaceholder":936},[563,1705,1706,1708,1711,1713,1715,1717,1720,1722],{"class":565,"line":633},[563,1707,750],{"class":749},[563,1709,1710],{"class":573}," postSchema ",[563,1712,756],{"class":577},[563,1714,1686],{"class":573},[563,1716,590],{"class":577},[563,1718,1719],{"class":569},"object",[563,1721,574],{"class":573},[563,1723,1520],{"class":577},[563,1725,1726,1729,1731,1733,1735,1738,1740],{"class":565,"line":675},[563,1727,1728],{"class":683},"  title",[563,1730,552],{"class":577},[563,1732,1686],{"class":573},[563,1734,590],{"class":577},[563,1736,1737],{"class":569},"string",[563,1739,764],{"class":573},[563,1741,672],{"class":577},[563,1743,1744,1747,1749,1751,1753,1755,1757],{"class":565,"line":698},[563,1745,1746],{"class":683},"  description",[563,1748,552],{"class":577},[563,1750,1686],{"class":573},[563,1752,590],{"class":577},[563,1754,1737],{"class":569},[563,1756,764],{"class":573},[563,1758,672],{"class":577},[563,1760,1761,1764,1766,1768,1770,1773,1775],{"class":565,"line":709},[563,1762,1763],{"class":683},"  date",[563,1765,552],{"class":577},[563,1767,1686],{"class":573},[563,1769,590],{"class":577},[563,1771,1772],{"class":569},"date",[563,1774,764],{"class":573},[563,1776,672],{"class":577},[563,1778,1779,1782,1784,1786,1788,1790,1792],{"class":565,"line":715},[563,1780,1781],{"class":683},"  image",[563,1783,552],{"class":577},[563,1785,1686],{"class":573},[563,1787,590],{"class":577},[563,1789,1719],{"class":569},[563,1791,574],{"class":573},[563,1793,1520],{"class":577},[563,1795,1796,1799,1801,1803,1805,1807],{"class":565,"line":989},[563,1797,1798],{"class":683},"    src",[563,1800,552],{"class":577},[563,1802,1686],{"class":573},[563,1804,590],{"class":577},[563,1806,1737],{"class":569},[563,1808,609],{"class":573},[563,1810,1811,1814,1816],{"class":565,"line":994},[563,1812,1813],{"class":577},"  }",[563,1815,587],{"class":573},[563,1817,672],{"class":577},[563,1819,1820,1823,1825,1827,1829,1832,1834,1836,1839,1841,1844],{"class":565,"line":1022},[563,1821,1822],{"class":683},"  published",[563,1824,552],{"class":577},[563,1826,1686],{"class":573},[563,1828,590],{"class":577},[563,1830,1831],{"class":569},"boolean",[563,1833,764],{"class":573},[563,1835,590],{"class":577},[563,1837,1838],{"class":569},"default",[563,1840,574],{"class":573},[563,1842,1843],{"class":668},"true",[563,1845,1122],{"class":573},[563,1847,1848,1850],{"class":565,"line":1061},[563,1849,923],{"class":577},[563,1851,1122],{"class":573},[563,1853,1854],{"class":565,"line":1074},[563,1855,937],{"emptyLinePlaceholder":936},[563,1857,1858,1861,1864,1867,1869],{"class":565,"line":850},[563,1859,1860],{"class":789},"export",[563,1862,1863],{"class":749}," const",[563,1865,1866],{"class":573}," collections ",[563,1868,756],{"class":577},[563,1870,646],{"class":577},[563,1872,1873],{"class":565,"line":851},[563,1874,1875],{"class":942},"  // English posts (default locale)\n",[563,1877,1878,1881,1883,1885,1887],{"class":565,"line":852},[563,1879,1880],{"class":683},"  posts",[563,1882,552],{"class":577},[563,1884,1681],{"class":569},[563,1886,574],{"class":573},[563,1888,1520],{"class":577},[563,1890,1891,1894,1896,1898,1901,1903],{"class":565,"line":1139},[563,1892,1893],{"class":683},"    type",[563,1895,552],{"class":577},[563,1897,1552],{"class":577},[563,1899,1900],{"class":581},"page",[563,1902,578],{"class":577},[563,1904,672],{"class":577},[563,1906,1907,1910,1912,1914,1917,1919],{"class":565,"line":1148},[563,1908,1909],{"class":683},"    source",[563,1911,552],{"class":577},[563,1913,1552],{"class":577},[563,1915,1916],{"class":581},"blog/**/*.md",[563,1918,578],{"class":577},[563,1920,672],{"class":577},[563,1922,1923,1926,1928],{"class":565,"line":1153},[563,1924,1925],{"class":683},"    schema",[563,1927,552],{"class":577},[563,1929,1930],{"class":573}," postSchema\n",[563,1932,1933,1935],{"class":565,"line":1162},[563,1934,1813],{"class":577},[563,1936,1122],{"class":573},[563,1938,1939],{"class":565,"line":1167},[563,1940,718],{"class":577},[563,1942,1943],{"class":565,"line":1172},[563,1944,937],{"emptyLinePlaceholder":936},[563,1946,1947,1949,1952,1954,1956,1958,1960,1962],{"class":565,"line":1590},[563,1948,1860],{"class":789},[563,1950,1951],{"class":789}," default",[563,1953,1676],{"class":569},[563,1955,574],{"class":573},[563,1957,1533],{"class":577},[563,1959,1866],{"class":573},[563,1961,923],{"class":577},[563,1963,1122],{"class":573},[554,1965,1967],{"className":556,"code":1966,"filename":628,"language":558,"meta":559,"style":559},"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",[518,1968,1969,1982,2001,2005,2014,2030,2039,2053,2072,2081,2086,2090],{"__ignoreMap":559},[563,1970,1971,1973,1975,1978,1980],{"class":565,"line":566},[563,1972,1860],{"class":789},[563,1974,1951],{"class":789},[563,1976,1977],{"class":569}," defineNuxtConfig",[563,1979,574],{"class":573},[563,1981,1520],{"class":577},[563,1983,1984,1987,1989,1991,1993,1995,1997,1999],{"class":565,"line":649},[563,1985,1986],{"class":683},"  modules",[563,1988,552],{"class":577},[563,1990,684],{"class":573},[563,1992,578],{"class":577},[563,1994,1696],{"class":581},[563,1996,578],{"class":577},[563,1998,693],{"class":573},[563,2000,672],{"class":577},[563,2002,2003],{"class":565,"line":633},[563,2004,937],{"emptyLinePlaceholder":936},[563,2006,2007,2010,2012],{"class":565,"line":675},[563,2008,2009],{"class":683},"  nitro",[563,2011,552],{"class":577},[563,2013,646],{"class":577},[563,2015,2016,2019,2021,2023,2026,2028],{"class":565,"line":698},[563,2017,2018],{"class":683},"    preset",[563,2020,552],{"class":577},[563,2022,1552],{"class":577},[563,2024,2025],{"class":581},"cloudflare_module",[563,2027,578],{"class":577},[563,2029,672],{"class":577},[563,2031,2032,2035,2037],{"class":565,"line":709},[563,2033,2034],{"class":683},"    prerender",[563,2036,552],{"class":577},[563,2038,646],{"class":577},[563,2040,2041,2044,2046,2048,2050],{"class":565,"line":715},[563,2042,2043],{"class":683},"      autoSubfolderIndex",[563,2045,552],{"class":577},[563,2047,669],{"class":668},[563,2049,795],{"class":577},[563,2051,2052],{"class":942}," // The fix\n",[563,2054,2055,2058,2060,2062,2064,2066,2068,2070],{"class":565,"line":989},[563,2056,2057],{"class":683},"      routes",[563,2059,552],{"class":577},[563,2061,684],{"class":573},[563,2063,578],{"class":577},[563,2065,452],{"class":581},[563,2067,578],{"class":577},[563,2069,693],{"class":573},[563,2071,672],{"class":577},[563,2073,2074,2077,2079],{"class":565,"line":994},[563,2075,2076],{"class":683},"      crawlLinks",[563,2078,552],{"class":577},[563,2080,706],{"class":668},[563,2082,2083],{"class":565,"line":1022},[563,2084,2085],{"class":577},"    }\n",[563,2087,2088],{"class":565,"line":1061},[563,2089,712],{"class":577},[563,2091,2092,2094],{"class":565,"line":1074},[563,2093,923],{"class":577},[563,2095,1122],{"class":573},[488,2097,2099],{"id":2098},"why-this-actually-matters","Why This Actually Matters",[481,2101,2102,2103,2106],{},"The real reason to use ",[518,2104,2105],{},"autoSubfolderIndex: false"," isn't just fixing the 404. It's your analytics.",[481,2108,2109],{},"Without the fix, Umami (or whatever you use) sees:",[554,2111,2116],{"className":2112,"code":2114,"language":2115},[2113],"language-text","/blog/my-post       → 45 views\n/blog/my-post/      → 23 views\n","text",[518,2117,2114],{"__ignoreMap":559},[481,2119,2120],{},"Which number do you use? Neither's correct. You're splitting traffic across two URLs.",[481,2122,2123],{},"With the fix:",[554,2125,2128],{"className":2126,"code":2127,"language":2115},[2113],"/blog/my-post       → 68 views\n",[518,2129,2127],{"__ignoreMap":559},[481,2131,2132],{},"One canonical URL. Accurate numbers. SEO doesn't get confused by duplicate content. Everyone's happy.",[488,2134,2136],{"id":2135},"bottom-line","Bottom Line",[481,2138,2139],{},"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.",[481,2141,2142],{},"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.",[481,2144,2145],{},"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.",[836,2147],{},[2149,2150],"callout-form",{"button-icon":179,"button-text":2151,"className":2152,"color":478,"description":2155,"form-action":2156,"icon":2157,"title":2158},"Get in Touch",[2153,2154],"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.","inquiry-form","i-lucide-headset","Need Help with Your Nuxt App?",[2160,2161,2162],"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":559,"searchDepth":649,"depth":649,"links":2164},[2165,2166,2167,2168,2169,2170,2173,2174,2175],{"id":490,"depth":649,"text":491},{"id":506,"depth":649,"text":507},{"id":537,"depth":649,"text":538},{"id":621,"depth":649,"text":622},{"id":735,"depth":649,"text":736},{"id":840,"depth":649,"text":841,"children":2171},[2172],{"id":1186,"depth":633,"text":1187},{"id":1311,"depth":649,"text":1312},{"id":2098,"depth":649,"text":2099},{"id":2135,"depth":649,"text":2136},"2025-12-10","Enabled prerendering for optimization. Pushed to production. Suddenly receive weird 404 error. One config line fixes it - autoSubfolderIndex","md",{"src":2180},"blog/nuxt_pixel.png",{},"/blog/fix-nuxt-content-404",{"title":464,"description":2177},"3.blog/2.fix-nuxt-content-404",[2186,2187,2188,2189],"Nuxt","Bug Fix","Prerendering","Cloudflare","2O8DzCVjSqmzGTIBvonXCxVZFOGEDl5UthbefjYN74M",{"id":2192,"title":2193,"authors":2194,"badge":2197,"body":2198,"date":17716,"description":17717,"extension":2178,"image":17718,"meta":17720,"navigation":936,"ogImage":446,"path":17721,"published":936,"seo":17722,"stem":17723,"tags":17724,"__hash__":17727},"posts/3.blog/1.migrate-nuxthub-to-wrangler.md","Self-Hosting Nuxt on Cloudflare Workers: Setup & Migration Guide",[2195],{"name":467,"avatar":2196},{"src":469},{"label":471},{"type":473,"value":2199,"toc":17701},[2200,2204,2207,2213,2216,2219,2223,2226,2272,2275,2283,2285,2289,2292,2295,2310,2317,2322,2550,2561,2714,2717,2724,3114,3116,3120,3123,3137,3140,3151,3157,3164,3234,3237,3267,3271,3280,3294,3297,3317,3320,3326,3332,3334,3338,3341,3370,3373,3387,3398,3400,3404,3407,3436,3439,3468,3470,3474,3477,3480,3491,3494,3496,3500,3506,3508,3512,3515,17583,17585,17589,17611,17631,17649,17659,17661,17665,17668,17671,17688,17691,17693,17698],[488,2201,2203],{"id":2202},"why-self-host-on-cloudflare","Why Self-Host on Cloudflare?",[481,2205,2206],{},"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.",[481,2208,2209,2212],{},[806,2210,2211],{},"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.",[481,2214,2215],{},"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.",[481,2217,2218],{},"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.",[488,2220,2222],{"id":2221},"prerequisites","Prerequisites",[481,2224,2225],{},"Install wrangler and nitro-cloudflare-dev:",[2227,2228,2229,2253],"code-group",{},[554,2230,2235],{"className":2231,"code":2232,"filename":2233,"language":2234,"meta":559,"style":559},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add -D wrangler nitro-cloudflare-dev\n","pnpm","bash",[518,2236,2237],{"__ignoreMap":559},[563,2238,2239,2241,2244,2247,2250],{"class":565,"line":566},[563,2240,2233],{"class":640},[563,2242,2243],{"class":581}," add",[563,2245,2246],{"class":581}," -D",[563,2248,2249],{"class":581}," wrangler",[563,2251,2252],{"class":581}," nitro-cloudflare-dev\n",[554,2254,2257],{"className":2231,"code":2255,"filename":2256,"language":2234,"meta":559,"style":559},"npm install -D wrangler nitro-cloudflare-dev\n","npm",[518,2258,2259],{"__ignoreMap":559},[563,2260,2261,2263,2266,2268,2270],{"class":565,"line":566},[563,2262,2256],{"class":640},[563,2264,2265],{"class":581}," install",[563,2267,2246],{"class":581},[563,2269,2249],{"class":581},[563,2271,2252],{"class":581},[481,2273,2274],{},"You'll also need a Cloudflare account, an API token (read all is enough for the extract), and your Account ID.",[476,2276,2277],{},[481,2278,2279,2280,2282],{},"💡 ",[806,2281,2211],{}," 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.",[836,2284],{},[488,2286,2288],{"id":2287},"migrating-an-existing-app","Migrating an Existing App",[481,2290,2291],{},"If you're already running on NuxtHub, the extraction script pulls your config from Cloudflare automatically.",[481,2293,2294],{},"Run it:",[554,2296,2298],{"className":2231,"code":2297,"language":2234,"meta":559,"style":559},"pnpm run cf:extract\n",[518,2299,2300],{"__ignoreMap":559},[563,2301,2302,2304,2307],{"class":565,"line":566},[563,2303,2233],{"class":640},[563,2305,2306],{"class":581}," run",[563,2308,2309],{"class":581}," cf:extract\n",[481,2311,2312,2313,2316],{},"It lists your workers, you pick one, and it generates ",[518,2314,2315],{},"wrangler.jsonc"," with all your bindings (D1, KV, etc.). The full script is at the bottom of this post.",[481,2318,2319,2320,552],{},"Now update ",[518,2321,628],{},[554,2323,2325],{"className":556,"code":2324,"filename":628,"language":558,"meta":559,"style":559},"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",[518,2326,2327,2339,2348,2360,2368,2379,2384,2391,2395,2400,2408,2412,2420,2434,2454,2463,2475,2486,2495,2504,2526,2531,2536,2540,2544],{"__ignoreMap":559},[563,2328,2329,2331,2333,2335,2337],{"class":565,"line":566},[563,2330,1860],{"class":789},[563,2332,1951],{"class":789},[563,2334,1977],{"class":569},[563,2336,574],{"class":573},[563,2338,1520],{"class":577},[563,2340,2341,2343,2345],{"class":565,"line":649},[563,2342,1986],{"class":683},[563,2344,552],{"class":577},[563,2346,2347],{"class":573}," [\n",[563,2349,2350,2353,2356,2358],{"class":565,"line":633},[563,2351,2352],{"class":577},"    '",[563,2354,2355],{"class":581},"@nuxtjs/tailwindcss",[563,2357,578],{"class":577},[563,2359,672],{"class":577},[563,2361,2362,2365],{"class":565,"line":675},[563,2363,2364],{"class":942},"    // '@nuxthub/core',",[563,2366,2367],{"class":942}," // ❌ Remove this\n",[563,2369,2370,2372,2375,2377],{"class":565,"line":698},[563,2371,2352],{"class":577},[563,2373,2374],{"class":581},"@nuxt/ui",[563,2376,578],{"class":577},[563,2378,672],{"class":577},[563,2380,2381],{"class":565,"line":709},[563,2382,2383],{"class":942},"    // ... other modules\n",[563,2385,2386,2389],{"class":565,"line":715},[563,2387,2388],{"class":573},"  ]",[563,2390,672],{"class":577},[563,2392,2393],{"class":565,"line":989},[563,2394,937],{"emptyLinePlaceholder":936},[563,2396,2397],{"class":565,"line":994},[563,2398,2399],{"class":942},"  // Remove hub configuration\n",[563,2401,2402,2405],{"class":565,"line":1022},[563,2403,2404],{"class":942},"  // hub: { ... },",[563,2406,2407],{"class":942}," // ❌ Remove this entire section\n",[563,2409,2410],{"class":565,"line":1061},[563,2411,937],{"emptyLinePlaceholder":936},[563,2413,2414,2416,2418],{"class":565,"line":1074},[563,2415,2009],{"class":683},[563,2417,552],{"class":577},[563,2419,646],{"class":577},[563,2421,2422,2424,2426,2428,2430,2432],{"class":565,"line":850},[563,2423,2018],{"class":683},[563,2425,552],{"class":577},[563,2427,1552],{"class":577},[563,2429,2025],{"class":581},[563,2431,578],{"class":577},[563,2433,672],{"class":577},[563,2435,2436,2439,2441,2443,2445,2448,2450,2452],{"class":565,"line":851},[563,2437,2438],{"class":683},"    compatibility_flags",[563,2440,552],{"class":577},[563,2442,684],{"class":573},[563,2444,578],{"class":577},[563,2446,2447],{"class":581},"nodejs_compat",[563,2449,578],{"class":577},[563,2451,693],{"class":573},[563,2453,672],{"class":577},[563,2455,2456,2459,2461],{"class":565,"line":852},[563,2457,2458],{"class":683},"    cloudflare",[563,2460,552],{"class":577},[563,2462,646],{"class":577},[563,2464,2465,2468,2470,2473],{"class":565,"line":1139},[563,2466,2467],{"class":683},"      deployConfig",[563,2469,552],{"class":577},[563,2471,2472],{"class":668}," true",[563,2474,672],{"class":577},[563,2476,2477,2480,2482,2484],{"class":565,"line":1148},[563,2478,2479],{"class":683},"      nodeCompat",[563,2481,552],{"class":577},[563,2483,2472],{"class":668},[563,2485,672],{"class":577},[563,2487,2488,2491,2493],{"class":565,"line":1153},[563,2489,2490],{"class":683},"      wrangler",[563,2492,552],{"class":577},[563,2494,646],{"class":577},[563,2496,2497,2500,2502],{"class":565,"line":1162},[563,2498,2499],{"class":683},"        triggers",[563,2501,552],{"class":577},[563,2503,646],{"class":577},[563,2505,2506,2509,2511,2513,2515,2518,2520,2523],{"class":565,"line":1167},[563,2507,2508],{"class":683},"          crons",[563,2510,552],{"class":577},[563,2512,684],{"class":573},[563,2514,578],{"class":577},[563,2516,2517],{"class":581},"*/2 * * * *",[563,2519,578],{"class":577},[563,2521,2522],{"class":573},"] ",[563,2524,2525],{"class":942},"// Nitro adds these during build\n",[563,2527,2528],{"class":565,"line":1172},[563,2529,2530],{"class":577},"        }\n",[563,2532,2533],{"class":565,"line":1590},[563,2534,2535],{"class":577},"      }\n",[563,2537,2538],{"class":565,"line":1601},[563,2539,2085],{"class":577},[563,2541,2542],{"class":565,"line":1622},[563,2543,712],{"class":577},[563,2545,2546,2548],{"class":565,"line":1644},[563,2547,923],{"class":577},[563,2549,1122],{"class":573},[481,2551,2552,2553,2556,2557,2560],{},"Change how you access D1 and KV. NuxtHub used ",[518,2554,2555],{},"hubDatabase()"," and ",[518,2558,2559],{},"hubKV()",". Now you access them directly:",[554,2562,2564],{"className":556,"code":2563,"language":558,"meta":559,"style":559},"// 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",[518,2565,2566,2571,2618,2640,2644,2649,2690],{"__ignoreMap":559},[563,2567,2568],{"class":565,"line":566},[563,2569,2570],{"class":942},"// Instead of hubDatabase()\n",[563,2572,2573,2575,2578,2580,2583,2585,2588,2590,2593,2596,2599,2601,2604,2607,2609,2611,2613,2615],{"class":565,"line":649},[563,2574,750],{"class":749},[563,2576,2577],{"class":573}," DB ",[563,2579,756],{"class":577},[563,2581,2582],{"class":573}," process",[563,2584,590],{"class":577},[563,2586,2587],{"class":573},"env",[563,2589,590],{"class":577},[563,2591,2592],{"class":573},"DB ",[563,2594,2595],{"class":577},"||",[563,2597,2598],{"class":573}," globalThis",[563,2600,590],{"class":577},[563,2602,2603],{"class":573},"__env__",[563,2605,2606],{"class":577},"?.",[563,2608,2592],{"class":573},[563,2610,2595],{"class":577},[563,2612,2598],{"class":573},[563,2614,590],{"class":577},[563,2616,2617],{"class":573},"DB\n",[563,2619,2620,2623,2626,2629,2631,2633,2636,2638],{"class":565,"line":633},[563,2621,2622],{"class":789},"return",[563,2624,2625],{"class":569}," drizzle",[563,2627,2628],{"class":573},"(DB",[563,2630,795],{"class":577},[563,2632,917],{"class":577},[563,2634,2635],{"class":573}," schema ",[563,2637,923],{"class":577},[563,2639,1122],{"class":573},[563,2641,2642],{"class":565,"line":675},[563,2643,937],{"emptyLinePlaceholder":936},[563,2645,2646],{"class":565,"line":698},[563,2647,2648],{"class":942},"// Instead of hubKV()\n",[563,2650,2651,2653,2656,2658,2660,2662,2664,2666,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687],{"class":565,"line":709},[563,2652,750],{"class":749},[563,2654,2655],{"class":573}," KV ",[563,2657,756],{"class":577},[563,2659,2582],{"class":573},[563,2661,590],{"class":577},[563,2663,2587],{"class":573},[563,2665,590],{"class":577},[563,2667,2668],{"class":573},"KV ",[563,2670,2595],{"class":577},[563,2672,2598],{"class":573},[563,2674,590],{"class":577},[563,2676,2603],{"class":573},[563,2678,2606],{"class":577},[563,2680,2668],{"class":573},[563,2682,2595],{"class":577},[563,2684,2598],{"class":573},[563,2686,590],{"class":577},[563,2688,2689],{"class":573},"KV\n",[563,2691,2692,2695,2698,2700,2703,2705,2707,2710,2712],{"class":565,"line":715},[563,2693,2694],{"class":789},"await",[563,2696,2697],{"class":573}," KV",[563,2699,590],{"class":577},[563,2701,2702],{"class":569},"get",[563,2704,574],{"class":573},[563,2706,578],{"class":577},[563,2708,2709],{"class":581},"my-key",[563,2711,578],{"class":577},[563,2713,1122],{"class":573},[481,2715,2716],{},"The weird triple-check is because Cloudflare exposes bindings in different places depending on the environment. This pattern works everywhere.",[481,2718,2719,2720,2723],{},"Update your ",[518,2721,2722],{},"package.json"," scripts:",[554,2725,2729],{"className":2726,"code":2727,"filename":2722,"language":2728,"meta":559,"style":559},"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",[518,2730,2731,2735,2749,2771,2791,2811,2831,2851,2855,2875,2895,2915,2919,2939,2959,2979,2983,3003,3023,3027,3047,3067,3087,3106,3110],{"__ignoreMap":559},[563,2732,2733],{"class":565,"line":566},[563,2734,1520],{"class":577},[563,2736,2737,2740,2743,2745,2747],{"class":565,"line":649},[563,2738,2739],{"class":577},"  \"",[563,2741,2742],{"class":749},"scripts",[563,2744,874],{"class":577},[563,2746,552],{"class":577},[563,2748,646],{"class":577},[563,2750,2751,2754,2757,2759,2761,2764,2767,2769],{"class":565,"line":633},[563,2752,2753],{"class":577},"    \"",[563,2755,2756],{"class":640},"dev",[563,2758,874],{"class":577},[563,2760,552],{"class":577},[563,2762,2763],{"class":577}," \"",[563,2765,2766],{"class":581},"nuxt dev",[563,2768,874],{"class":577},[563,2770,672],{"class":577},[563,2772,2773,2775,2778,2780,2782,2784,2787,2789],{"class":565,"line":675},[563,2774,2753],{"class":577},[563,2776,2777],{"class":640},"build",[563,2779,874],{"class":577},[563,2781,552],{"class":577},[563,2783,2763],{"class":577},[563,2785,2786],{"class":581},"nuxi build",[563,2788,874],{"class":577},[563,2790,672],{"class":577},[563,2792,2793,2795,2798,2800,2802,2804,2807,2809],{"class":565,"line":698},[563,2794,2753],{"class":577},[563,2796,2797],{"class":640},"preview",[563,2799,874],{"class":577},[563,2801,552],{"class":577},[563,2803,2763],{"class":577},[563,2805,2806],{"class":581},"pnpm run build && wrangler dev",[563,2808,874],{"class":577},[563,2810,672],{"class":577},[563,2812,2813,2815,2818,2820,2822,2824,2827,2829],{"class":565,"line":709},[563,2814,2753],{"class":577},[563,2816,2817],{"class":640},"preview:only",[563,2819,874],{"class":577},[563,2821,552],{"class":577},[563,2823,2763],{"class":577},[563,2825,2826],{"class":581},"wrangler dev",[563,2828,874],{"class":577},[563,2830,672],{"class":577},[563,2832,2833,2835,2838,2840,2842,2844,2847,2849],{"class":565,"line":715},[563,2834,2753],{"class":577},[563,2836,2837],{"class":640},"preview:local",[563,2839,874],{"class":577},[563,2841,552],{"class":577},[563,2843,2763],{"class":577},[563,2845,2846],{"class":581},"wrangler dev --local --persist-to .wrangler/state",[563,2848,874],{"class":577},[563,2850,672],{"class":577},[563,2852,2853],{"class":565,"line":989},[563,2854,937],{"emptyLinePlaceholder":936},[563,2856,2857,2859,2862,2864,2866,2868,2871,2873],{"class":565,"line":994},[563,2858,2753],{"class":577},[563,2860,2861],{"class":640},"db:generate",[563,2863,874],{"class":577},[563,2865,552],{"class":577},[563,2867,2763],{"class":577},[563,2869,2870],{"class":581},"drizzle-kit generate",[563,2872,874],{"class":577},[563,2874,672],{"class":577},[563,2876,2877,2879,2882,2884,2886,2888,2891,2893],{"class":565,"line":1022},[563,2878,2753],{"class":577},[563,2880,2881],{"class":640},"db:migrate",[563,2883,874],{"class":577},[563,2885,552],{"class":577},[563,2887,2763],{"class":577},[563,2889,2890],{"class":581},"wrangler d1 migrations apply my-db --remote",[563,2892,874],{"class":577},[563,2894,672],{"class":577},[563,2896,2897,2899,2902,2904,2906,2908,2911,2913],{"class":565,"line":1061},[563,2898,2753],{"class":577},[563,2900,2901],{"class":640},"db:migrate:local",[563,2903,874],{"class":577},[563,2905,552],{"class":577},[563,2907,2763],{"class":577},[563,2909,2910],{"class":581},"wrangler d1 migrations apply my-db --local",[563,2912,874],{"class":577},[563,2914,672],{"class":577},[563,2916,2917],{"class":565,"line":1074},[563,2918,937],{"emptyLinePlaceholder":936},[563,2920,2921,2923,2926,2928,2930,2932,2935,2937],{"class":565,"line":850},[563,2922,2753],{"class":577},[563,2924,2925],{"class":640},"db:seed",[563,2927,874],{"class":577},[563,2929,552],{"class":577},[563,2931,2763],{"class":577},[563,2933,2934],{"class":581},"node scripts/seed-database.mjs --remote",[563,2936,874],{"class":577},[563,2938,672],{"class":577},[563,2940,2941,2943,2946,2948,2950,2952,2955,2957],{"class":565,"line":851},[563,2942,2753],{"class":577},[563,2944,2945],{"class":640},"db:seed:local",[563,2947,874],{"class":577},[563,2949,552],{"class":577},[563,2951,2763],{"class":577},[563,2953,2954],{"class":581},"node scripts/seed-database.mjs --local",[563,2956,874],{"class":577},[563,2958,672],{"class":577},[563,2960,2961,2963,2966,2968,2970,2972,2975,2977],{"class":565,"line":852},[563,2962,2753],{"class":577},[563,2964,2965],{"class":640},"db:seed:all:local",[563,2967,874],{"class":577},[563,2969,552],{"class":577},[563,2971,2763],{"class":577},[563,2973,2974],{"class":581},"node scripts/seed-database.mjs --local --all",[563,2976,874],{"class":577},[563,2978,672],{"class":577},[563,2980,2981],{"class":565,"line":1139},[563,2982,937],{"emptyLinePlaceholder":936},[563,2984,2985,2987,2990,2992,2994,2996,2999,3001],{"class":565,"line":1148},[563,2986,2753],{"class":577},[563,2988,2989],{"class":640},"deploy",[563,2991,874],{"class":577},[563,2993,552],{"class":577},[563,2995,2763],{"class":577},[563,2997,2998],{"class":581},"pnpm run build && wrangler deploy",[563,3000,874],{"class":577},[563,3002,672],{"class":577},[563,3004,3005,3007,3010,3012,3014,3016,3019,3021],{"class":565,"line":1153},[563,3006,2753],{"class":577},[563,3008,3009],{"class":640},"deploy:nobuild",[563,3011,874],{"class":577},[563,3013,552],{"class":577},[563,3015,2763],{"class":577},[563,3017,3018],{"class":581},"wrangler deploy",[563,3020,874],{"class":577},[563,3022,672],{"class":577},[563,3024,3025],{"class":565,"line":1162},[563,3026,937],{"emptyLinePlaceholder":936},[563,3028,3029,3031,3034,3036,3038,3040,3043,3045],{"class":565,"line":1167},[563,3030,2753],{"class":577},[563,3032,3033],{"class":640},"cf:extract",[563,3035,874],{"class":577},[563,3037,552],{"class":577},[563,3039,2763],{"class":577},[563,3041,3042],{"class":581},"node scripts/extract-worker-config.mjs",[563,3044,874],{"class":577},[563,3046,672],{"class":577},[563,3048,3049,3051,3054,3056,3058,3060,3063,3065],{"class":565,"line":1172},[563,3050,2753],{"class":577},[563,3052,3053],{"class":640},"cf:setup",[563,3055,874],{"class":577},[563,3057,552],{"class":577},[563,3059,2763],{"class":577},[563,3061,3062],{"class":581},"node scripts/setup-cloudflare.mjs",[563,3064,874],{"class":577},[563,3066,672],{"class":577},[563,3068,3069,3071,3074,3076,3078,3080,3083,3085],{"class":565,"line":1590},[563,3070,2753],{"class":577},[563,3072,3073],{"class":640},"cf:typegen",[563,3075,874],{"class":577},[563,3077,552],{"class":577},[563,3079,2763],{"class":577},[563,3081,3082],{"class":581},"wrangler types",[563,3084,874],{"class":577},[563,3086,672],{"class":577},[563,3088,3089,3091,3094,3096,3098,3100,3103],{"class":565,"line":1601},[563,3090,2753],{"class":577},[563,3092,3093],{"class":640},"env:sync",[563,3095,874],{"class":577},[563,3097,552],{"class":577},[563,3099,2763],{"class":577},[563,3101,3102],{"class":581},"node scripts/sync-env-to-wrangler.mjs",[563,3104,3105],{"class":577},"\"\n",[563,3107,3108],{"class":565,"line":1622},[563,3109,712],{"class":577},[563,3111,3112],{"class":565,"line":1644},[563,3113,718],{"class":577},[836,3115],{},[488,3117,3119],{"id":3118},"starting-fresh-no-existing-nuxthub-app","Starting Fresh (No Existing NuxtHub App)",[481,3121,3122],{},"If you're setting up from scratch, run the setup script:",[554,3124,3126],{"className":2231,"code":3125,"language":2234,"meta":559,"style":559},"pnpm run cf:setup\n",[518,3127,3128],{"__ignoreMap":559},[563,3129,3130,3132,3134],{"class":565,"line":566},[563,3131,2233],{"class":640},[563,3133,2306],{"class":581},[563,3135,3136],{"class":581}," cf:setup\n",[481,3138,3139],{},"It asks you to pick a D1 region (choose the one closest to your users), then creates:",[813,3141,3142,3145,3148],{},[816,3143,3144],{},"D1 database",[816,3146,3147],{},"KV namespaces (production + preview)",[816,3149,3150],{},"Analytics Engine dataset",[481,3152,3153,3154,3156],{},"You need to update ",[518,3155,2315],{}," manually with the binding IDs.",[481,3158,3159,3160,3163],{},"For local development, create a ",[518,3161,3162],{},".dev.vars"," file:",[2227,3165,3166],{},[554,3167,3170],{"className":2231,"code":3168,"filename":3169,"language":2234,"meta":559,"style":559},"# 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)",[518,3171,3172,3177,3182,3186,3196,3206,3210,3220,3224],{"__ignoreMap":559},[563,3173,3174],{"class":565,"line":566},[563,3175,3176],{"class":942},"# Copy from .dev.vars.example\n",[563,3178,3179],{"class":565,"line":649},[563,3180,3181],{"class":942},"# Used by `wrangler dev` for local development\n",[563,3183,3184],{"class":565,"line":633},[563,3185,937],{"emptyLinePlaceholder":936},[563,3187,3188,3191,3193],{"class":565,"line":675},[563,3189,3190],{"class":573},"BETTER_AUTH_SECRET",[563,3192,756],{"class":577},[563,3194,3195],{"class":581},"your-secret-key-change-in-production\n",[563,3197,3198,3201,3203],{"class":565,"line":698},[563,3199,3200],{"class":573},"BETTER_AUTH_URL",[563,3202,756],{"class":577},[563,3204,3205],{"class":581},"http://localhost:3000\n",[563,3207,3208],{"class":565,"line":709},[563,3209,937],{"emptyLinePlaceholder":936},[563,3211,3212,3215,3217],{"class":565,"line":715},[563,3213,3214],{"class":573},"NUXT_TURNSTILE_SECRET_KEY",[563,3216,756],{"class":577},[563,3218,3219],{"class":581},"your-turnstile-secret-key\n",[563,3221,3222],{"class":565,"line":989},[563,3223,937],{"emptyLinePlaceholder":936},[563,3225,3226,3229,3231],{"class":565,"line":994},[563,3227,3228],{"class":573},"NODE_ENV",[563,3230,756],{"class":577},[563,3232,3233],{"class":581},"development\n",[481,3235,3236],{},"For production secrets, use wrangler:",[554,3238,3240],{"className":2231,"code":3239,"language":2234,"meta":559,"style":559},"wrangler secret put BETTER_AUTH_SECRET\nwrangler secret put NUXT_TURNSTILE_SECRET_KEY\n",[518,3241,3242,3256],{"__ignoreMap":559},[563,3243,3244,3247,3250,3253],{"class":565,"line":566},[563,3245,3246],{"class":640},"wrangler",[563,3248,3249],{"class":581}," secret",[563,3251,3252],{"class":581}," put",[563,3254,3255],{"class":581}," BETTER_AUTH_SECRET\n",[563,3257,3258,3260,3262,3264],{"class":565,"line":649},[563,3259,3246],{"class":640},[563,3261,3249],{"class":581},[563,3263,3252],{"class":581},[563,3265,3266],{"class":581}," NUXT_TURNSTILE_SECRET_KEY\n",[1184,3268,3270],{"id":3269},"environment-variable-sync-helper","Environment Variable Sync Helper",[481,3272,3273,3274,2556,3277,3279],{},"Managing environment variables between ",[518,3275,3276],{},".env",[518,3278,2315],{}," can be tedious. I created a helper script that automates this:",[554,3281,3283],{"className":2231,"code":3282,"language":2234,"meta":559,"style":559},"pnpm run env:sync\n",[518,3284,3285],{"__ignoreMap":559},[563,3286,3287,3289,3291],{"class":565,"line":566},[563,3288,2233],{"class":640},[563,3290,2306],{"class":581},[563,3292,3293],{"class":581}," env:sync\n",[481,3295,3296],{},"This script:",[813,3298,3299,3305,3308,3314],{},[816,3300,3301,3302,3304],{},"Reads your ",[518,3303,3276],{}," file",[816,3306,3307],{},"Automatically separates public vars from secrets",[816,3309,3310,3311,3313],{},"Updates ",[518,3312,2315],{}," with public variables",[816,3315,3316],{},"Prints wrangler CLI commands for secrets",[481,3318,3319],{},"Example output:",[554,3321,3324],{"className":3322,"code":3323,"language":2115},[2113],"✅ 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",[518,3325,3323],{"__ignoreMap":559},[481,3327,3328,3329,3331],{},"This saves time and ensures you never accidentally commit secrets to ",[518,3330,2315],{},". The script is included in the complete code section below.",[836,3333],{},[488,3335,3337],{"id":3336},"database-migrations-and-seeding","Database Migrations and Seeding",[481,3339,3340],{},"Run migrations:",[554,3342,3344],{"className":2231,"code":3343,"language":2234,"meta":559,"style":559},"pnpm run db:migrate:local   # local\npnpm run db:migrate          # production\n",[518,3345,3346,3358],{"__ignoreMap":559},[563,3347,3348,3350,3352,3355],{"class":565,"line":566},[563,3349,2233],{"class":640},[563,3351,2306],{"class":581},[563,3353,3354],{"class":581}," db:migrate:local",[563,3356,3357],{"class":942},"   # local\n",[563,3359,3360,3362,3364,3367],{"class":565,"line":649},[563,3361,2233],{"class":640},[563,3363,2306],{"class":581},[563,3365,3366],{"class":581}," db:migrate",[563,3368,3369],{"class":942},"          # production\n",[481,3371,3372],{},"The seeding script I wrote lets you pick which seeders to run:",[554,3374,3376],{"className":2231,"code":3375,"language":2234,"meta":559,"style":559},"pnpm run db:seed:local\n",[518,3377,3378],{"__ignoreMap":559},[563,3379,3380,3382,3384],{"class":565,"line":566},[563,3381,2233],{"class":640},[563,3383,2306],{"class":581},[563,3385,3386],{"class":581}," db:seed:local\n",[481,3388,3389,3390,3393,3394,3397],{},"It shows you all available seeders, you type the numbers you want (like ",[518,3391,3392],{},"1 3","), and it runs them. Or type ",[518,3395,3396],{},"all"," to run everything.",[836,3399],{},[488,3401,3403],{"id":3402},"development-and-deployment","Development and Deployment",[481,3405,3406],{},"For development:",[554,3408,3410],{"className":2231,"code":3409,"language":2234,"meta":559,"style":559},"pnpm run dev              # Standard Nuxt dev server\npnpm run preview:local    # Local Workers environment\n",[518,3411,3412,3424],{"__ignoreMap":559},[563,3413,3414,3416,3418,3421],{"class":565,"line":566},[563,3415,2233],{"class":640},[563,3417,2306],{"class":581},[563,3419,3420],{"class":581}," dev",[563,3422,3423],{"class":942},"              # Standard Nuxt dev server\n",[563,3425,3426,3428,3430,3433],{"class":565,"line":649},[563,3427,2233],{"class":640},[563,3429,2306],{"class":581},[563,3431,3432],{"class":581}," preview:local",[563,3434,3435],{"class":942},"    # Local Workers environment\n",[481,3437,3438],{},"For deployment:",[554,3440,3442],{"className":2231,"code":3441,"language":2234,"meta":559,"style":559},"pnpm run deploy           # Build + deploy\npnpm run deploy:nobuild   # Just deploy (if already built)\n",[518,3443,3444,3456],{"__ignoreMap":559},[563,3445,3446,3448,3450,3453],{"class":565,"line":566},[563,3447,2233],{"class":640},[563,3449,2306],{"class":581},[563,3451,3452],{"class":581}," deploy",[563,3454,3455],{"class":942},"           # Build + deploy\n",[563,3457,3458,3460,3462,3465],{"class":565,"line":649},[563,3459,2233],{"class":640},[563,3461,2306],{"class":581},[563,3463,3464],{"class":581}," deploy:nobuild",[563,3466,3467],{"class":942},"   # Just deploy (if already built)\n",[836,3469],{},[488,3471,3473],{"id":3472},"auto-deployment-setup","Auto-Deployment Setup",[481,3475,3476],{},"You don't need GitHub Actions. Cloudflare has auto-deployment built in.",[481,3478,3479],{},"Go to Workers & Pages in Cloudflare Dashboard → Settings → Builds & Deployments → Connect to Git.",[481,3481,3482,3483,3486,3487,3490],{},"Pick your repo, set build command to ",[518,3484,3485],{},"pnpm run build",", output directory to ",[518,3488,3489],{},".output",", and you're done.",[481,3492,3493],{},"Now every push to main automatically builds and deploys. PRs get preview deployments. No YAML configs needed.",[836,3495],{},[488,3497,3499],{"id":3498},"file-structure","File Structure",[554,3501,3504],{"className":3502,"code":3503,"language":2115},[2113],"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",[518,3505,3503],{"__ignoreMap":559},[836,3507],{},[488,3509,3511],{"id":3510},"complete-code","Complete Code",[481,3513,3514],{},"All the scripts and config files:",[1317,3516,3517,3885,4122,4803,4881,5087,5224,5452,8674,11504,15101,17386,17481],{"default-value":2315},[554,3518,3522],{"className":3519,"code":3520,"filename":2315,"language":3521,"meta":559,"style":559},"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",[518,3523,3524,3529,3534,3539,3544,3548,3553,3557,3562,3567,3572,3577,3581,3586,3591,3596,3601,3606,3611,3615,3619,3623,3628,3632,3637,3642,3646,3651,3656,3662,3668,3673,3679,3685,3691,3697,3703,3709,3714,3720,3725,3730,3736,3742,3748,3753,3759,3764,3770,3776,3782,3787,3792,3797,3802,3808,3814,3820,3825,3831,3837,3842,3847,3852,3858,3863,3869,3875,3880],{"__ignoreMap":559},[563,3525,3526],{"class":565,"line":566},[563,3527,3528],{},"/**\n",[563,3530,3531],{"class":565,"line":649},[563,3532,3533],{}," * Cloudflare Workers Configuration\n",[563,3535,3536],{"class":565,"line":633},[563,3537,3538],{}," * Direct Cloudflare setup with Wrangler\n",[563,3540,3541],{"class":565,"line":675},[563,3542,3543],{}," */\n",[563,3545,3546],{"class":565,"line":698},[563,3547,1520],{},[563,3549,3550],{"class":565,"line":709},[563,3551,3552],{},"  \"$schema\": \"node_modules/wrangler/config-schema.json\",\n",[563,3554,3555],{"class":565,"line":715},[563,3556,937],{"emptyLinePlaceholder":936},[563,3558,3559],{"class":565,"line":989},[563,3560,3561],{},"  \"name\": \"my-nuxt-app\",\n",[563,3563,3564],{"class":565,"line":994},[563,3565,3566],{},"  \"main\": \"./.output/server/index.mjs\",\n",[563,3568,3569],{"class":565,"line":1022},[563,3570,3571],{},"  \"compatibility_date\": \"2025-10-30\",\n",[563,3573,3574],{"class":565,"line":1061},[563,3575,3576],{},"  \"compatibility_flags\": [\"nodejs_compat\"],\n",[563,3578,3579],{"class":565,"line":1074},[563,3580,937],{"emptyLinePlaceholder":936},[563,3582,3583],{"class":565,"line":850},[563,3584,3585],{},"  /**\n",[563,3587,3588],{"class":565,"line":851},[563,3589,3590],{},"   * Static Assets Binding\n",[563,3592,3593],{"class":565,"line":852},[563,3594,3595],{},"   */\n",[563,3597,3598],{"class":565,"line":1139},[563,3599,3600],{},"  \"assets\": {\n",[563,3602,3603],{"class":565,"line":1148},[563,3604,3605],{},"    \"binding\": \"ASSETS\",\n",[563,3607,3608],{"class":565,"line":1153},[563,3609,3610],{},"    \"directory\": \"./.output/public/\"\n",[563,3612,3613],{"class":565,"line":1162},[563,3614,1256],{},[563,3616,3617],{"class":565,"line":1167},[563,3618,937],{"emptyLinePlaceholder":936},[563,3620,3621],{"class":565,"line":1172},[563,3622,3585],{},[563,3624,3625],{"class":565,"line":1590},[563,3626,3627],{},"   * Observability & Analytics\n",[563,3629,3630],{"class":565,"line":1601},[563,3631,3595],{},[563,3633,3634],{"class":565,"line":1622},[563,3635,3636],{},"  \"observability\": {\n",[563,3638,3639],{"class":565,"line":1644},[563,3640,3641],{},"    \"enabled\": true\n",[563,3643,3644],{"class":565,"line":1654},[563,3645,1256],{},[563,3647,3649],{"class":565,"line":3648},27,[563,3650,937],{"emptyLinePlaceholder":936},[563,3652,3654],{"class":565,"line":3653},28,[563,3655,3585],{},[563,3657,3659],{"class":565,"line":3658},29,[563,3660,3661],{},"   * D1 Database Binding\n",[563,3663,3665],{"class":565,"line":3664},30,[563,3666,3667],{},"   * To create: wrangler d1 create my-database --location=weur\n",[563,3669,3671],{"class":565,"line":3670},31,[563,3672,3595],{},[563,3674,3676],{"class":565,"line":3675},32,[563,3677,3678],{},"  \"d1_databases\": [\n",[563,3680,3682],{"class":565,"line":3681},33,[563,3683,3684],{},"    {\n",[563,3686,3688],{"class":565,"line":3687},34,[563,3689,3690],{},"      \"binding\": \"DB\",\n",[563,3692,3694],{"class":565,"line":3693},35,[563,3695,3696],{},"      \"database_name\": \"my-database\",\n",[563,3698,3700],{"class":565,"line":3699},36,[563,3701,3702],{},"      \"database_id\": \"YOUR_D1_DATABASE_ID_HERE\",\n",[563,3704,3706],{"class":565,"line":3705},37,[563,3707,3708],{},"      \"migrations_dir\": \"./server/database/migrations\"\n",[563,3710,3712],{"class":565,"line":3711},38,[563,3713,2085],{},[563,3715,3717],{"class":565,"line":3716},39,[563,3718,3719],{},"  ],\n",[563,3721,3723],{"class":565,"line":3722},40,[563,3724,937],{"emptyLinePlaceholder":936},[563,3726,3728],{"class":565,"line":3727},41,[563,3729,3585],{},[563,3731,3733],{"class":565,"line":3732},42,[563,3734,3735],{},"   * KV Namespace Binding\n",[563,3737,3739],{"class":565,"line":3738},43,[563,3740,3741],{},"   * To create: wrangler kv namespace create my-kv\n",[563,3743,3745],{"class":565,"line":3744},44,[563,3746,3747],{},"   * To create preview: wrangler kv namespace create my-kv --preview\n",[563,3749,3751],{"class":565,"line":3750},45,[563,3752,3595],{},[563,3754,3756],{"class":565,"line":3755},46,[563,3757,3758],{},"  \"kv_namespaces\": [\n",[563,3760,3762],{"class":565,"line":3761},47,[563,3763,3684],{},[563,3765,3767],{"class":565,"line":3766},48,[563,3768,3769],{},"      \"binding\": \"KV\",\n",[563,3771,3773],{"class":565,"line":3772},49,[563,3774,3775],{},"      \"id\": \"YOUR_KV_NAMESPACE_ID_HERE\",\n",[563,3777,3779],{"class":565,"line":3778},50,[563,3780,3781],{},"      \"preview_id\": \"YOUR_PREVIEW_KV_NAMESPACE_ID_HERE\"\n",[563,3783,3785],{"class":565,"line":3784},51,[563,3786,2085],{},[563,3788,3790],{"class":565,"line":3789},52,[563,3791,3719],{},[563,3793,3795],{"class":565,"line":3794},53,[563,3796,937],{"emptyLinePlaceholder":936},[563,3798,3800],{"class":565,"line":3799},54,[563,3801,3585],{},[563,3803,3805],{"class":565,"line":3804},55,[563,3806,3807],{},"   * Cron Triggers\n",[563,3809,3811],{"class":565,"line":3810},56,[563,3812,3813],{},"   * Note: Nitro needs this in nuxt.config.ts as well\n",[563,3815,3817],{"class":565,"line":3816},57,[563,3818,3819],{},"   * in nuxt.config.ts > nitro.cloudflare.wrangler.triggers\n",[563,3821,3823],{"class":565,"line":3822},58,[563,3824,3595],{},[563,3826,3828],{"class":565,"line":3827},59,[563,3829,3830],{},"  \"triggers\": {\n",[563,3832,3834],{"class":565,"line":3833},60,[563,3835,3836],{},"    \"crons\": [\"*/2 * * * *\"]\n",[563,3838,3840],{"class":565,"line":3839},61,[563,3841,1256],{},[563,3843,3845],{"class":565,"line":3844},62,[563,3846,937],{"emptyLinePlaceholder":936},[563,3848,3850],{"class":565,"line":3849},63,[563,3851,3585],{},[563,3853,3855],{"class":565,"line":3854},64,[563,3856,3857],{},"   * Environment Variables\n",[563,3859,3861],{"class":565,"line":3860},65,[563,3862,3595],{},[563,3864,3866],{"class":565,"line":3865},66,[563,3867,3868],{},"  \"vars\": {\n",[563,3870,3872],{"class":565,"line":3871},67,[563,3873,3874],{},"    \"NODE_ENV\": \"production\"\n",[563,3876,3878],{"class":565,"line":3877},68,[563,3879,712],{},[563,3881,3883],{"class":565,"line":3882},69,[563,3884,718],{},[554,3886,3888],{"className":556,"code":3887,"filename":628,"language":558,"meta":559,"style":559},"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",[518,3889,3890,3902,3910,3920,3930,3935,3941,3945,3953,3967,3985,3993,4003,4013,4021,4029,4046,4050,4054,4059,4068,4090,4094,4098,4102,4116],{"__ignoreMap":559},[563,3891,3892,3894,3896,3898,3900],{"class":565,"line":566},[563,3893,1860],{"class":789},[563,3895,1951],{"class":789},[563,3897,1977],{"class":569},[563,3899,574],{"class":573},[563,3901,1520],{"class":577},[563,3903,3904,3906,3908],{"class":565,"line":649},[563,3905,1986],{"class":683},[563,3907,552],{"class":577},[563,3909,2347],{"class":573},[563,3911,3912,3914,3916,3918],{"class":565,"line":633},[563,3913,2352],{"class":577},[563,3915,2355],{"class":581},[563,3917,578],{"class":577},[563,3919,672],{"class":577},[563,3921,3922,3924,3926,3928],{"class":565,"line":675},[563,3923,2352],{"class":577},[563,3925,2374],{"class":581},[563,3927,578],{"class":577},[563,3929,672],{"class":577},[563,3931,3932],{"class":565,"line":698},[563,3933,3934],{"class":942},"    // ... other modules (NOT @nuxthub/core)\n",[563,3936,3937,3939],{"class":565,"line":709},[563,3938,2388],{"class":573},[563,3940,672],{"class":577},[563,3942,3943],{"class":565,"line":715},[563,3944,937],{"emptyLinePlaceholder":936},[563,3946,3947,3949,3951],{"class":565,"line":989},[563,3948,2009],{"class":683},[563,3950,552],{"class":577},[563,3952,646],{"class":577},[563,3954,3955,3957,3959,3961,3963,3965],{"class":565,"line":994},[563,3956,2018],{"class":683},[563,3958,552],{"class":577},[563,3960,1552],{"class":577},[563,3962,2025],{"class":581},[563,3964,578],{"class":577},[563,3966,672],{"class":577},[563,3968,3969,3971,3973,3975,3977,3979,3981,3983],{"class":565,"line":1022},[563,3970,2438],{"class":683},[563,3972,552],{"class":577},[563,3974,684],{"class":573},[563,3976,578],{"class":577},[563,3978,2447],{"class":581},[563,3980,578],{"class":577},[563,3982,693],{"class":573},[563,3984,672],{"class":577},[563,3986,3987,3989,3991],{"class":565,"line":1061},[563,3988,2458],{"class":683},[563,3990,552],{"class":577},[563,3992,646],{"class":577},[563,3994,3995,3997,3999,4001],{"class":565,"line":1074},[563,3996,2467],{"class":683},[563,3998,552],{"class":577},[563,4000,2472],{"class":668},[563,4002,672],{"class":577},[563,4004,4005,4007,4009,4011],{"class":565,"line":850},[563,4006,2479],{"class":683},[563,4008,552],{"class":577},[563,4010,2472],{"class":668},[563,4012,672],{"class":577},[563,4014,4015,4017,4019],{"class":565,"line":851},[563,4016,2490],{"class":683},[563,4018,552],{"class":577},[563,4020,646],{"class":577},[563,4022,4023,4025,4027],{"class":565,"line":852},[563,4024,2499],{"class":683},[563,4026,552],{"class":577},[563,4028,646],{"class":577},[563,4030,4031,4033,4035,4037,4039,4041,4043],{"class":565,"line":1139},[563,4032,2508],{"class":683},[563,4034,552],{"class":577},[563,4036,684],{"class":573},[563,4038,578],{"class":577},[563,4040,2517],{"class":581},[563,4042,578],{"class":577},[563,4044,4045],{"class":573},"]\n",[563,4047,4048],{"class":565,"line":1148},[563,4049,2530],{"class":577},[563,4051,4052],{"class":565,"line":1153},[563,4053,2535],{"class":577},[563,4055,4056],{"class":565,"line":1162},[563,4057,4058],{"class":577},"    },\n",[563,4060,4061,4064,4066],{"class":565,"line":1167},[563,4062,4063],{"class":683},"    scheduledTasks",[563,4065,552],{"class":577},[563,4067,646],{"class":577},[563,4069,4070,4073,4075,4077,4079,4081,4083,4086,4088],{"class":565,"line":1172},[563,4071,4072],{"class":577},"      '",[563,4074,2517],{"class":683},[563,4076,578],{"class":577},[563,4078,552],{"class":577},[563,4080,684],{"class":573},[563,4082,578],{"class":577},[563,4084,4085],{"class":581},"notifications:process-queue",[563,4087,578],{"class":577},[563,4089,4045],{"class":573},[563,4091,4092],{"class":565,"line":1590},[563,4093,2085],{"class":577},[563,4095,4096],{"class":565,"line":1601},[563,4097,1256],{"class":577},[563,4099,4100],{"class":565,"line":1622},[563,4101,937],{"emptyLinePlaceholder":936},[563,4103,4104,4107,4109,4111,4114],{"class":565,"line":1644},[563,4105,4106],{"class":683},"  compatibilityDate",[563,4108,552],{"class":577},[563,4110,1552],{"class":577},[563,4112,4113],{"class":581},"2025-10-30",[563,4115,1699],{"class":577},[563,4117,4118,4120],{"class":565,"line":1654},[563,4119,923],{"class":577},[563,4121,1122],{"class":573},[554,4123,4125],{"className":2726,"code":4124,"filename":2722,"language":2728,"meta":559,"style":559},"{\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",[518,4126,4127,4131,4151,4165,4185,4197,4215,4233,4237,4255,4273,4291,4311,4315,4335,4355,4375,4379,4397,4416,4435,4439,4457,4475,4495,4513,4517,4535,4553,4557,4575,4593,4609,4613,4626,4645,4664,4681,4685,4698,4718,4738,4758,4778,4795,4799],{"__ignoreMap":559},[563,4128,4129],{"class":565,"line":566},[563,4130,1520],{"class":577},[563,4132,4133,4135,4138,4140,4142,4144,4147,4149],{"class":565,"line":649},[563,4134,2739],{"class":577},[563,4136,4137],{"class":749},"name",[563,4139,874],{"class":577},[563,4141,552],{"class":577},[563,4143,2763],{"class":577},[563,4145,4146],{"class":581},"my-nuxt-app",[563,4148,874],{"class":577},[563,4150,672],{"class":577},[563,4152,4153,4155,4158,4160,4162],{"class":565,"line":633},[563,4154,2739],{"class":577},[563,4156,4157],{"class":749},"private",[563,4159,874],{"class":577},[563,4161,552],{"class":577},[563,4163,4164],{"class":577}," true,\n",[563,4166,4167,4169,4172,4174,4176,4178,4181,4183],{"class":565,"line":675},[563,4168,2739],{"class":577},[563,4170,4171],{"class":749},"type",[563,4173,874],{"class":577},[563,4175,552],{"class":577},[563,4177,2763],{"class":577},[563,4179,4180],{"class":581},"module",[563,4182,874],{"class":577},[563,4184,672],{"class":577},[563,4186,4187,4189,4191,4193,4195],{"class":565,"line":698},[563,4188,2739],{"class":577},[563,4190,2742],{"class":749},[563,4192,874],{"class":577},[563,4194,552],{"class":577},[563,4196,646],{"class":577},[563,4198,4199,4201,4203,4205,4207,4209,4211,4213],{"class":565,"line":709},[563,4200,2753],{"class":577},[563,4202,2777],{"class":640},[563,4204,874],{"class":577},[563,4206,552],{"class":577},[563,4208,2763],{"class":577},[563,4210,2786],{"class":581},[563,4212,874],{"class":577},[563,4214,672],{"class":577},[563,4216,4217,4219,4221,4223,4225,4227,4229,4231],{"class":565,"line":715},[563,4218,2753],{"class":577},[563,4220,2756],{"class":640},[563,4222,874],{"class":577},[563,4224,552],{"class":577},[563,4226,2763],{"class":577},[563,4228,2766],{"class":581},[563,4230,874],{"class":577},[563,4232,672],{"class":577},[563,4234,4235],{"class":565,"line":989},[563,4236,937],{"emptyLinePlaceholder":936},[563,4238,4239,4241,4243,4245,4247,4249,4251,4253],{"class":565,"line":994},[563,4240,2753],{"class":577},[563,4242,2797],{"class":640},[563,4244,874],{"class":577},[563,4246,552],{"class":577},[563,4248,2763],{"class":577},[563,4250,2806],{"class":581},[563,4252,874],{"class":577},[563,4254,672],{"class":577},[563,4256,4257,4259,4261,4263,4265,4267,4269,4271],{"class":565,"line":1022},[563,4258,2753],{"class":577},[563,4260,2817],{"class":640},[563,4262,874],{"class":577},[563,4264,552],{"class":577},[563,4266,2763],{"class":577},[563,4268,2826],{"class":581},[563,4270,874],{"class":577},[563,4272,672],{"class":577},[563,4274,4275,4277,4279,4281,4283,4285,4287,4289],{"class":565,"line":1061},[563,4276,2753],{"class":577},[563,4278,2837],{"class":640},[563,4280,874],{"class":577},[563,4282,552],{"class":577},[563,4284,2763],{"class":577},[563,4286,2846],{"class":581},[563,4288,874],{"class":577},[563,4290,672],{"class":577},[563,4292,4293,4295,4298,4300,4302,4304,4307,4309],{"class":565,"line":1074},[563,4294,2753],{"class":577},[563,4296,4297],{"class":640},"preview:remote",[563,4299,874],{"class":577},[563,4301,552],{"class":577},[563,4303,2763],{"class":577},[563,4305,4306],{"class":581},"wrangler dev --remote",[563,4308,874],{"class":577},[563,4310,672],{"class":577},[563,4312,4313],{"class":565,"line":850},[563,4314,937],{"emptyLinePlaceholder":936},[563,4316,4317,4319,4322,4324,4326,4328,4331,4333],{"class":565,"line":851},[563,4318,2753],{"class":577},[563,4320,4321],{"class":640},"postinstall",[563,4323,874],{"class":577},[563,4325,552],{"class":577},[563,4327,2763],{"class":577},[563,4329,4330],{"class":581},"nuxt prepare",[563,4332,874],{"class":577},[563,4334,672],{"class":577},[563,4336,4337,4339,4342,4344,4346,4348,4351,4353],{"class":565,"line":852},[563,4338,2753],{"class":577},[563,4340,4341],{"class":640},"lint",[563,4343,874],{"class":577},[563,4345,552],{"class":577},[563,4347,2763],{"class":577},[563,4349,4350],{"class":581},"eslint .",[563,4352,874],{"class":577},[563,4354,672],{"class":577},[563,4356,4357,4359,4362,4364,4366,4368,4371,4373],{"class":565,"line":1139},[563,4358,2753],{"class":577},[563,4360,4361],{"class":640},"typecheck",[563,4363,874],{"class":577},[563,4365,552],{"class":577},[563,4367,2763],{"class":577},[563,4369,4370],{"class":581},"nuxt typecheck",[563,4372,874],{"class":577},[563,4374,672],{"class":577},[563,4376,4377],{"class":565,"line":1148},[563,4378,937],{"emptyLinePlaceholder":936},[563,4380,4381,4383,4385,4387,4389,4391,4393,4395],{"class":565,"line":1153},[563,4382,2753],{"class":577},[563,4384,2861],{"class":640},[563,4386,874],{"class":577},[563,4388,552],{"class":577},[563,4390,2763],{"class":577},[563,4392,2870],{"class":581},[563,4394,874],{"class":577},[563,4396,672],{"class":577},[563,4398,4399,4401,4403,4405,4407,4409,4412,4414],{"class":565,"line":1162},[563,4400,2753],{"class":577},[563,4402,2881],{"class":640},[563,4404,874],{"class":577},[563,4406,552],{"class":577},[563,4408,2763],{"class":577},[563,4410,4411],{"class":581},"wrangler d1 migrations apply my-database --remote",[563,4413,874],{"class":577},[563,4415,672],{"class":577},[563,4417,4418,4420,4422,4424,4426,4428,4431,4433],{"class":565,"line":1167},[563,4419,2753],{"class":577},[563,4421,2901],{"class":640},[563,4423,874],{"class":577},[563,4425,552],{"class":577},[563,4427,2763],{"class":577},[563,4429,4430],{"class":581},"wrangler d1 migrations apply my-database --local",[563,4432,874],{"class":577},[563,4434,672],{"class":577},[563,4436,4437],{"class":565,"line":1172},[563,4438,937],{"emptyLinePlaceholder":936},[563,4440,4441,4443,4445,4447,4449,4451,4453,4455],{"class":565,"line":1590},[563,4442,2753],{"class":577},[563,4444,2925],{"class":640},[563,4446,874],{"class":577},[563,4448,552],{"class":577},[563,4450,2763],{"class":577},[563,4452,2934],{"class":581},[563,4454,874],{"class":577},[563,4456,672],{"class":577},[563,4458,4459,4461,4463,4465,4467,4469,4471,4473],{"class":565,"line":1601},[563,4460,2753],{"class":577},[563,4462,2945],{"class":640},[563,4464,874],{"class":577},[563,4466,552],{"class":577},[563,4468,2763],{"class":577},[563,4470,2954],{"class":581},[563,4472,874],{"class":577},[563,4474,672],{"class":577},[563,4476,4477,4479,4482,4484,4486,4488,4491,4493],{"class":565,"line":1622},[563,4478,2753],{"class":577},[563,4480,4481],{"class":640},"db:seed:all",[563,4483,874],{"class":577},[563,4485,552],{"class":577},[563,4487,2763],{"class":577},[563,4489,4490],{"class":581},"node scripts/seed-database.mjs --remote --all",[563,4492,874],{"class":577},[563,4494,672],{"class":577},[563,4496,4497,4499,4501,4503,4505,4507,4509,4511],{"class":565,"line":1644},[563,4498,2753],{"class":577},[563,4500,2965],{"class":640},[563,4502,874],{"class":577},[563,4504,552],{"class":577},[563,4506,2763],{"class":577},[563,4508,2974],{"class":581},[563,4510,874],{"class":577},[563,4512,672],{"class":577},[563,4514,4515],{"class":565,"line":1654},[563,4516,937],{"emptyLinePlaceholder":936},[563,4518,4519,4521,4523,4525,4527,4529,4531,4533],{"class":565,"line":3648},[563,4520,2753],{"class":577},[563,4522,2989],{"class":640},[563,4524,874],{"class":577},[563,4526,552],{"class":577},[563,4528,2763],{"class":577},[563,4530,2998],{"class":581},[563,4532,874],{"class":577},[563,4534,672],{"class":577},[563,4536,4537,4539,4541,4543,4545,4547,4549,4551],{"class":565,"line":3653},[563,4538,2753],{"class":577},[563,4540,3009],{"class":640},[563,4542,874],{"class":577},[563,4544,552],{"class":577},[563,4546,2763],{"class":577},[563,4548,3018],{"class":581},[563,4550,874],{"class":577},[563,4552,672],{"class":577},[563,4554,4555],{"class":565,"line":3658},[563,4556,937],{"emptyLinePlaceholder":936},[563,4558,4559,4561,4563,4565,4567,4569,4571,4573],{"class":565,"line":3664},[563,4560,2753],{"class":577},[563,4562,3053],{"class":640},[563,4564,874],{"class":577},[563,4566,552],{"class":577},[563,4568,2763],{"class":577},[563,4570,3062],{"class":581},[563,4572,874],{"class":577},[563,4574,672],{"class":577},[563,4576,4577,4579,4581,4583,4585,4587,4589,4591],{"class":565,"line":3670},[563,4578,2753],{"class":577},[563,4580,3033],{"class":640},[563,4582,874],{"class":577},[563,4584,552],{"class":577},[563,4586,2763],{"class":577},[563,4588,3042],{"class":581},[563,4590,874],{"class":577},[563,4592,672],{"class":577},[563,4594,4595,4597,4599,4601,4603,4605,4607],{"class":565,"line":3675},[563,4596,2753],{"class":577},[563,4598,3073],{"class":640},[563,4600,874],{"class":577},[563,4602,552],{"class":577},[563,4604,2763],{"class":577},[563,4606,3082],{"class":581},[563,4608,3105],{"class":577},[563,4610,4611],{"class":565,"line":3681},[563,4612,1256],{"class":577},[563,4614,4615,4617,4620,4622,4624],{"class":565,"line":3687},[563,4616,2739],{"class":577},[563,4618,4619],{"class":749},"dependencies",[563,4621,874],{"class":577},[563,4623,552],{"class":577},[563,4625,646],{"class":577},[563,4627,4628,4630,4632,4634,4636,4638,4641,4643],{"class":565,"line":3693},[563,4629,2753],{"class":577},[563,4631,2374],{"class":640},[563,4633,874],{"class":577},[563,4635,552],{"class":577},[563,4637,2763],{"class":577},[563,4639,4640],{"class":581},"^4.2.1",[563,4642,874],{"class":577},[563,4644,672],{"class":577},[563,4646,4647,4649,4652,4654,4656,4658,4660,4662],{"class":565,"line":3699},[563,4648,2753],{"class":577},[563,4650,4651],{"class":640},"nuxt",[563,4653,874],{"class":577},[563,4655,552],{"class":577},[563,4657,2763],{"class":577},[563,4659,4640],{"class":581},[563,4661,874],{"class":577},[563,4663,672],{"class":577},[563,4665,4666,4668,4670,4672,4674,4676,4679],{"class":565,"line":3705},[563,4667,2753],{"class":577},[563,4669,853],{"class":640},[563,4671,874],{"class":577},[563,4673,552],{"class":577},[563,4675,2763],{"class":577},[563,4677,4678],{"class":581},"^3.5.25",[563,4680,3105],{"class":577},[563,4682,4683],{"class":565,"line":3711},[563,4684,1256],{"class":577},[563,4686,4687,4689,4692,4694,4696],{"class":565,"line":3716},[563,4688,2739],{"class":577},[563,4690,4691],{"class":749},"devDependencies",[563,4693,874],{"class":577},[563,4695,552],{"class":577},[563,4697,646],{"class":577},[563,4699,4700,4702,4705,4707,4709,4711,4714,4716],{"class":565,"line":3722},[563,4701,2753],{"class":577},[563,4703,4704],{"class":640},"@nuxt/eslint",[563,4706,874],{"class":577},[563,4708,552],{"class":577},[563,4710,2763],{"class":577},[563,4712,4713],{"class":581},"^1.9.0",[563,4715,874],{"class":577},[563,4717,672],{"class":577},[563,4719,4720,4722,4725,4727,4729,4731,4734,4736],{"class":565,"line":3727},[563,4721,2753],{"class":577},[563,4723,4724],{"class":640},"drizzle-kit",[563,4726,874],{"class":577},[563,4728,552],{"class":577},[563,4730,2763],{"class":577},[563,4732,4733],{"class":581},"^0.31.5",[563,4735,874],{"class":577},[563,4737,672],{"class":577},[563,4739,4740,4742,4745,4747,4749,4751,4754,4756],{"class":565,"line":3732},[563,4741,2753],{"class":577},[563,4743,4744],{"class":640},"drizzle-orm",[563,4746,874],{"class":577},[563,4748,552],{"class":577},[563,4750,2763],{"class":577},[563,4752,4753],{"class":581},"^0.36.4",[563,4755,874],{"class":577},[563,4757,672],{"class":577},[563,4759,4760,4762,4765,4767,4769,4771,4774,4776],{"class":565,"line":3738},[563,4761,2753],{"class":577},[563,4763,4764],{"class":640},"nitro-cloudflare-dev",[563,4766,874],{"class":577},[563,4768,552],{"class":577},[563,4770,2763],{"class":577},[563,4772,4773],{"class":581},"^0.2.2",[563,4775,874],{"class":577},[563,4777,672],{"class":577},[563,4779,4780,4782,4784,4786,4788,4790,4793],{"class":565,"line":3744},[563,4781,2753],{"class":577},[563,4783,3246],{"class":640},[563,4785,874],{"class":577},[563,4787,552],{"class":577},[563,4789,2763],{"class":577},[563,4791,4792],{"class":581},"^4.51.0",[563,4794,3105],{"class":577},[563,4796,4797],{"class":565,"line":3750},[563,4798,712],{"class":577},[563,4800,4801],{"class":565,"line":3755},[563,4802,718],{"class":577},[554,4804,4806],{"className":2231,"code":4805,"filename":3162,"language":2234,"meta":559,"style":559},"# 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",[518,4807,4808,4813,4818,4822,4830,4838,4842,4850,4854,4859,4864,4869,4873],{"__ignoreMap":559},[563,4809,4810],{"class":565,"line":566},[563,4811,4812],{"class":942},"# Local Development Environment Variables\n",[563,4814,4815],{"class":565,"line":649},[563,4816,4817],{"class":942},"# Copy from .dev.vars.example and fill in your values\n",[563,4819,4820],{"class":565,"line":633},[563,4821,937],{"emptyLinePlaceholder":936},[563,4823,4824,4826,4828],{"class":565,"line":675},[563,4825,3190],{"class":573},[563,4827,756],{"class":577},[563,4829,3195],{"class":581},[563,4831,4832,4834,4836],{"class":565,"line":698},[563,4833,3200],{"class":573},[563,4835,756],{"class":577},[563,4837,3205],{"class":581},[563,4839,4840],{"class":565,"line":709},[563,4841,937],{"emptyLinePlaceholder":936},[563,4843,4844,4846,4848],{"class":565,"line":715},[563,4845,3214],{"class":573},[563,4847,756],{"class":577},[563,4849,3219],{"class":581},[563,4851,4852],{"class":565,"line":989},[563,4853,937],{"emptyLinePlaceholder":936},[563,4855,4856],{"class":565,"line":994},[563,4857,4858],{"class":942},"# OAuth Providers (if enabled)\n",[563,4860,4861],{"class":565,"line":1022},[563,4862,4863],{"class":942},"# GOOGLE_CLIENT_ID=\n",[563,4865,4866],{"class":565,"line":1061},[563,4867,4868],{"class":942},"# GOOGLE_CLIENT_SECRET=\n",[563,4870,4871],{"class":565,"line":1074},[563,4872,937],{"emptyLinePlaceholder":936},[563,4874,4875,4877,4879],{"class":565,"line":850},[563,4876,3228],{"class":573},[563,4878,756],{"class":577},[563,4880,3233],{"class":581},[554,4882,4885],{"className":556,"code":4883,"filename":4884,"language":558,"meta":559,"style":559},"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",[518,4886,4887,4906,4928,4932,4936,4941,4946,4950,4964,4969,5011,5015,5031,5053,5057,5061,5083],{"__ignoreMap":559},[563,4888,4889,4891,4893,4895,4897,4899,4901,4904],{"class":565,"line":566},[563,4890,1671],{"class":789},[563,4892,917],{"class":577},[563,4894,2625],{"class":573},[563,4896,1560],{"class":577},[563,4898,1691],{"class":789},[563,4900,1552],{"class":577},[563,4902,4903],{"class":581},"drizzle-orm/d1",[563,4905,1699],{"class":577},[563,4907,4908,4910,4913,4916,4918,4921,4923,4926],{"class":565,"line":649},[563,4909,1671],{"class":789},[563,4911,4912],{"class":577}," *",[563,4914,4915],{"class":789}," as",[563,4917,2635],{"class":573},[563,4919,4920],{"class":789},"from",[563,4922,1552],{"class":577},[563,4924,4925],{"class":581},"../database/schema",[563,4927,1699],{"class":577},[563,4929,4930],{"class":565,"line":633},[563,4931,937],{"emptyLinePlaceholder":936},[563,4933,4934],{"class":565,"line":675},[563,4935,3528],{"class":942},[563,4937,4938],{"class":565,"line":698},[563,4939,4940],{"class":942}," * Access D1 database with Drizzle ORM\n",[563,4942,4943],{"class":565,"line":709},[563,4944,4945],{"class":942}," * Replaces hubDatabase() from NuxtHub\n",[563,4947,4948],{"class":565,"line":715},[563,4949,3543],{"class":942},[563,4951,4952,4954,4957,4960,4962],{"class":565,"line":989},[563,4953,1860],{"class":789},[563,4955,4956],{"class":749}," function",[563,4958,4959],{"class":569}," useDrizzle",[563,4961,764],{"class":577},[563,4963,646],{"class":577},[563,4965,4966],{"class":565,"line":994},[563,4967,4968],{"class":942},"  // Check multiple possible locations for the DB binding\n",[563,4970,4971,4974,4977,4979,4981,4983,4985,4987,4990,4993,4995,4997,4999,5001,5003,5005,5007,5009],{"class":565,"line":1022},[563,4972,4973],{"class":749},"  const",[563,4975,4976],{"class":573}," DB",[563,4978,926],{"class":577},[563,4980,2582],{"class":573},[563,4982,590],{"class":577},[563,4984,2587],{"class":573},[563,4986,590],{"class":577},[563,4988,4989],{"class":573},"DB",[563,4991,4992],{"class":577}," ||",[563,4994,2598],{"class":573},[563,4996,590],{"class":577},[563,4998,2603],{"class":573},[563,5000,2606],{"class":577},[563,5002,4989],{"class":573},[563,5004,4992],{"class":577},[563,5006,2598],{"class":573},[563,5008,590],{"class":577},[563,5010,2617],{"class":573},[563,5012,5013],{"class":565,"line":1061},[563,5014,937],{"emptyLinePlaceholder":936},[563,5016,5017,5020,5022,5024,5026,5029],{"class":565,"line":1074},[563,5018,5019],{"class":789},"  if",[563,5021,1272],{"class":683},[563,5023,1509],{"class":577},[563,5025,4989],{"class":573},[563,5027,5028],{"class":683},") ",[563,5030,1520],{"class":577},[563,5032,5033,5036,5039,5042,5044,5046,5049,5051],{"class":565,"line":850},[563,5034,5035],{"class":789},"    throw",[563,5037,5038],{"class":577}," new",[563,5040,5041],{"class":569}," Error",[563,5043,574],{"class":683},[563,5045,578],{"class":577},[563,5047,5048],{"class":581},"D1 Database binding not found. Make sure DB is configured in wrangler.jsonc",[563,5050,578],{"class":577},[563,5052,1122],{"class":683},[563,5054,5055],{"class":565,"line":851},[563,5056,712],{"class":577},[563,5058,5059],{"class":565,"line":852},[563,5060,937],{"emptyLinePlaceholder":936},[563,5062,5063,5066,5068,5070,5072,5074,5076,5079,5081],{"class":565,"line":1139},[563,5064,5065],{"class":789},"  return",[563,5067,2625],{"class":569},[563,5069,574],{"class":683},[563,5071,4989],{"class":573},[563,5073,795],{"class":577},[563,5075,917],{"class":577},[563,5077,5078],{"class":573}," schema",[563,5080,1560],{"class":577},[563,5082,1122],{"class":683},[563,5084,5085],{"class":565,"line":1148},[563,5086,718],{"class":577},[554,5088,5091],{"className":556,"code":5089,"filename":5090,"language":558,"meta":559,"style":559},"/**\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",[518,5092,5093,5097,5102,5107,5111,5124,5129,5168,5172,5186,5205,5209,5213,5220],{"__ignoreMap":559},[563,5094,5095],{"class":565,"line":566},[563,5096,3528],{"class":942},[563,5098,5099],{"class":565,"line":649},[563,5100,5101],{"class":942}," * Access KV storage\n",[563,5103,5104],{"class":565,"line":633},[563,5105,5106],{"class":942}," * Replaces hubKV() from NuxtHub\n",[563,5108,5109],{"class":565,"line":675},[563,5110,3543],{"class":942},[563,5112,5113,5115,5117,5120,5122],{"class":565,"line":698},[563,5114,1860],{"class":789},[563,5116,4956],{"class":749},[563,5118,5119],{"class":569}," useKV",[563,5121,764],{"class":577},[563,5123,646],{"class":577},[563,5125,5126],{"class":565,"line":709},[563,5127,5128],{"class":942},"  // Check multiple possible locations for the KV binding\n",[563,5130,5131,5133,5135,5137,5139,5141,5143,5145,5148,5150,5152,5154,5156,5158,5160,5162,5164,5166],{"class":565,"line":715},[563,5132,4973],{"class":749},[563,5134,2697],{"class":573},[563,5136,926],{"class":577},[563,5138,2582],{"class":573},[563,5140,590],{"class":577},[563,5142,2587],{"class":573},[563,5144,590],{"class":577},[563,5146,5147],{"class":573},"KV",[563,5149,4992],{"class":577},[563,5151,2598],{"class":573},[563,5153,590],{"class":577},[563,5155,2603],{"class":573},[563,5157,2606],{"class":577},[563,5159,5147],{"class":573},[563,5161,4992],{"class":577},[563,5163,2598],{"class":573},[563,5165,590],{"class":577},[563,5167,2689],{"class":573},[563,5169,5170],{"class":565,"line":989},[563,5171,937],{"emptyLinePlaceholder":936},[563,5173,5174,5176,5178,5180,5182,5184],{"class":565,"line":994},[563,5175,5019],{"class":789},[563,5177,1272],{"class":683},[563,5179,1509],{"class":577},[563,5181,5147],{"class":573},[563,5183,5028],{"class":683},[563,5185,1520],{"class":577},[563,5187,5188,5190,5192,5194,5196,5198,5201,5203],{"class":565,"line":1022},[563,5189,5035],{"class":789},[563,5191,5038],{"class":577},[563,5193,5041],{"class":569},[563,5195,574],{"class":683},[563,5197,578],{"class":577},[563,5199,5200],{"class":581},"KV binding not found. Make sure KV is configured in wrangler.jsonc",[563,5202,578],{"class":577},[563,5204,1122],{"class":683},[563,5206,5207],{"class":565,"line":1061},[563,5208,712],{"class":577},[563,5210,5211],{"class":565,"line":1074},[563,5212,937],{"emptyLinePlaceholder":936},[563,5214,5215,5217],{"class":565,"line":850},[563,5216,5065],{"class":789},[563,5218,5219],{"class":573}," KV\n",[563,5221,5222],{"class":565,"line":851},[563,5223,718],{"class":577},[554,5225,5228],{"className":556,"code":5226,"filename":5227,"language":558,"meta":559,"style":559},"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",[518,5229,5230,5254,5258,5289,5319,5343,5347,5352,5372,5401,5405,5411,5418,5425,5444,5448],{"__ignoreMap":559},[563,5231,5232,5234,5236,5239,5241,5244,5246,5248,5250,5252],{"class":565,"line":566},[563,5233,1671],{"class":789},[563,5235,917],{"class":577},[563,5237,5238],{"class":573}," setResponseStatus",[563,5240,795],{"class":577},[563,5242,5243],{"class":573}," setResponseHeader",[563,5245,1560],{"class":577},[563,5247,1691],{"class":789},[563,5249,1552],{"class":577},[563,5251,1184],{"class":581},[563,5253,1699],{"class":577},[563,5255,5256],{"class":565,"line":649},[563,5257,937],{"emptyLinePlaceholder":936},[563,5259,5260,5262,5264,5266,5268,5271,5273,5276,5278,5281,5283,5285,5287],{"class":565,"line":633},[563,5261,1860],{"class":789},[563,5263,1951],{"class":789},[563,5265,4956],{"class":749},[563,5267,1272],{"class":577},[563,5269,5270],{"class":1275},"error",[563,5272,552],{"class":577},[563,5274,5275],{"class":640}," any",[563,5277,795],{"class":577},[563,5279,5280],{"class":1275}," event",[563,5282,552],{"class":577},[563,5284,5275],{"class":640},[563,5286,587],{"class":577},[563,5288,646],{"class":577},[563,5290,5291,5293,5295,5297,5300,5302,5305,5307,5309,5311,5314,5316],{"class":565,"line":675},[563,5292,4973],{"class":749},[563,5294,1536],{"class":573},[563,5296,926],{"class":577},[563,5298,5299],{"class":573}," error",[563,5301,590],{"class":577},[563,5303,5304],{"class":573},"statusCode",[563,5306,4992],{"class":577},[563,5308,5299],{"class":573},[563,5310,590],{"class":577},[563,5312,5313],{"class":573},"status",[563,5315,4992],{"class":577},[563,5317,5318],{"class":1541}," 500\n",[563,5320,5321,5323,5325,5327,5329,5331,5334,5336,5338,5340],{"class":565,"line":698},[563,5322,4973],{"class":749},[563,5324,1547],{"class":573},[563,5326,926],{"class":577},[563,5328,5299],{"class":573},[563,5330,590],{"class":577},[563,5332,5333],{"class":573},"statusMessage",[563,5335,4992],{"class":577},[563,5337,5299],{"class":573},[563,5339,590],{"class":577},[563,5341,5342],{"class":573},"message\n",[563,5344,5345],{"class":565,"line":709},[563,5346,937],{"emptyLinePlaceholder":936},[563,5348,5349],{"class":565,"line":715},[563,5350,5351],{"class":942},"  // Set proper HTTP status code\n",[563,5353,5354,5357,5359,5362,5364,5366,5368,5370],{"class":565,"line":989},[563,5355,5356],{"class":569},"  setResponseStatus",[563,5358,574],{"class":683},[563,5360,5361],{"class":573},"event",[563,5363,795],{"class":577},[563,5365,1536],{"class":573},[563,5367,795],{"class":577},[563,5369,1547],{"class":573},[563,5371,1122],{"class":683},[563,5373,5374,5377,5379,5381,5383,5385,5388,5390,5392,5394,5397,5399],{"class":565,"line":994},[563,5375,5376],{"class":569},"  setResponseHeader",[563,5378,574],{"class":683},[563,5380,5361],{"class":573},[563,5382,795],{"class":577},[563,5384,1552],{"class":577},[563,5386,5387],{"class":581},"Content-Type",[563,5389,578],{"class":577},[563,5391,795],{"class":577},[563,5393,1552],{"class":577},[563,5395,5396],{"class":581},"application/json",[563,5398,578],{"class":577},[563,5400,1122],{"class":683},[563,5402,5403],{"class":565,"line":1022},[563,5404,937],{"emptyLinePlaceholder":936},[563,5406,5407,5409],{"class":565,"line":1061},[563,5408,5065],{"class":789},[563,5410,646],{"class":577},[563,5412,5413,5416],{"class":565,"line":1074},[563,5414,5415],{"class":573},"    statusCode",[563,5417,672],{"class":577},[563,5419,5420,5423],{"class":565,"line":850},[563,5421,5422],{"class":573},"    statusMessage",[563,5424,672],{"class":577},[563,5426,5427,5430,5432,5434,5436,5439,5441],{"class":565,"line":851},[563,5428,5429],{"class":683},"    message",[563,5431,552],{"class":577},[563,5433,5299],{"class":573},[563,5435,590],{"class":577},[563,5437,5438],{"class":573},"message",[563,5440,4992],{"class":577},[563,5442,5443],{"class":573}," statusMessage\n",[563,5445,5446],{"class":565,"line":852},[563,5447,712],{"class":577},[563,5449,5450],{"class":565,"line":1139},[563,5451,718],{"class":577},[554,5453,5458],{"className":5454,"code":5455,"filename":5456,"language":5457,"meta":559,"style":559},"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",[518,5459,5460,5465,5469,5473,5478,5483,5487,5491,5511,5536,5560,5580,5600,5604,5629,5643,5668,5672,5683,5702,5720,5738,5756,5774,5792,5808,5812,5816,5827,5870,5908,5946,5984,6023,6027,6031,6062,6098,6102,6106,6130,6137,6151,6167,6203,6215,6223,6230,6245,6267,6274,6278,6282,6286,6305,6326,6342,6356,6362,6366,6384,6406,6418,6436,6442,6448,6452,6456,6469,6507,6534,6539,6568,6599,6668,6675,6680,6692,6716,6748,6753,6798,6822,6837,6842,6847,6870,6920,6928,6933,6938,6956,6995,7000,7007,7034,7048,7066,7081,7087,7092,7140,7164,7189,7222,7236,7241,7248,7263,7288,7295,7300,7305,7310,7335,7360,7399,7404,7411,7436,7449,7473,7486,7491,7496,7538,7559,7583,7615,7628,7633,7640,7655,7679,7686,7691,7696,7701,7728,7754,7759,7766,7793,7821,7826,7839,7855,7873,7893,7899,7904,7909,7923,7938,7955,7973,7978,7983,7988,8002,8017,8034,8052,8057,8062,8067,8091,8115,8122,8137,8161,8169,8174,8179,8184,8198,8241,8273,8314,8319,8334,8354,8380,8405,8410,8430,8435,8469,8495,8519,8543,8569,8574,8579,8600,8626,8650,8667],{"__ignoreMap":559},[563,5461,5462],{"class":565,"line":566},[563,5463,5464],{"class":942},"#!/usr/bin/env node\n",[563,5466,5467],{"class":565,"line":649},[563,5468,937],{"emptyLinePlaceholder":936},[563,5470,5471],{"class":565,"line":633},[563,5472,3528],{"class":942},[563,5474,5475],{"class":565,"line":675},[563,5476,5477],{"class":942}," * Cloudflare Setup Script\n",[563,5479,5480],{"class":565,"line":698},[563,5481,5482],{"class":942}," * Creates D1, KV, and other resources interactively\n",[563,5484,5485],{"class":565,"line":709},[563,5486,3543],{"class":942},[563,5488,5489],{"class":565,"line":715},[563,5490,937],{"emptyLinePlaceholder":936},[563,5492,5493,5495,5497,5500,5502,5504,5506,5509],{"class":565,"line":989},[563,5494,1671],{"class":789},[563,5496,917],{"class":577},[563,5498,5499],{"class":573}," execSync",[563,5501,1560],{"class":577},[563,5503,1691],{"class":789},[563,5505,1552],{"class":577},[563,5507,5508],{"class":581},"child_process",[563,5510,1699],{"class":577},[563,5512,5513,5515,5517,5520,5522,5525,5527,5529,5531,5534],{"class":565,"line":994},[563,5514,1671],{"class":789},[563,5516,917],{"class":577},[563,5518,5519],{"class":573}," readFileSync",[563,5521,795],{"class":577},[563,5523,5524],{"class":573}," writeFileSync",[563,5526,1560],{"class":577},[563,5528,1691],{"class":789},[563,5530,1552],{"class":577},[563,5532,5533],{"class":581},"fs",[563,5535,1699],{"class":577},[563,5537,5538,5540,5542,5545,5547,5550,5552,5554,5556,5558],{"class":565,"line":1022},[563,5539,1671],{"class":789},[563,5541,917],{"class":577},[563,5543,5544],{"class":573}," join",[563,5546,795],{"class":577},[563,5548,5549],{"class":573}," dirname",[563,5551,1560],{"class":577},[563,5553,1691],{"class":789},[563,5555,1552],{"class":577},[563,5557,593],{"class":581},[563,5559,1699],{"class":577},[563,5561,5562,5564,5566,5569,5571,5573,5575,5578],{"class":565,"line":1061},[563,5563,1671],{"class":789},[563,5565,917],{"class":577},[563,5567,5568],{"class":573}," fileURLToPath",[563,5570,1560],{"class":577},[563,5572,1691],{"class":789},[563,5574,1552],{"class":577},[563,5576,5577],{"class":581},"url",[563,5579,1699],{"class":577},[563,5581,5582,5584,5586,5588,5591,5593,5595,5598],{"class":565,"line":1074},[563,5583,1671],{"class":789},[563,5585,4912],{"class":577},[563,5587,4915],{"class":789},[563,5589,5590],{"class":573}," readline ",[563,5592,4920],{"class":789},[563,5594,1552],{"class":577},[563,5596,5597],{"class":581},"readline",[563,5599,1699],{"class":577},[563,5601,5602],{"class":565,"line":850},[563,5603,937],{"emptyLinePlaceholder":936},[563,5605,5606,5608,5611,5613,5615,5617,5619,5621,5624,5626],{"class":565,"line":851},[563,5607,750],{"class":749},[563,5609,5610],{"class":573}," __filename ",[563,5612,756],{"class":577},[563,5614,5568],{"class":569},[563,5616,574],{"class":573},[563,5618,1671],{"class":789},[563,5620,590],{"class":577},[563,5622,5623],{"class":573},"meta",[563,5625,590],{"class":577},[563,5627,5628],{"class":573},"url)\n",[563,5630,5631,5633,5636,5638,5640],{"class":565,"line":852},[563,5632,750],{"class":749},[563,5634,5635],{"class":573}," __dirname ",[563,5637,756],{"class":577},[563,5639,5549],{"class":569},[563,5641,5642],{"class":573},"(__filename)\n",[563,5644,5645,5647,5650,5652,5654,5657,5659,5661,5664,5666],{"class":565,"line":1139},[563,5646,750],{"class":749},[563,5648,5649],{"class":573}," projectRoot ",[563,5651,756],{"class":577},[563,5653,5544],{"class":569},[563,5655,5656],{"class":573},"(__dirname",[563,5658,795],{"class":577},[563,5660,1552],{"class":577},[563,5662,5663],{"class":581},"..",[563,5665,578],{"class":577},[563,5667,1122],{"class":573},[563,5669,5670],{"class":565,"line":1148},[563,5671,937],{"emptyLinePlaceholder":936},[563,5673,5674,5676,5679,5681],{"class":565,"line":1153},[563,5675,750],{"class":749},[563,5677,5678],{"class":573}," colors ",[563,5680,756],{"class":577},[563,5682,646],{"class":577},[563,5684,5685,5688,5690,5692,5695,5698,5700],{"class":565,"line":1162},[563,5686,5687],{"class":683},"  reset",[563,5689,552],{"class":577},[563,5691,1552],{"class":577},[563,5693,5694],{"class":573},"\\x1b",[563,5696,5697],{"class":581},"[0m",[563,5699,578],{"class":577},[563,5701,672],{"class":577},[563,5703,5704,5707,5709,5711,5713,5716,5718],{"class":565,"line":1167},[563,5705,5706],{"class":683},"  bright",[563,5708,552],{"class":577},[563,5710,1552],{"class":577},[563,5712,5694],{"class":573},[563,5714,5715],{"class":581},"[1m",[563,5717,578],{"class":577},[563,5719,672],{"class":577},[563,5721,5722,5725,5727,5729,5731,5734,5736],{"class":565,"line":1172},[563,5723,5724],{"class":683},"  green",[563,5726,552],{"class":577},[563,5728,1552],{"class":577},[563,5730,5694],{"class":573},[563,5732,5733],{"class":581},"[32m",[563,5735,578],{"class":577},[563,5737,672],{"class":577},[563,5739,5740,5743,5745,5747,5749,5752,5754],{"class":565,"line":1590},[563,5741,5742],{"class":683},"  yellow",[563,5744,552],{"class":577},[563,5746,1552],{"class":577},[563,5748,5694],{"class":573},[563,5750,5751],{"class":581},"[33m",[563,5753,578],{"class":577},[563,5755,672],{"class":577},[563,5757,5758,5761,5763,5765,5767,5770,5772],{"class":565,"line":1601},[563,5759,5760],{"class":683},"  blue",[563,5762,552],{"class":577},[563,5764,1552],{"class":577},[563,5766,5694],{"class":573},[563,5768,5769],{"class":581},"[34m",[563,5771,578],{"class":577},[563,5773,672],{"class":577},[563,5775,5776,5779,5781,5783,5785,5788,5790],{"class":565,"line":1622},[563,5777,5778],{"class":683},"  red",[563,5780,552],{"class":577},[563,5782,1552],{"class":577},[563,5784,5694],{"class":573},[563,5786,5787],{"class":581},"[31m",[563,5789,578],{"class":577},[563,5791,672],{"class":577},[563,5793,5794,5797,5799,5801,5803,5806],{"class":565,"line":1644},[563,5795,5796],{"class":683},"  cyan",[563,5798,552],{"class":577},[563,5800,1552],{"class":577},[563,5802,5694],{"class":573},[563,5804,5805],{"class":581},"[36m",[563,5807,1699],{"class":577},[563,5809,5810],{"class":565,"line":1654},[563,5811,718],{"class":577},[563,5813,5814],{"class":565,"line":3648},[563,5815,937],{"emptyLinePlaceholder":936},[563,5817,5818,5820,5823,5825],{"class":565,"line":3653},[563,5819,750],{"class":749},[563,5821,5822],{"class":573}," D1_REGIONS ",[563,5824,756],{"class":577},[563,5826,2347],{"class":573},[563,5828,5829,5832,5835,5837,5839,5842,5844,5846,5849,5851,5853,5856,5858,5860,5863,5865,5867],{"class":565,"line":3658},[563,5830,5831],{"class":577},"  {",[563,5833,5834],{"class":683}," code",[563,5836,552],{"class":577},[563,5838,1552],{"class":577},[563,5840,5841],{"class":581},"weur",[563,5843,578],{"class":577},[563,5845,795],{"class":577},[563,5847,5848],{"class":683}," name",[563,5850,552],{"class":577},[563,5852,1552],{"class":577},[563,5854,5855],{"class":581},"Western Europe",[563,5857,578],{"class":577},[563,5859,795],{"class":577},[563,5861,5862],{"class":683}," recommended",[563,5864,552],{"class":577},[563,5866,2472],{"class":668},[563,5868,5869],{"class":577}," },\n",[563,5871,5872,5874,5876,5878,5880,5883,5885,5887,5889,5891,5893,5896,5898,5900,5902,5904,5906],{"class":565,"line":3664},[563,5873,5831],{"class":577},[563,5875,5834],{"class":683},[563,5877,552],{"class":577},[563,5879,1552],{"class":577},[563,5881,5882],{"class":581},"eeur",[563,5884,578],{"class":577},[563,5886,795],{"class":577},[563,5888,5848],{"class":683},[563,5890,552],{"class":577},[563,5892,1552],{"class":577},[563,5894,5895],{"class":581},"Eastern Europe",[563,5897,578],{"class":577},[563,5899,795],{"class":577},[563,5901,5862],{"class":683},[563,5903,552],{"class":577},[563,5905,669],{"class":668},[563,5907,5869],{"class":577},[563,5909,5910,5912,5914,5916,5918,5921,5923,5925,5927,5929,5931,5934,5936,5938,5940,5942,5944],{"class":565,"line":3670},[563,5911,5831],{"class":577},[563,5913,5834],{"class":683},[563,5915,552],{"class":577},[563,5917,1552],{"class":577},[563,5919,5920],{"class":581},"apac",[563,5922,578],{"class":577},[563,5924,795],{"class":577},[563,5926,5848],{"class":683},[563,5928,552],{"class":577},[563,5930,1552],{"class":577},[563,5932,5933],{"class":581},"Asia Pacific",[563,5935,578],{"class":577},[563,5937,795],{"class":577},[563,5939,5862],{"class":683},[563,5941,552],{"class":577},[563,5943,669],{"class":668},[563,5945,5869],{"class":577},[563,5947,5948,5950,5952,5954,5956,5959,5961,5963,5965,5967,5969,5972,5974,5976,5978,5980,5982],{"class":565,"line":3675},[563,5949,5831],{"class":577},[563,5951,5834],{"class":683},[563,5953,552],{"class":577},[563,5955,1552],{"class":577},[563,5957,5958],{"class":581},"wnam",[563,5960,578],{"class":577},[563,5962,795],{"class":577},[563,5964,5848],{"class":683},[563,5966,552],{"class":577},[563,5968,1552],{"class":577},[563,5970,5971],{"class":581},"Western North America (US)",[563,5973,578],{"class":577},[563,5975,795],{"class":577},[563,5977,5862],{"class":683},[563,5979,552],{"class":577},[563,5981,669],{"class":668},[563,5983,5869],{"class":577},[563,5985,5986,5988,5990,5992,5994,5997,5999,6001,6003,6005,6007,6010,6012,6014,6016,6018,6020],{"class":565,"line":3681},[563,5987,5831],{"class":577},[563,5989,5834],{"class":683},[563,5991,552],{"class":577},[563,5993,1552],{"class":577},[563,5995,5996],{"class":581},"enam",[563,5998,578],{"class":577},[563,6000,795],{"class":577},[563,6002,5848],{"class":683},[563,6004,552],{"class":577},[563,6006,1552],{"class":577},[563,6008,6009],{"class":581},"Eastern North America (US)",[563,6011,578],{"class":577},[563,6013,795],{"class":577},[563,6015,5862],{"class":683},[563,6017,552],{"class":577},[563,6019,669],{"class":668},[563,6021,6022],{"class":577}," }\n",[563,6024,6025],{"class":565,"line":3687},[563,6026,4045],{"class":573},[563,6028,6029],{"class":565,"line":3693},[563,6030,937],{"emptyLinePlaceholder":936},[563,6032,6033,6036,6039,6041,6043,6045,6048,6050,6053,6055,6058,6060],{"class":565,"line":3699},[563,6034,6035],{"class":749},"function",[563,6037,6038],{"class":569}," log",[563,6040,574],{"class":577},[563,6042,5438],{"class":1275},[563,6044,795],{"class":577},[563,6046,6047],{"class":1275}," color",[563,6049,926],{"class":577},[563,6051,6052],{"class":573}," colors",[563,6054,590],{"class":577},[563,6056,6057],{"class":573},"reset",[563,6059,587],{"class":577},[563,6061,646],{"class":577},[563,6063,6064,6067,6069,6072,6074,6077,6080,6083,6085,6087,6090,6092,6094,6096],{"class":565,"line":3705},[563,6065,6066],{"class":573},"  console",[563,6068,590],{"class":577},[563,6070,6071],{"class":569},"log",[563,6073,574],{"class":683},[563,6075,6076],{"class":577},"`${",[563,6078,6079],{"class":573},"color",[563,6081,6082],{"class":577},"}${",[563,6084,5438],{"class":573},[563,6086,6082],{"class":577},[563,6088,6089],{"class":573},"colors",[563,6091,590],{"class":577},[563,6093,6057],{"class":573},[563,6095,1056],{"class":577},[563,6097,1122],{"class":683},[563,6099,6100],{"class":565,"line":3711},[563,6101,718],{"class":577},[563,6103,6104],{"class":565,"line":3716},[563,6105,937],{"emptyLinePlaceholder":936},[563,6107,6108,6110,6113,6115,6118,6120,6123,6125,6128],{"class":565,"line":3722},[563,6109,6035],{"class":749},[563,6111,6112],{"class":569}," execCommand",[563,6114,574],{"class":577},[563,6116,6117],{"class":1275},"command",[563,6119,795],{"class":577},[563,6121,6122],{"class":1275}," options",[563,6124,926],{"class":577},[563,6126,6127],{"class":577}," {})",[563,6129,646],{"class":577},[563,6131,6132,6135],{"class":565,"line":3727},[563,6133,6134],{"class":789},"  try",[563,6136,646],{"class":577},[563,6138,6139,6141,6143,6145,6147,6149],{"class":565,"line":3732},[563,6140,1156],{"class":789},[563,6142,5499],{"class":569},[563,6144,574],{"class":683},[563,6146,6117],{"class":573},[563,6148,795],{"class":577},[563,6150,646],{"class":577},[563,6152,6153,6156,6158,6160,6163,6165],{"class":565,"line":3738},[563,6154,6155],{"class":683},"      encoding",[563,6157,552],{"class":577},[563,6159,1552],{"class":577},[563,6161,6162],{"class":581},"utf-8",[563,6164,578],{"class":577},[563,6166,672],{"class":577},[563,6168,6169,6172,6174,6176,6178,6181,6184,6186,6189,6191,6194,6196,6199,6201],{"class":565,"line":3744},[563,6170,6171],{"class":683},"      stdio",[563,6173,552],{"class":577},[563,6175,6122],{"class":573},[563,6177,590],{"class":577},[563,6179,6180],{"class":573},"silent",[563,6182,6183],{"class":577}," ?",[563,6185,1552],{"class":577},[563,6187,6188],{"class":581},"pipe",[563,6190,578],{"class":577},[563,6192,6193],{"class":577}," :",[563,6195,1552],{"class":577},[563,6197,6198],{"class":581},"inherit",[563,6200,578],{"class":577},[563,6202,672],{"class":577},[563,6204,6205,6208,6210,6213],{"class":565,"line":3750},[563,6206,6207],{"class":683},"      cwd",[563,6209,552],{"class":577},[563,6211,6212],{"class":573}," projectRoot",[563,6214,672],{"class":577},[563,6216,6217,6220],{"class":565,"line":3755},[563,6218,6219],{"class":577},"      ...",[563,6221,6222],{"class":573},"options\n",[563,6224,6225,6228],{"class":565,"line":3761},[563,6226,6227],{"class":577},"    }",[563,6229,1122],{"class":683},[563,6231,6232,6234,6237,6239,6241,6243],{"class":565,"line":3766},[563,6233,1813],{"class":577},[563,6235,6236],{"class":789}," catch",[563,6238,1272],{"class":683},[563,6240,5270],{"class":573},[563,6242,5028],{"class":683},[563,6244,1520],{"class":577},[563,6246,6247,6250,6252,6255,6257,6260,6262,6264],{"class":565,"line":3772},[563,6248,6249],{"class":789},"    if",[563,6251,1272],{"class":683},[563,6253,6254],{"class":573},"options",[563,6256,590],{"class":577},[563,6258,6259],{"class":573},"ignoreError",[563,6261,5028],{"class":683},[563,6263,2622],{"class":789},[563,6265,6266],{"class":577}," null\n",[563,6268,6269,6271],{"class":565,"line":3778},[563,6270,5035],{"class":789},[563,6272,6273],{"class":573}," error\n",[563,6275,6276],{"class":565,"line":3784},[563,6277,712],{"class":577},[563,6279,6280],{"class":565,"line":3789},[563,6281,718],{"class":577},[563,6283,6284],{"class":565,"line":3794},[563,6285,937],{"emptyLinePlaceholder":936},[563,6287,6288,6291,6293,6296,6298,6301,6303],{"class":565,"line":3799},[563,6289,6290],{"class":749},"async",[563,6292,4956],{"class":749},[563,6294,6295],{"class":569}," promptUser",[563,6297,574],{"class":577},[563,6299,6300],{"class":1275},"question",[563,6302,587],{"class":577},[563,6304,646],{"class":577},[563,6306,6307,6309,6312,6314,6317,6319,6322,6324],{"class":565,"line":3804},[563,6308,4973],{"class":749},[563,6310,6311],{"class":573}," rl",[563,6313,926],{"class":577},[563,6315,6316],{"class":573}," readline",[563,6318,590],{"class":577},[563,6320,6321],{"class":569},"createInterface",[563,6323,574],{"class":683},[563,6325,1520],{"class":577},[563,6327,6328,6331,6333,6335,6337,6340],{"class":565,"line":3810},[563,6329,6330],{"class":683},"    input",[563,6332,552],{"class":577},[563,6334,2582],{"class":573},[563,6336,590],{"class":577},[563,6338,6339],{"class":573},"stdin",[563,6341,672],{"class":577},[563,6343,6344,6347,6349,6351,6353],{"class":565,"line":3816},[563,6345,6346],{"class":683},"    output",[563,6348,552],{"class":577},[563,6350,2582],{"class":573},[563,6352,590],{"class":577},[563,6354,6355],{"class":573},"stdout\n",[563,6357,6358,6360],{"class":565,"line":3822},[563,6359,1813],{"class":577},[563,6361,1122],{"class":683},[563,6363,6364],{"class":565,"line":3827},[563,6365,937],{"emptyLinePlaceholder":936},[563,6367,6368,6370,6372,6375,6377,6380,6382],{"class":565,"line":3833},[563,6369,5065],{"class":789},[563,6371,5038],{"class":577},[563,6373,6374],{"class":640}," Promise",[563,6376,574],{"class":683},[563,6378,6379],{"class":1275},"resolve",[563,6381,767],{"class":749},[563,6383,646],{"class":577},[563,6385,6386,6389,6391,6393,6395,6397,6399,6402,6404],{"class":565,"line":3839},[563,6387,6388],{"class":573},"    rl",[563,6390,590],{"class":577},[563,6392,6300],{"class":569},[563,6394,574],{"class":683},[563,6396,6300],{"class":573},[563,6398,795],{"class":577},[563,6400,6401],{"class":1275}," answer",[563,6403,767],{"class":749},[563,6405,646],{"class":577},[563,6407,6408,6411,6413,6416],{"class":565,"line":3844},[563,6409,6410],{"class":573},"      rl",[563,6412,590],{"class":577},[563,6414,6415],{"class":569},"close",[563,6417,609],{"class":683},[563,6419,6420,6423,6425,6428,6430,6433],{"class":565,"line":3849},[563,6421,6422],{"class":569},"      resolve",[563,6424,574],{"class":683},[563,6426,6427],{"class":573},"answer",[563,6429,590],{"class":577},[563,6431,6432],{"class":569},"trim",[563,6434,6435],{"class":683},"())\n",[563,6437,6438,6440],{"class":565,"line":3854},[563,6439,6227],{"class":577},[563,6441,1122],{"class":683},[563,6443,6444,6446],{"class":565,"line":3860},[563,6445,1813],{"class":577},[563,6447,1122],{"class":683},[563,6449,6450],{"class":565,"line":3865},[563,6451,718],{"class":577},[563,6453,6454],{"class":565,"line":3871},[563,6455,937],{"emptyLinePlaceholder":936},[563,6457,6458,6460,6462,6465,6467],{"class":565,"line":3877},[563,6459,6290],{"class":749},[563,6461,4956],{"class":749},[563,6463,6464],{"class":569}," selectRegion",[563,6466,764],{"class":577},[563,6468,646],{"class":577},[563,6470,6471,6474,6476,6478,6481,6484,6486,6488,6490,6492,6495,6498,6500,6502,6505],{"class":565,"line":3882},[563,6472,6473],{"class":569},"  log",[563,6475,574],{"class":683},[563,6477,578],{"class":577},[563,6479,6480],{"class":573},"\\n",[563,6482,6483],{"class":581},"🌍 Select D1 Database Region:",[563,6485,578],{"class":577},[563,6487,795],{"class":577},[563,6489,6052],{"class":573},[563,6491,590],{"class":577},[563,6493,6494],{"class":573},"blue",[563,6496,6497],{"class":577}," +",[563,6499,6052],{"class":573},[563,6501,590],{"class":577},[563,6503,6504],{"class":573},"bright",[563,6506,1122],{"class":683},[563,6508,6510,6512,6514,6516,6519,6521,6523,6525,6527,6529,6532],{"class":565,"line":6509},70,[563,6511,6473],{"class":569},[563,6513,574],{"class":683},[563,6515,578],{"class":577},[563,6517,6518],{"class":581},"   Tip: Choose closest to your users",[563,6520,6480],{"class":573},[563,6522,578],{"class":577},[563,6524,795],{"class":577},[563,6526,6052],{"class":573},[563,6528,590],{"class":577},[563,6530,6531],{"class":573},"yellow",[563,6533,1122],{"class":683},[563,6535,6537],{"class":565,"line":6536},71,[563,6538,937],{"emptyLinePlaceholder":936},[563,6540,6542,6545,6547,6550,6552,6554,6557,6559,6562,6564,6566],{"class":565,"line":6541},72,[563,6543,6544],{"class":573},"  D1_REGIONS",[563,6546,590],{"class":577},[563,6548,6549],{"class":569},"forEach",[563,6551,574],{"class":683},[563,6553,574],{"class":577},[563,6555,6556],{"class":1275},"region",[563,6558,795],{"class":577},[563,6560,6561],{"class":1275}," index",[563,6563,587],{"class":577},[563,6565,767],{"class":749},[563,6567,646],{"class":577},[563,6569,6571,6573,6575,6577,6580,6582,6585,6587,6589,6592,6594,6596],{"class":565,"line":6570},73,[563,6572,1083],{"class":749},[563,6574,5862],{"class":573},[563,6576,926],{"class":577},[563,6578,6579],{"class":573}," region",[563,6581,590],{"class":577},[563,6583,6584],{"class":573},"recommended",[563,6586,6183],{"class":577},[563,6588,1552],{"class":577},[563,6590,6591],{"class":581}," ⭐ (Recommended)",[563,6593,578],{"class":577},[563,6595,6193],{"class":577},[563,6597,6598],{"class":577}," ''\n",[563,6600,6602,6605,6607,6610,6613,6616,6619,6622,6624,6627,6629,6631,6633,6635,6637,6639,6641,6643,6645,6647,6649,6651,6653,6655,6657,6659,6661,6663,6666],{"class":565,"line":6601},74,[563,6603,6604],{"class":569},"    log",[563,6606,574],{"class":683},[563,6608,6609],{"class":577},"`",[563,6611,6612],{"class":577},"   ${",[563,6614,6615],{"class":573},"index ",[563,6617,6618],{"class":577},"+",[563,6620,6621],{"class":1541}," 1",[563,6623,923],{"class":577},[563,6625,6626],{"class":581},". ",[563,6628,1031],{"class":577},[563,6630,6556],{"class":573},[563,6632,590],{"class":577},[563,6634,4137],{"class":573},[563,6636,923],{"class":577},[563,6638,1272],{"class":581},[563,6640,1031],{"class":577},[563,6642,6556],{"class":573},[563,6644,590],{"class":577},[563,6646,518],{"class":573},[563,6648,923],{"class":577},[563,6650,587],{"class":581},[563,6652,1031],{"class":577},[563,6654,6584],{"class":573},[563,6656,1056],{"class":577},[563,6658,795],{"class":577},[563,6660,6052],{"class":573},[563,6662,590],{"class":577},[563,6664,6665],{"class":573},"cyan",[563,6667,1122],{"class":683},[563,6669,6671,6673],{"class":565,"line":6670},75,[563,6672,1813],{"class":577},[563,6674,1122],{"class":683},[563,6676,6678],{"class":565,"line":6677},76,[563,6679,937],{"emptyLinePlaceholder":936},[563,6681,6683,6685,6687,6690],{"class":565,"line":6682},77,[563,6684,6473],{"class":569},[563,6686,574],{"class":683},[563,6688,6689],{"class":577},"''",[563,6691,1122],{"class":683},[563,6693,6695,6697,6699,6701,6703,6705,6707,6709,6712,6714],{"class":565,"line":6694},78,[563,6696,4973],{"class":749},[563,6698,6401],{"class":573},[563,6700,926],{"class":577},[563,6702,1013],{"class":789},[563,6704,6295],{"class":569},[563,6706,574],{"class":683},[563,6708,578],{"class":577},[563,6710,6711],{"class":581},"Select region (1-5) or Enter for default [1]: ",[563,6713,578],{"class":577},[563,6715,1122],{"class":683},[563,6717,6719,6721,6724,6726,6728,6731,6733,6735,6737,6739,6742,6744,6746],{"class":565,"line":6718},79,[563,6720,4973],{"class":749},[563,6722,6723],{"class":573}," selection",[563,6725,926],{"class":577},[563,6727,6401],{"class":573},[563,6729,6730],{"class":577}," ===",[563,6732,798],{"class":577},[563,6734,6183],{"class":577},[563,6736,6621],{"class":1541},[563,6738,6193],{"class":577},[563,6740,6741],{"class":569}," parseInt",[563,6743,574],{"class":683},[563,6745,6427],{"class":573},[563,6747,1122],{"class":683},[563,6749,6751],{"class":565,"line":6750},80,[563,6752,937],{"emptyLinePlaceholder":936},[563,6754,6756,6758,6760,6763,6765,6768,6770,6772,6774,6777,6779,6781,6783,6786,6789,6791,6794,6796],{"class":565,"line":6755},81,[563,6757,5019],{"class":789},[563,6759,1272],{"class":683},[563,6761,6762],{"class":569},"isNaN",[563,6764,574],{"class":683},[563,6766,6767],{"class":573},"selection",[563,6769,5028],{"class":683},[563,6771,2595],{"class":577},[563,6773,6723],{"class":573},[563,6775,6776],{"class":577}," \u003C",[563,6778,6621],{"class":1541},[563,6780,4992],{"class":577},[563,6782,6723],{"class":573},[563,6784,6785],{"class":577}," >",[563,6787,6788],{"class":573}," D1_REGIONS",[563,6790,590],{"class":577},[563,6792,6793],{"class":573},"length",[563,6795,5028],{"class":683},[563,6797,1520],{"class":577},[563,6799,6801,6803,6805,6807,6810,6812,6814,6816,6818,6820],{"class":565,"line":6800},82,[563,6802,6604],{"class":569},[563,6804,574],{"class":683},[563,6806,578],{"class":577},[563,6808,6809],{"class":581},"⚠️  Invalid selection, using default",[563,6811,578],{"class":577},[563,6813,795],{"class":577},[563,6815,6052],{"class":573},[563,6817,590],{"class":577},[563,6819,6531],{"class":573},[563,6821,1122],{"class":683},[563,6823,6825,6827,6829,6832,6835],{"class":565,"line":6824},83,[563,6826,1156],{"class":789},[563,6828,6788],{"class":573},[563,6830,6831],{"class":683},"[",[563,6833,6834],{"class":1541},"0",[563,6836,4045],{"class":683},[563,6838,6840],{"class":565,"line":6839},84,[563,6841,712],{"class":577},[563,6843,6845],{"class":565,"line":6844},85,[563,6846,937],{"emptyLinePlaceholder":936},[563,6848,6850,6852,6855,6857,6859,6861,6863,6866,6868],{"class":565,"line":6849},86,[563,6851,4973],{"class":749},[563,6853,6854],{"class":573}," selected",[563,6856,926],{"class":577},[563,6858,6788],{"class":573},[563,6860,6831],{"class":683},[563,6862,6767],{"class":573},[563,6864,6865],{"class":577}," -",[563,6867,6621],{"class":1541},[563,6869,4045],{"class":683},[563,6871,6873,6875,6877,6879,6882,6884,6887,6889,6891,6893,6895,6897,6899,6901,6903,6905,6907,6909,6911,6913,6915,6918],{"class":565,"line":6872},87,[563,6874,6473],{"class":569},[563,6876,574],{"class":683},[563,6878,6609],{"class":577},[563,6880,6881],{"class":581},"✅ Selected: ",[563,6883,1031],{"class":577},[563,6885,6886],{"class":573},"selected",[563,6888,590],{"class":577},[563,6890,4137],{"class":573},[563,6892,923],{"class":577},[563,6894,1272],{"class":581},[563,6896,1031],{"class":577},[563,6898,6886],{"class":573},[563,6900,590],{"class":577},[563,6902,518],{"class":573},[563,6904,923],{"class":577},[563,6906,587],{"class":581},[563,6908,6609],{"class":577},[563,6910,795],{"class":577},[563,6912,6052],{"class":573},[563,6914,590],{"class":577},[563,6916,6917],{"class":573},"green",[563,6919,1122],{"class":683},[563,6921,6923,6925],{"class":565,"line":6922},88,[563,6924,5065],{"class":789},[563,6926,6927],{"class":573}," selected\n",[563,6929,6931],{"class":565,"line":6930},89,[563,6932,718],{"class":577},[563,6934,6936],{"class":565,"line":6935},90,[563,6937,937],{"emptyLinePlaceholder":936},[563,6939,6941,6943,6945,6948,6950,6952,6954],{"class":565,"line":6940},91,[563,6942,6290],{"class":749},[563,6944,4956],{"class":749},[563,6946,6947],{"class":569}," createD1Database",[563,6949,574],{"class":577},[563,6951,6556],{"class":1275},[563,6953,587],{"class":577},[563,6955,646],{"class":577},[563,6957,6959,6961,6963,6965,6967,6970,6972,6974,6976,6978,6980,6983,6985,6987,6989,6991,6993],{"class":565,"line":6958},92,[563,6960,6473],{"class":569},[563,6962,574],{"class":683},[563,6964,6609],{"class":577},[563,6966,6480],{"class":573},[563,6968,6969],{"class":581},"📊 Creating D1 Database in ",[563,6971,1031],{"class":577},[563,6973,6556],{"class":573},[563,6975,590],{"class":577},[563,6977,4137],{"class":573},[563,6979,923],{"class":577},[563,6981,6982],{"class":581},"...",[563,6984,6609],{"class":577},[563,6986,795],{"class":577},[563,6988,6052],{"class":573},[563,6990,590],{"class":577},[563,6992,6494],{"class":573},[563,6994,1122],{"class":683},[563,6996,6998],{"class":565,"line":6997},93,[563,6999,937],{"emptyLinePlaceholder":936},[563,7001,7003,7005],{"class":565,"line":7002},94,[563,7004,6134],{"class":789},[563,7006,646],{"class":577},[563,7008,7010,7012,7015,7017,7020,7023,7025,7027,7029,7031],{"class":565,"line":7009},95,[563,7011,1083],{"class":749},[563,7013,7014],{"class":573}," locationFlag",[563,7016,926],{"class":577},[563,7018,7019],{"class":577}," `",[563,7021,7022],{"class":581},"--location=",[563,7024,1031],{"class":577},[563,7026,6556],{"class":573},[563,7028,590],{"class":577},[563,7030,518],{"class":573},[563,7032,7033],{"class":577},"}`\n",[563,7035,7037,7039,7042,7044,7046],{"class":565,"line":7036},96,[563,7038,1083],{"class":749},[563,7040,7041],{"class":573}," output",[563,7043,926],{"class":577},[563,7045,6112],{"class":569},[563,7047,1019],{"class":683},[563,7049,7051,7054,7057,7059,7062,7064],{"class":565,"line":7050},97,[563,7052,7053],{"class":577},"      `",[563,7055,7056],{"class":581},"wrangler d1 create my-database ",[563,7058,1031],{"class":577},[563,7060,7061],{"class":573},"locationFlag",[563,7063,1056],{"class":577},[563,7065,672],{"class":577},[563,7067,7069,7072,7075,7077,7079],{"class":565,"line":7068},98,[563,7070,7071],{"class":577},"      {",[563,7073,7074],{"class":683}," silent",[563,7076,552],{"class":577},[563,7078,2472],{"class":668},[563,7080,6022],{"class":577},[563,7082,7084],{"class":565,"line":7083},99,[563,7085,7086],{"class":683},"    )\n",[563,7088,7090],{"class":565,"line":7089},100,[563,7091,937],{"emptyLinePlaceholder":936},[563,7093,7095,7097,7100,7102,7104,7106,7109,7111,7113,7116,7119,7122,7124,7126,7129,7131,7134,7136,7138],{"class":565,"line":7094},101,[563,7096,1083],{"class":749},[563,7098,7099],{"class":573}," match",[563,7101,926],{"class":577},[563,7103,7041],{"class":573},[563,7105,590],{"class":577},[563,7107,7108],{"class":569},"match",[563,7110,574],{"class":683},[563,7112,520],{"class":577},[563,7114,7115],{"class":581},"database_id\\s",[563,7117,7118],{"class":577},"*",[563,7120,7121],{"class":581},"=\\s",[563,7123,7118],{"class":577},[563,7125,874],{"class":581},[563,7127,7128],{"class":577},"([^",[563,7130,874],{"class":581},[563,7132,7133],{"class":577},"]+)",[563,7135,874],{"class":581},[563,7137,520],{"class":577},[563,7139,1122],{"class":683},[563,7141,7143,7145,7147,7149,7152,7154,7156,7159,7162],{"class":565,"line":7142},102,[563,7144,6249],{"class":789},[563,7146,1272],{"class":683},[563,7148,7108],{"class":573},[563,7150,7151],{"class":577}," &&",[563,7153,7099],{"class":573},[563,7155,6831],{"class":683},[563,7157,7158],{"class":1541},"1",[563,7160,7161],{"class":683},"]) ",[563,7163,1520],{"class":577},[563,7165,7167,7170,7172,7174,7177,7179,7181,7183,7185,7187],{"class":565,"line":7166},103,[563,7168,7169],{"class":569},"      log",[563,7171,574],{"class":683},[563,7173,6609],{"class":577},[563,7175,7176],{"class":581},"✅ D1 Database created!",[563,7178,6609],{"class":577},[563,7180,795],{"class":577},[563,7182,6052],{"class":573},[563,7184,590],{"class":577},[563,7186,6917],{"class":573},[563,7188,1122],{"class":683},[563,7190,7192,7194,7196,7198,7201,7203,7206,7208,7210,7212,7214,7216,7218,7220],{"class":565,"line":7191},104,[563,7193,7169],{"class":569},[563,7195,574],{"class":683},[563,7197,6609],{"class":577},[563,7199,7200],{"class":581},"   Database ID: ",[563,7202,1031],{"class":577},[563,7204,7205],{"class":573},"match[",[563,7207,7158],{"class":1541},[563,7209,693],{"class":573},[563,7211,1056],{"class":577},[563,7213,795],{"class":577},[563,7215,6052],{"class":573},[563,7217,590],{"class":577},[563,7219,6504],{"class":573},[563,7221,1122],{"class":683},[563,7223,7225,7228,7230,7232,7234],{"class":565,"line":7224},105,[563,7226,7227],{"class":789},"      return",[563,7229,7099],{"class":573},[563,7231,6831],{"class":683},[563,7233,7158],{"class":1541},[563,7235,4045],{"class":683},[563,7237,7239],{"class":565,"line":7238},106,[563,7240,2085],{"class":577},[563,7242,7244,7246],{"class":565,"line":7243},107,[563,7245,1156],{"class":789},[563,7247,6266],{"class":577},[563,7249,7251,7253,7255,7257,7259,7261],{"class":565,"line":7250},108,[563,7252,1813],{"class":577},[563,7254,6236],{"class":789},[563,7256,1272],{"class":683},[563,7258,5270],{"class":573},[563,7260,5028],{"class":683},[563,7262,1520],{"class":577},[563,7264,7266,7268,7270,7272,7275,7277,7279,7281,7283,7286],{"class":565,"line":7265},109,[563,7267,6604],{"class":569},[563,7269,574],{"class":683},[563,7271,578],{"class":577},[563,7273,7274],{"class":581},"❌ Failed to create D1 database",[563,7276,578],{"class":577},[563,7278,795],{"class":577},[563,7280,6052],{"class":573},[563,7282,590],{"class":577},[563,7284,7285],{"class":573},"red",[563,7287,1122],{"class":683},[563,7289,7291,7293],{"class":565,"line":7290},110,[563,7292,1156],{"class":789},[563,7294,6266],{"class":577},[563,7296,7298],{"class":565,"line":7297},111,[563,7299,712],{"class":577},[563,7301,7303],{"class":565,"line":7302},112,[563,7304,718],{"class":577},[563,7306,7308],{"class":565,"line":7307},113,[563,7309,937],{"emptyLinePlaceholder":936},[563,7311,7313,7315,7318,7320,7322,7324,7327,7329,7331,7333],{"class":565,"line":7312},114,[563,7314,6035],{"class":749},[563,7316,7317],{"class":569}," createKVNamespace",[563,7319,574],{"class":577},[563,7321,4137],{"class":1275},[563,7323,795],{"class":577},[563,7325,7326],{"class":1275}," preview",[563,7328,926],{"class":577},[563,7330,669],{"class":668},[563,7332,587],{"class":577},[563,7334,646],{"class":577},[563,7336,7338,7340,7343,7345,7347,7349,7351,7354,7356,7358],{"class":565,"line":7337},115,[563,7339,4973],{"class":749},[563,7341,7342],{"class":573}," suffix",[563,7344,926],{"class":577},[563,7346,7326],{"class":573},[563,7348,6183],{"class":577},[563,7350,1552],{"class":577},[563,7352,7353],{"class":581}," (Preview)",[563,7355,578],{"class":577},[563,7357,6193],{"class":577},[563,7359,6598],{"class":577},[563,7361,7363,7365,7367,7369,7371,7374,7376,7378,7380,7383,7385,7387,7389,7391,7393,7395,7397],{"class":565,"line":7362},116,[563,7364,6473],{"class":569},[563,7366,574],{"class":683},[563,7368,6609],{"class":577},[563,7370,6480],{"class":573},[563,7372,7373],{"class":581},"🗄️  Creating KV Namespace: ",[563,7375,1031],{"class":577},[563,7377,4137],{"class":573},[563,7379,6082],{"class":577},[563,7381,7382],{"class":573},"suffix",[563,7384,923],{"class":577},[563,7386,6982],{"class":581},[563,7388,6609],{"class":577},[563,7390,795],{"class":577},[563,7392,6052],{"class":573},[563,7394,590],{"class":577},[563,7396,6494],{"class":573},[563,7398,1122],{"class":683},[563,7400,7402],{"class":565,"line":7401},117,[563,7403,937],{"emptyLinePlaceholder":936},[563,7405,7407,7409],{"class":565,"line":7406},118,[563,7408,6134],{"class":789},[563,7410,646],{"class":577},[563,7412,7414,7416,7419,7421,7423,7425,7427,7430,7432,7434],{"class":565,"line":7413},119,[563,7415,1083],{"class":749},[563,7417,7418],{"class":573}," previewFlag",[563,7420,926],{"class":577},[563,7422,7326],{"class":573},[563,7424,6183],{"class":577},[563,7426,1552],{"class":577},[563,7428,7429],{"class":581},"--preview",[563,7431,578],{"class":577},[563,7433,6193],{"class":577},[563,7435,6598],{"class":577},[563,7437,7439,7441,7443,7445,7447],{"class":565,"line":7438},120,[563,7440,1083],{"class":749},[563,7442,7041],{"class":573},[563,7444,926],{"class":577},[563,7446,6112],{"class":569},[563,7448,1019],{"class":683},[563,7450,7452,7454,7457,7459,7461,7463,7466,7469,7471],{"class":565,"line":7451},121,[563,7453,7053],{"class":577},[563,7455,7456],{"class":581},"wrangler kv namespace create ",[563,7458,1031],{"class":577},[563,7460,4137],{"class":573},[563,7462,923],{"class":577},[563,7464,7465],{"class":577}," ${",[563,7467,7468],{"class":573},"previewFlag",[563,7470,1056],{"class":577},[563,7472,672],{"class":577},[563,7474,7476,7478,7480,7482,7484],{"class":565,"line":7475},122,[563,7477,7071],{"class":577},[563,7479,7074],{"class":683},[563,7481,552],{"class":577},[563,7483,2472],{"class":668},[563,7485,6022],{"class":577},[563,7487,7489],{"class":565,"line":7488},123,[563,7490,7086],{"class":683},[563,7492,7494],{"class":565,"line":7493},124,[563,7495,937],{"emptyLinePlaceholder":936},[563,7497,7499,7501,7503,7505,7507,7509,7511,7513,7515,7518,7520,7522,7524,7526,7528,7530,7532,7534,7536],{"class":565,"line":7498},125,[563,7500,1083],{"class":749},[563,7502,7099],{"class":573},[563,7504,926],{"class":577},[563,7506,7041],{"class":573},[563,7508,590],{"class":577},[563,7510,7108],{"class":569},[563,7512,574],{"class":683},[563,7514,520],{"class":577},[563,7516,7517],{"class":581},"id\\s",[563,7519,7118],{"class":577},[563,7521,7121],{"class":581},[563,7523,7118],{"class":577},[563,7525,874],{"class":581},[563,7527,7128],{"class":577},[563,7529,874],{"class":581},[563,7531,7133],{"class":577},[563,7533,874],{"class":581},[563,7535,520],{"class":577},[563,7537,1122],{"class":683},[563,7539,7541,7543,7545,7547,7549,7551,7553,7555,7557],{"class":565,"line":7540},126,[563,7542,6249],{"class":789},[563,7544,1272],{"class":683},[563,7546,7108],{"class":573},[563,7548,7151],{"class":577},[563,7550,7099],{"class":573},[563,7552,6831],{"class":683},[563,7554,7158],{"class":1541},[563,7556,7161],{"class":683},[563,7558,1520],{"class":577},[563,7560,7562,7564,7566,7568,7571,7573,7575,7577,7579,7581],{"class":565,"line":7561},127,[563,7563,7169],{"class":569},[563,7565,574],{"class":683},[563,7567,6609],{"class":577},[563,7569,7570],{"class":581},"✅ KV Namespace created!",[563,7572,6609],{"class":577},[563,7574,795],{"class":577},[563,7576,6052],{"class":573},[563,7578,590],{"class":577},[563,7580,6917],{"class":573},[563,7582,1122],{"class":683},[563,7584,7586,7588,7590,7592,7595,7597,7599,7601,7603,7605,7607,7609,7611,7613],{"class":565,"line":7585},128,[563,7587,7169],{"class":569},[563,7589,574],{"class":683},[563,7591,6609],{"class":577},[563,7593,7594],{"class":581},"   ID: ",[563,7596,1031],{"class":577},[563,7598,7205],{"class":573},[563,7600,7158],{"class":1541},[563,7602,693],{"class":573},[563,7604,1056],{"class":577},[563,7606,795],{"class":577},[563,7608,6052],{"class":573},[563,7610,590],{"class":577},[563,7612,6504],{"class":573},[563,7614,1122],{"class":683},[563,7616,7618,7620,7622,7624,7626],{"class":565,"line":7617},129,[563,7619,7227],{"class":789},[563,7621,7099],{"class":573},[563,7623,6831],{"class":683},[563,7625,7158],{"class":1541},[563,7627,4045],{"class":683},[563,7629,7631],{"class":565,"line":7630},130,[563,7632,2085],{"class":577},[563,7634,7636,7638],{"class":565,"line":7635},131,[563,7637,1156],{"class":789},[563,7639,6266],{"class":577},[563,7641,7643,7645,7647,7649,7651,7653],{"class":565,"line":7642},132,[563,7644,1813],{"class":577},[563,7646,6236],{"class":789},[563,7648,1272],{"class":683},[563,7650,5270],{"class":573},[563,7652,5028],{"class":683},[563,7654,1520],{"class":577},[563,7656,7658,7660,7662,7664,7667,7669,7671,7673,7675,7677],{"class":565,"line":7657},133,[563,7659,6604],{"class":569},[563,7661,574],{"class":683},[563,7663,578],{"class":577},[563,7665,7666],{"class":581},"❌ Failed to create KV namespace",[563,7668,578],{"class":577},[563,7670,795],{"class":577},[563,7672,6052],{"class":573},[563,7674,590],{"class":577},[563,7676,7285],{"class":573},[563,7678,1122],{"class":683},[563,7680,7682,7684],{"class":565,"line":7681},134,[563,7683,1156],{"class":789},[563,7685,6266],{"class":577},[563,7687,7689],{"class":565,"line":7688},135,[563,7690,712],{"class":577},[563,7692,7694],{"class":565,"line":7693},136,[563,7695,718],{"class":577},[563,7697,7699],{"class":565,"line":7698},137,[563,7700,937],{"emptyLinePlaceholder":936},[563,7702,7704,7706,7709,7711,7714,7716,7719,7721,7724,7726],{"class":565,"line":7703},138,[563,7705,6035],{"class":749},[563,7707,7708],{"class":569}," updateWranglerConfig",[563,7710,574],{"class":577},[563,7712,7713],{"class":1275},"databaseId",[563,7715,795],{"class":577},[563,7717,7718],{"class":1275}," kvId",[563,7720,795],{"class":577},[563,7722,7723],{"class":1275}," kvPreviewId",[563,7725,587],{"class":577},[563,7727,646],{"class":577},[563,7729,7731,7733,7735,7737,7739,7742,7744,7746,7748,7750,7752],{"class":565,"line":7730},139,[563,7732,6473],{"class":569},[563,7734,574],{"class":683},[563,7736,578],{"class":577},[563,7738,6480],{"class":573},[563,7740,7741],{"class":581},"📝 Updating wrangler.jsonc...",[563,7743,578],{"class":577},[563,7745,795],{"class":577},[563,7747,6052],{"class":573},[563,7749,590],{"class":577},[563,7751,6494],{"class":573},[563,7753,1122],{"class":683},[563,7755,7757],{"class":565,"line":7756},140,[563,7758,937],{"emptyLinePlaceholder":936},[563,7760,7762,7764],{"class":565,"line":7761},141,[563,7763,6134],{"class":789},[563,7765,646],{"class":577},[563,7767,7769,7771,7774,7776,7778,7780,7783,7785,7787,7789,7791],{"class":565,"line":7768},142,[563,7770,1083],{"class":749},[563,7772,7773],{"class":573}," wranglerPath",[563,7775,926],{"class":577},[563,7777,5544],{"class":569},[563,7779,574],{"class":683},[563,7781,7782],{"class":573},"projectRoot",[563,7784,795],{"class":577},[563,7786,1552],{"class":577},[563,7788,2315],{"class":581},[563,7790,578],{"class":577},[563,7792,1122],{"class":683},[563,7794,7796,7799,7802,7804,7806,7808,7811,7813,7815,7817,7819],{"class":565,"line":7795},143,[563,7797,7798],{"class":749},"    let",[563,7800,7801],{"class":573}," content",[563,7803,926],{"class":577},[563,7805,5519],{"class":569},[563,7807,574],{"class":683},[563,7809,7810],{"class":573},"wranglerPath",[563,7812,795],{"class":577},[563,7814,1552],{"class":577},[563,7816,6162],{"class":581},[563,7818,578],{"class":577},[563,7820,1122],{"class":683},[563,7822,7824],{"class":565,"line":7823},144,[563,7825,937],{"emptyLinePlaceholder":936},[563,7827,7829,7831,7833,7835,7837],{"class":565,"line":7828},145,[563,7830,6249],{"class":789},[563,7832,1272],{"class":683},[563,7834,7713],{"class":573},[563,7836,5028],{"class":683},[563,7838,1520],{"class":577},[563,7840,7842,7845,7847,7849,7851,7853],{"class":565,"line":7841},146,[563,7843,7844],{"class":573},"      content",[563,7846,926],{"class":577},[563,7848,7801],{"class":573},[563,7850,590],{"class":577},[563,7852,779],{"class":569},[563,7854,1019],{"class":683},[563,7856,7858,7861,7864,7866,7869,7871],{"class":565,"line":7857},147,[563,7859,7860],{"class":577},"        /",[563,7862,7863],{"class":581},"\"database_id\":\\s",[563,7865,7118],{"class":577},[563,7867,7868],{"class":581},"\"YOUR_D1_DATABASE_ID_HERE\"",[563,7870,520],{"class":577},[563,7872,672],{"class":577},[563,7874,7876,7879,7882,7884,7886,7888,7890],{"class":565,"line":7875},148,[563,7877,7878],{"class":577},"        `",[563,7880,7881],{"class":581},"\"database_id\": \"",[563,7883,1031],{"class":577},[563,7885,7713],{"class":573},[563,7887,923],{"class":577},[563,7889,874],{"class":581},[563,7891,7892],{"class":577},"`\n",[563,7894,7896],{"class":565,"line":7895},149,[563,7897,7898],{"class":683},"      )\n",[563,7900,7902],{"class":565,"line":7901},150,[563,7903,2085],{"class":577},[563,7905,7907],{"class":565,"line":7906},151,[563,7908,937],{"emptyLinePlaceholder":936},[563,7910,7912,7914,7916,7919,7921],{"class":565,"line":7911},152,[563,7913,6249],{"class":789},[563,7915,1272],{"class":683},[563,7917,7918],{"class":573},"kvId",[563,7920,5028],{"class":683},[563,7922,1520],{"class":577},[563,7924,7926,7928,7930,7932,7934,7936],{"class":565,"line":7925},153,[563,7927,7844],{"class":573},[563,7929,926],{"class":577},[563,7931,7801],{"class":573},[563,7933,590],{"class":577},[563,7935,779],{"class":569},[563,7937,1019],{"class":683},[563,7939,7941,7943,7946,7948,7951,7953],{"class":565,"line":7940},154,[563,7942,7860],{"class":577},[563,7944,7945],{"class":581},"\"id\":\\s",[563,7947,7118],{"class":577},[563,7949,7950],{"class":581},"\"YOUR_KV_NAMESPACE_ID_HERE\"",[563,7952,520],{"class":577},[563,7954,672],{"class":577},[563,7956,7958,7960,7963,7965,7967,7969,7971],{"class":565,"line":7957},155,[563,7959,7878],{"class":577},[563,7961,7962],{"class":581},"\"id\": \"",[563,7964,1031],{"class":577},[563,7966,7918],{"class":573},[563,7968,923],{"class":577},[563,7970,874],{"class":581},[563,7972,7892],{"class":577},[563,7974,7976],{"class":565,"line":7975},156,[563,7977,7898],{"class":683},[563,7979,7981],{"class":565,"line":7980},157,[563,7982,2085],{"class":577},[563,7984,7986],{"class":565,"line":7985},158,[563,7987,937],{"emptyLinePlaceholder":936},[563,7989,7991,7993,7995,7998,8000],{"class":565,"line":7990},159,[563,7992,6249],{"class":789},[563,7994,1272],{"class":683},[563,7996,7997],{"class":573},"kvPreviewId",[563,7999,5028],{"class":683},[563,8001,1520],{"class":577},[563,8003,8005,8007,8009,8011,8013,8015],{"class":565,"line":8004},160,[563,8006,7844],{"class":573},[563,8008,926],{"class":577},[563,8010,7801],{"class":573},[563,8012,590],{"class":577},[563,8014,779],{"class":569},[563,8016,1019],{"class":683},[563,8018,8020,8022,8025,8027,8030,8032],{"class":565,"line":8019},161,[563,8021,7860],{"class":577},[563,8023,8024],{"class":581},"\"preview_id\":\\s",[563,8026,7118],{"class":577},[563,8028,8029],{"class":581},"\"YOUR_PREVIEW_KV_NAMESPACE_ID_HERE\"",[563,8031,520],{"class":577},[563,8033,672],{"class":577},[563,8035,8037,8039,8042,8044,8046,8048,8050],{"class":565,"line":8036},162,[563,8038,7878],{"class":577},[563,8040,8041],{"class":581},"\"preview_id\": \"",[563,8043,1031],{"class":577},[563,8045,7997],{"class":573},[563,8047,923],{"class":577},[563,8049,874],{"class":581},[563,8051,7892],{"class":577},[563,8053,8055],{"class":565,"line":8054},163,[563,8056,7898],{"class":683},[563,8058,8060],{"class":565,"line":8059},164,[563,8061,2085],{"class":577},[563,8063,8065],{"class":565,"line":8064},165,[563,8066,937],{"emptyLinePlaceholder":936},[563,8068,8070,8073,8075,8077,8079,8081,8083,8085,8087,8089],{"class":565,"line":8069},166,[563,8071,8072],{"class":569},"    writeFileSync",[563,8074,574],{"class":683},[563,8076,7810],{"class":573},[563,8078,795],{"class":577},[563,8080,7801],{"class":573},[563,8082,795],{"class":577},[563,8084,1552],{"class":577},[563,8086,6162],{"class":581},[563,8088,578],{"class":577},[563,8090,1122],{"class":683},[563,8092,8094,8096,8098,8100,8103,8105,8107,8109,8111,8113],{"class":565,"line":8093},167,[563,8095,6604],{"class":569},[563,8097,574],{"class":683},[563,8099,578],{"class":577},[563,8101,8102],{"class":581},"✅ wrangler.jsonc updated!",[563,8104,578],{"class":577},[563,8106,795],{"class":577},[563,8108,6052],{"class":573},[563,8110,590],{"class":577},[563,8112,6917],{"class":573},[563,8114,1122],{"class":683},[563,8116,8118,8120],{"class":565,"line":8117},168,[563,8119,1156],{"class":789},[563,8121,706],{"class":668},[563,8123,8125,8127,8129,8131,8133,8135],{"class":565,"line":8124},169,[563,8126,1813],{"class":577},[563,8128,6236],{"class":789},[563,8130,1272],{"class":683},[563,8132,5270],{"class":573},[563,8134,5028],{"class":683},[563,8136,1520],{"class":577},[563,8138,8140,8142,8144,8146,8149,8151,8153,8155,8157,8159],{"class":565,"line":8139},170,[563,8141,6604],{"class":569},[563,8143,574],{"class":683},[563,8145,578],{"class":577},[563,8147,8148],{"class":581},"❌ Failed to update wrangler.jsonc",[563,8150,578],{"class":577},[563,8152,795],{"class":577},[563,8154,6052],{"class":573},[563,8156,590],{"class":577},[563,8158,7285],{"class":573},[563,8160,1122],{"class":683},[563,8162,8164,8166],{"class":565,"line":8163},171,[563,8165,1156],{"class":789},[563,8167,8168],{"class":668}," false\n",[563,8170,8172],{"class":565,"line":8171},172,[563,8173,712],{"class":577},[563,8175,8177],{"class":565,"line":8176},173,[563,8178,718],{"class":577},[563,8180,8182],{"class":565,"line":8181},174,[563,8183,937],{"emptyLinePlaceholder":936},[563,8185,8187,8189,8191,8194,8196],{"class":565,"line":8186},175,[563,8188,6290],{"class":749},[563,8190,4956],{"class":749},[563,8192,8193],{"class":569}," main",[563,8195,764],{"class":577},[563,8197,646],{"class":577},[563,8199,8201,8203,8205,8207,8209,8211,8213,8215,8217,8219,8221,8224,8226,8229,8231,8233,8235,8237,8239],{"class":565,"line":8200},176,[563,8202,6473],{"class":569},[563,8204,574],{"class":683},[563,8206,578],{"class":577},[563,8208,6480],{"class":573},[563,8210,578],{"class":577},[563,8212,6497],{"class":577},[563,8214,1552],{"class":577},[563,8216,756],{"class":581},[563,8218,578],{"class":577},[563,8220,590],{"class":577},[563,8222,8223],{"class":569},"repeat",[563,8225,574],{"class":683},[563,8227,8228],{"class":1541},"60",[563,8230,587],{"class":683},[563,8232,795],{"class":577},[563,8234,6052],{"class":573},[563,8236,590],{"class":577},[563,8238,6504],{"class":573},[563,8240,1122],{"class":683},[563,8242,8244,8246,8248,8250,8253,8255,8257,8259,8261,8263,8265,8267,8269,8271],{"class":565,"line":8243},177,[563,8245,6473],{"class":569},[563,8247,574],{"class":683},[563,8249,578],{"class":577},[563,8251,8252],{"class":581},"🚀 Cloudflare Setup",[563,8254,578],{"class":577},[563,8256,795],{"class":577},[563,8258,6052],{"class":573},[563,8260,590],{"class":577},[563,8262,6494],{"class":573},[563,8264,6497],{"class":577},[563,8266,6052],{"class":573},[563,8268,590],{"class":577},[563,8270,6504],{"class":573},[563,8272,1122],{"class":683},[563,8274,8276,8278,8280,8282,8284,8286,8288,8290,8292,8294,8296,8298,8300,8302,8304,8306,8308,8310,8312],{"class":565,"line":8275},178,[563,8277,6473],{"class":569},[563,8279,574],{"class":683},[563,8281,578],{"class":577},[563,8283,756],{"class":581},[563,8285,578],{"class":577},[563,8287,590],{"class":577},[563,8289,8223],{"class":569},[563,8291,574],{"class":683},[563,8293,8228],{"class":1541},[563,8295,5028],{"class":683},[563,8297,6618],{"class":577},[563,8299,1552],{"class":577},[563,8301,6480],{"class":573},[563,8303,578],{"class":577},[563,8305,795],{"class":577},[563,8307,6052],{"class":573},[563,8309,590],{"class":577},[563,8311,6504],{"class":573},[563,8313,1122],{"class":683},[563,8315,8317],{"class":565,"line":8316},179,[563,8318,937],{"emptyLinePlaceholder":936},[563,8320,8322,8324,8326,8328,8330,8332],{"class":565,"line":8321},180,[563,8323,4973],{"class":749},[563,8325,6579],{"class":573},[563,8327,926],{"class":577},[563,8329,1013],{"class":789},[563,8331,6464],{"class":569},[563,8333,609],{"class":683},[563,8335,8337,8339,8342,8344,8346,8348,8350,8352],{"class":565,"line":8336},181,[563,8338,4973],{"class":749},[563,8340,8341],{"class":573}," databaseId",[563,8343,926],{"class":577},[563,8345,1013],{"class":789},[563,8347,6947],{"class":569},[563,8349,574],{"class":683},[563,8351,6556],{"class":573},[563,8353,1122],{"class":683},[563,8355,8357,8359,8361,8363,8365,8367,8369,8372,8374,8376,8378],{"class":565,"line":8356},182,[563,8358,4973],{"class":749},[563,8360,7718],{"class":573},[563,8362,926],{"class":577},[563,8364,7317],{"class":569},[563,8366,574],{"class":683},[563,8368,578],{"class":577},[563,8370,8371],{"class":581},"my-kv",[563,8373,578],{"class":577},[563,8375,795],{"class":577},[563,8377,669],{"class":668},[563,8379,1122],{"class":683},[563,8381,8383,8385,8387,8389,8391,8393,8395,8397,8399,8401,8403],{"class":565,"line":8382},183,[563,8384,4973],{"class":749},[563,8386,7723],{"class":573},[563,8388,926],{"class":577},[563,8390,7317],{"class":569},[563,8392,574],{"class":683},[563,8394,578],{"class":577},[563,8396,8371],{"class":581},[563,8398,578],{"class":577},[563,8400,795],{"class":577},[563,8402,2472],{"class":668},[563,8404,1122],{"class":683},[563,8406,8408],{"class":565,"line":8407},184,[563,8409,937],{"emptyLinePlaceholder":936},[563,8411,8413,8416,8418,8420,8422,8424,8426,8428],{"class":565,"line":8412},185,[563,8414,8415],{"class":569},"  updateWranglerConfig",[563,8417,574],{"class":683},[563,8419,7713],{"class":573},[563,8421,795],{"class":577},[563,8423,7718],{"class":573},[563,8425,795],{"class":577},[563,8427,7723],{"class":573},[563,8429,1122],{"class":683},[563,8431,8433],{"class":565,"line":8432},186,[563,8434,937],{"emptyLinePlaceholder":936},[563,8436,8438,8440,8442,8444,8446,8449,8451,8453,8455,8457,8459,8461,8463,8465,8467],{"class":565,"line":8437},187,[563,8439,6473],{"class":569},[563,8441,574],{"class":683},[563,8443,578],{"class":577},[563,8445,6480],{"class":573},[563,8447,8448],{"class":581},"🎉 Setup Complete!",[563,8450,578],{"class":577},[563,8452,795],{"class":577},[563,8454,6052],{"class":573},[563,8456,590],{"class":577},[563,8458,6917],{"class":573},[563,8460,6497],{"class":577},[563,8462,6052],{"class":573},[563,8464,590],{"class":577},[563,8466,6504],{"class":573},[563,8468,1122],{"class":683},[563,8470,8472,8474,8476,8478,8480,8483,8485,8487,8489,8491,8493],{"class":565,"line":8471},188,[563,8473,6473],{"class":569},[563,8475,574],{"class":683},[563,8477,578],{"class":577},[563,8479,6480],{"class":573},[563,8481,8482],{"class":581},"Next Steps:",[563,8484,578],{"class":577},[563,8486,795],{"class":577},[563,8488,6052],{"class":573},[563,8490,590],{"class":577},[563,8492,6494],{"class":573},[563,8494,1122],{"class":683},[563,8496,8498,8500,8502,8504,8507,8509,8511,8513,8515,8517],{"class":565,"line":8497},189,[563,8499,6473],{"class":569},[563,8501,574],{"class":683},[563,8503,578],{"class":577},[563,8505,8506],{"class":581},"1. pnpm run db:migrate",[563,8508,578],{"class":577},[563,8510,795],{"class":577},[563,8512,6052],{"class":573},[563,8514,590],{"class":577},[563,8516,6504],{"class":573},[563,8518,1122],{"class":683},[563,8520,8522,8524,8526,8528,8531,8533,8535,8537,8539,8541],{"class":565,"line":8521},190,[563,8523,6473],{"class":569},[563,8525,574],{"class":683},[563,8527,578],{"class":577},[563,8529,8530],{"class":581},"2. pnpm run db:seed:local",[563,8532,578],{"class":577},[563,8534,795],{"class":577},[563,8536,6052],{"class":573},[563,8538,590],{"class":577},[563,8540,6504],{"class":573},[563,8542,1122],{"class":683},[563,8544,8546,8548,8550,8552,8555,8557,8559,8561,8563,8565,8567],{"class":565,"line":8545},191,[563,8547,6473],{"class":569},[563,8549,574],{"class":683},[563,8551,578],{"class":577},[563,8553,8554],{"class":581},"3. pnpm run deploy",[563,8556,6480],{"class":573},[563,8558,578],{"class":577},[563,8560,795],{"class":577},[563,8562,6052],{"class":573},[563,8564,590],{"class":577},[563,8566,6504],{"class":573},[563,8568,1122],{"class":683},[563,8570,8572],{"class":565,"line":8571},192,[563,8573,718],{"class":577},[563,8575,8577],{"class":565,"line":8576},193,[563,8578,937],{"emptyLinePlaceholder":936},[563,8580,8582,8585,8587,8589,8592,8594,8596,8598],{"class":565,"line":8581},194,[563,8583,8584],{"class":569},"main",[563,8586,764],{"class":573},[563,8588,590],{"class":577},[563,8590,8591],{"class":569},"catch",[563,8593,574],{"class":573},[563,8595,5270],{"class":1275},[563,8597,767],{"class":749},[563,8599,646],{"class":577},[563,8601,8603,8605,8607,8609,8611,8614,8616,8618,8620,8622,8624],{"class":565,"line":8602},195,[563,8604,6473],{"class":569},[563,8606,574],{"class":683},[563,8608,578],{"class":577},[563,8610,6480],{"class":573},[563,8612,8613],{"class":581},"❌ Setup failed",[563,8615,578],{"class":577},[563,8617,795],{"class":577},[563,8619,6052],{"class":573},[563,8621,590],{"class":577},[563,8623,7285],{"class":573},[563,8625,1122],{"class":683},[563,8627,8629,8631,8633,8635,8637,8640,8642,8644,8646,8648],{"class":565,"line":8628},196,[563,8630,6473],{"class":569},[563,8632,574],{"class":683},[563,8634,5270],{"class":573},[563,8636,590],{"class":577},[563,8638,8639],{"class":573},"stack",[563,8641,795],{"class":577},[563,8643,6052],{"class":573},[563,8645,590],{"class":577},[563,8647,7285],{"class":573},[563,8649,1122],{"class":683},[563,8651,8653,8656,8658,8661,8663,8665],{"class":565,"line":8652},197,[563,8654,8655],{"class":573},"  process",[563,8657,590],{"class":577},[563,8659,8660],{"class":569},"exit",[563,8662,574],{"class":683},[563,8664,7158],{"class":1541},[563,8666,1122],{"class":683},[563,8668,8670,8672],{"class":565,"line":8669},198,[563,8671,923],{"class":577},[563,8673,1122],{"class":573},[554,8675,8678],{"className":5454,"code":8676,"filename":8677,"language":5457,"meta":559,"style":559},"#!/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",[518,8679,8680,8684,8688,8692,8697,8701,8705,8723,8746,8768,8786,8804,8808,8830,8842,8864,8889,8893,8903,8919,8935,8951,8967,8983,8999,9013,9017,9021,9047,9077,9081,9085,9105,9111,9125,9139,9169,9179,9185,9191,9205,9223,9229,9233,9237,9241,9252,9258,9276,9320,9334,9341,9345,9349,9353,9368,9403,9407,9433,9469,9498,9519,9545,9576,9613,9617,9647,9689,9695,9699,9709,9713,9717,9733,9751,9765,9777,9783,9787,9803,9823,9833,9847,9853,9859,9863,9867,9884,9907,9930,9953,9978,9982,10021,10025,10055,10082,10097,10101,10105,10131,10138,10142,10146,10158,10178,10205,10256,10260,10281,10308,10322,10326,10330,10359,10363,10367,10389,10418,10447,10451,10489,10493,10499,10529,10540,10572,10578,10592,10624,10630,10634,10638,10642,10654,10682,10707,10733,10762,10766,10807,10843,10875,10879,10892,10896,10917,10944,10958,10962,10966,10977,10981,10989,11002,11012,11021,11037,11041,11045,11056,11077,11100,11124,11128,11132,11168,11202,11206,11231,11259,11303,11307,11323,11358,11366,11393,11407,11411,11415,11419,11437,11462,11484,11498],{"__ignoreMap":559},[563,8681,8682],{"class":565,"line":566},[563,8683,5464],{"class":942},[563,8685,8686],{"class":565,"line":649},[563,8687,937],{"emptyLinePlaceholder":936},[563,8689,8690],{"class":565,"line":633},[563,8691,3528],{"class":942},[563,8693,8694],{"class":565,"line":675},[563,8695,8696],{"class":942}," * Interactive Database Seeding Script\n",[563,8698,8699],{"class":565,"line":698},[563,8700,3543],{"class":942},[563,8702,8703],{"class":565,"line":709},[563,8704,937],{"emptyLinePlaceholder":936},[563,8706,8707,8709,8711,8713,8715,8717,8719,8721],{"class":565,"line":715},[563,8708,1671],{"class":789},[563,8710,917],{"class":577},[563,8712,5499],{"class":573},[563,8714,1560],{"class":577},[563,8716,1691],{"class":789},[563,8718,1552],{"class":577},[563,8720,5508],{"class":581},[563,8722,1699],{"class":577},[563,8724,8725,8727,8729,8732,8734,8736,8738,8740,8742,8744],{"class":565,"line":989},[563,8726,1671],{"class":789},[563,8728,917],{"class":577},[563,8730,8731],{"class":573}," readdirSync",[563,8733,795],{"class":577},[563,8735,5519],{"class":573},[563,8737,1560],{"class":577},[563,8739,1691],{"class":789},[563,8741,1552],{"class":577},[563,8743,5533],{"class":581},[563,8745,1699],{"class":577},[563,8747,8748,8750,8752,8754,8756,8758,8760,8762,8764,8766],{"class":565,"line":994},[563,8749,1671],{"class":789},[563,8751,917],{"class":577},[563,8753,5544],{"class":573},[563,8755,795],{"class":577},[563,8757,5549],{"class":573},[563,8759,1560],{"class":577},[563,8761,1691],{"class":789},[563,8763,1552],{"class":577},[563,8765,593],{"class":581},[563,8767,1699],{"class":577},[563,8769,8770,8772,8774,8776,8778,8780,8782,8784],{"class":565,"line":1022},[563,8771,1671],{"class":789},[563,8773,917],{"class":577},[563,8775,5568],{"class":573},[563,8777,1560],{"class":577},[563,8779,1691],{"class":789},[563,8781,1552],{"class":577},[563,8783,5577],{"class":581},[563,8785,1699],{"class":577},[563,8787,8788,8790,8792,8794,8796,8798,8800,8802],{"class":565,"line":1061},[563,8789,1671],{"class":789},[563,8791,4912],{"class":577},[563,8793,4915],{"class":789},[563,8795,5590],{"class":573},[563,8797,4920],{"class":789},[563,8799,1552],{"class":577},[563,8801,5597],{"class":581},[563,8803,1699],{"class":577},[563,8805,8806],{"class":565,"line":1074},[563,8807,937],{"emptyLinePlaceholder":936},[563,8809,8810,8812,8814,8816,8818,8820,8822,8824,8826,8828],{"class":565,"line":850},[563,8811,750],{"class":749},[563,8813,5610],{"class":573},[563,8815,756],{"class":577},[563,8817,5568],{"class":569},[563,8819,574],{"class":573},[563,8821,1671],{"class":789},[563,8823,590],{"class":577},[563,8825,5623],{"class":573},[563,8827,590],{"class":577},[563,8829,5628],{"class":573},[563,8831,8832,8834,8836,8838,8840],{"class":565,"line":851},[563,8833,750],{"class":749},[563,8835,5635],{"class":573},[563,8837,756],{"class":577},[563,8839,5549],{"class":569},[563,8841,5642],{"class":573},[563,8843,8844,8846,8848,8850,8852,8854,8856,8858,8860,8862],{"class":565,"line":852},[563,8845,750],{"class":749},[563,8847,5649],{"class":573},[563,8849,756],{"class":577},[563,8851,5544],{"class":569},[563,8853,5656],{"class":573},[563,8855,795],{"class":577},[563,8857,1552],{"class":577},[563,8859,5663],{"class":581},[563,8861,578],{"class":577},[563,8863,1122],{"class":573},[563,8865,8866,8868,8871,8873,8875,8878,8880,8882,8885,8887],{"class":565,"line":1139},[563,8867,750],{"class":749},[563,8869,8870],{"class":573}," seedersDir ",[563,8872,756],{"class":577},[563,8874,5544],{"class":569},[563,8876,8877],{"class":573},"(projectRoot",[563,8879,795],{"class":577},[563,8881,1552],{"class":577},[563,8883,8884],{"class":581},"seeders",[563,8886,578],{"class":577},[563,8888,1122],{"class":573},[563,8890,8891],{"class":565,"line":1148},[563,8892,937],{"emptyLinePlaceholder":936},[563,8894,8895,8897,8899,8901],{"class":565,"line":1153},[563,8896,750],{"class":749},[563,8898,5678],{"class":573},[563,8900,756],{"class":577},[563,8902,646],{"class":577},[563,8904,8905,8907,8909,8911,8913,8915,8917],{"class":565,"line":1162},[563,8906,5687],{"class":683},[563,8908,552],{"class":577},[563,8910,1552],{"class":577},[563,8912,5694],{"class":573},[563,8914,5697],{"class":581},[563,8916,578],{"class":577},[563,8918,672],{"class":577},[563,8920,8921,8923,8925,8927,8929,8931,8933],{"class":565,"line":1167},[563,8922,5706],{"class":683},[563,8924,552],{"class":577},[563,8926,1552],{"class":577},[563,8928,5694],{"class":573},[563,8930,5715],{"class":581},[563,8932,578],{"class":577},[563,8934,672],{"class":577},[563,8936,8937,8939,8941,8943,8945,8947,8949],{"class":565,"line":1172},[563,8938,5724],{"class":683},[563,8940,552],{"class":577},[563,8942,1552],{"class":577},[563,8944,5694],{"class":573},[563,8946,5733],{"class":581},[563,8948,578],{"class":577},[563,8950,672],{"class":577},[563,8952,8953,8955,8957,8959,8961,8963,8965],{"class":565,"line":1590},[563,8954,5742],{"class":683},[563,8956,552],{"class":577},[563,8958,1552],{"class":577},[563,8960,5694],{"class":573},[563,8962,5751],{"class":581},[563,8964,578],{"class":577},[563,8966,672],{"class":577},[563,8968,8969,8971,8973,8975,8977,8979,8981],{"class":565,"line":1601},[563,8970,5760],{"class":683},[563,8972,552],{"class":577},[563,8974,1552],{"class":577},[563,8976,5694],{"class":573},[563,8978,5769],{"class":581},[563,8980,578],{"class":577},[563,8982,672],{"class":577},[563,8984,8985,8987,8989,8991,8993,8995,8997],{"class":565,"line":1622},[563,8986,5778],{"class":683},[563,8988,552],{"class":577},[563,8990,1552],{"class":577},[563,8992,5694],{"class":573},[563,8994,5787],{"class":581},[563,8996,578],{"class":577},[563,8998,672],{"class":577},[563,9000,9001,9003,9005,9007,9009,9011],{"class":565,"line":1644},[563,9002,5796],{"class":683},[563,9004,552],{"class":577},[563,9006,1552],{"class":577},[563,9008,5694],{"class":573},[563,9010,5805],{"class":581},[563,9012,1699],{"class":577},[563,9014,9015],{"class":565,"line":1654},[563,9016,718],{"class":577},[563,9018,9019],{"class":565,"line":3648},[563,9020,937],{"emptyLinePlaceholder":936},[563,9022,9023,9025,9027,9029,9031,9033,9035,9037,9039,9041,9043,9045],{"class":565,"line":3653},[563,9024,6035],{"class":749},[563,9026,6038],{"class":569},[563,9028,574],{"class":577},[563,9030,5438],{"class":1275},[563,9032,795],{"class":577},[563,9034,6047],{"class":1275},[563,9036,926],{"class":577},[563,9038,6052],{"class":573},[563,9040,590],{"class":577},[563,9042,6057],{"class":573},[563,9044,587],{"class":577},[563,9046,646],{"class":577},[563,9048,9049,9051,9053,9055,9057,9059,9061,9063,9065,9067,9069,9071,9073,9075],{"class":565,"line":3658},[563,9050,6066],{"class":573},[563,9052,590],{"class":577},[563,9054,6071],{"class":569},[563,9056,574],{"class":683},[563,9058,6076],{"class":577},[563,9060,6079],{"class":573},[563,9062,6082],{"class":577},[563,9064,5438],{"class":573},[563,9066,6082],{"class":577},[563,9068,6089],{"class":573},[563,9070,590],{"class":577},[563,9072,6057],{"class":573},[563,9074,1056],{"class":577},[563,9076,1122],{"class":683},[563,9078,9079],{"class":565,"line":3664},[563,9080,718],{"class":577},[563,9082,9083],{"class":565,"line":3670},[563,9084,937],{"emptyLinePlaceholder":936},[563,9086,9087,9089,9091,9093,9095,9097,9099,9101,9103],{"class":565,"line":3675},[563,9088,6035],{"class":749},[563,9090,6112],{"class":569},[563,9092,574],{"class":577},[563,9094,6117],{"class":1275},[563,9096,795],{"class":577},[563,9098,6122],{"class":1275},[563,9100,926],{"class":577},[563,9102,6127],{"class":577},[563,9104,646],{"class":577},[563,9106,9107,9109],{"class":565,"line":3681},[563,9108,6134],{"class":789},[563,9110,646],{"class":577},[563,9112,9113,9115,9117,9119,9121,9123],{"class":565,"line":3687},[563,9114,1156],{"class":789},[563,9116,5499],{"class":569},[563,9118,574],{"class":683},[563,9120,6117],{"class":573},[563,9122,795],{"class":577},[563,9124,646],{"class":577},[563,9126,9127,9129,9131,9133,9135,9137],{"class":565,"line":3693},[563,9128,6155],{"class":683},[563,9130,552],{"class":577},[563,9132,1552],{"class":577},[563,9134,6162],{"class":581},[563,9136,578],{"class":577},[563,9138,672],{"class":577},[563,9140,9141,9143,9145,9147,9149,9151,9153,9155,9157,9159,9161,9163,9165,9167],{"class":565,"line":3699},[563,9142,6171],{"class":683},[563,9144,552],{"class":577},[563,9146,6122],{"class":573},[563,9148,590],{"class":577},[563,9150,6180],{"class":573},[563,9152,6183],{"class":577},[563,9154,1552],{"class":577},[563,9156,6188],{"class":581},[563,9158,578],{"class":577},[563,9160,6193],{"class":577},[563,9162,1552],{"class":577},[563,9164,6198],{"class":581},[563,9166,578],{"class":577},[563,9168,672],{"class":577},[563,9170,9171,9173,9175,9177],{"class":565,"line":3705},[563,9172,6207],{"class":683},[563,9174,552],{"class":577},[563,9176,6212],{"class":573},[563,9178,672],{"class":577},[563,9180,9181,9183],{"class":565,"line":3711},[563,9182,6219],{"class":577},[563,9184,6222],{"class":573},[563,9186,9187,9189],{"class":565,"line":3716},[563,9188,6227],{"class":577},[563,9190,1122],{"class":683},[563,9192,9193,9195,9197,9199,9201,9203],{"class":565,"line":3722},[563,9194,1813],{"class":577},[563,9196,6236],{"class":789},[563,9198,1272],{"class":683},[563,9200,5270],{"class":573},[563,9202,5028],{"class":683},[563,9204,1520],{"class":577},[563,9206,9207,9209,9211,9213,9215,9217,9219,9221],{"class":565,"line":3727},[563,9208,6249],{"class":789},[563,9210,1272],{"class":683},[563,9212,6254],{"class":573},[563,9214,590],{"class":577},[563,9216,6259],{"class":573},[563,9218,5028],{"class":683},[563,9220,2622],{"class":789},[563,9222,6266],{"class":577},[563,9224,9225,9227],{"class":565,"line":3732},[563,9226,5035],{"class":789},[563,9228,6273],{"class":573},[563,9230,9231],{"class":565,"line":3738},[563,9232,712],{"class":577},[563,9234,9235],{"class":565,"line":3744},[563,9236,718],{"class":577},[563,9238,9239],{"class":565,"line":3750},[563,9240,937],{"emptyLinePlaceholder":936},[563,9242,9243,9245,9248,9250],{"class":565,"line":3755},[563,9244,6035],{"class":749},[563,9246,9247],{"class":569}," getAvailableSeeders",[563,9249,764],{"class":577},[563,9251,646],{"class":577},[563,9253,9254,9256],{"class":565,"line":3761},[563,9255,6134],{"class":789},[563,9257,646],{"class":577},[563,9259,9260,9262,9265,9267,9269,9271,9274],{"class":565,"line":3766},[563,9261,1083],{"class":749},[563,9263,9264],{"class":573}," files",[563,9266,926],{"class":577},[563,9268,8731],{"class":569},[563,9270,574],{"class":683},[563,9272,9273],{"class":573},"seedersDir",[563,9275,1122],{"class":683},[563,9277,9278,9280,9282,9284,9287,9289,9292,9294,9296,9298,9301,9303,9305,9308,9310,9313,9315,9318],{"class":565,"line":3772},[563,9279,1156],{"class":789},[563,9281,9264],{"class":573},[563,9283,590],{"class":577},[563,9285,9286],{"class":569},"filter",[563,9288,574],{"class":683},[563,9290,9291],{"class":1275},"file",[563,9293,767],{"class":749},[563,9295,3304],{"class":573},[563,9297,590],{"class":577},[563,9299,9300],{"class":569},"endsWith",[563,9302,574],{"class":683},[563,9304,578],{"class":577},[563,9306,9307],{"class":581},".sql",[563,9309,578],{"class":577},[563,9311,9312],{"class":683},"))",[563,9314,590],{"class":577},[563,9316,9317],{"class":569},"sort",[563,9319,609],{"class":683},[563,9321,9322,9324,9326,9328,9330,9332],{"class":565,"line":3778},[563,9323,1813],{"class":577},[563,9325,6236],{"class":789},[563,9327,1272],{"class":683},[563,9329,5270],{"class":573},[563,9331,5028],{"class":683},[563,9333,1520],{"class":577},[563,9335,9336,9338],{"class":565,"line":3784},[563,9337,1156],{"class":789},[563,9339,9340],{"class":683}," []\n",[563,9342,9343],{"class":565,"line":3789},[563,9344,712],{"class":577},[563,9346,9347],{"class":565,"line":3794},[563,9348,718],{"class":577},[563,9350,9351],{"class":565,"line":3799},[563,9352,937],{"emptyLinePlaceholder":936},[563,9354,9355,9357,9360,9362,9364,9366],{"class":565,"line":3804},[563,9356,6035],{"class":749},[563,9358,9359],{"class":569}," displaySeeders",[563,9361,574],{"class":577},[563,9363,8884],{"class":1275},[563,9365,587],{"class":577},[563,9367,646],{"class":577},[563,9369,9370,9372,9374,9376,9378,9381,9383,9385,9387,9389,9391,9393,9395,9397,9399,9401],{"class":565,"line":3810},[563,9371,6473],{"class":569},[563,9373,574],{"class":683},[563,9375,578],{"class":577},[563,9377,6480],{"class":573},[563,9379,9380],{"class":581},"📂 Available Seeders:",[563,9382,6480],{"class":573},[563,9384,578],{"class":577},[563,9386,795],{"class":577},[563,9388,6052],{"class":573},[563,9390,590],{"class":577},[563,9392,6494],{"class":573},[563,9394,6497],{"class":577},[563,9396,6052],{"class":573},[563,9398,590],{"class":577},[563,9400,6504],{"class":573},[563,9402,1122],{"class":683},[563,9404,9405],{"class":565,"line":3816},[563,9406,937],{"emptyLinePlaceholder":936},[563,9408,9409,9412,9414,9416,9418,9420,9423,9425,9427,9429,9431],{"class":565,"line":3822},[563,9410,9411],{"class":573},"  seeders",[563,9413,590],{"class":577},[563,9415,6549],{"class":569},[563,9417,574],{"class":683},[563,9419,574],{"class":577},[563,9421,9422],{"class":1275},"seeder",[563,9424,795],{"class":577},[563,9426,6561],{"class":1275},[563,9428,587],{"class":577},[563,9430,767],{"class":749},[563,9432,646],{"class":577},[563,9434,9435,9437,9440,9442,9445,9447,9449,9451,9453,9455,9457,9459,9462,9464,9467],{"class":565,"line":3827},[563,9436,1083],{"class":749},[563,9438,9439],{"class":573}," number",[563,9441,926],{"class":577},[563,9443,9444],{"class":577}," `${",[563,9446,6615],{"class":573},[563,9448,6618],{"class":577},[563,9450,6621],{"class":1541},[563,9452,923],{"class":577},[563,9454,590],{"class":581},[563,9456,6609],{"class":577},[563,9458,590],{"class":577},[563,9460,9461],{"class":569},"padEnd",[563,9463,574],{"class":683},[563,9465,9466],{"class":1541},"4",[563,9468,1122],{"class":683},[563,9470,9471,9473,9475,9477,9480,9482,9484,9486,9488,9490,9492,9494,9496],{"class":565,"line":3833},[563,9472,1083],{"class":749},[563,9474,5848],{"class":573},[563,9476,926],{"class":577},[563,9478,9479],{"class":573}," seeder",[563,9481,590],{"class":577},[563,9483,779],{"class":569},[563,9485,574],{"class":683},[563,9487,578],{"class":577},[563,9489,9307],{"class":581},[563,9491,578],{"class":577},[563,9493,795],{"class":577},[563,9495,798],{"class":577},[563,9497,1122],{"class":683},[563,9499,9500,9502,9505,9507,9509,9511,9513,9515,9517],{"class":565,"line":3839},[563,9501,1083],{"class":749},[563,9503,9504],{"class":573}," filePath",[563,9506,926],{"class":577},[563,9508,5544],{"class":569},[563,9510,574],{"class":683},[563,9512,9273],{"class":573},[563,9514,795],{"class":577},[563,9516,9479],{"class":573},[563,9518,1122],{"class":683},[563,9520,9521,9523,9526,9528,9530,9532,9535,9537,9539,9541,9543],{"class":565,"line":3844},[563,9522,1083],{"class":749},[563,9524,9525],{"class":573}," stats",[563,9527,926],{"class":577},[563,9529,5519],{"class":569},[563,9531,574],{"class":683},[563,9533,9534],{"class":573},"filePath",[563,9536,795],{"class":577},[563,9538,1552],{"class":577},[563,9540,6162],{"class":581},[563,9542,578],{"class":577},[563,9544,1122],{"class":683},[563,9546,9547,9549,9552,9554,9556,9558,9561,9563,9565,9567,9569,9571,9573],{"class":565,"line":3849},[563,9548,1083],{"class":749},[563,9550,9551],{"class":573}," lines",[563,9553,926],{"class":577},[563,9555,9525],{"class":573},[563,9557,590],{"class":577},[563,9559,9560],{"class":569},"split",[563,9562,574],{"class":683},[563,9564,578],{"class":577},[563,9566,6480],{"class":573},[563,9568,578],{"class":577},[563,9570,587],{"class":683},[563,9572,590],{"class":577},[563,9574,9575],{"class":573},"length\n",[563,9577,9578,9580,9583,9585,9587,9590,9592,9594,9597,9600,9602,9604,9607,9609,9611],{"class":565,"line":3854},[563,9579,1083],{"class":749},[563,9581,9582],{"class":573}," size",[563,9584,926],{"class":577},[563,9586,1272],{"class":683},[563,9588,9589],{"class":573},"stats",[563,9591,590],{"class":577},[563,9593,6793],{"class":573},[563,9595,9596],{"class":577}," /",[563,9598,9599],{"class":1541}," 1024",[563,9601,587],{"class":683},[563,9603,590],{"class":577},[563,9605,9606],{"class":569},"toFixed",[563,9608,574],{"class":683},[563,9610,7158],{"class":1541},[563,9612,1122],{"class":683},[563,9614,9615],{"class":565,"line":3860},[563,9616,937],{"emptyLinePlaceholder":936},[563,9618,9619,9621,9623,9625,9628,9631,9633,9635,9637,9639,9641,9643,9645],{"class":565,"line":3865},[563,9620,6604],{"class":569},[563,9622,574],{"class":683},[563,9624,6609],{"class":577},[563,9626,9627],{"class":577},"  ${",[563,9629,9630],{"class":573},"number",[563,9632,6082],{"class":577},[563,9634,4137],{"class":573},[563,9636,1056],{"class":577},[563,9638,795],{"class":577},[563,9640,6052],{"class":573},[563,9642,590],{"class":577},[563,9644,6665],{"class":573},[563,9646,1122],{"class":683},[563,9648,9649,9651,9653,9655,9658,9661,9663,9666,9668,9671,9673,9676,9678,9680,9682,9684,9687],{"class":565,"line":3871},[563,9650,6604],{"class":569},[563,9652,574],{"class":683},[563,9654,6609],{"class":577},[563,9656,9657],{"class":577},"        ${",[563,9659,9660],{"class":573},"lines",[563,9662,923],{"class":577},[563,9664,9665],{"class":581}," lines, ",[563,9667,1031],{"class":577},[563,9669,9670],{"class":573},"size",[563,9672,923],{"class":577},[563,9674,9675],{"class":581}," KB",[563,9677,6609],{"class":577},[563,9679,795],{"class":577},[563,9681,6052],{"class":573},[563,9683,590],{"class":577},[563,9685,9686],{"class":573},"dim",[563,9688,1122],{"class":683},[563,9690,9691,9693],{"class":565,"line":3877},[563,9692,1813],{"class":577},[563,9694,1122],{"class":683},[563,9696,9697],{"class":565,"line":3882},[563,9698,937],{"emptyLinePlaceholder":936},[563,9700,9701,9703,9705,9707],{"class":565,"line":6509},[563,9702,6473],{"class":569},[563,9704,574],{"class":683},[563,9706,6689],{"class":577},[563,9708,1122],{"class":683},[563,9710,9711],{"class":565,"line":6536},[563,9712,718],{"class":577},[563,9714,9715],{"class":565,"line":6541},[563,9716,937],{"emptyLinePlaceholder":936},[563,9718,9719,9721,9723,9725,9727,9729,9731],{"class":565,"line":6570},[563,9720,6290],{"class":749},[563,9722,4956],{"class":749},[563,9724,6295],{"class":569},[563,9726,574],{"class":577},[563,9728,6300],{"class":1275},[563,9730,587],{"class":577},[563,9732,646],{"class":577},[563,9734,9735,9737,9739,9741,9743,9745,9747,9749],{"class":565,"line":6601},[563,9736,4973],{"class":749},[563,9738,6311],{"class":573},[563,9740,926],{"class":577},[563,9742,6316],{"class":573},[563,9744,590],{"class":577},[563,9746,6321],{"class":569},[563,9748,574],{"class":683},[563,9750,1520],{"class":577},[563,9752,9753,9755,9757,9759,9761,9763],{"class":565,"line":6670},[563,9754,6330],{"class":683},[563,9756,552],{"class":577},[563,9758,2582],{"class":573},[563,9760,590],{"class":577},[563,9762,6339],{"class":573},[563,9764,672],{"class":577},[563,9766,9767,9769,9771,9773,9775],{"class":565,"line":6677},[563,9768,6346],{"class":683},[563,9770,552],{"class":577},[563,9772,2582],{"class":573},[563,9774,590],{"class":577},[563,9776,6355],{"class":573},[563,9778,9779,9781],{"class":565,"line":6682},[563,9780,1813],{"class":577},[563,9782,1122],{"class":683},[563,9784,9785],{"class":565,"line":6694},[563,9786,937],{"emptyLinePlaceholder":936},[563,9788,9789,9791,9793,9795,9797,9799,9801],{"class":565,"line":6718},[563,9790,5065],{"class":789},[563,9792,5038],{"class":577},[563,9794,6374],{"class":640},[563,9796,574],{"class":683},[563,9798,6379],{"class":1275},[563,9800,767],{"class":749},[563,9802,646],{"class":577},[563,9804,9805,9807,9809,9811,9813,9815,9817,9819,9821],{"class":565,"line":6750},[563,9806,6388],{"class":573},[563,9808,590],{"class":577},[563,9810,6300],{"class":569},[563,9812,574],{"class":683},[563,9814,6300],{"class":573},[563,9816,795],{"class":577},[563,9818,6401],{"class":1275},[563,9820,767],{"class":749},[563,9822,646],{"class":577},[563,9824,9825,9827,9829,9831],{"class":565,"line":6755},[563,9826,6410],{"class":573},[563,9828,590],{"class":577},[563,9830,6415],{"class":569},[563,9832,609],{"class":683},[563,9834,9835,9837,9839,9841,9843,9845],{"class":565,"line":6800},[563,9836,6422],{"class":569},[563,9838,574],{"class":683},[563,9840,6427],{"class":573},[563,9842,590],{"class":577},[563,9844,6432],{"class":569},[563,9846,6435],{"class":683},[563,9848,9849,9851],{"class":565,"line":6824},[563,9850,6227],{"class":577},[563,9852,1122],{"class":683},[563,9854,9855,9857],{"class":565,"line":6839},[563,9856,1813],{"class":577},[563,9858,1122],{"class":683},[563,9860,9861],{"class":565,"line":6844},[563,9862,718],{"class":577},[563,9864,9865],{"class":565,"line":6849},[563,9866,937],{"emptyLinePlaceholder":936},[563,9868,9869,9871,9873,9876,9878,9880,9882],{"class":565,"line":6872},[563,9870,6290],{"class":749},[563,9872,4956],{"class":749},[563,9874,9875],{"class":569}," selectSeeders",[563,9877,574],{"class":577},[563,9879,8884],{"class":1275},[563,9881,587],{"class":577},[563,9883,646],{"class":577},[563,9885,9886,9888,9890,9892,9895,9897,9899,9901,9903,9905],{"class":565,"line":6922},[563,9887,6473],{"class":569},[563,9889,574],{"class":683},[563,9891,578],{"class":577},[563,9893,9894],{"class":581},"Options:",[563,9896,578],{"class":577},[563,9898,795],{"class":577},[563,9900,6052],{"class":573},[563,9902,590],{"class":577},[563,9904,6531],{"class":573},[563,9906,1122],{"class":683},[563,9908,9909,9911,9913,9915,9918,9920,9922,9924,9926,9928],{"class":565,"line":6930},[563,9910,6473],{"class":569},[563,9912,574],{"class":683},[563,9914,578],{"class":577},[563,9916,9917],{"class":581},"  • Enter numbers (e.g., \"1 3 5\")",[563,9919,578],{"class":577},[563,9921,795],{"class":577},[563,9923,6052],{"class":573},[563,9925,590],{"class":577},[563,9927,6057],{"class":573},[563,9929,1122],{"class":683},[563,9931,9932,9934,9936,9938,9941,9943,9945,9947,9949,9951],{"class":565,"line":6935},[563,9933,6473],{"class":569},[563,9935,574],{"class":683},[563,9937,578],{"class":577},[563,9939,9940],{"class":581},"  • Enter \"all\" to run all",[563,9942,578],{"class":577},[563,9944,795],{"class":577},[563,9946,6052],{"class":573},[563,9948,590],{"class":577},[563,9950,6057],{"class":573},[563,9952,1122],{"class":683},[563,9954,9955,9957,9959,9961,9964,9966,9968,9970,9972,9974,9976],{"class":565,"line":6940},[563,9956,6473],{"class":569},[563,9958,574],{"class":683},[563,9960,578],{"class":577},[563,9962,9963],{"class":581},"  • Enter \"q\" to quit",[563,9965,6480],{"class":573},[563,9967,578],{"class":577},[563,9969,795],{"class":577},[563,9971,6052],{"class":573},[563,9973,590],{"class":577},[563,9975,6057],{"class":573},[563,9977,1122],{"class":683},[563,9979,9980],{"class":565,"line":6958},[563,9981,937],{"emptyLinePlaceholder":936},[563,9983,9984,9986,9988,9990,9992,9994,9996,9998,10000,10002,10004,10006,10009,10011,10013,10015,10017,10019],{"class":565,"line":6997},[563,9985,4973],{"class":749},[563,9987,6401],{"class":573},[563,9989,926],{"class":577},[563,9991,1013],{"class":789},[563,9993,6295],{"class":569},[563,9995,574],{"class":683},[563,9997,6089],{"class":573},[563,9999,590],{"class":577},[563,10001,6504],{"class":573},[563,10003,6497],{"class":577},[563,10005,1552],{"class":577},[563,10007,10008],{"class":581},"Select: ",[563,10010,578],{"class":577},[563,10012,6497],{"class":577},[563,10014,6052],{"class":573},[563,10016,590],{"class":577},[563,10018,6057],{"class":573},[563,10020,1122],{"class":683},[563,10022,10023],{"class":565,"line":7002},[563,10024,937],{"emptyLinePlaceholder":936},[563,10026,10027,10029,10031,10033,10035,10038,10041,10044,10046,10049,10051,10053],{"class":565,"line":7009},[563,10028,5019],{"class":789},[563,10030,1272],{"class":683},[563,10032,6427],{"class":573},[563,10034,590],{"class":577},[563,10036,10037],{"class":569},"toLowerCase",[563,10039,10040],{"class":683},"() ",[563,10042,10043],{"class":577},"===",[563,10045,1552],{"class":577},[563,10047,10048],{"class":581},"q",[563,10050,578],{"class":577},[563,10052,5028],{"class":683},[563,10054,1520],{"class":577},[563,10056,10057,10059,10061,10063,10065,10068,10070,10072,10074,10076,10078,10080],{"class":565,"line":7036},[563,10058,6604],{"class":569},[563,10060,574],{"class":683},[563,10062,578],{"class":577},[563,10064,6480],{"class":573},[563,10066,10067],{"class":581},"👋 Cancelled",[563,10069,6480],{"class":573},[563,10071,578],{"class":577},[563,10073,795],{"class":577},[563,10075,6052],{"class":573},[563,10077,590],{"class":577},[563,10079,6531],{"class":573},[563,10081,1122],{"class":683},[563,10083,10084,10087,10089,10091,10093,10095],{"class":565,"line":7050},[563,10085,10086],{"class":573},"    process",[563,10088,590],{"class":577},[563,10090,8660],{"class":569},[563,10092,574],{"class":683},[563,10094,6834],{"class":1541},[563,10096,1122],{"class":683},[563,10098,10099],{"class":565,"line":7068},[563,10100,712],{"class":577},[563,10102,10103],{"class":565,"line":7083},[563,10104,937],{"emptyLinePlaceholder":936},[563,10106,10107,10109,10111,10113,10115,10117,10119,10121,10123,10125,10127,10129],{"class":565,"line":7089},[563,10108,5019],{"class":789},[563,10110,1272],{"class":683},[563,10112,6427],{"class":573},[563,10114,590],{"class":577},[563,10116,10037],{"class":569},[563,10118,10040],{"class":683},[563,10120,10043],{"class":577},[563,10122,1552],{"class":577},[563,10124,3396],{"class":581},[563,10126,578],{"class":577},[563,10128,5028],{"class":683},[563,10130,1520],{"class":577},[563,10132,10133,10135],{"class":565,"line":7094},[563,10134,1156],{"class":789},[563,10136,10137],{"class":573}," seeders\n",[563,10139,10140],{"class":565,"line":7142},[563,10141,712],{"class":577},[563,10143,10144],{"class":565,"line":7166},[563,10145,937],{"emptyLinePlaceholder":936},[563,10147,10148,10150,10153,10155],{"class":565,"line":7191},[563,10149,4973],{"class":749},[563,10151,10152],{"class":573}," selections",[563,10154,926],{"class":577},[563,10156,10157],{"class":573}," answer\n",[563,10159,10160,10163,10165,10167,10170,10173,10176],{"class":565,"line":7224},[563,10161,10162],{"class":577},"    .",[563,10164,9560],{"class":569},[563,10166,574],{"class":683},[563,10168,10169],{"class":577},"/[",[563,10171,10172],{"class":581},",\\s",[563,10174,10175],{"class":577},"]+/",[563,10177,1122],{"class":683},[563,10179,10180,10182,10185,10187,10190,10192,10194,10196,10198,10200,10202],{"class":565,"line":7238},[563,10181,10162],{"class":577},[563,10183,10184],{"class":569},"map",[563,10186,574],{"class":683},[563,10188,10189],{"class":1275},"s",[563,10191,767],{"class":749},[563,10193,6741],{"class":569},[563,10195,574],{"class":683},[563,10197,10189],{"class":573},[563,10199,590],{"class":577},[563,10201,6432],{"class":569},[563,10203,10204],{"class":683},"()))\n",[563,10206,10207,10209,10211,10213,10216,10218,10221,10223,10225,10227,10229,10232,10235,10237,10240,10242,10244,10247,10250,10252,10254],{"class":565,"line":7243},[563,10208,10162],{"class":577},[563,10210,9286],{"class":569},[563,10212,574],{"class":683},[563,10214,10215],{"class":1275},"n",[563,10217,767],{"class":749},[563,10219,10220],{"class":577}," !",[563,10222,6762],{"class":569},[563,10224,574],{"class":683},[563,10226,10215],{"class":573},[563,10228,5028],{"class":683},[563,10230,10231],{"class":577},"&&",[563,10233,10234],{"class":573}," n",[563,10236,6785],{"class":577},[563,10238,10239],{"class":1541}," 0",[563,10241,7151],{"class":577},[563,10243,10234],{"class":573},[563,10245,10246],{"class":577}," \u003C=",[563,10248,10249],{"class":573}," seeders",[563,10251,590],{"class":577},[563,10253,6793],{"class":573},[563,10255,1122],{"class":683},[563,10257,10258],{"class":565,"line":7250},[563,10259,937],{"emptyLinePlaceholder":936},[563,10261,10262,10264,10266,10269,10271,10273,10275,10277,10279],{"class":565,"line":7265},[563,10263,5019],{"class":789},[563,10265,1272],{"class":683},[563,10267,10268],{"class":573},"selections",[563,10270,590],{"class":577},[563,10272,6793],{"class":573},[563,10274,6730],{"class":577},[563,10276,10239],{"class":1541},[563,10278,5028],{"class":683},[563,10280,1520],{"class":577},[563,10282,10283,10285,10287,10289,10291,10294,10296,10298,10300,10302,10304,10306],{"class":565,"line":7290},[563,10284,6604],{"class":569},[563,10286,574],{"class":683},[563,10288,578],{"class":577},[563,10290,6480],{"class":573},[563,10292,10293],{"class":581},"❌ No valid selections",[563,10295,6480],{"class":573},[563,10297,578],{"class":577},[563,10299,795],{"class":577},[563,10301,6052],{"class":573},[563,10303,590],{"class":577},[563,10305,7285],{"class":573},[563,10307,1122],{"class":683},[563,10309,10310,10312,10314,10316,10318,10320],{"class":565,"line":7297},[563,10311,10086],{"class":573},[563,10313,590],{"class":577},[563,10315,8660],{"class":569},[563,10317,574],{"class":683},[563,10319,7158],{"class":1541},[563,10321,1122],{"class":683},[563,10323,10324],{"class":565,"line":7302},[563,10325,712],{"class":577},[563,10327,10328],{"class":565,"line":7307},[563,10329,937],{"emptyLinePlaceholder":936},[563,10331,10332,10334,10336,10338,10340,10342,10344,10346,10348,10350,10352,10354,10356],{"class":565,"line":7312},[563,10333,5065],{"class":789},[563,10335,10152],{"class":573},[563,10337,590],{"class":577},[563,10339,10184],{"class":569},[563,10341,574],{"class":683},[563,10343,10215],{"class":1275},[563,10345,767],{"class":749},[563,10347,10249],{"class":573},[563,10349,6831],{"class":683},[563,10351,10215],{"class":573},[563,10353,6865],{"class":577},[563,10355,6621],{"class":1541},[563,10357,10358],{"class":683},"])\n",[563,10360,10361],{"class":565,"line":7337},[563,10362,718],{"class":577},[563,10364,10365],{"class":565,"line":7362},[563,10366,937],{"emptyLinePlaceholder":936},[563,10368,10369,10371,10373,10376,10378,10380,10382,10385,10387],{"class":565,"line":7401},[563,10370,6290],{"class":749},[563,10372,4956],{"class":749},[563,10374,10375],{"class":569}," runSeeder",[563,10377,574],{"class":577},[563,10379,9422],{"class":1275},[563,10381,795],{"class":577},[563,10383,10384],{"class":1275}," isLocal",[563,10386,587],{"class":577},[563,10388,646],{"class":577},[563,10390,10391,10393,10396,10398,10400,10402,10404,10406,10408,10410,10412,10414,10416],{"class":565,"line":7406},[563,10392,4973],{"class":749},[563,10394,10395],{"class":573}," seederName",[563,10397,926],{"class":577},[563,10399,9479],{"class":573},[563,10401,590],{"class":577},[563,10403,779],{"class":569},[563,10405,574],{"class":683},[563,10407,578],{"class":577},[563,10409,9307],{"class":581},[563,10411,578],{"class":577},[563,10413,795],{"class":577},[563,10415,798],{"class":577},[563,10417,1122],{"class":683},[563,10419,10420,10422,10425,10427,10429,10431,10433,10436,10438,10440,10442,10445],{"class":565,"line":7413},[563,10421,4973],{"class":749},[563,10423,10424],{"class":573}," envFlag",[563,10426,926],{"class":577},[563,10428,10384],{"class":573},[563,10430,6183],{"class":577},[563,10432,1552],{"class":577},[563,10434,10435],{"class":581},"--local",[563,10437,578],{"class":577},[563,10439,6193],{"class":577},[563,10441,1552],{"class":577},[563,10443,10444],{"class":581},"--remote",[563,10446,1699],{"class":577},[563,10448,10449],{"class":565,"line":7438},[563,10450,937],{"emptyLinePlaceholder":936},[563,10452,10453,10455,10457,10459,10461,10464,10466,10469,10471,10473,10475,10477,10479,10481,10483,10485,10487],{"class":565,"line":7451},[563,10454,6473],{"class":569},[563,10456,574],{"class":683},[563,10458,6609],{"class":577},[563,10460,6480],{"class":573},[563,10462,10463],{"class":581},"▶️  Running: ",[563,10465,1031],{"class":577},[563,10467,10468],{"class":573},"seederName",[563,10470,1056],{"class":577},[563,10472,795],{"class":577},[563,10474,6052],{"class":573},[563,10476,590],{"class":577},[563,10478,6494],{"class":573},[563,10480,6497],{"class":577},[563,10482,6052],{"class":573},[563,10484,590],{"class":577},[563,10486,6504],{"class":573},[563,10488,1122],{"class":683},[563,10490,10491],{"class":565,"line":7475},[563,10492,937],{"emptyLinePlaceholder":936},[563,10494,10495,10497],{"class":565,"line":7488},[563,10496,6134],{"class":789},[563,10498,646],{"class":577},[563,10500,10501,10503,10506,10508,10510,10513,10515,10518,10520,10523,10525,10527],{"class":565,"line":7493},[563,10502,1083],{"class":749},[563,10504,10505],{"class":573}," command",[563,10507,926],{"class":577},[563,10509,7019],{"class":577},[563,10511,10512],{"class":581},"wrangler d1 execute my-database ",[563,10514,1031],{"class":577},[563,10516,10517],{"class":573},"envFlag",[563,10519,923],{"class":577},[563,10521,10522],{"class":581}," --file=seeders/",[563,10524,1031],{"class":577},[563,10526,9422],{"class":573},[563,10528,7033],{"class":577},[563,10530,10531,10534,10536,10538],{"class":565,"line":7498},[563,10532,10533],{"class":569},"    execCommand",[563,10535,574],{"class":683},[563,10537,6117],{"class":573},[563,10539,1122],{"class":683},[563,10541,10542,10544,10546,10548,10551,10553,10555,10557,10560,10562,10564,10566,10568,10570],{"class":565,"line":7540},[563,10543,6604],{"class":569},[563,10545,574],{"class":683},[563,10547,6609],{"class":577},[563,10549,10550],{"class":581},"✅ ",[563,10552,1031],{"class":577},[563,10554,10468],{"class":573},[563,10556,923],{"class":577},[563,10558,10559],{"class":581}," completed",[563,10561,6609],{"class":577},[563,10563,795],{"class":577},[563,10565,6052],{"class":573},[563,10567,590],{"class":577},[563,10569,6917],{"class":573},[563,10571,1122],{"class":683},[563,10573,10574,10576],{"class":565,"line":7561},[563,10575,1156],{"class":789},[563,10577,706],{"class":668},[563,10579,10580,10582,10584,10586,10588,10590],{"class":565,"line":7585},[563,10581,1813],{"class":577},[563,10583,6236],{"class":789},[563,10585,1272],{"class":683},[563,10587,5270],{"class":573},[563,10589,5028],{"class":683},[563,10591,1520],{"class":577},[563,10593,10594,10596,10598,10600,10603,10605,10607,10609,10612,10614,10616,10618,10620,10622],{"class":565,"line":7617},[563,10595,6604],{"class":569},[563,10597,574],{"class":683},[563,10599,6609],{"class":577},[563,10601,10602],{"class":581},"❌ ",[563,10604,1031],{"class":577},[563,10606,10468],{"class":573},[563,10608,923],{"class":577},[563,10610,10611],{"class":581}," failed",[563,10613,6609],{"class":577},[563,10615,795],{"class":577},[563,10617,6052],{"class":573},[563,10619,590],{"class":577},[563,10621,7285],{"class":573},[563,10623,1122],{"class":683},[563,10625,10626,10628],{"class":565,"line":7630},[563,10627,1156],{"class":789},[563,10629,8168],{"class":668},[563,10631,10632],{"class":565,"line":7635},[563,10633,712],{"class":577},[563,10635,10636],{"class":565,"line":7642},[563,10637,718],{"class":577},[563,10639,10640],{"class":565,"line":7657},[563,10641,937],{"emptyLinePlaceholder":936},[563,10643,10644,10646,10648,10650,10652],{"class":565,"line":7681},[563,10645,6290],{"class":749},[563,10647,4956],{"class":749},[563,10649,8193],{"class":569},[563,10651,764],{"class":577},[563,10653,646],{"class":577},[563,10655,10656,10658,10661,10663,10665,10667,10670,10672,10675,10677,10680],{"class":565,"line":7688},[563,10657,4973],{"class":749},[563,10659,10660],{"class":573}," args",[563,10662,926],{"class":577},[563,10664,2582],{"class":573},[563,10666,590],{"class":577},[563,10668,10669],{"class":573},"argv",[563,10671,590],{"class":577},[563,10673,10674],{"class":569},"slice",[563,10676,574],{"class":683},[563,10678,10679],{"class":1541},"2",[563,10681,1122],{"class":683},[563,10683,10684,10686,10688,10690,10692,10694,10697,10699,10701,10703,10705],{"class":565,"line":7693},[563,10685,4973],{"class":749},[563,10687,10384],{"class":573},[563,10689,926],{"class":577},[563,10691,10660],{"class":573},[563,10693,590],{"class":577},[563,10695,10696],{"class":569},"includes",[563,10698,574],{"class":683},[563,10700,578],{"class":577},[563,10702,10435],{"class":581},[563,10704,578],{"class":577},[563,10706,1122],{"class":683},[563,10708,10709,10711,10714,10716,10718,10720,10722,10724,10726,10729,10731],{"class":565,"line":7698},[563,10710,4973],{"class":749},[563,10712,10713],{"class":573}," autoAll",[563,10715,926],{"class":577},[563,10717,10660],{"class":573},[563,10719,590],{"class":577},[563,10721,10696],{"class":569},[563,10723,574],{"class":683},[563,10725,578],{"class":577},[563,10727,10728],{"class":581},"--all",[563,10730,578],{"class":577},[563,10732,1122],{"class":683},[563,10734,10735,10737,10740,10742,10744,10746,10748,10751,10753,10755,10757,10760],{"class":565,"line":7703},[563,10736,4973],{"class":749},[563,10738,10739],{"class":573}," environment",[563,10741,926],{"class":577},[563,10743,10384],{"class":573},[563,10745,6183],{"class":577},[563,10747,1552],{"class":577},[563,10749,10750],{"class":581},"Local",[563,10752,578],{"class":577},[563,10754,6193],{"class":577},[563,10756,1552],{"class":577},[563,10758,10759],{"class":581},"Production",[563,10761,1699],{"class":577},[563,10763,10764],{"class":565,"line":7730},[563,10765,937],{"emptyLinePlaceholder":936},[563,10767,10768,10770,10772,10774,10776,10778,10780,10782,10784,10786,10788,10790,10792,10795,10797,10799,10801,10803,10805],{"class":565,"line":7756},[563,10769,6473],{"class":569},[563,10771,574],{"class":683},[563,10773,578],{"class":577},[563,10775,6480],{"class":573},[563,10777,578],{"class":577},[563,10779,6497],{"class":577},[563,10781,1552],{"class":577},[563,10783,756],{"class":581},[563,10785,578],{"class":577},[563,10787,590],{"class":577},[563,10789,8223],{"class":569},[563,10791,574],{"class":683},[563,10793,10794],{"class":1541},"70",[563,10796,587],{"class":683},[563,10798,795],{"class":577},[563,10800,6052],{"class":573},[563,10802,590],{"class":577},[563,10804,6504],{"class":573},[563,10806,1122],{"class":683},[563,10808,10809,10811,10813,10815,10818,10820,10823,10825,10827,10829,10831,10833,10835,10837,10839,10841],{"class":565,"line":7761},[563,10810,6473],{"class":569},[563,10812,574],{"class":683},[563,10814,6609],{"class":577},[563,10816,10817],{"class":581},"🌱 Database Seeding - ",[563,10819,1031],{"class":577},[563,10821,10822],{"class":573},"environment",[563,10824,1056],{"class":577},[563,10826,795],{"class":577},[563,10828,6052],{"class":573},[563,10830,590],{"class":577},[563,10832,6494],{"class":573},[563,10834,6497],{"class":577},[563,10836,6052],{"class":573},[563,10838,590],{"class":577},[563,10840,6504],{"class":573},[563,10842,1122],{"class":683},[563,10844,10845,10847,10849,10851,10853,10855,10857,10859,10861,10863,10865,10867,10869,10871,10873],{"class":565,"line":7768},[563,10846,6473],{"class":569},[563,10848,574],{"class":683},[563,10850,578],{"class":577},[563,10852,756],{"class":581},[563,10854,578],{"class":577},[563,10856,590],{"class":577},[563,10858,8223],{"class":569},[563,10860,574],{"class":683},[563,10862,10794],{"class":1541},[563,10864,587],{"class":683},[563,10866,795],{"class":577},[563,10868,6052],{"class":573},[563,10870,590],{"class":577},[563,10872,6504],{"class":573},[563,10874,1122],{"class":683},[563,10876,10877],{"class":565,"line":7795},[563,10878,937],{"emptyLinePlaceholder":936},[563,10880,10881,10883,10886,10888,10890],{"class":565,"line":7823},[563,10882,4973],{"class":749},[563,10884,10885],{"class":573}," availableSeeders",[563,10887,926],{"class":577},[563,10889,9247],{"class":569},[563,10891,609],{"class":683},[563,10893,10894],{"class":565,"line":7828},[563,10895,937],{"emptyLinePlaceholder":936},[563,10897,10898,10900,10902,10905,10907,10909,10911,10913,10915],{"class":565,"line":7841},[563,10899,5019],{"class":789},[563,10901,1272],{"class":683},[563,10903,10904],{"class":573},"availableSeeders",[563,10906,590],{"class":577},[563,10908,6793],{"class":573},[563,10910,6730],{"class":577},[563,10912,10239],{"class":1541},[563,10914,5028],{"class":683},[563,10916,1520],{"class":577},[563,10918,10919,10921,10923,10925,10927,10930,10932,10934,10936,10938,10940,10942],{"class":565,"line":7857},[563,10920,6604],{"class":569},[563,10922,574],{"class":683},[563,10924,578],{"class":577},[563,10926,6480],{"class":573},[563,10928,10929],{"class":581},"⚠️  No seeders found",[563,10931,6480],{"class":573},[563,10933,578],{"class":577},[563,10935,795],{"class":577},[563,10937,6052],{"class":573},[563,10939,590],{"class":577},[563,10941,6531],{"class":573},[563,10943,1122],{"class":683},[563,10945,10946,10948,10950,10952,10954,10956],{"class":565,"line":7875},[563,10947,10086],{"class":573},[563,10949,590],{"class":577},[563,10951,8660],{"class":569},[563,10953,574],{"class":683},[563,10955,6834],{"class":1541},[563,10957,1122],{"class":683},[563,10959,10960],{"class":565,"line":7895},[563,10961,712],{"class":577},[563,10963,10964],{"class":565,"line":7901},[563,10965,937],{"emptyLinePlaceholder":936},[563,10967,10968,10971,10973,10975],{"class":565,"line":7906},[563,10969,10970],{"class":569},"  displaySeeders",[563,10972,574],{"class":683},[563,10974,10904],{"class":573},[563,10976,1122],{"class":683},[563,10978,10979],{"class":565,"line":7911},[563,10980,937],{"emptyLinePlaceholder":936},[563,10982,10983,10986],{"class":565,"line":7925},[563,10984,10985],{"class":749},"  let",[563,10987,10988],{"class":573}," selectedSeeders\n",[563,10990,10991,10993,10995,10998,11000],{"class":565,"line":7940},[563,10992,5019],{"class":789},[563,10994,1272],{"class":683},[563,10996,10997],{"class":573},"autoAll",[563,10999,5028],{"class":683},[563,11001,1520],{"class":577},[563,11003,11004,11007,11009],{"class":565,"line":7957},[563,11005,11006],{"class":573},"    selectedSeeders",[563,11008,926],{"class":577},[563,11010,11011],{"class":573}," availableSeeders\n",[563,11013,11014,11016,11019],{"class":565,"line":7975},[563,11015,1813],{"class":577},[563,11017,11018],{"class":789}," else",[563,11020,646],{"class":577},[563,11022,11023,11025,11027,11029,11031,11033,11035],{"class":565,"line":7980},[563,11024,11006],{"class":573},[563,11026,926],{"class":577},[563,11028,1013],{"class":789},[563,11030,9875],{"class":569},[563,11032,574],{"class":683},[563,11034,10904],{"class":573},[563,11036,1122],{"class":683},[563,11038,11039],{"class":565,"line":7985},[563,11040,712],{"class":577},[563,11042,11043],{"class":565,"line":7990},[563,11044,937],{"emptyLinePlaceholder":936},[563,11046,11047,11049,11052,11054],{"class":565,"line":8004},[563,11048,4973],{"class":749},[563,11050,11051],{"class":573}," results",[563,11053,926],{"class":577},[563,11055,9340],{"class":683},[563,11057,11058,11061,11063,11065,11067,11070,11073,11075],{"class":565,"line":8019},[563,11059,11060],{"class":789},"  for",[563,11062,1272],{"class":683},[563,11064,750],{"class":749},[563,11066,9479],{"class":573},[563,11068,11069],{"class":577}," of",[563,11071,11072],{"class":573}," selectedSeeders",[563,11074,5028],{"class":683},[563,11076,1520],{"class":577},[563,11078,11079,11081,11084,11086,11088,11090,11092,11094,11096,11098],{"class":565,"line":8036},[563,11080,1083],{"class":749},[563,11082,11083],{"class":573}," success",[563,11085,926],{"class":577},[563,11087,1013],{"class":789},[563,11089,10375],{"class":569},[563,11091,574],{"class":683},[563,11093,9422],{"class":573},[563,11095,795],{"class":577},[563,11097,10384],{"class":573},[563,11099,1122],{"class":683},[563,11101,11102,11105,11107,11110,11112,11114,11116,11118,11120,11122],{"class":565,"line":8054},[563,11103,11104],{"class":573},"    results",[563,11106,590],{"class":577},[563,11108,11109],{"class":569},"push",[563,11111,574],{"class":683},[563,11113,1533],{"class":577},[563,11115,9479],{"class":573},[563,11117,795],{"class":577},[563,11119,11083],{"class":573},[563,11121,1560],{"class":577},[563,11123,1122],{"class":683},[563,11125,11126],{"class":565,"line":8059},[563,11127,712],{"class":577},[563,11129,11130],{"class":565,"line":8064},[563,11131,937],{"emptyLinePlaceholder":936},[563,11133,11134,11136,11139,11141,11143,11145,11147,11149,11152,11154,11157,11159,11162,11164,11166],{"class":565,"line":8069},[563,11135,4973],{"class":749},[563,11137,11138],{"class":573}," successful",[563,11140,926],{"class":577},[563,11142,11051],{"class":573},[563,11144,590],{"class":577},[563,11146,9286],{"class":569},[563,11148,574],{"class":683},[563,11150,11151],{"class":1275},"r",[563,11153,767],{"class":749},[563,11155,11156],{"class":573}," r",[563,11158,590],{"class":577},[563,11160,11161],{"class":573},"success",[563,11163,587],{"class":683},[563,11165,590],{"class":577},[563,11167,9575],{"class":573},[563,11169,11170,11172,11174,11176,11178,11180,11182,11184,11186,11188,11190,11192,11194,11196,11198,11200],{"class":565,"line":8093},[563,11171,4973],{"class":749},[563,11173,10611],{"class":573},[563,11175,926],{"class":577},[563,11177,11051],{"class":573},[563,11179,590],{"class":577},[563,11181,9286],{"class":569},[563,11183,574],{"class":683},[563,11185,11151],{"class":1275},[563,11187,767],{"class":749},[563,11189,10220],{"class":577},[563,11191,11151],{"class":573},[563,11193,590],{"class":577},[563,11195,11161],{"class":573},[563,11197,587],{"class":683},[563,11199,590],{"class":577},[563,11201,9575],{"class":573},[563,11203,11204],{"class":565,"line":8117},[563,11205,937],{"emptyLinePlaceholder":936},[563,11207,11208,11210,11212,11214,11216,11219,11221,11223,11225,11227,11229],{"class":565,"line":8124},[563,11209,6473],{"class":569},[563,11211,574],{"class":683},[563,11213,578],{"class":577},[563,11215,6480],{"class":573},[563,11217,11218],{"class":581},"📊 Summary:",[563,11220,578],{"class":577},[563,11222,795],{"class":577},[563,11224,6052],{"class":573},[563,11226,590],{"class":577},[563,11228,6504],{"class":573},[563,11230,1122],{"class":683},[563,11232,11233,11235,11237,11239,11242,11244,11247,11249,11251,11253,11255,11257],{"class":565,"line":8139},[563,11234,6473],{"class":569},[563,11236,574],{"class":683},[563,11238,6609],{"class":577},[563,11240,11241],{"class":581},"   ✅ Successful: ",[563,11243,1031],{"class":577},[563,11245,11246],{"class":573},"successful",[563,11248,1056],{"class":577},[563,11250,795],{"class":577},[563,11252,6052],{"class":573},[563,11254,590],{"class":577},[563,11256,6917],{"class":573},[563,11258,1122],{"class":683},[563,11260,11261,11263,11265,11267,11270,11272,11275,11277,11279,11281,11283,11285,11287,11289,11291,11293,11295,11297,11299,11301],{"class":565,"line":8163},[563,11262,6473],{"class":569},[563,11264,574],{"class":683},[563,11266,6609],{"class":577},[563,11268,11269],{"class":581},"   ❌ Failed: ",[563,11271,1031],{"class":577},[563,11273,11274],{"class":573},"failed",[563,11276,1056],{"class":577},[563,11278,795],{"class":577},[563,11280,10611],{"class":573},[563,11282,6785],{"class":577},[563,11284,10239],{"class":1541},[563,11286,6183],{"class":577},[563,11288,6052],{"class":573},[563,11290,590],{"class":577},[563,11292,7285],{"class":573},[563,11294,6193],{"class":577},[563,11296,6052],{"class":573},[563,11298,590],{"class":577},[563,11300,9686],{"class":573},[563,11302,1122],{"class":683},[563,11304,11305],{"class":565,"line":8171},[563,11306,937],{"emptyLinePlaceholder":936},[563,11308,11309,11311,11313,11315,11317,11319,11321],{"class":565,"line":8176},[563,11310,5019],{"class":789},[563,11312,1272],{"class":683},[563,11314,11274],{"class":573},[563,11316,6730],{"class":577},[563,11318,10239],{"class":1541},[563,11320,5028],{"class":683},[563,11322,1520],{"class":577},[563,11324,11325,11327,11329,11331,11333,11336,11338,11340,11342,11344,11346,11348,11350,11352,11354,11356],{"class":565,"line":8181},[563,11326,6604],{"class":569},[563,11328,574],{"class":683},[563,11330,578],{"class":577},[563,11332,6480],{"class":573},[563,11334,11335],{"class":581},"🎉 All seeders completed!",[563,11337,6480],{"class":573},[563,11339,578],{"class":577},[563,11341,795],{"class":577},[563,11343,6052],{"class":573},[563,11345,590],{"class":577},[563,11347,6917],{"class":573},[563,11349,6497],{"class":577},[563,11351,6052],{"class":573},[563,11353,590],{"class":577},[563,11355,6504],{"class":573},[563,11357,1122],{"class":683},[563,11359,11360,11362,11364],{"class":565,"line":8186},[563,11361,1813],{"class":577},[563,11363,11018],{"class":789},[563,11365,646],{"class":577},[563,11367,11368,11370,11372,11374,11376,11379,11381,11383,11385,11387,11389,11391],{"class":565,"line":8200},[563,11369,6604],{"class":569},[563,11371,574],{"class":683},[563,11373,578],{"class":577},[563,11375,6480],{"class":573},[563,11377,11378],{"class":581},"⚠️  Some failed",[563,11380,6480],{"class":573},[563,11382,578],{"class":577},[563,11384,795],{"class":577},[563,11386,6052],{"class":573},[563,11388,590],{"class":577},[563,11390,6531],{"class":573},[563,11392,1122],{"class":683},[563,11394,11395,11397,11399,11401,11403,11405],{"class":565,"line":8243},[563,11396,10086],{"class":573},[563,11398,590],{"class":577},[563,11400,8660],{"class":569},[563,11402,574],{"class":683},[563,11404,7158],{"class":1541},[563,11406,1122],{"class":683},[563,11408,11409],{"class":565,"line":8275},[563,11410,712],{"class":577},[563,11412,11413],{"class":565,"line":8316},[563,11414,718],{"class":577},[563,11416,11417],{"class":565,"line":8321},[563,11418,937],{"emptyLinePlaceholder":936},[563,11420,11421,11423,11425,11427,11429,11431,11433,11435],{"class":565,"line":8336},[563,11422,8584],{"class":569},[563,11424,764],{"class":573},[563,11426,590],{"class":577},[563,11428,8591],{"class":569},[563,11430,574],{"class":573},[563,11432,5270],{"class":1275},[563,11434,767],{"class":749},[563,11436,646],{"class":577},[563,11438,11439,11441,11443,11445,11447,11450,11452,11454,11456,11458,11460],{"class":565,"line":8356},[563,11440,6473],{"class":569},[563,11442,574],{"class":683},[563,11444,578],{"class":577},[563,11446,6480],{"class":573},[563,11448,11449],{"class":581},"❌ Seeding failed",[563,11451,578],{"class":577},[563,11453,795],{"class":577},[563,11455,6052],{"class":573},[563,11457,590],{"class":577},[563,11459,7285],{"class":573},[563,11461,1122],{"class":683},[563,11463,11464,11466,11468,11470,11472,11474,11476,11478,11480,11482],{"class":565,"line":8382},[563,11465,6473],{"class":569},[563,11467,574],{"class":683},[563,11469,5270],{"class":573},[563,11471,590],{"class":577},[563,11473,8639],{"class":573},[563,11475,795],{"class":577},[563,11477,6052],{"class":573},[563,11479,590],{"class":577},[563,11481,7285],{"class":573},[563,11483,1122],{"class":683},[563,11485,11486,11488,11490,11492,11494,11496],{"class":565,"line":8407},[563,11487,8655],{"class":573},[563,11489,590],{"class":577},[563,11491,8660],{"class":569},[563,11493,574],{"class":683},[563,11495,7158],{"class":1541},[563,11497,1122],{"class":683},[563,11499,11500,11502],{"class":565,"line":8412},[563,11501,923],{"class":577},[563,11503,1122],{"class":573},[554,11505,11508],{"className":5454,"code":11506,"filename":11507,"language":5457,"meta":559,"style":559},"#!/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",[518,11509,11510,11514,11518,11522,11527,11532,11537,11542,11547,11551,11555,11573,11595,11613,11631,11635,11657,11669,11691,11695,11705,11721,11737,11755,11771,11787,11803,11819,11833,11837,11841,11867,11897,11901,11905,11921,11939,11953,11965,11971,11975,11991,12011,12021,12035,12041,12047,12051,12055,12077,12099,12108,12133,12149,12153,12159,12163,12183,12202,12238,12242,12246,12264,12275,12279,12283,12305,12330,12355,12373,12377,12381,12399,12434,12438,12464,12496,12529,12546,12578,12605,12609,12615,12619,12629,12652,12656,12674,12678,12694,12733,12756,12762,12766,12770,12786,12790,12794,12820,12853,12871,12875,12879,12895,12906,12918,12929,12940,12951,12961,12970,12974,12978,12998,13017,13035,13039,13052,13067,13085,13096,13114,13121,13126,13130,13143,13160,13170,13190,13207,13213,13217,13221,13234,13251,13261,13279,13285,13289,13293,13306,13323,13333,13352,13358,13362,13366,13379,13406,13410,13414,13427,13446,13450,13454,13458,13462,13469,13473,13477,13501,13512,13523,13539,13562,13566,13570,13596,13614,13618,13622,13646,13663,13667,13671,13695,13712,13716,13720,13756,13773,13777,13781,13788,13792,13796,13808,13832,13836,13876,13907,13947,13951,13970,13990,14000,14004,14023,14074,14122,14170,14175,14180,14212,14244,14249,14270,14298,14313,14318,14323,14330,14353,14358,14379,14407,14423,14428,14433,14470,14475,14483,14496,14531,14548,14586,14602,14607,14616,14633,14648,14675,14690,14695,14700,14705,14721,14759,14764,14790,14817,14841,14846,14871,14876,14912,14947,14952,14982,15010,15015,15030,15064,15079,15084,15089,15094],{"__ignoreMap":559},[563,11511,11512],{"class":565,"line":566},[563,11513,5464],{"class":942},[563,11515,11516],{"class":565,"line":649},[563,11517,937],{"emptyLinePlaceholder":936},[563,11519,11520],{"class":565,"line":633},[563,11521,3528],{"class":942},[563,11523,11524],{"class":565,"line":675},[563,11525,11526],{"class":942}," * Cloudflare Worker Configuration Extractor\n",[563,11528,11529],{"class":565,"line":698},[563,11530,11531],{"class":942}," *\n",[563,11533,11534],{"class":565,"line":709},[563,11535,11536],{"class":942}," * Retrieves worker configuration via Cloudflare API and generates:\n",[563,11538,11539],{"class":565,"line":715},[563,11540,11541],{"class":942}," * - wrangler.\u003Cworkername>.jsonc - Full configuration\n",[563,11543,11544],{"class":565,"line":989},[563,11545,11546],{"class":942}," * - wrangler.\u003Cworkername>.md - Setup guide\n",[563,11548,11549],{"class":565,"line":994},[563,11550,3543],{"class":942},[563,11552,11553],{"class":565,"line":1022},[563,11554,937],{"emptyLinePlaceholder":936},[563,11556,11557,11559,11561,11563,11565,11567,11569,11571],{"class":565,"line":1061},[563,11558,1671],{"class":789},[563,11560,917],{"class":577},[563,11562,5524],{"class":573},[563,11564,1560],{"class":577},[563,11566,1691],{"class":789},[563,11568,1552],{"class":577},[563,11570,5533],{"class":581},[563,11572,1699],{"class":577},[563,11574,11575,11577,11579,11581,11583,11585,11587,11589,11591,11593],{"class":565,"line":1074},[563,11576,1671],{"class":789},[563,11578,917],{"class":577},[563,11580,5544],{"class":573},[563,11582,795],{"class":577},[563,11584,5549],{"class":573},[563,11586,1560],{"class":577},[563,11588,1691],{"class":789},[563,11590,1552],{"class":577},[563,11592,593],{"class":581},[563,11594,1699],{"class":577},[563,11596,11597,11599,11601,11603,11605,11607,11609,11611],{"class":565,"line":850},[563,11598,1671],{"class":789},[563,11600,917],{"class":577},[563,11602,5568],{"class":573},[563,11604,1560],{"class":577},[563,11606,1691],{"class":789},[563,11608,1552],{"class":577},[563,11610,5577],{"class":581},[563,11612,1699],{"class":577},[563,11614,11615,11617,11619,11621,11623,11625,11627,11629],{"class":565,"line":851},[563,11616,1671],{"class":789},[563,11618,4912],{"class":577},[563,11620,4915],{"class":789},[563,11622,5590],{"class":573},[563,11624,4920],{"class":789},[563,11626,1552],{"class":577},[563,11628,5597],{"class":581},[563,11630,1699],{"class":577},[563,11632,11633],{"class":565,"line":852},[563,11634,937],{"emptyLinePlaceholder":936},[563,11636,11637,11639,11641,11643,11645,11647,11649,11651,11653,11655],{"class":565,"line":1139},[563,11638,750],{"class":749},[563,11640,5610],{"class":573},[563,11642,756],{"class":577},[563,11644,5568],{"class":569},[563,11646,574],{"class":573},[563,11648,1671],{"class":789},[563,11650,590],{"class":577},[563,11652,5623],{"class":573},[563,11654,590],{"class":577},[563,11656,5628],{"class":573},[563,11658,11659,11661,11663,11665,11667],{"class":565,"line":1148},[563,11660,750],{"class":749},[563,11662,5635],{"class":573},[563,11664,756],{"class":577},[563,11666,5549],{"class":569},[563,11668,5642],{"class":573},[563,11670,11671,11673,11675,11677,11679,11681,11683,11685,11687,11689],{"class":565,"line":1153},[563,11672,750],{"class":749},[563,11674,5649],{"class":573},[563,11676,756],{"class":577},[563,11678,5544],{"class":569},[563,11680,5656],{"class":573},[563,11682,795],{"class":577},[563,11684,1552],{"class":577},[563,11686,5663],{"class":581},[563,11688,578],{"class":577},[563,11690,1122],{"class":573},[563,11692,11693],{"class":565,"line":1162},[563,11694,937],{"emptyLinePlaceholder":936},[563,11696,11697,11699,11701,11703],{"class":565,"line":1167},[563,11698,750],{"class":749},[563,11700,5678],{"class":573},[563,11702,756],{"class":577},[563,11704,646],{"class":577},[563,11706,11707,11709,11711,11713,11715,11717,11719],{"class":565,"line":1172},[563,11708,5687],{"class":683},[563,11710,552],{"class":577},[563,11712,1552],{"class":577},[563,11714,5694],{"class":573},[563,11716,5697],{"class":581},[563,11718,578],{"class":577},[563,11720,672],{"class":577},[563,11722,11723,11725,11727,11729,11731,11733,11735],{"class":565,"line":1590},[563,11724,5706],{"class":683},[563,11726,552],{"class":577},[563,11728,1552],{"class":577},[563,11730,5694],{"class":573},[563,11732,5715],{"class":581},[563,11734,578],{"class":577},[563,11736,672],{"class":577},[563,11738,11739,11742,11744,11746,11748,11751,11753],{"class":565,"line":1601},[563,11740,11741],{"class":683},"  dim",[563,11743,552],{"class":577},[563,11745,1552],{"class":577},[563,11747,5694],{"class":573},[563,11749,11750],{"class":581},"[2m",[563,11752,578],{"class":577},[563,11754,672],{"class":577},[563,11756,11757,11759,11761,11763,11765,11767,11769],{"class":565,"line":1622},[563,11758,5724],{"class":683},[563,11760,552],{"class":577},[563,11762,1552],{"class":577},[563,11764,5694],{"class":573},[563,11766,5733],{"class":581},[563,11768,578],{"class":577},[563,11770,672],{"class":577},[563,11772,11773,11775,11777,11779,11781,11783,11785],{"class":565,"line":1644},[563,11774,5742],{"class":683},[563,11776,552],{"class":577},[563,11778,1552],{"class":577},[563,11780,5694],{"class":573},[563,11782,5751],{"class":581},[563,11784,578],{"class":577},[563,11786,672],{"class":577},[563,11788,11789,11791,11793,11795,11797,11799,11801],{"class":565,"line":1654},[563,11790,5760],{"class":683},[563,11792,552],{"class":577},[563,11794,1552],{"class":577},[563,11796,5694],{"class":573},[563,11798,5769],{"class":581},[563,11800,578],{"class":577},[563,11802,672],{"class":577},[563,11804,11805,11807,11809,11811,11813,11815,11817],{"class":565,"line":3648},[563,11806,5778],{"class":683},[563,11808,552],{"class":577},[563,11810,1552],{"class":577},[563,11812,5694],{"class":573},[563,11814,5787],{"class":581},[563,11816,578],{"class":577},[563,11818,672],{"class":577},[563,11820,11821,11823,11825,11827,11829,11831],{"class":565,"line":3653},[563,11822,5796],{"class":683},[563,11824,552],{"class":577},[563,11826,1552],{"class":577},[563,11828,5694],{"class":573},[563,11830,5805],{"class":581},[563,11832,1699],{"class":577},[563,11834,11835],{"class":565,"line":3658},[563,11836,718],{"class":577},[563,11838,11839],{"class":565,"line":3664},[563,11840,937],{"emptyLinePlaceholder":936},[563,11842,11843,11845,11847,11849,11851,11853,11855,11857,11859,11861,11863,11865],{"class":565,"line":3670},[563,11844,6035],{"class":749},[563,11846,6038],{"class":569},[563,11848,574],{"class":577},[563,11850,5438],{"class":1275},[563,11852,795],{"class":577},[563,11854,6047],{"class":1275},[563,11856,926],{"class":577},[563,11858,6052],{"class":573},[563,11860,590],{"class":577},[563,11862,6057],{"class":573},[563,11864,587],{"class":577},[563,11866,646],{"class":577},[563,11868,11869,11871,11873,11875,11877,11879,11881,11883,11885,11887,11889,11891,11893,11895],{"class":565,"line":3675},[563,11870,6066],{"class":573},[563,11872,590],{"class":577},[563,11874,6071],{"class":569},[563,11876,574],{"class":683},[563,11878,6076],{"class":577},[563,11880,6079],{"class":573},[563,11882,6082],{"class":577},[563,11884,5438],{"class":573},[563,11886,6082],{"class":577},[563,11888,6089],{"class":573},[563,11890,590],{"class":577},[563,11892,6057],{"class":573},[563,11894,1056],{"class":577},[563,11896,1122],{"class":683},[563,11898,11899],{"class":565,"line":3681},[563,11900,718],{"class":577},[563,11902,11903],{"class":565,"line":3687},[563,11904,937],{"emptyLinePlaceholder":936},[563,11906,11907,11909,11911,11913,11915,11917,11919],{"class":565,"line":3693},[563,11908,6290],{"class":749},[563,11910,4956],{"class":749},[563,11912,6295],{"class":569},[563,11914,574],{"class":577},[563,11916,6300],{"class":1275},[563,11918,587],{"class":577},[563,11920,646],{"class":577},[563,11922,11923,11925,11927,11929,11931,11933,11935,11937],{"class":565,"line":3699},[563,11924,4973],{"class":749},[563,11926,6311],{"class":573},[563,11928,926],{"class":577},[563,11930,6316],{"class":573},[563,11932,590],{"class":577},[563,11934,6321],{"class":569},[563,11936,574],{"class":683},[563,11938,1520],{"class":577},[563,11940,11941,11943,11945,11947,11949,11951],{"class":565,"line":3705},[563,11942,6330],{"class":683},[563,11944,552],{"class":577},[563,11946,2582],{"class":573},[563,11948,590],{"class":577},[563,11950,6339],{"class":573},[563,11952,672],{"class":577},[563,11954,11955,11957,11959,11961,11963],{"class":565,"line":3711},[563,11956,6346],{"class":683},[563,11958,552],{"class":577},[563,11960,2582],{"class":573},[563,11962,590],{"class":577},[563,11964,6355],{"class":573},[563,11966,11967,11969],{"class":565,"line":3716},[563,11968,1813],{"class":577},[563,11970,1122],{"class":683},[563,11972,11973],{"class":565,"line":3722},[563,11974,937],{"emptyLinePlaceholder":936},[563,11976,11977,11979,11981,11983,11985,11987,11989],{"class":565,"line":3727},[563,11978,5065],{"class":789},[563,11980,5038],{"class":577},[563,11982,6374],{"class":640},[563,11984,574],{"class":683},[563,11986,6379],{"class":1275},[563,11988,767],{"class":749},[563,11990,646],{"class":577},[563,11992,11993,11995,11997,11999,12001,12003,12005,12007,12009],{"class":565,"line":3732},[563,11994,6388],{"class":573},[563,11996,590],{"class":577},[563,11998,6300],{"class":569},[563,12000,574],{"class":683},[563,12002,6300],{"class":573},[563,12004,795],{"class":577},[563,12006,6401],{"class":1275},[563,12008,767],{"class":749},[563,12010,646],{"class":577},[563,12012,12013,12015,12017,12019],{"class":565,"line":3738},[563,12014,6410],{"class":573},[563,12016,590],{"class":577},[563,12018,6415],{"class":569},[563,12020,609],{"class":683},[563,12022,12023,12025,12027,12029,12031,12033],{"class":565,"line":3744},[563,12024,6422],{"class":569},[563,12026,574],{"class":683},[563,12028,6427],{"class":573},[563,12030,590],{"class":577},[563,12032,6432],{"class":569},[563,12034,6435],{"class":683},[563,12036,12037,12039],{"class":565,"line":3750},[563,12038,6227],{"class":577},[563,12040,1122],{"class":683},[563,12042,12043,12045],{"class":565,"line":3755},[563,12044,1813],{"class":577},[563,12046,1122],{"class":683},[563,12048,12049],{"class":565,"line":3761},[563,12050,718],{"class":577},[563,12052,12053],{"class":565,"line":3766},[563,12054,937],{"emptyLinePlaceholder":936},[563,12056,12057,12059,12061,12064,12066,12068,12070,12073,12075],{"class":565,"line":3772},[563,12058,6290],{"class":749},[563,12060,4956],{"class":749},[563,12062,12063],{"class":569}," fetchAPI",[563,12065,574],{"class":577},[563,12067,5577],{"class":1275},[563,12069,795],{"class":577},[563,12071,12072],{"class":1275}," apiToken",[563,12074,587],{"class":577},[563,12076,646],{"class":577},[563,12078,12079,12081,12084,12086,12088,12091,12093,12095,12097],{"class":565,"line":3778},[563,12080,4973],{"class":749},[563,12082,12083],{"class":573}," response",[563,12085,926],{"class":577},[563,12087,1013],{"class":789},[563,12089,12090],{"class":569}," fetch",[563,12092,574],{"class":683},[563,12094,5577],{"class":573},[563,12096,795],{"class":577},[563,12098,646],{"class":577},[563,12100,12101,12104,12106],{"class":565,"line":3784},[563,12102,12103],{"class":683},"    headers",[563,12105,552],{"class":577},[563,12107,646],{"class":577},[563,12109,12110,12112,12115,12117,12119,12121,12124,12126,12129,12131],{"class":565,"line":3789},[563,12111,4072],{"class":577},[563,12113,12114],{"class":683},"Authorization",[563,12116,578],{"class":577},[563,12118,552],{"class":577},[563,12120,7019],{"class":577},[563,12122,12123],{"class":581},"Bearer ",[563,12125,1031],{"class":577},[563,12127,12128],{"class":573},"apiToken",[563,12130,1056],{"class":577},[563,12132,672],{"class":577},[563,12134,12135,12137,12139,12141,12143,12145,12147],{"class":565,"line":3794},[563,12136,4072],{"class":577},[563,12138,5387],{"class":683},[563,12140,578],{"class":577},[563,12142,552],{"class":577},[563,12144,1552],{"class":577},[563,12146,5396],{"class":581},[563,12148,1699],{"class":577},[563,12150,12151],{"class":565,"line":3799},[563,12152,2085],{"class":577},[563,12154,12155,12157],{"class":565,"line":3804},[563,12156,1813],{"class":577},[563,12158,1122],{"class":683},[563,12160,12161],{"class":565,"line":3810},[563,12162,937],{"emptyLinePlaceholder":936},[563,12164,12165,12167,12169,12171,12174,12176,12179,12181],{"class":565,"line":3816},[563,12166,5019],{"class":789},[563,12168,1272],{"class":683},[563,12170,1509],{"class":577},[563,12172,12173],{"class":573},"response",[563,12175,590],{"class":577},[563,12177,12178],{"class":573},"ok",[563,12180,5028],{"class":683},[563,12182,1520],{"class":577},[563,12184,12185,12187,12190,12192,12194,12196,12198,12200],{"class":565,"line":3822},[563,12186,1083],{"class":749},[563,12188,12189],{"class":573}," text",[563,12191,926],{"class":577},[563,12193,1013],{"class":789},[563,12195,12083],{"class":573},[563,12197,590],{"class":577},[563,12199,2115],{"class":569},[563,12201,609],{"class":683},[563,12203,12204,12206,12208,12210,12212,12214,12217,12219,12221,12223,12225,12227,12230,12232,12234,12236],{"class":565,"line":3827},[563,12205,5035],{"class":789},[563,12207,5038],{"class":577},[563,12209,5041],{"class":569},[563,12211,574],{"class":683},[563,12213,6609],{"class":577},[563,12215,12216],{"class":581},"API Error (",[563,12218,1031],{"class":577},[563,12220,12173],{"class":573},[563,12222,590],{"class":577},[563,12224,5313],{"class":573},[563,12226,923],{"class":577},[563,12228,12229],{"class":581},"): ",[563,12231,1031],{"class":577},[563,12233,2115],{"class":573},[563,12235,1056],{"class":577},[563,12237,1122],{"class":683},[563,12239,12240],{"class":565,"line":3833},[563,12241,712],{"class":577},[563,12243,12244],{"class":565,"line":3839},[563,12245,937],{"emptyLinePlaceholder":936},[563,12247,12248,12250,12252,12254,12256,12258,12260,12262],{"class":565,"line":3844},[563,12249,4973],{"class":749},[563,12251,1001],{"class":573},[563,12253,926],{"class":577},[563,12255,1013],{"class":789},[563,12257,12083],{"class":573},[563,12259,590],{"class":577},[563,12261,2728],{"class":569},[563,12263,609],{"class":683},[563,12265,12266,12268,12270,12272],{"class":565,"line":3849},[563,12267,5065],{"class":789},[563,12269,1001],{"class":573},[563,12271,590],{"class":577},[563,12273,12274],{"class":573},"result\n",[563,12276,12277],{"class":565,"line":3854},[563,12278,718],{"class":577},[563,12280,12281],{"class":565,"line":3860},[563,12282,937],{"emptyLinePlaceholder":936},[563,12284,12285,12287,12289,12292,12294,12297,12299,12301,12303],{"class":565,"line":3865},[563,12286,6290],{"class":749},[563,12288,4956],{"class":749},[563,12290,12291],{"class":569}," listWorkers",[563,12293,574],{"class":577},[563,12295,12296],{"class":1275},"accountId",[563,12298,795],{"class":577},[563,12300,12072],{"class":1275},[563,12302,587],{"class":577},[563,12304,646],{"class":577},[563,12306,12307,12309,12311,12313,12315,12318,12320,12322,12324,12326,12328],{"class":565,"line":3871},[563,12308,6473],{"class":569},[563,12310,574],{"class":683},[563,12312,578],{"class":577},[563,12314,6480],{"class":573},[563,12316,12317],{"class":581},"📋 Fetching workers...",[563,12319,578],{"class":577},[563,12321,795],{"class":577},[563,12323,6052],{"class":573},[563,12325,590],{"class":577},[563,12327,6494],{"class":573},[563,12329,1122],{"class":683},[563,12331,12332,12334,12337,12339,12341,12344,12346,12348,12350,12353],{"class":565,"line":3877},[563,12333,4973],{"class":749},[563,12335,12336],{"class":573}," url",[563,12338,926],{"class":577},[563,12340,7019],{"class":577},[563,12342,12343],{"class":581},"https://api.cloudflare.com/client/v4/accounts/",[563,12345,1031],{"class":577},[563,12347,12296],{"class":573},[563,12349,923],{"class":577},[563,12351,12352],{"class":581},"/workers/scripts",[563,12354,7892],{"class":577},[563,12356,12357,12359,12361,12363,12365,12367,12369,12371],{"class":565,"line":3882},[563,12358,5065],{"class":789},[563,12360,1013],{"class":789},[563,12362,12063],{"class":569},[563,12364,574],{"class":683},[563,12366,5577],{"class":573},[563,12368,795],{"class":577},[563,12370,12072],{"class":573},[563,12372,1122],{"class":683},[563,12374,12375],{"class":565,"line":6509},[563,12376,718],{"class":577},[563,12378,12379],{"class":565,"line":6536},[563,12380,937],{"emptyLinePlaceholder":936},[563,12382,12383,12385,12387,12390,12392,12395,12397],{"class":565,"line":6541},[563,12384,6290],{"class":749},[563,12386,4956],{"class":749},[563,12388,12389],{"class":569}," selectWorker",[563,12391,574],{"class":577},[563,12393,12394],{"class":1275},"workers",[563,12396,587],{"class":577},[563,12398,646],{"class":577},[563,12400,12401,12403,12405,12407,12409,12412,12414,12416,12418,12420,12422,12424,12426,12428,12430,12432],{"class":565,"line":6570},[563,12402,6473],{"class":569},[563,12404,574],{"class":683},[563,12406,578],{"class":577},[563,12408,6480],{"class":573},[563,12410,12411],{"class":581},"📂 Available Workers:",[563,12413,6480],{"class":573},[563,12415,578],{"class":577},[563,12417,795],{"class":577},[563,12419,6052],{"class":573},[563,12421,590],{"class":577},[563,12423,6494],{"class":573},[563,12425,6497],{"class":577},[563,12427,6052],{"class":573},[563,12429,590],{"class":577},[563,12431,6504],{"class":573},[563,12433,1122],{"class":683},[563,12435,12436],{"class":565,"line":6601},[563,12437,937],{"emptyLinePlaceholder":936},[563,12439,12440,12443,12445,12447,12449,12451,12454,12456,12458,12460,12462],{"class":565,"line":6670},[563,12441,12442],{"class":573},"  workers",[563,12444,590],{"class":577},[563,12446,6549],{"class":569},[563,12448,574],{"class":683},[563,12450,574],{"class":577},[563,12452,12453],{"class":1275},"worker",[563,12455,795],{"class":577},[563,12457,6561],{"class":1275},[563,12459,587],{"class":577},[563,12461,767],{"class":749},[563,12463,646],{"class":577},[563,12465,12466,12468,12470,12472,12474,12476,12478,12480,12482,12484,12486,12488,12490,12492,12494],{"class":565,"line":6677},[563,12467,1083],{"class":749},[563,12469,9439],{"class":573},[563,12471,926],{"class":577},[563,12473,9444],{"class":577},[563,12475,6615],{"class":573},[563,12477,6618],{"class":577},[563,12479,6621],{"class":1541},[563,12481,923],{"class":577},[563,12483,590],{"class":581},[563,12485,6609],{"class":577},[563,12487,590],{"class":577},[563,12489,9461],{"class":569},[563,12491,574],{"class":683},[563,12493,9466],{"class":1541},[563,12495,1122],{"class":683},[563,12497,12498,12500,12502,12504,12506,12508,12510,12512,12514,12517,12519,12521,12523,12525,12527],{"class":565,"line":6682},[563,12499,6604],{"class":569},[563,12501,574],{"class":683},[563,12503,6609],{"class":577},[563,12505,9627],{"class":577},[563,12507,9630],{"class":573},[563,12509,6082],{"class":577},[563,12511,12453],{"class":573},[563,12513,590],{"class":577},[563,12515,12516],{"class":573},"id",[563,12518,1056],{"class":577},[563,12520,795],{"class":577},[563,12522,6052],{"class":573},[563,12524,590],{"class":577},[563,12526,6665],{"class":573},[563,12528,1122],{"class":683},[563,12530,12531,12533,12535,12537,12539,12542,12544],{"class":565,"line":6694},[563,12532,6249],{"class":789},[563,12534,1272],{"class":683},[563,12536,12453],{"class":573},[563,12538,590],{"class":577},[563,12540,12541],{"class":573},"created_on",[563,12543,5028],{"class":683},[563,12545,1520],{"class":577},[563,12547,12548,12551,12554,12556,12558,12561,12563,12565,12567,12569,12571,12573,12576],{"class":565,"line":6718},[563,12549,12550],{"class":749},"      const",[563,12552,12553],{"class":573}," date",[563,12555,926],{"class":577},[563,12557,5038],{"class":577},[563,12559,12560],{"class":569}," Date",[563,12562,574],{"class":683},[563,12564,12453],{"class":573},[563,12566,590],{"class":577},[563,12568,12541],{"class":573},[563,12570,587],{"class":683},[563,12572,590],{"class":577},[563,12574,12575],{"class":569},"toLocaleDateString",[563,12577,609],{"class":683},[563,12579,12580,12582,12584,12586,12589,12591,12593,12595,12597,12599,12601,12603],{"class":565,"line":6750},[563,12581,7169],{"class":569},[563,12583,574],{"class":683},[563,12585,6609],{"class":577},[563,12587,12588],{"class":581},"        Created: ",[563,12590,1031],{"class":577},[563,12592,1772],{"class":573},[563,12594,1056],{"class":577},[563,12596,795],{"class":577},[563,12598,6052],{"class":573},[563,12600,590],{"class":577},[563,12602,9686],{"class":573},[563,12604,1122],{"class":683},[563,12606,12607],{"class":565,"line":6755},[563,12608,2085],{"class":577},[563,12610,12611,12613],{"class":565,"line":6800},[563,12612,1813],{"class":577},[563,12614,1122],{"class":683},[563,12616,12617],{"class":565,"line":6824},[563,12618,937],{"emptyLinePlaceholder":936},[563,12620,12621,12623,12625,12627],{"class":565,"line":6839},[563,12622,6473],{"class":569},[563,12624,574],{"class":683},[563,12626,6689],{"class":577},[563,12628,1122],{"class":683},[563,12630,12631,12633,12635,12637,12639,12641,12643,12645,12648,12650],{"class":565,"line":6844},[563,12632,4973],{"class":749},[563,12634,6401],{"class":573},[563,12636,926],{"class":577},[563,12638,1013],{"class":789},[563,12640,6295],{"class":569},[563,12642,574],{"class":683},[563,12644,578],{"class":577},[563,12646,12647],{"class":581},"Select worker (number) or Enter to cancel: ",[563,12649,578],{"class":577},[563,12651,1122],{"class":683},[563,12653,12654],{"class":565,"line":6849},[563,12655,937],{"emptyLinePlaceholder":936},[563,12657,12658,12660,12662,12664,12666,12668,12670,12672],{"class":565,"line":6872},[563,12659,5019],{"class":789},[563,12661,1272],{"class":683},[563,12663,6427],{"class":573},[563,12665,6730],{"class":577},[563,12667,798],{"class":577},[563,12669,5028],{"class":683},[563,12671,2622],{"class":789},[563,12673,6266],{"class":577},[563,12675,12676],{"class":565,"line":6922},[563,12677,937],{"emptyLinePlaceholder":936},[563,12679,12680,12682,12684,12686,12688,12690,12692],{"class":565,"line":6930},[563,12681,4973],{"class":749},[563,12683,6723],{"class":573},[563,12685,926],{"class":577},[563,12687,6741],{"class":569},[563,12689,574],{"class":683},[563,12691,6427],{"class":573},[563,12693,1122],{"class":683},[563,12695,12696,12698,12700,12702,12704,12706,12708,12710,12712,12714,12716,12718,12720,12722,12725,12727,12729,12731],{"class":565,"line":6935},[563,12697,5019],{"class":789},[563,12699,1272],{"class":683},[563,12701,6762],{"class":569},[563,12703,574],{"class":683},[563,12705,6767],{"class":573},[563,12707,5028],{"class":683},[563,12709,2595],{"class":577},[563,12711,6723],{"class":573},[563,12713,6776],{"class":577},[563,12715,6621],{"class":1541},[563,12717,4992],{"class":577},[563,12719,6723],{"class":573},[563,12721,6785],{"class":577},[563,12723,12724],{"class":573}," workers",[563,12726,590],{"class":577},[563,12728,6793],{"class":573},[563,12730,5028],{"class":683},[563,12732,1520],{"class":577},[563,12734,12735,12737,12739,12741,12744,12746,12748,12750,12752,12754],{"class":565,"line":6940},[563,12736,6604],{"class":569},[563,12738,574],{"class":683},[563,12740,578],{"class":577},[563,12742,12743],{"class":581},"❌ Invalid selection",[563,12745,578],{"class":577},[563,12747,795],{"class":577},[563,12749,6052],{"class":573},[563,12751,590],{"class":577},[563,12753,7285],{"class":573},[563,12755,1122],{"class":683},[563,12757,12758,12760],{"class":565,"line":6958},[563,12759,1156],{"class":789},[563,12761,6266],{"class":577},[563,12763,12764],{"class":565,"line":6997},[563,12765,712],{"class":577},[563,12767,12768],{"class":565,"line":7002},[563,12769,937],{"emptyLinePlaceholder":936},[563,12771,12772,12774,12776,12778,12780,12782,12784],{"class":565,"line":7009},[563,12773,5065],{"class":789},[563,12775,12724],{"class":573},[563,12777,6831],{"class":683},[563,12779,6767],{"class":573},[563,12781,6865],{"class":577},[563,12783,6621],{"class":1541},[563,12785,4045],{"class":683},[563,12787,12788],{"class":565,"line":7036},[563,12789,718],{"class":577},[563,12791,12792],{"class":565,"line":7050},[563,12793,937],{"emptyLinePlaceholder":936},[563,12795,12796,12798,12800,12803,12805,12807,12809,12811,12813,12816,12818],{"class":565,"line":7068},[563,12797,6290],{"class":749},[563,12799,4956],{"class":749},[563,12801,12802],{"class":569}," getWorkerSettings",[563,12804,574],{"class":577},[563,12806,12296],{"class":1275},[563,12808,795],{"class":577},[563,12810,12072],{"class":1275},[563,12812,795],{"class":577},[563,12814,12815],{"class":1275}," workerName",[563,12817,587],{"class":577},[563,12819,646],{"class":577},[563,12821,12822,12824,12826,12828,12830,12832,12834,12836,12838,12841,12843,12846,12848,12851],{"class":565,"line":7083},[563,12823,4973],{"class":749},[563,12825,12336],{"class":573},[563,12827,926],{"class":577},[563,12829,7019],{"class":577},[563,12831,12343],{"class":581},[563,12833,1031],{"class":577},[563,12835,12296],{"class":573},[563,12837,923],{"class":577},[563,12839,12840],{"class":581},"/workers/scripts/",[563,12842,1031],{"class":577},[563,12844,12845],{"class":573},"workerName",[563,12847,923],{"class":577},[563,12849,12850],{"class":581},"/settings",[563,12852,7892],{"class":577},[563,12854,12855,12857,12859,12861,12863,12865,12867,12869],{"class":565,"line":7089},[563,12856,5065],{"class":789},[563,12858,1013],{"class":789},[563,12860,12063],{"class":569},[563,12862,574],{"class":683},[563,12864,5577],{"class":573},[563,12866,795],{"class":577},[563,12868,12072],{"class":573},[563,12870,1122],{"class":683},[563,12872,12873],{"class":565,"line":7094},[563,12874,718],{"class":577},[563,12876,12877],{"class":565,"line":7142},[563,12878,937],{"emptyLinePlaceholder":936},[563,12880,12881,12883,12886,12888,12891,12893],{"class":565,"line":7166},[563,12882,6035],{"class":749},[563,12884,12885],{"class":569}," parseBindings",[563,12887,574],{"class":577},[563,12889,12890],{"class":1275},"bindings",[563,12892,587],{"class":577},[563,12894,646],{"class":577},[563,12896,12897,12899,12902,12904],{"class":565,"line":7191},[563,12898,4973],{"class":749},[563,12900,12901],{"class":573}," categorized",[563,12903,926],{"class":577},[563,12905,646],{"class":577},[563,12907,12908,12911,12913,12916],{"class":565,"line":7224},[563,12909,12910],{"class":683},"    kv_namespaces",[563,12912,552],{"class":577},[563,12914,12915],{"class":683}," []",[563,12917,672],{"class":577},[563,12919,12920,12923,12925,12927],{"class":565,"line":7238},[563,12921,12922],{"class":683},"    d1_databases",[563,12924,552],{"class":577},[563,12926,12915],{"class":683},[563,12928,672],{"class":577},[563,12930,12931,12934,12936,12938],{"class":565,"line":7243},[563,12932,12933],{"class":683},"    r2_buckets",[563,12935,552],{"class":577},[563,12937,12915],{"class":683},[563,12939,672],{"class":577},[563,12941,12942,12945,12947,12949],{"class":565,"line":7250},[563,12943,12944],{"class":683},"    analytics_engine_datasets",[563,12946,552],{"class":577},[563,12948,12915],{"class":683},[563,12950,672],{"class":577},[563,12952,12953,12956,12958],{"class":565,"line":7265},[563,12954,12955],{"class":683},"    vars",[563,12957,552],{"class":577},[563,12959,12960],{"class":577}," {},\n",[563,12962,12963,12966,12968],{"class":565,"line":7290},[563,12964,12965],{"class":683},"    secrets",[563,12967,552],{"class":577},[563,12969,9340],{"class":683},[563,12971,12972],{"class":565,"line":7297},[563,12973,712],{"class":577},[563,12975,12976],{"class":565,"line":7302},[563,12977,937],{"emptyLinePlaceholder":936},[563,12979,12980,12982,12984,12986,12989,12991,12994,12996],{"class":565,"line":7307},[563,12981,11060],{"class":789},[563,12983,1272],{"class":683},[563,12985,750],{"class":749},[563,12987,12988],{"class":573}," binding",[563,12990,11069],{"class":577},[563,12992,12993],{"class":573}," bindings",[563,12995,5028],{"class":683},[563,12997,1520],{"class":577},[563,12999,13000,13002,13005,13007,13009,13011,13013,13015],{"class":565,"line":7312},[563,13001,1083],{"class":749},[563,13003,13004],{"class":573}," type",[563,13006,926],{"class":577},[563,13008,12988],{"class":573},[563,13010,590],{"class":577},[563,13012,4171],{"class":573},[563,13014,4992],{"class":577},[563,13016,6598],{"class":577},[563,13018,13019,13021,13023,13025,13027,13029,13031,13033],{"class":565,"line":7337},[563,13020,1083],{"class":749},[563,13022,5848],{"class":573},[563,13024,926],{"class":577},[563,13026,12988],{"class":573},[563,13028,590],{"class":577},[563,13030,4137],{"class":573},[563,13032,4992],{"class":577},[563,13034,6598],{"class":577},[563,13036,13037],{"class":565,"line":7362},[563,13038,937],{"emptyLinePlaceholder":936},[563,13040,13041,13044,13046,13048,13050],{"class":565,"line":7401},[563,13042,13043],{"class":789},"    switch",[563,13045,1272],{"class":683},[563,13047,4171],{"class":573},[563,13049,5028],{"class":683},[563,13051,1520],{"class":577},[563,13053,13054,13057,13059,13062,13064],{"class":565,"line":7406},[563,13055,13056],{"class":789},"      case",[563,13058,1552],{"class":577},[563,13060,13061],{"class":581},"kv_namespace",[563,13063,578],{"class":577},[563,13065,13066],{"class":577},":\n",[563,13068,13069,13072,13074,13077,13079,13081,13083],{"class":565,"line":7413},[563,13070,13071],{"class":573},"        categorized",[563,13073,590],{"class":577},[563,13075,13076],{"class":573},"kv_namespaces",[563,13078,590],{"class":577},[563,13080,11109],{"class":569},[563,13082,574],{"class":683},[563,13084,1520],{"class":577},[563,13086,13087,13090,13092,13094],{"class":565,"line":7438},[563,13088,13089],{"class":683},"          binding",[563,13091,552],{"class":577},[563,13093,5848],{"class":573},[563,13095,672],{"class":577},[563,13097,13098,13101,13103,13105,13107,13110,13112],{"class":565,"line":7451},[563,13099,13100],{"class":683},"          id",[563,13102,552],{"class":577},[563,13104,12988],{"class":573},[563,13106,590],{"class":577},[563,13108,13109],{"class":573},"namespace_id",[563,13111,4992],{"class":577},[563,13113,6598],{"class":577},[563,13115,13116,13119],{"class":565,"line":7475},[563,13117,13118],{"class":577},"        }",[563,13120,1122],{"class":683},[563,13122,13123],{"class":565,"line":7488},[563,13124,13125],{"class":789},"        break\n",[563,13127,13128],{"class":565,"line":7493},[563,13129,937],{"emptyLinePlaceholder":936},[563,13131,13132,13134,13136,13139,13141],{"class":565,"line":7498},[563,13133,13056],{"class":789},[563,13135,1552],{"class":577},[563,13137,13138],{"class":581},"d1",[563,13140,578],{"class":577},[563,13142,13066],{"class":577},[563,13144,13145,13147,13149,13152,13154,13156,13158],{"class":565,"line":7540},[563,13146,13071],{"class":573},[563,13148,590],{"class":577},[563,13150,13151],{"class":573},"d1_databases",[563,13153,590],{"class":577},[563,13155,11109],{"class":569},[563,13157,574],{"class":683},[563,13159,1520],{"class":577},[563,13161,13162,13164,13166,13168],{"class":565,"line":7561},[563,13163,13089],{"class":683},[563,13165,552],{"class":577},[563,13167,5848],{"class":573},[563,13169,672],{"class":577},[563,13171,13172,13175,13177,13179,13181,13184,13186,13188],{"class":565,"line":7585},[563,13173,13174],{"class":683},"          database_name",[563,13176,552],{"class":577},[563,13178,12988],{"class":573},[563,13180,590],{"class":577},[563,13182,13183],{"class":573},"database_name",[563,13185,4992],{"class":577},[563,13187,5848],{"class":573},[563,13189,672],{"class":577},[563,13191,13192,13195,13197,13199,13201,13203,13205],{"class":565,"line":7617},[563,13193,13194],{"class":683},"          database_id",[563,13196,552],{"class":577},[563,13198,12988],{"class":573},[563,13200,590],{"class":577},[563,13202,12516],{"class":573},[563,13204,4992],{"class":577},[563,13206,6598],{"class":577},[563,13208,13209,13211],{"class":565,"line":7630},[563,13210,13118],{"class":577},[563,13212,1122],{"class":683},[563,13214,13215],{"class":565,"line":7635},[563,13216,13125],{"class":789},[563,13218,13219],{"class":565,"line":7642},[563,13220,937],{"emptyLinePlaceholder":936},[563,13222,13223,13225,13227,13230,13232],{"class":565,"line":7657},[563,13224,13056],{"class":789},[563,13226,1552],{"class":577},[563,13228,13229],{"class":581},"r2_bucket",[563,13231,578],{"class":577},[563,13233,13066],{"class":577},[563,13235,13236,13238,13240,13243,13245,13247,13249],{"class":565,"line":7681},[563,13237,13071],{"class":573},[563,13239,590],{"class":577},[563,13241,13242],{"class":573},"r2_buckets",[563,13244,590],{"class":577},[563,13246,11109],{"class":569},[563,13248,574],{"class":683},[563,13250,1520],{"class":577},[563,13252,13253,13255,13257,13259],{"class":565,"line":7688},[563,13254,13089],{"class":683},[563,13256,552],{"class":577},[563,13258,5848],{"class":573},[563,13260,672],{"class":577},[563,13262,13263,13266,13268,13270,13272,13275,13277],{"class":565,"line":7693},[563,13264,13265],{"class":683},"          bucket_name",[563,13267,552],{"class":577},[563,13269,12988],{"class":573},[563,13271,590],{"class":577},[563,13273,13274],{"class":573},"bucket_name",[563,13276,4992],{"class":577},[563,13278,6598],{"class":577},[563,13280,13281,13283],{"class":565,"line":7698},[563,13282,13118],{"class":577},[563,13284,1122],{"class":683},[563,13286,13287],{"class":565,"line":7703},[563,13288,13125],{"class":789},[563,13290,13291],{"class":565,"line":7730},[563,13292,937],{"emptyLinePlaceholder":936},[563,13294,13295,13297,13299,13302,13304],{"class":565,"line":7756},[563,13296,13056],{"class":789},[563,13298,1552],{"class":577},[563,13300,13301],{"class":581},"analytics_engine",[563,13303,578],{"class":577},[563,13305,13066],{"class":577},[563,13307,13308,13310,13312,13315,13317,13319,13321],{"class":565,"line":7761},[563,13309,13071],{"class":573},[563,13311,590],{"class":577},[563,13313,13314],{"class":573},"analytics_engine_datasets",[563,13316,590],{"class":577},[563,13318,11109],{"class":569},[563,13320,574],{"class":683},[563,13322,1520],{"class":577},[563,13324,13325,13327,13329,13331],{"class":565,"line":7768},[563,13326,13089],{"class":683},[563,13328,552],{"class":577},[563,13330,5848],{"class":573},[563,13332,672],{"class":577},[563,13334,13335,13338,13340,13342,13344,13347,13349],{"class":565,"line":7795},[563,13336,13337],{"class":683},"          dataset",[563,13339,552],{"class":577},[563,13341,12988],{"class":573},[563,13343,590],{"class":577},[563,13345,13346],{"class":573},"dataset",[563,13348,4992],{"class":577},[563,13350,13351],{"class":573}," name\n",[563,13353,13354,13356],{"class":565,"line":7823},[563,13355,13118],{"class":577},[563,13357,1122],{"class":683},[563,13359,13360],{"class":565,"line":7828},[563,13361,13125],{"class":789},[563,13363,13364],{"class":565,"line":7841},[563,13365,937],{"emptyLinePlaceholder":936},[563,13367,13368,13370,13372,13375,13377],{"class":565,"line":7857},[563,13369,13056],{"class":789},[563,13371,1552],{"class":577},[563,13373,13374],{"class":581},"plain_text",[563,13376,578],{"class":577},[563,13378,13066],{"class":577},[563,13380,13381,13383,13385,13388,13390,13392,13394,13396,13398,13400,13402,13404],{"class":565,"line":7875},[563,13382,13071],{"class":573},[563,13384,590],{"class":577},[563,13386,13387],{"class":573},"vars",[563,13389,6831],{"class":683},[563,13391,4137],{"class":573},[563,13393,2522],{"class":683},[563,13395,756],{"class":577},[563,13397,12988],{"class":573},[563,13399,590],{"class":577},[563,13401,2115],{"class":573},[563,13403,4992],{"class":577},[563,13405,6598],{"class":577},[563,13407,13408],{"class":565,"line":7895},[563,13409,13125],{"class":789},[563,13411,13412],{"class":565,"line":7901},[563,13413,937],{"emptyLinePlaceholder":936},[563,13415,13416,13418,13420,13423,13425],{"class":565,"line":7906},[563,13417,13056],{"class":789},[563,13419,1552],{"class":577},[563,13421,13422],{"class":581},"secret_text",[563,13424,578],{"class":577},[563,13426,13066],{"class":577},[563,13428,13429,13431,13433,13436,13438,13440,13442,13444],{"class":565,"line":7911},[563,13430,13071],{"class":573},[563,13432,590],{"class":577},[563,13434,13435],{"class":573},"secrets",[563,13437,590],{"class":577},[563,13439,11109],{"class":569},[563,13441,574],{"class":683},[563,13443,4137],{"class":573},[563,13445,1122],{"class":683},[563,13447,13448],{"class":565,"line":7925},[563,13449,13125],{"class":789},[563,13451,13452],{"class":565,"line":7940},[563,13453,2085],{"class":577},[563,13455,13456],{"class":565,"line":7957},[563,13457,712],{"class":577},[563,13459,13460],{"class":565,"line":7975},[563,13461,937],{"emptyLinePlaceholder":936},[563,13463,13464,13466],{"class":565,"line":7980},[563,13465,5065],{"class":789},[563,13467,13468],{"class":573}," categorized\n",[563,13470,13471],{"class":565,"line":7985},[563,13472,718],{"class":577},[563,13474,13475],{"class":565,"line":7990},[563,13476,937],{"emptyLinePlaceholder":936},[563,13478,13479,13481,13484,13486,13488,13490,13493,13495,13497,13499],{"class":565,"line":8004},[563,13480,6035],{"class":749},[563,13482,13483],{"class":569}," generateWranglerConfig",[563,13485,574],{"class":577},[563,13487,12845],{"class":1275},[563,13489,795],{"class":577},[563,13491,13492],{"class":1275}," settings",[563,13494,795],{"class":577},[563,13496,12993],{"class":1275},[563,13498,587],{"class":577},[563,13500,646],{"class":577},[563,13502,13503,13505,13508,13510],{"class":565,"line":8019},[563,13504,4973],{"class":749},[563,13506,13507],{"class":573}," config",[563,13509,926],{"class":577},[563,13511,646],{"class":577},[563,13513,13514,13517,13519,13521],{"class":565,"line":8036},[563,13515,13516],{"class":683},"    name",[563,13518,552],{"class":577},[563,13520,12815],{"class":573},[563,13522,672],{"class":577},[563,13524,13525,13528,13530,13532,13535,13537],{"class":565,"line":8054},[563,13526,13527],{"class":683},"    main",[563,13529,552],{"class":577},[563,13531,1552],{"class":577},[563,13533,13534],{"class":581},"./.output/server/index.mjs",[563,13536,578],{"class":577},[563,13538,672],{"class":577},[563,13540,13541,13544,13546,13548,13550,13553,13555,13557,13560],{"class":565,"line":8059},[563,13542,13543],{"class":683},"    compatibility_date",[563,13545,552],{"class":577},[563,13547,13492],{"class":573},[563,13549,590],{"class":577},[563,13551,13552],{"class":573},"compatibility_date",[563,13554,4992],{"class":577},[563,13556,1552],{"class":577},[563,13558,13559],{"class":581},"2024-01-01",[563,13561,1699],{"class":577},[563,13563,13564],{"class":565,"line":8064},[563,13565,712],{"class":577},[563,13567,13568],{"class":565,"line":8069},[563,13569,937],{"emptyLinePlaceholder":936},[563,13571,13572,13574,13576,13579,13581,13584,13586,13588,13590,13592,13594],{"class":565,"line":8093},[563,13573,5019],{"class":789},[563,13575,1272],{"class":683},[563,13577,13578],{"class":573},"settings",[563,13580,590],{"class":577},[563,13582,13583],{"class":573},"compatibility_flags",[563,13585,2606],{"class":577},[563,13587,6793],{"class":573},[563,13589,6785],{"class":577},[563,13591,10239],{"class":1541},[563,13593,5028],{"class":683},[563,13595,1520],{"class":577},[563,13597,13598,13601,13603,13605,13607,13609,13611],{"class":565,"line":8117},[563,13599,13600],{"class":573},"    config",[563,13602,590],{"class":577},[563,13604,13583],{"class":573},[563,13606,926],{"class":577},[563,13608,13492],{"class":573},[563,13610,590],{"class":577},[563,13612,13613],{"class":573},"compatibility_flags\n",[563,13615,13616],{"class":565,"line":8124},[563,13617,712],{"class":577},[563,13619,13620],{"class":565,"line":8139},[563,13621,937],{"emptyLinePlaceholder":936},[563,13623,13624,13626,13628,13630,13632,13634,13636,13638,13640,13642,13644],{"class":565,"line":8163},[563,13625,5019],{"class":789},[563,13627,1272],{"class":683},[563,13629,12890],{"class":573},[563,13631,590],{"class":577},[563,13633,13076],{"class":573},[563,13635,590],{"class":577},[563,13637,6793],{"class":573},[563,13639,6785],{"class":577},[563,13641,10239],{"class":1541},[563,13643,5028],{"class":683},[563,13645,1520],{"class":577},[563,13647,13648,13650,13652,13654,13656,13658,13660],{"class":565,"line":8171},[563,13649,13600],{"class":573},[563,13651,590],{"class":577},[563,13653,13076],{"class":573},[563,13655,926],{"class":577},[563,13657,12993],{"class":573},[563,13659,590],{"class":577},[563,13661,13662],{"class":573},"kv_namespaces\n",[563,13664,13665],{"class":565,"line":8176},[563,13666,712],{"class":577},[563,13668,13669],{"class":565,"line":8181},[563,13670,937],{"emptyLinePlaceholder":936},[563,13672,13673,13675,13677,13679,13681,13683,13685,13687,13689,13691,13693],{"class":565,"line":8186},[563,13674,5019],{"class":789},[563,13676,1272],{"class":683},[563,13678,12890],{"class":573},[563,13680,590],{"class":577},[563,13682,13151],{"class":573},[563,13684,590],{"class":577},[563,13686,6793],{"class":573},[563,13688,6785],{"class":577},[563,13690,10239],{"class":1541},[563,13692,5028],{"class":683},[563,13694,1520],{"class":577},[563,13696,13697,13699,13701,13703,13705,13707,13709],{"class":565,"line":8200},[563,13698,13600],{"class":573},[563,13700,590],{"class":577},[563,13702,13151],{"class":573},[563,13704,926],{"class":577},[563,13706,12993],{"class":573},[563,13708,590],{"class":577},[563,13710,13711],{"class":573},"d1_databases\n",[563,13713,13714],{"class":565,"line":8243},[563,13715,712],{"class":577},[563,13717,13718],{"class":565,"line":8275},[563,13719,937],{"emptyLinePlaceholder":936},[563,13721,13722,13724,13726,13729,13731,13734,13736,13738,13740,13742,13744,13746,13748,13750,13752,13754],{"class":565,"line":8316},[563,13723,5019],{"class":789},[563,13725,1272],{"class":683},[563,13727,13728],{"class":573},"Object",[563,13730,590],{"class":577},[563,13732,13733],{"class":569},"keys",[563,13735,574],{"class":683},[563,13737,12890],{"class":573},[563,13739,590],{"class":577},[563,13741,13387],{"class":573},[563,13743,587],{"class":683},[563,13745,590],{"class":577},[563,13747,6793],{"class":573},[563,13749,6785],{"class":577},[563,13751,10239],{"class":1541},[563,13753,5028],{"class":683},[563,13755,1520],{"class":577},[563,13757,13758,13760,13762,13764,13766,13768,13770],{"class":565,"line":8321},[563,13759,13600],{"class":573},[563,13761,590],{"class":577},[563,13763,13387],{"class":573},[563,13765,926],{"class":577},[563,13767,12993],{"class":573},[563,13769,590],{"class":577},[563,13771,13772],{"class":573},"vars\n",[563,13774,13775],{"class":565,"line":8336},[563,13776,712],{"class":577},[563,13778,13779],{"class":565,"line":8356},[563,13780,937],{"emptyLinePlaceholder":936},[563,13782,13783,13785],{"class":565,"line":8382},[563,13784,5065],{"class":789},[563,13786,13787],{"class":573}," config\n",[563,13789,13790],{"class":565,"line":8407},[563,13791,718],{"class":577},[563,13793,13794],{"class":565,"line":8412},[563,13795,937],{"emptyLinePlaceholder":936},[563,13797,13798,13800,13802,13804,13806],{"class":565,"line":8432},[563,13799,6290],{"class":749},[563,13801,4956],{"class":749},[563,13803,8193],{"class":569},[563,13805,764],{"class":577},[563,13807,646],{"class":577},[563,13809,13810,13812,13814,13816,13818,13820,13822,13824,13826,13828,13830],{"class":565,"line":8437},[563,13811,4973],{"class":749},[563,13813,10660],{"class":573},[563,13815,926],{"class":577},[563,13817,2582],{"class":573},[563,13819,590],{"class":577},[563,13821,10669],{"class":573},[563,13823,590],{"class":577},[563,13825,10674],{"class":569},[563,13827,574],{"class":683},[563,13829,10679],{"class":1541},[563,13831,1122],{"class":683},[563,13833,13834],{"class":565,"line":8471},[563,13835,937],{"emptyLinePlaceholder":936},[563,13837,13838,13840,13842,13844,13846,13848,13850,13852,13854,13856,13858,13860,13862,13864,13866,13868,13870,13872,13874],{"class":565,"line":8497},[563,13839,6473],{"class":569},[563,13841,574],{"class":683},[563,13843,578],{"class":577},[563,13845,6480],{"class":573},[563,13847,578],{"class":577},[563,13849,6497],{"class":577},[563,13851,1552],{"class":577},[563,13853,756],{"class":581},[563,13855,578],{"class":577},[563,13857,590],{"class":577},[563,13859,8223],{"class":569},[563,13861,574],{"class":683},[563,13863,10794],{"class":1541},[563,13865,587],{"class":683},[563,13867,795],{"class":577},[563,13869,6052],{"class":573},[563,13871,590],{"class":577},[563,13873,6504],{"class":573},[563,13875,1122],{"class":683},[563,13877,13878,13880,13882,13884,13887,13889,13891,13893,13895,13897,13899,13901,13903,13905],{"class":565,"line":8521},[563,13879,6473],{"class":569},[563,13881,574],{"class":683},[563,13883,578],{"class":577},[563,13885,13886],{"class":581},"📦 Worker Configuration Extractor",[563,13888,578],{"class":577},[563,13890,795],{"class":577},[563,13892,6052],{"class":573},[563,13894,590],{"class":577},[563,13896,6494],{"class":573},[563,13898,6497],{"class":577},[563,13900,6052],{"class":573},[563,13902,590],{"class":577},[563,13904,6504],{"class":573},[563,13906,1122],{"class":683},[563,13908,13909,13911,13913,13915,13917,13919,13921,13923,13925,13927,13929,13931,13933,13935,13937,13939,13941,13943,13945],{"class":565,"line":8545},[563,13910,6473],{"class":569},[563,13912,574],{"class":683},[563,13914,578],{"class":577},[563,13916,756],{"class":581},[563,13918,578],{"class":577},[563,13920,590],{"class":577},[563,13922,8223],{"class":569},[563,13924,574],{"class":683},[563,13926,10794],{"class":1541},[563,13928,5028],{"class":683},[563,13930,6618],{"class":577},[563,13932,1552],{"class":577},[563,13934,6480],{"class":573},[563,13936,578],{"class":577},[563,13938,795],{"class":577},[563,13940,6052],{"class":573},[563,13942,590],{"class":577},[563,13944,6504],{"class":573},[563,13946,1122],{"class":683},[563,13948,13949],{"class":565,"line":8571},[563,13950,937],{"emptyLinePlaceholder":936},[563,13952,13953,13955,13957,13959,13961,13963,13965,13967],{"class":565,"line":8576},[563,13954,10985],{"class":749},[563,13956,12072],{"class":573},[563,13958,926],{"class":577},[563,13960,2582],{"class":573},[563,13962,590],{"class":577},[563,13964,2587],{"class":573},[563,13966,590],{"class":577},[563,13968,13969],{"class":573},"CLOUDFLARE_API_TOKEN\n",[563,13971,13972,13974,13977,13979,13981,13983,13985,13987],{"class":565,"line":8581},[563,13973,10985],{"class":749},[563,13975,13976],{"class":573}," accountId",[563,13978,926],{"class":577},[563,13980,2582],{"class":573},[563,13982,590],{"class":577},[563,13984,2587],{"class":573},[563,13986,590],{"class":577},[563,13988,13989],{"class":573},"CLOUDFLARE_ACCOUNT_ID\n",[563,13991,13992,13994,13996,13998],{"class":565,"line":8602},[563,13993,10985],{"class":749},[563,13995,12815],{"class":573},[563,13997,926],{"class":577},[563,13999,6266],{"class":577},[563,14001,14002],{"class":565,"line":8628},[563,14003,937],{"emptyLinePlaceholder":936},[563,14005,14006,14008,14010,14012,14015,14017,14019,14021],{"class":565,"line":8652},[563,14007,11060],{"class":789},[563,14009,1272],{"class":683},[563,14011,750],{"class":749},[563,14013,14014],{"class":573}," arg",[563,14016,11069],{"class":577},[563,14018,10660],{"class":573},[563,14020,5028],{"class":683},[563,14022,1520],{"class":577},[563,14024,14025,14027,14029,14032,14034,14037,14039,14041,14044,14046,14049,14051,14053,14055,14057,14059,14061,14063,14065,14067,14070,14072],{"class":565,"line":8669},[563,14026,6249],{"class":789},[563,14028,1272],{"class":683},[563,14030,14031],{"class":573},"arg",[563,14033,590],{"class":577},[563,14035,14036],{"class":569},"startsWith",[563,14038,574],{"class":683},[563,14040,578],{"class":577},[563,14042,14043],{"class":581},"--api-token=",[563,14045,578],{"class":577},[563,14047,14048],{"class":683},")) ",[563,14050,12128],{"class":573},[563,14052,926],{"class":577},[563,14054,14014],{"class":573},[563,14056,590],{"class":577},[563,14058,9560],{"class":569},[563,14060,574],{"class":683},[563,14062,578],{"class":577},[563,14064,756],{"class":581},[563,14066,578],{"class":577},[563,14068,14069],{"class":683},")[",[563,14071,7158],{"class":1541},[563,14073,4045],{"class":683},[563,14075,14077,14079,14081,14083,14085,14087,14089,14091,14094,14096,14098,14100,14102,14104,14106,14108,14110,14112,14114,14116,14118,14120],{"class":565,"line":14076},199,[563,14078,6249],{"class":789},[563,14080,1272],{"class":683},[563,14082,14031],{"class":573},[563,14084,590],{"class":577},[563,14086,14036],{"class":569},[563,14088,574],{"class":683},[563,14090,578],{"class":577},[563,14092,14093],{"class":581},"--account-id=",[563,14095,578],{"class":577},[563,14097,14048],{"class":683},[563,14099,12296],{"class":573},[563,14101,926],{"class":577},[563,14103,14014],{"class":573},[563,14105,590],{"class":577},[563,14107,9560],{"class":569},[563,14109,574],{"class":683},[563,14111,578],{"class":577},[563,14113,756],{"class":581},[563,14115,578],{"class":577},[563,14117,14069],{"class":683},[563,14119,7158],{"class":1541},[563,14121,4045],{"class":683},[563,14123,14125,14127,14129,14131,14133,14135,14137,14139,14142,14144,14146,14148,14150,14152,14154,14156,14158,14160,14162,14164,14166,14168],{"class":565,"line":14124},200,[563,14126,6249],{"class":789},[563,14128,1272],{"class":683},[563,14130,14031],{"class":573},[563,14132,590],{"class":577},[563,14134,14036],{"class":569},[563,14136,574],{"class":683},[563,14138,578],{"class":577},[563,14140,14141],{"class":581},"--worker-name=",[563,14143,578],{"class":577},[563,14145,14048],{"class":683},[563,14147,12845],{"class":573},[563,14149,926],{"class":577},[563,14151,14014],{"class":573},[563,14153,590],{"class":577},[563,14155,9560],{"class":569},[563,14157,574],{"class":683},[563,14159,578],{"class":577},[563,14161,756],{"class":581},[563,14163,578],{"class":577},[563,14165,14069],{"class":683},[563,14167,7158],{"class":1541},[563,14169,4045],{"class":683},[563,14171,14173],{"class":565,"line":14172},201,[563,14174,712],{"class":577},[563,14176,14178],{"class":565,"line":14177},202,[563,14179,937],{"emptyLinePlaceholder":936},[563,14181,14183,14185,14187,14189,14191,14193,14195,14197,14199,14201,14203,14205,14208,14210],{"class":565,"line":14182},203,[563,14184,5019],{"class":789},[563,14186,1272],{"class":683},[563,14188,1509],{"class":577},[563,14190,12128],{"class":573},[563,14192,5028],{"class":683},[563,14194,12128],{"class":573},[563,14196,926],{"class":577},[563,14198,1013],{"class":789},[563,14200,6295],{"class":569},[563,14202,574],{"class":683},[563,14204,578],{"class":577},[563,14206,14207],{"class":581},"Cloudflare API Token: ",[563,14209,578],{"class":577},[563,14211,1122],{"class":683},[563,14213,14215,14217,14219,14221,14223,14225,14227,14229,14231,14233,14235,14237,14240,14242],{"class":565,"line":14214},204,[563,14216,5019],{"class":789},[563,14218,1272],{"class":683},[563,14220,1509],{"class":577},[563,14222,12296],{"class":573},[563,14224,5028],{"class":683},[563,14226,12296],{"class":573},[563,14228,926],{"class":577},[563,14230,1013],{"class":789},[563,14232,6295],{"class":569},[563,14234,574],{"class":683},[563,14236,578],{"class":577},[563,14238,14239],{"class":581},"Cloudflare Account ID: ",[563,14241,578],{"class":577},[563,14243,1122],{"class":683},[563,14245,14247],{"class":565,"line":14246},205,[563,14248,937],{"emptyLinePlaceholder":936},[563,14250,14252,14254,14256,14258,14260,14262,14264,14266,14268],{"class":565,"line":14251},206,[563,14253,5019],{"class":789},[563,14255,1272],{"class":683},[563,14257,1509],{"class":577},[563,14259,12128],{"class":573},[563,14261,4992],{"class":577},[563,14263,10220],{"class":577},[563,14265,12296],{"class":573},[563,14267,5028],{"class":683},[563,14269,1520],{"class":577},[563,14271,14273,14275,14277,14279,14281,14284,14286,14288,14290,14292,14294,14296],{"class":565,"line":14272},207,[563,14274,6604],{"class":569},[563,14276,574],{"class":683},[563,14278,578],{"class":577},[563,14280,6480],{"class":573},[563,14282,14283],{"class":581},"❌ API Token and Account ID required",[563,14285,6480],{"class":573},[563,14287,578],{"class":577},[563,14289,795],{"class":577},[563,14291,6052],{"class":573},[563,14293,590],{"class":577},[563,14295,7285],{"class":573},[563,14297,1122],{"class":683},[563,14299,14301,14303,14305,14307,14309,14311],{"class":565,"line":14300},208,[563,14302,10086],{"class":573},[563,14304,590],{"class":577},[563,14306,8660],{"class":569},[563,14308,574],{"class":683},[563,14310,7158],{"class":1541},[563,14312,1122],{"class":683},[563,14314,14316],{"class":565,"line":14315},209,[563,14317,712],{"class":577},[563,14319,14321],{"class":565,"line":14320},210,[563,14322,937],{"emptyLinePlaceholder":936},[563,14324,14326,14328],{"class":565,"line":14325},211,[563,14327,6134],{"class":789},[563,14329,646],{"class":577},[563,14331,14333,14335,14337,14339,14341,14343,14345,14347,14349,14351],{"class":565,"line":14332},212,[563,14334,1083],{"class":749},[563,14336,12724],{"class":573},[563,14338,926],{"class":577},[563,14340,1013],{"class":789},[563,14342,12291],{"class":569},[563,14344,574],{"class":683},[563,14346,12296],{"class":573},[563,14348,795],{"class":577},[563,14350,12072],{"class":573},[563,14352,1122],{"class":683},[563,14354,14356],{"class":565,"line":14355},213,[563,14357,937],{"emptyLinePlaceholder":936},[563,14359,14361,14363,14365,14367,14369,14371,14373,14375,14377],{"class":565,"line":14360},214,[563,14362,6249],{"class":789},[563,14364,1272],{"class":683},[563,14366,12394],{"class":573},[563,14368,590],{"class":577},[563,14370,6793],{"class":573},[563,14372,6730],{"class":577},[563,14374,10239],{"class":1541},[563,14376,5028],{"class":683},[563,14378,1520],{"class":577},[563,14380,14382,14384,14386,14388,14390,14393,14395,14397,14399,14401,14403,14405],{"class":565,"line":14381},215,[563,14383,7169],{"class":569},[563,14385,574],{"class":683},[563,14387,578],{"class":577},[563,14389,6480],{"class":573},[563,14391,14392],{"class":581},"⚠️  No workers found",[563,14394,6480],{"class":573},[563,14396,578],{"class":577},[563,14398,795],{"class":577},[563,14400,6052],{"class":573},[563,14402,590],{"class":577},[563,14404,6531],{"class":573},[563,14406,1122],{"class":683},[563,14408,14410,14413,14415,14417,14419,14421],{"class":565,"line":14409},216,[563,14411,14412],{"class":573},"      process",[563,14414,590],{"class":577},[563,14416,8660],{"class":569},[563,14418,574],{"class":683},[563,14420,6834],{"class":1541},[563,14422,1122],{"class":683},[563,14424,14426],{"class":565,"line":14425},217,[563,14427,2085],{"class":577},[563,14429,14431],{"class":565,"line":14430},218,[563,14432,937],{"emptyLinePlaceholder":936},[563,14434,14436,14438,14440,14442,14445,14447,14449,14451,14453,14455,14458,14460,14462,14464,14466,14468],{"class":565,"line":14435},219,[563,14437,6604],{"class":569},[563,14439,574],{"class":683},[563,14441,6609],{"class":577},[563,14443,14444],{"class":581},"✅ Found ",[563,14446,1031],{"class":577},[563,14448,12394],{"class":573},[563,14450,590],{"class":577},[563,14452,6793],{"class":573},[563,14454,923],{"class":577},[563,14456,14457],{"class":581}," worker(s)",[563,14459,6609],{"class":577},[563,14461,795],{"class":577},[563,14463,6052],{"class":573},[563,14465,590],{"class":577},[563,14467,6917],{"class":573},[563,14469,1122],{"class":683},[563,14471,14473],{"class":565,"line":14472},220,[563,14474,937],{"emptyLinePlaceholder":936},[563,14476,14478,14480],{"class":565,"line":14477},221,[563,14479,7798],{"class":749},[563,14481,14482],{"class":573}," selectedWorker\n",[563,14484,14486,14488,14490,14492,14494],{"class":565,"line":14485},222,[563,14487,6249],{"class":789},[563,14489,1272],{"class":683},[563,14491,12845],{"class":573},[563,14493,5028],{"class":683},[563,14495,1520],{"class":577},[563,14497,14499,14502,14504,14506,14508,14511,14513,14516,14518,14521,14523,14525,14527,14529],{"class":565,"line":14498},223,[563,14500,14501],{"class":573},"      selectedWorker",[563,14503,926],{"class":577},[563,14505,12724],{"class":573},[563,14507,590],{"class":577},[563,14509,14510],{"class":569},"find",[563,14512,574],{"class":683},[563,14514,14515],{"class":1275},"w",[563,14517,767],{"class":749},[563,14519,14520],{"class":573}," w",[563,14522,590],{"class":577},[563,14524,12516],{"class":573},[563,14526,6730],{"class":577},[563,14528,12815],{"class":573},[563,14530,1122],{"class":683},[563,14532,14534,14537,14539,14541,14544,14546],{"class":565,"line":14533},224,[563,14535,14536],{"class":789},"      if",[563,14538,1272],{"class":683},[563,14540,1509],{"class":577},[563,14542,14543],{"class":573},"selectedWorker",[563,14545,5028],{"class":683},[563,14547,1520],{"class":577},[563,14549,14551,14554,14556,14558,14560,14563,14565,14567,14569,14572,14574,14576,14578,14580,14582,14584],{"class":565,"line":14550},225,[563,14552,14553],{"class":569},"        log",[563,14555,574],{"class":683},[563,14557,6609],{"class":577},[563,14559,6480],{"class":573},[563,14561,14562],{"class":581},"❌ Worker \"",[563,14564,1031],{"class":577},[563,14566,12845],{"class":573},[563,14568,923],{"class":577},[563,14570,14571],{"class":581},"\" not found",[563,14573,6480],{"class":573},[563,14575,6609],{"class":577},[563,14577,795],{"class":577},[563,14579,6052],{"class":573},[563,14581,590],{"class":577},[563,14583,7285],{"class":573},[563,14585,1122],{"class":683},[563,14587,14589,14592,14594,14596,14598,14600],{"class":565,"line":14588},226,[563,14590,14591],{"class":573},"        process",[563,14593,590],{"class":577},[563,14595,8660],{"class":569},[563,14597,574],{"class":683},[563,14599,7158],{"class":1541},[563,14601,1122],{"class":683},[563,14603,14605],{"class":565,"line":14604},227,[563,14606,2535],{"class":577},[563,14608,14610,14612,14614],{"class":565,"line":14609},228,[563,14611,6227],{"class":577},[563,14613,11018],{"class":789},[563,14615,646],{"class":577},[563,14617,14619,14621,14623,14625,14627,14629,14631],{"class":565,"line":14618},229,[563,14620,14501],{"class":573},[563,14622,926],{"class":577},[563,14624,1013],{"class":789},[563,14626,12389],{"class":569},[563,14628,574],{"class":683},[563,14630,12394],{"class":573},[563,14632,1122],{"class":683},[563,14634,14636,14638,14640,14642,14644,14646],{"class":565,"line":14635},230,[563,14637,14536],{"class":789},[563,14639,1272],{"class":683},[563,14641,1509],{"class":577},[563,14643,14543],{"class":573},[563,14645,5028],{"class":683},[563,14647,1520],{"class":577},[563,14649,14651,14653,14655,14657,14659,14661,14663,14665,14667,14669,14671,14673],{"class":565,"line":14650},231,[563,14652,14553],{"class":569},[563,14654,574],{"class":683},[563,14656,578],{"class":577},[563,14658,6480],{"class":573},[563,14660,10067],{"class":581},[563,14662,6480],{"class":573},[563,14664,578],{"class":577},[563,14666,795],{"class":577},[563,14668,6052],{"class":573},[563,14670,590],{"class":577},[563,14672,6531],{"class":573},[563,14674,1122],{"class":683},[563,14676,14678,14680,14682,14684,14686,14688],{"class":565,"line":14677},232,[563,14679,14591],{"class":573},[563,14681,590],{"class":577},[563,14683,8660],{"class":569},[563,14685,574],{"class":683},[563,14687,6834],{"class":1541},[563,14689,1122],{"class":683},[563,14691,14693],{"class":565,"line":14692},233,[563,14694,2535],{"class":577},[563,14696,14698],{"class":565,"line":14697},234,[563,14699,2085],{"class":577},[563,14701,14703],{"class":565,"line":14702},235,[563,14704,937],{"emptyLinePlaceholder":936},[563,14706,14708,14711,14713,14716,14718],{"class":565,"line":14707},236,[563,14709,14710],{"class":573},"    workerName",[563,14712,926],{"class":577},[563,14714,14715],{"class":573}," selectedWorker",[563,14717,590],{"class":577},[563,14719,14720],{"class":573},"id\n",[563,14722,14724,14726,14728,14730,14732,14735,14737,14739,14741,14743,14745,14747,14749,14751,14753,14755,14757],{"class":565,"line":14723},237,[563,14725,6604],{"class":569},[563,14727,574],{"class":683},[563,14729,6609],{"class":577},[563,14731,6480],{"class":573},[563,14733,14734],{"class":581},"📦 Selected: ",[563,14736,1031],{"class":577},[563,14738,12845],{"class":573},[563,14740,1056],{"class":577},[563,14742,795],{"class":577},[563,14744,6052],{"class":573},[563,14746,590],{"class":577},[563,14748,6665],{"class":573},[563,14750,6497],{"class":577},[563,14752,6052],{"class":573},[563,14754,590],{"class":577},[563,14756,6504],{"class":573},[563,14758,1122],{"class":683},[563,14760,14762],{"class":565,"line":14761},238,[563,14763,937],{"emptyLinePlaceholder":936},[563,14765,14767,14769,14771,14773,14775,14778,14780,14782,14784,14786,14788],{"class":565,"line":14766},239,[563,14768,6604],{"class":569},[563,14770,574],{"class":683},[563,14772,578],{"class":577},[563,14774,6480],{"class":573},[563,14776,14777],{"class":581},"🔍 Fetching configuration...",[563,14779,578],{"class":577},[563,14781,795],{"class":577},[563,14783,6052],{"class":573},[563,14785,590],{"class":577},[563,14787,6494],{"class":573},[563,14789,1122],{"class":683},[563,14791,14793,14795,14797,14799,14801,14803,14805,14807,14809,14811,14813,14815],{"class":565,"line":14792},240,[563,14794,1083],{"class":749},[563,14796,13492],{"class":573},[563,14798,926],{"class":577},[563,14800,1013],{"class":789},[563,14802,12802],{"class":569},[563,14804,574],{"class":683},[563,14806,12296],{"class":573},[563,14808,795],{"class":577},[563,14810,12072],{"class":573},[563,14812,795],{"class":577},[563,14814,12815],{"class":573},[563,14816,1122],{"class":683},[563,14818,14820,14822,14824,14826,14828,14830,14832,14834,14836,14838],{"class":565,"line":14819},241,[563,14821,1083],{"class":749},[563,14823,12993],{"class":573},[563,14825,926],{"class":577},[563,14827,12885],{"class":569},[563,14829,574],{"class":683},[563,14831,13578],{"class":573},[563,14833,590],{"class":577},[563,14835,12890],{"class":573},[563,14837,4992],{"class":577},[563,14839,14840],{"class":683}," [])\n",[563,14842,14844],{"class":565,"line":14843},242,[563,14845,937],{"emptyLinePlaceholder":936},[563,14847,14849,14851,14853,14855,14857,14859,14861,14863,14865,14867,14869],{"class":565,"line":14848},243,[563,14850,1083],{"class":749},[563,14852,13507],{"class":573},[563,14854,926],{"class":577},[563,14856,13483],{"class":569},[563,14858,574],{"class":683},[563,14860,12845],{"class":573},[563,14862,795],{"class":577},[563,14864,13492],{"class":573},[563,14866,795],{"class":577},[563,14868,12993],{"class":573},[563,14870,1122],{"class":683},[563,14872,14874],{"class":565,"line":14873},244,[563,14875,937],{"emptyLinePlaceholder":936},[563,14877,14879,14881,14884,14886,14888,14890,14892,14894,14896,14899,14901,14903,14905,14908,14910],{"class":565,"line":14878},245,[563,14880,1083],{"class":749},[563,14882,14883],{"class":573}," configFile",[563,14885,926],{"class":577},[563,14887,5544],{"class":569},[563,14889,574],{"class":683},[563,14891,7782],{"class":573},[563,14893,795],{"class":577},[563,14895,7019],{"class":577},[563,14897,14898],{"class":581},"wrangler.",[563,14900,1031],{"class":577},[563,14902,12845],{"class":573},[563,14904,923],{"class":577},[563,14906,14907],{"class":581},".jsonc",[563,14909,6609],{"class":577},[563,14911,1122],{"class":683},[563,14913,14915,14917,14919,14922,14924,14927,14929,14932,14934,14937,14939,14942,14945],{"class":565,"line":14914},246,[563,14916,8072],{"class":569},[563,14918,574],{"class":683},[563,14920,14921],{"class":573},"configFile",[563,14923,795],{"class":577},[563,14925,14926],{"class":573}," JSON",[563,14928,590],{"class":577},[563,14930,14931],{"class":569},"stringify",[563,14933,574],{"class":683},[563,14935,14936],{"class":573},"config",[563,14938,795],{"class":577},[563,14940,14941],{"class":577}," null,",[563,14943,14944],{"class":1541}," 2",[563,14946,801],{"class":683},[563,14948,14950],{"class":565,"line":14949},247,[563,14951,937],{"emptyLinePlaceholder":936},[563,14953,14955,14957,14959,14961,14963,14966,14968,14970,14972,14974,14976,14978,14980],{"class":565,"line":14954},248,[563,14956,6604],{"class":569},[563,14958,574],{"class":683},[563,14960,6609],{"class":577},[563,14962,6480],{"class":573},[563,14964,14965],{"class":581},"✅ Config written to: ",[563,14967,1031],{"class":577},[563,14969,14921],{"class":573},[563,14971,1056],{"class":577},[563,14973,795],{"class":577},[563,14975,6052],{"class":573},[563,14977,590],{"class":577},[563,14979,6917],{"class":573},[563,14981,1122],{"class":683},[563,14983,14985,14987,14989,14991,14993,14996,14998,15000,15002,15004,15006,15008],{"class":565,"line":14984},249,[563,14986,6604],{"class":569},[563,14988,574],{"class":683},[563,14990,578],{"class":577},[563,14992,6480],{"class":573},[563,14994,14995],{"class":581},"💡 Review the file and update as needed",[563,14997,6480],{"class":573},[563,14999,578],{"class":577},[563,15001,795],{"class":577},[563,15003,6052],{"class":573},[563,15005,590],{"class":577},[563,15007,6494],{"class":573},[563,15009,1122],{"class":683},[563,15011,15013],{"class":565,"line":15012},250,[563,15014,937],{"emptyLinePlaceholder":936},[563,15016,15018,15020,15022,15024,15026,15028],{"class":565,"line":15017},251,[563,15019,1813],{"class":577},[563,15021,6236],{"class":789},[563,15023,1272],{"class":683},[563,15025,5270],{"class":573},[563,15027,5028],{"class":683},[563,15029,1520],{"class":577},[563,15031,15033,15035,15037,15039,15041,15044,15046,15048,15050,15052,15054,15056,15058,15060,15062],{"class":565,"line":15032},252,[563,15034,6604],{"class":569},[563,15036,574],{"class":683},[563,15038,6609],{"class":577},[563,15040,6480],{"class":573},[563,15042,15043],{"class":581},"❌ Error: ",[563,15045,1031],{"class":577},[563,15047,5270],{"class":573},[563,15049,590],{"class":577},[563,15051,5438],{"class":573},[563,15053,1056],{"class":577},[563,15055,795],{"class":577},[563,15057,6052],{"class":573},[563,15059,590],{"class":577},[563,15061,7285],{"class":573},[563,15063,1122],{"class":683},[563,15065,15067,15069,15071,15073,15075,15077],{"class":565,"line":15066},253,[563,15068,10086],{"class":573},[563,15070,590],{"class":577},[563,15072,8660],{"class":569},[563,15074,574],{"class":683},[563,15076,7158],{"class":1541},[563,15078,1122],{"class":683},[563,15080,15082],{"class":565,"line":15081},254,[563,15083,712],{"class":577},[563,15085,15087],{"class":565,"line":15086},255,[563,15088,718],{"class":577},[563,15090,15092],{"class":565,"line":15091},256,[563,15093,937],{"emptyLinePlaceholder":936},[563,15095,15097,15099],{"class":565,"line":15096},257,[563,15098,8584],{"class":569},[563,15100,609],{"class":573},[554,15102,15105],{"className":5454,"code":15103,"filename":15104,"language":5457,"meta":559,"style":559},"#!/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",[518,15106,15107,15111,15115,15119,15124,15128,15133,15138,15142,15147,15151,15155,15177,15200,15218,15222,15244,15256,15278,15282,15287,15298,15309,15320,15331,15341,15352,15356,15360,15365,15376,15389,15403,15407,15411,15415,15420,15424,15439,15463,15475,15479,15510,15515,15559,15564,15568,15572,15577,15635,15647,15669,15674,15726,15742,15746,15752,15756,15763,15767,15771,15775,15780,15784,15799,15823,15827,15832,15844,15860,15897,15914,15951,15955,15961,15972,15993,15997,16001,16005,16009,16014,16018,16038,16064,16068,16073,16084,16095,16099,16137,16158,16187,16191,16195,16199,16220,16235,16258,16275,16291,16314,16318,16324,16328,16333,16346,16360,16367,16371,16375,16380,16407,16426,16446,16460,16464,16468,16473,16504,16520,16563,16579,16583,16588,16600,16612,16623,16627,16666,16694,16702,16711,16741,16748,16769,16783,16787,16791,16795,16799,16803,16808,16834,16856,16885,16889,16894,16917,16921,16942,16981,16985,16990,17011,17032,17053,17057,17075,17098,17117,17131,17137,17141,17145,17166,17170,17174,17178,17183,17187,17197,17222,17246,17250,17271,17275,17281,17298,17313,17327,17354,17368,17372,17376,17380],{"__ignoreMap":559},[563,15108,15109],{"class":565,"line":566},[563,15110,5464],{"class":942},[563,15112,15113],{"class":565,"line":649},[563,15114,937],{"emptyLinePlaceholder":936},[563,15116,15117],{"class":565,"line":633},[563,15118,3528],{"class":942},[563,15120,15121],{"class":565,"line":675},[563,15122,15123],{"class":942}," * Sync Environment Variables to Wrangler\n",[563,15125,15126],{"class":565,"line":698},[563,15127,11531],{"class":942},[563,15129,15130],{"class":565,"line":709},[563,15131,15132],{"class":942}," * This script reads .env file and updates wrangler.jsonc with non-secret environment variables.\n",[563,15134,15135],{"class":565,"line":715},[563,15136,15137],{"class":942}," * Secrets must be added manually using wrangler CLI for security.\n",[563,15139,15140],{"class":565,"line":989},[563,15141,11531],{"class":942},[563,15143,15144],{"class":565,"line":994},[563,15145,15146],{"class":942}," * Usage: pnpm run env:sync\n",[563,15148,15149],{"class":565,"line":1022},[563,15150,3543],{"class":942},[563,15152,15153],{"class":565,"line":1061},[563,15154,937],{"emptyLinePlaceholder":936},[563,15156,15157,15159,15161,15163,15165,15167,15169,15171,15173,15175],{"class":565,"line":1074},[563,15158,1671],{"class":789},[563,15160,917],{"class":577},[563,15162,5519],{"class":573},[563,15164,795],{"class":577},[563,15166,5524],{"class":573},[563,15168,1560],{"class":577},[563,15170,1691],{"class":789},[563,15172,1552],{"class":577},[563,15174,5533],{"class":581},[563,15176,1699],{"class":577},[563,15178,15179,15181,15183,15186,15188,15190,15192,15194,15196,15198],{"class":565,"line":850},[563,15180,1671],{"class":789},[563,15182,917],{"class":577},[563,15184,15185],{"class":573}," resolve",[563,15187,795],{"class":577},[563,15189,5549],{"class":573},[563,15191,1560],{"class":577},[563,15193,1691],{"class":789},[563,15195,1552],{"class":577},[563,15197,593],{"class":581},[563,15199,1699],{"class":577},[563,15201,15202,15204,15206,15208,15210,15212,15214,15216],{"class":565,"line":851},[563,15203,1671],{"class":789},[563,15205,917],{"class":577},[563,15207,5568],{"class":573},[563,15209,1560],{"class":577},[563,15211,1691],{"class":789},[563,15213,1552],{"class":577},[563,15215,5577],{"class":581},[563,15217,1699],{"class":577},[563,15219,15220],{"class":565,"line":852},[563,15221,937],{"emptyLinePlaceholder":936},[563,15223,15224,15226,15228,15230,15232,15234,15236,15238,15240,15242],{"class":565,"line":1139},[563,15225,750],{"class":749},[563,15227,5610],{"class":573},[563,15229,756],{"class":577},[563,15231,5568],{"class":569},[563,15233,574],{"class":573},[563,15235,1671],{"class":789},[563,15237,590],{"class":577},[563,15239,5623],{"class":573},[563,15241,590],{"class":577},[563,15243,5628],{"class":573},[563,15245,15246,15248,15250,15252,15254],{"class":565,"line":1148},[563,15247,750],{"class":749},[563,15249,5635],{"class":573},[563,15251,756],{"class":577},[563,15253,5549],{"class":569},[563,15255,5642],{"class":573},[563,15257,15258,15260,15262,15264,15266,15268,15270,15272,15274,15276],{"class":565,"line":1153},[563,15259,750],{"class":749},[563,15261,5649],{"class":573},[563,15263,756],{"class":577},[563,15265,15185],{"class":569},[563,15267,5656],{"class":573},[563,15269,795],{"class":577},[563,15271,1552],{"class":577},[563,15273,5663],{"class":581},[563,15275,578],{"class":577},[563,15277,1122],{"class":573},[563,15279,15280],{"class":565,"line":1162},[563,15281,937],{"emptyLinePlaceholder":936},[563,15283,15284],{"class":565,"line":1167},[563,15285,15286],{"class":942},"// Define which variables are secrets (should use wrangler secret put)\n",[563,15288,15289,15291,15294,15296],{"class":565,"line":1172},[563,15290,750],{"class":749},[563,15292,15293],{"class":573}," SECRETS ",[563,15295,756],{"class":577},[563,15297,2347],{"class":573},[563,15299,15300,15303,15305,15307],{"class":565,"line":1590},[563,15301,15302],{"class":577},"  '",[563,15304,3190],{"class":581},[563,15306,578],{"class":577},[563,15308,672],{"class":577},[563,15310,15311,15313,15316,15318],{"class":565,"line":1601},[563,15312,15302],{"class":577},[563,15314,15315],{"class":581},"GOOGLE_CLIENT_SECRET",[563,15317,578],{"class":577},[563,15319,672],{"class":577},[563,15321,15322,15324,15327,15329],{"class":565,"line":1622},[563,15323,15302],{"class":577},[563,15325,15326],{"class":581},"AWS_SECRET_ACCESS_KEY",[563,15328,578],{"class":577},[563,15330,672],{"class":577},[563,15332,15333,15335,15337,15339],{"class":565,"line":1644},[563,15334,15302],{"class":577},[563,15336,3214],{"class":581},[563,15338,578],{"class":577},[563,15340,672],{"class":577},[563,15342,15343,15345,15348,15350],{"class":565,"line":1654},[563,15344,15302],{"class":577},[563,15346,15347],{"class":581},"CLOUDFLARE_API_TOKEN",[563,15349,578],{"class":577},[563,15351,672],{"class":577},[563,15353,15354],{"class":565,"line":3648},[563,15355,4045],{"class":573},[563,15357,15358],{"class":565,"line":3653},[563,15359,937],{"emptyLinePlaceholder":936},[563,15361,15362],{"class":565,"line":3658},[563,15363,15364],{"class":942},"// Variables to skip (not needed in production or handled differently)\n",[563,15366,15367,15369,15372,15374],{"class":565,"line":3664},[563,15368,750],{"class":749},[563,15370,15371],{"class":573}," SKIP_VARS ",[563,15373,756],{"class":577},[563,15375,2347],{"class":573},[563,15377,15378,15380,15382,15384,15386],{"class":565,"line":3670},[563,15379,15302],{"class":577},[563,15381,3228],{"class":581},[563,15383,578],{"class":577},[563,15385,795],{"class":577},[563,15387,15388],{"class":942}," // Already set in wrangler.jsonc\n",[563,15390,15391,15393,15396,15398,15400],{"class":565,"line":3675},[563,15392,15302],{"class":577},[563,15394,15395],{"class":581},"CLOUDFLARE_ACCOUNT_ID",[563,15397,578],{"class":577},[563,15399,795],{"class":577},[563,15401,15402],{"class":942}," // Already set as account_id in wrangler.jsonc\n",[563,15404,15405],{"class":565,"line":3681},[563,15406,4045],{"class":573},[563,15408,15409],{"class":565,"line":3687},[563,15410,937],{"emptyLinePlaceholder":936},[563,15412,15413],{"class":565,"line":3693},[563,15414,3528],{"class":942},[563,15416,15417],{"class":565,"line":3699},[563,15418,15419],{"class":942}," * Parse .env file into key-value pairs\n",[563,15421,15422],{"class":565,"line":3705},[563,15423,3543],{"class":942},[563,15425,15426,15428,15431,15433,15435,15437],{"class":565,"line":3711},[563,15427,6035],{"class":749},[563,15429,15430],{"class":569}," parseEnvFile",[563,15432,574],{"class":577},[563,15434,9534],{"class":1275},[563,15436,587],{"class":577},[563,15438,646],{"class":577},[563,15440,15441,15443,15445,15447,15449,15451,15453,15455,15457,15459,15461],{"class":565,"line":3716},[563,15442,4973],{"class":749},[563,15444,7801],{"class":573},[563,15446,926],{"class":577},[563,15448,5519],{"class":569},[563,15450,574],{"class":683},[563,15452,9534],{"class":573},[563,15454,795],{"class":577},[563,15456,1552],{"class":577},[563,15458,6162],{"class":581},[563,15460,578],{"class":577},[563,15462,1122],{"class":683},[563,15464,15465,15467,15470,15472],{"class":565,"line":3722},[563,15466,4973],{"class":749},[563,15468,15469],{"class":573}," vars",[563,15471,926],{"class":577},[563,15473,15474],{"class":577}," {}\n",[563,15476,15477],{"class":565,"line":3727},[563,15478,937],{"emptyLinePlaceholder":936},[563,15480,15481,15484,15486,15488,15490,15492,15494,15496,15498,15500,15502,15504,15506,15508],{"class":565,"line":3732},[563,15482,15483],{"class":573},"  content",[563,15485,590],{"class":577},[563,15487,9560],{"class":569},[563,15489,574],{"class":683},[563,15491,578],{"class":577},[563,15493,6480],{"class":573},[563,15495,578],{"class":577},[563,15497,587],{"class":683},[563,15499,590],{"class":577},[563,15501,6549],{"class":569},[563,15503,574],{"class":683},[563,15505,565],{"class":1275},[563,15507,767],{"class":749},[563,15509,646],{"class":577},[563,15511,15512],{"class":565,"line":3738},[563,15513,15514],{"class":942},"    // Skip comments and empty lines\n",[563,15516,15517,15519,15521,15523,15525,15527,15529,15531,15533,15535,15537,15540,15542,15544,15546,15548,15550,15552,15554,15557],{"class":565,"line":3744},[563,15518,6249],{"class":789},[563,15520,1272],{"class":683},[563,15522,565],{"class":573},[563,15524,590],{"class":577},[563,15526,6432],{"class":569},[563,15528,764],{"class":683},[563,15530,590],{"class":577},[563,15532,14036],{"class":569},[563,15534,574],{"class":683},[563,15536,578],{"class":577},[563,15538,15539],{"class":581},"#",[563,15541,578],{"class":577},[563,15543,5028],{"class":683},[563,15545,2595],{"class":577},[563,15547,10220],{"class":577},[563,15549,565],{"class":573},[563,15551,590],{"class":577},[563,15553,6432],{"class":569},[563,15555,15556],{"class":683},"()) ",[563,15558,1520],{"class":577},[563,15560,15561],{"class":565,"line":3750},[563,15562,15563],{"class":789},"      return\n",[563,15565,15566],{"class":565,"line":3755},[563,15567,2085],{"class":577},[563,15569,15570],{"class":565,"line":3761},[563,15571,937],{"emptyLinePlaceholder":936},[563,15573,15574],{"class":565,"line":3766},[563,15575,15576],{"class":942},"    // Parse KEY=VALUE (with or without quotes)\n",[563,15578,15579,15581,15583,15585,15588,15590,15592,15594,15596,15599,15602,15605,15608,15611,15614,15617,15619,15621,15624,15626,15629,15631,15633],{"class":565,"line":3772},[563,15580,1083],{"class":749},[563,15582,7099],{"class":573},[563,15584,926],{"class":577},[563,15586,15587],{"class":573}," line",[563,15589,590],{"class":577},[563,15591,7108],{"class":569},[563,15593,574],{"class":683},[563,15595,520],{"class":577},[563,15597,15598],{"class":789},"^",[563,15600,15601],{"class":577},"([",[563,15603,15604],{"class":581},"A-Z_",[563,15606,15607],{"class":577},"][",[563,15609,15610],{"class":581},"A-Z0-9_",[563,15612,15613],{"class":577},"]*)",[563,15615,15616],{"class":581},"\\s",[563,15618,7118],{"class":577},[563,15620,7121],{"class":581},[563,15622,15623],{"class":577},"*(",[563,15625,590],{"class":581},[563,15627,15628],{"class":577},"*)",[563,15630,790],{"class":789},[563,15632,520],{"class":577},[563,15634,1122],{"class":683},[563,15636,15637,15639,15641,15643,15645],{"class":565,"line":3778},[563,15638,6249],{"class":789},[563,15640,1272],{"class":683},[563,15642,7108],{"class":573},[563,15644,5028],{"class":683},[563,15646,1520],{"class":577},[563,15648,15649,15651,15654,15657,15659,15662,15664,15666],{"class":565,"line":3784},[563,15650,12550],{"class":749},[563,15652,15653],{"class":577}," [,",[563,15655,15656],{"class":573}," key",[563,15658,795],{"class":577},[563,15660,15661],{"class":573}," value",[563,15663,693],{"class":577},[563,15665,926],{"class":577},[563,15667,15668],{"class":573}," match\n",[563,15670,15671],{"class":565,"line":3789},[563,15672,15673],{"class":942},"      // Remove surrounding quotes if present\n",[563,15675,15676,15678,15681,15683,15685,15687,15689,15691,15693,15695,15697,15700,15703,15705,15707,15709,15711,15714,15716,15718,15720,15722,15724],{"class":565,"line":3794},[563,15677,12550],{"class":749},[563,15679,15680],{"class":573}," cleanValue",[563,15682,926],{"class":577},[563,15684,15661],{"class":573},[563,15686,590],{"class":577},[563,15688,779],{"class":569},[563,15690,574],{"class":683},[563,15692,520],{"class":577},[563,15694,15598],{"class":789},[563,15696,6831],{"class":577},[563,15698,15699],{"class":581},"\"'",[563,15701,15702],{"class":577},"]|[",[563,15704,15699],{"class":581},[563,15706,693],{"class":577},[563,15708,790],{"class":789},[563,15710,520],{"class":577},[563,15712,15713],{"class":1541},"g",[563,15715,795],{"class":577},[563,15717,798],{"class":577},[563,15719,587],{"class":683},[563,15721,590],{"class":577},[563,15723,6432],{"class":569},[563,15725,609],{"class":683},[563,15727,15728,15731,15733,15735,15737,15739],{"class":565,"line":3799},[563,15729,15730],{"class":573},"      vars",[563,15732,6831],{"class":683},[563,15734,1276],{"class":573},[563,15736,2522],{"class":683},[563,15738,756],{"class":577},[563,15740,15741],{"class":573}," cleanValue\n",[563,15743,15744],{"class":565,"line":3804},[563,15745,2085],{"class":577},[563,15747,15748,15750],{"class":565,"line":3810},[563,15749,1813],{"class":577},[563,15751,1122],{"class":683},[563,15753,15754],{"class":565,"line":3816},[563,15755,937],{"emptyLinePlaceholder":936},[563,15757,15758,15760],{"class":565,"line":3822},[563,15759,5065],{"class":789},[563,15761,15762],{"class":573}," vars\n",[563,15764,15765],{"class":565,"line":3827},[563,15766,718],{"class":577},[563,15768,15769],{"class":565,"line":3833},[563,15770,937],{"emptyLinePlaceholder":936},[563,15772,15773],{"class":565,"line":3839},[563,15774,3528],{"class":942},[563,15776,15777],{"class":565,"line":3844},[563,15778,15779],{"class":942}," * Read and parse wrangler.jsonc (with comments)\n",[563,15781,15782],{"class":565,"line":3849},[563,15783,3543],{"class":942},[563,15785,15786,15788,15791,15793,15795,15797],{"class":565,"line":3854},[563,15787,6035],{"class":749},[563,15789,15790],{"class":569}," readWranglerConfig",[563,15792,574],{"class":577},[563,15794,9534],{"class":1275},[563,15796,587],{"class":577},[563,15798,646],{"class":577},[563,15800,15801,15803,15805,15807,15809,15811,15813,15815,15817,15819,15821],{"class":565,"line":3860},[563,15802,4973],{"class":749},[563,15804,7801],{"class":573},[563,15806,926],{"class":577},[563,15808,5519],{"class":569},[563,15810,574],{"class":683},[563,15812,9534],{"class":573},[563,15814,795],{"class":577},[563,15816,1552],{"class":577},[563,15818,6162],{"class":581},[563,15820,578],{"class":577},[563,15822,1122],{"class":683},[563,15824,15825],{"class":565,"line":3865},[563,15826,937],{"emptyLinePlaceholder":936},[563,15828,15829],{"class":565,"line":3871},[563,15830,15831],{"class":942},"  // Remove comments to parse JSON\n",[563,15833,15834,15836,15839,15841],{"class":565,"line":3877},[563,15835,4973],{"class":749},[563,15837,15838],{"class":573}," jsonContent",[563,15840,926],{"class":577},[563,15842,15843],{"class":573}," content\n",[563,15845,15846,15848,15850,15852,15854,15856,15858],{"class":565,"line":3882},[563,15847,10162],{"class":577},[563,15849,9560],{"class":569},[563,15851,574],{"class":683},[563,15853,578],{"class":577},[563,15855,6480],{"class":573},[563,15857,578],{"class":577},[563,15859,1122],{"class":683},[563,15861,15862,15864,15866,15868,15870,15872,15874,15876,15878,15880,15882,15884,15886,15888,15890,15893,15895],{"class":565,"line":6509},[563,15863,10162],{"class":577},[563,15865,9286],{"class":569},[563,15867,574],{"class":683},[563,15869,565],{"class":1275},[563,15871,767],{"class":749},[563,15873,10220],{"class":577},[563,15875,565],{"class":573},[563,15877,590],{"class":577},[563,15879,6432],{"class":569},[563,15881,764],{"class":683},[563,15883,590],{"class":577},[563,15885,14036],{"class":569},[563,15887,574],{"class":683},[563,15889,578],{"class":577},[563,15891,15892],{"class":581},"//",[563,15894,578],{"class":577},[563,15896,801],{"class":683},[563,15898,15899,15901,15904,15906,15908,15910,15912],{"class":565,"line":6536},[563,15900,10162],{"class":577},[563,15902,15903],{"class":569},"join",[563,15905,574],{"class":683},[563,15907,578],{"class":577},[563,15909,6480],{"class":573},[563,15911,578],{"class":577},[563,15913,1122],{"class":683},[563,15915,15916,15918,15920,15922,15924,15927,15929,15932,15935,15938,15940,15942,15944,15946,15948],{"class":565,"line":6541},[563,15917,10162],{"class":577},[563,15919,779],{"class":569},[563,15921,574],{"class":683},[563,15923,520],{"class":577},[563,15925,15926],{"class":573},"\\/\\*",[563,15928,6831],{"class":577},[563,15930,15931],{"class":581},"\\s\\S",[563,15933,15934],{"class":577},"]*?",[563,15936,15937],{"class":573},"\\*\\/",[563,15939,520],{"class":577},[563,15941,15713],{"class":1541},[563,15943,795],{"class":577},[563,15945,798],{"class":577},[563,15947,5028],{"class":683},[563,15949,15950],{"class":942},"// Remove block comments\n",[563,15952,15953],{"class":565,"line":6570},[563,15954,937],{"emptyLinePlaceholder":936},[563,15956,15957,15959],{"class":565,"line":6601},[563,15958,5065],{"class":789},[563,15960,646],{"class":577},[563,15962,15963,15966,15968,15970],{"class":565,"line":6670},[563,15964,15965],{"class":683},"    raw",[563,15967,552],{"class":577},[563,15969,7801],{"class":573},[563,15971,672],{"class":577},[563,15973,15974,15977,15979,15981,15983,15986,15988,15991],{"class":565,"line":6677},[563,15975,15976],{"class":683},"    parsed",[563,15978,552],{"class":577},[563,15980,14926],{"class":573},[563,15982,590],{"class":577},[563,15984,15985],{"class":569},"parse",[563,15987,574],{"class":683},[563,15989,15990],{"class":573},"jsonContent",[563,15992,1122],{"class":683},[563,15994,15995],{"class":565,"line":6682},[563,15996,712],{"class":577},[563,15998,15999],{"class":565,"line":6694},[563,16000,718],{"class":577},[563,16002,16003],{"class":565,"line":6718},[563,16004,937],{"emptyLinePlaceholder":936},[563,16006,16007],{"class":565,"line":6750},[563,16008,3528],{"class":942},[563,16010,16011],{"class":565,"line":6755},[563,16012,16013],{"class":942}," * Update wrangler.jsonc with new vars\n",[563,16015,16016],{"class":565,"line":6800},[563,16017,3543],{"class":942},[563,16019,16020,16022,16025,16027,16029,16031,16034,16036],{"class":565,"line":6824},[563,16021,6035],{"class":749},[563,16023,16024],{"class":569}," updateWranglerVars",[563,16026,574],{"class":577},[563,16028,7810],{"class":1275},[563,16030,795],{"class":577},[563,16032,16033],{"class":1275}," envVars",[563,16035,587],{"class":577},[563,16037,646],{"class":577},[563,16039,16040,16042,16044,16047,16049,16052,16054,16056,16058,16060,16062],{"class":565,"line":6839},[563,16041,4973],{"class":749},[563,16043,917],{"class":577},[563,16045,16046],{"class":573}," raw",[563,16048,795],{"class":577},[563,16050,16051],{"class":573}," parsed",[563,16053,1560],{"class":577},[563,16055,926],{"class":577},[563,16057,15790],{"class":569},[563,16059,574],{"class":683},[563,16061,7810],{"class":573},[563,16063,1122],{"class":683},[563,16065,16066],{"class":565,"line":6844},[563,16067,937],{"emptyLinePlaceholder":936},[563,16069,16070],{"class":565,"line":6849},[563,16071,16072],{"class":942},"  // Separate public and secret vars\n",[563,16074,16075,16077,16080,16082],{"class":565,"line":6872},[563,16076,4973],{"class":749},[563,16078,16079],{"class":573}," publicVars",[563,16081,926],{"class":577},[563,16083,15474],{"class":577},[563,16085,16086,16088,16091,16093],{"class":565,"line":6922},[563,16087,4973],{"class":749},[563,16089,16090],{"class":573}," secretVars",[563,16092,926],{"class":577},[563,16094,9340],{"class":683},[563,16096,16097],{"class":565,"line":6930},[563,16098,937],{"emptyLinePlaceholder":936},[563,16100,16101,16104,16106,16109,16111,16114,16116,16118,16120,16122,16124,16126,16128,16130,16133,16135],{"class":565,"line":6935},[563,16102,16103],{"class":573},"  Object",[563,16105,590],{"class":577},[563,16107,16108],{"class":569},"entries",[563,16110,574],{"class":683},[563,16112,16113],{"class":573},"envVars",[563,16115,587],{"class":683},[563,16117,590],{"class":577},[563,16119,6549],{"class":569},[563,16121,574],{"class":683},[563,16123,15601],{"class":577},[563,16125,1276],{"class":1275},[563,16127,795],{"class":577},[563,16129,15661],{"class":1275},[563,16131,16132],{"class":577},"])",[563,16134,767],{"class":749},[563,16136,646],{"class":577},[563,16138,16139,16141,16143,16146,16148,16150,16152,16154,16156],{"class":565,"line":6940},[563,16140,6249],{"class":789},[563,16142,1272],{"class":683},[563,16144,16145],{"class":573},"SKIP_VARS",[563,16147,590],{"class":577},[563,16149,10696],{"class":569},[563,16151,574],{"class":683},[563,16153,1276],{"class":573},[563,16155,14048],{"class":683},[563,16157,1520],{"class":577},[563,16159,16160,16163,16165,16167,16169,16171,16174,16176,16178,16180,16183,16185],{"class":565,"line":6958},[563,16161,16162],{"class":573},"      console",[563,16164,590],{"class":577},[563,16166,6071],{"class":569},[563,16168,574],{"class":683},[563,16170,6609],{"class":577},[563,16172,16173],{"class":581},"⏭️  Skipping ",[563,16175,1031],{"class":577},[563,16177,1276],{"class":573},[563,16179,923],{"class":577},[563,16181,16182],{"class":581}," (already configured)",[563,16184,6609],{"class":577},[563,16186,1122],{"class":683},[563,16188,16189],{"class":565,"line":6997},[563,16190,15563],{"class":789},[563,16192,16193],{"class":565,"line":7002},[563,16194,2085],{"class":577},[563,16196,16197],{"class":565,"line":7009},[563,16198,937],{"emptyLinePlaceholder":936},[563,16200,16201,16203,16205,16208,16210,16212,16214,16216,16218],{"class":565,"line":7036},[563,16202,6249],{"class":789},[563,16204,1272],{"class":683},[563,16206,16207],{"class":573},"SECRETS",[563,16209,590],{"class":577},[563,16211,10696],{"class":569},[563,16213,574],{"class":683},[563,16215,1276],{"class":573},[563,16217,14048],{"class":683},[563,16219,1520],{"class":577},[563,16221,16222,16225,16227,16229,16231,16233],{"class":565,"line":7050},[563,16223,16224],{"class":573},"      secretVars",[563,16226,590],{"class":577},[563,16228,11109],{"class":569},[563,16230,574],{"class":683},[563,16232,1276],{"class":573},[563,16234,1122],{"class":683},[563,16236,16237,16239,16241,16243,16245,16247,16250,16252,16254,16256],{"class":565,"line":7068},[563,16238,16162],{"class":573},[563,16240,590],{"class":577},[563,16242,6071],{"class":569},[563,16244,574],{"class":683},[563,16246,6609],{"class":577},[563,16248,16249],{"class":581},"🔐 Secret detected: ",[563,16251,1031],{"class":577},[563,16253,1276],{"class":573},[563,16255,1056],{"class":577},[563,16257,1122],{"class":683},[563,16259,16260,16262,16264,16267,16269,16271,16273],{"class":565,"line":7083},[563,16261,6227],{"class":577},[563,16263,11018],{"class":789},[563,16265,16266],{"class":789}," if",[563,16268,1272],{"class":683},[563,16270,1039],{"class":573},[563,16272,5028],{"class":683},[563,16274,1520],{"class":577},[563,16276,16277,16280,16282,16284,16286,16288],{"class":565,"line":7089},[563,16278,16279],{"class":573},"      publicVars",[563,16281,6831],{"class":683},[563,16283,1276],{"class":573},[563,16285,2522],{"class":683},[563,16287,756],{"class":577},[563,16289,16290],{"class":573}," value\n",[563,16292,16293,16295,16297,16299,16301,16303,16306,16308,16310,16312],{"class":565,"line":7094},[563,16294,16162],{"class":573},[563,16296,590],{"class":577},[563,16298,6071],{"class":569},[563,16300,574],{"class":683},[563,16302,6609],{"class":577},[563,16304,16305],{"class":581},"✅ Adding: ",[563,16307,1031],{"class":577},[563,16309,1276],{"class":573},[563,16311,1056],{"class":577},[563,16313,1122],{"class":683},[563,16315,16316],{"class":565,"line":7142},[563,16317,2085],{"class":577},[563,16319,16320,16322],{"class":565,"line":7166},[563,16321,1813],{"class":577},[563,16323,1122],{"class":683},[563,16325,16326],{"class":565,"line":7191},[563,16327,937],{"emptyLinePlaceholder":936},[563,16329,16330],{"class":565,"line":7224},[563,16331,16332],{"class":942},"  // Update parsed config\n",[563,16334,16335,16338,16340,16342,16344],{"class":565,"line":7238},[563,16336,16337],{"class":573},"  parsed",[563,16339,590],{"class":577},[563,16341,13387],{"class":573},[563,16343,926],{"class":577},[563,16345,646],{"class":577},[563,16347,16348,16351,16354,16356,16358],{"class":565,"line":7243},[563,16349,16350],{"class":577},"    ...",[563,16352,16353],{"class":573},"parsed",[563,16355,590],{"class":577},[563,16357,13387],{"class":573},[563,16359,672],{"class":577},[563,16361,16362,16364],{"class":565,"line":7250},[563,16363,16350],{"class":577},[563,16365,16366],{"class":573},"publicVars\n",[563,16368,16369],{"class":565,"line":7265},[563,16370,712],{"class":577},[563,16372,16373],{"class":565,"line":7290},[563,16374,937],{"emptyLinePlaceholder":936},[563,16376,16377],{"class":565,"line":7297},[563,16378,16379],{"class":942},"  // Find the vars section in raw content and replace it\n",[563,16381,16382,16384,16387,16389,16391,16393,16396,16398,16400,16403,16405],{"class":565,"line":7302},[563,16383,4973],{"class":749},[563,16385,16386],{"class":573}," varsStart",[563,16388,926],{"class":577},[563,16390,16046],{"class":573},[563,16392,590],{"class":577},[563,16394,16395],{"class":569},"indexOf",[563,16397,574],{"class":683},[563,16399,578],{"class":577},[563,16401,16402],{"class":581},"\"vars\": {",[563,16404,578],{"class":577},[563,16406,1122],{"class":683},[563,16408,16409,16411,16413,16416,16418,16420,16422,16424],{"class":565,"line":7307},[563,16410,5019],{"class":789},[563,16412,1272],{"class":683},[563,16414,16415],{"class":573},"varsStart",[563,16417,6730],{"class":577},[563,16419,6865],{"class":577},[563,16421,7158],{"class":1541},[563,16423,5028],{"class":683},[563,16425,1520],{"class":577},[563,16427,16428,16431,16433,16435,16437,16439,16442,16444],{"class":565,"line":7312},[563,16429,16430],{"class":573},"    console",[563,16432,590],{"class":577},[563,16434,5270],{"class":569},[563,16436,574],{"class":683},[563,16438,578],{"class":577},[563,16440,16441],{"class":581},"❌ Could not find \"vars\" section in wrangler.jsonc",[563,16443,578],{"class":577},[563,16445,1122],{"class":683},[563,16447,16448,16450,16452,16454,16456,16458],{"class":565,"line":7337},[563,16449,10086],{"class":573},[563,16451,590],{"class":577},[563,16453,8660],{"class":569},[563,16455,574],{"class":683},[563,16457,7158],{"class":1541},[563,16459,1122],{"class":683},[563,16461,16462],{"class":565,"line":7362},[563,16463,712],{"class":577},[563,16465,16466],{"class":565,"line":7401},[563,16467,937],{"emptyLinePlaceholder":936},[563,16469,16470],{"class":565,"line":7406},[563,16471,16472],{"class":942},"  // Format the vars object with proper indentation\n",[563,16474,16475,16477,16480,16482,16484,16486,16488,16490,16492,16494,16496,16498,16500,16502],{"class":565,"line":7413},[563,16476,4973],{"class":749},[563,16478,16479],{"class":573}," varsJson",[563,16481,926],{"class":577},[563,16483,14926],{"class":573},[563,16485,590],{"class":577},[563,16487,14931],{"class":569},[563,16489,574],{"class":683},[563,16491,16353],{"class":573},[563,16493,590],{"class":577},[563,16495,13387],{"class":573},[563,16497,795],{"class":577},[563,16499,14941],{"class":577},[563,16501,14944],{"class":1541},[563,16503,1122],{"class":683},[563,16505,16506,16508,16510,16512,16514,16516,16518],{"class":565,"line":7438},[563,16507,10162],{"class":577},[563,16509,9560],{"class":569},[563,16511,574],{"class":683},[563,16513,578],{"class":577},[563,16515,6480],{"class":573},[563,16517,578],{"class":577},[563,16519,1122],{"class":683},[563,16521,16522,16524,16526,16528,16530,16532,16534,16537,16539,16541,16543,16545,16547,16549,16551,16553,16555,16557,16559,16561],{"class":565,"line":7451},[563,16523,10162],{"class":577},[563,16525,10184],{"class":569},[563,16527,574],{"class":683},[563,16529,574],{"class":577},[563,16531,565],{"class":1275},[563,16533,795],{"class":577},[563,16535,16536],{"class":1275}," i",[563,16538,587],{"class":577},[563,16540,767],{"class":749},[563,16542,16536],{"class":573},[563,16544,6730],{"class":577},[563,16546,10239],{"class":1541},[563,16548,6183],{"class":577},[563,16550,15587],{"class":573},[563,16552,6193],{"class":577},[563,16554,1552],{"class":577},[563,16556,15302],{"class":577},[563,16558,6497],{"class":577},[563,16560,15587],{"class":573},[563,16562,1122],{"class":683},[563,16564,16565,16567,16569,16571,16573,16575,16577],{"class":565,"line":7475},[563,16566,10162],{"class":577},[563,16568,15903],{"class":569},[563,16570,574],{"class":683},[563,16572,578],{"class":577},[563,16574,6480],{"class":573},[563,16576,578],{"class":577},[563,16578,1122],{"class":683},[563,16580,16581],{"class":565,"line":7488},[563,16582,937],{"emptyLinePlaceholder":936},[563,16584,16585],{"class":565,"line":7493},[563,16586,16587],{"class":942},"  // Find the end of vars section\n",[563,16589,16590,16592,16595,16597],{"class":565,"line":7498},[563,16591,10985],{"class":749},[563,16593,16594],{"class":573}," braceCount",[563,16596,926],{"class":577},[563,16598,16599],{"class":1541}," 0\n",[563,16601,16602,16604,16607,16609],{"class":565,"line":7540},[563,16603,10985],{"class":749},[563,16605,16606],{"class":573}," varsEnd",[563,16608,926],{"class":577},[563,16610,16611],{"class":573}," varsStart\n",[563,16613,16614,16616,16619,16621],{"class":565,"line":7561},[563,16615,10985],{"class":749},[563,16617,16618],{"class":573}," foundStart",[563,16620,926],{"class":577},[563,16622,8168],{"class":668},[563,16624,16625],{"class":565,"line":7585},[563,16626,937],{"emptyLinePlaceholder":936},[563,16628,16629,16631,16633,16636,16638,16640,16642,16645,16647,16649,16651,16653,16655,16657,16659,16662,16664],{"class":565,"line":7617},[563,16630,11060],{"class":789},[563,16632,1272],{"class":683},[563,16634,16635],{"class":749},"let",[563,16637,16536],{"class":573},[563,16639,926],{"class":577},[563,16641,16386],{"class":573},[563,16643,16644],{"class":577},";",[563,16646,16536],{"class":573},[563,16648,6776],{"class":577},[563,16650,16046],{"class":573},[563,16652,590],{"class":577},[563,16654,6793],{"class":573},[563,16656,16644],{"class":577},[563,16658,16536],{"class":573},[563,16660,16661],{"class":577},"++",[563,16663,5028],{"class":683},[563,16665,1520],{"class":577},[563,16667,16668,16670,16672,16675,16677,16680,16682,16684,16686,16688,16690,16692],{"class":565,"line":7630},[563,16669,6249],{"class":789},[563,16671,1272],{"class":683},[563,16673,16674],{"class":573},"raw",[563,16676,6831],{"class":683},[563,16678,16679],{"class":573},"i",[563,16681,2522],{"class":683},[563,16683,10043],{"class":577},[563,16685,1552],{"class":577},[563,16687,1533],{"class":581},[563,16689,578],{"class":577},[563,16691,5028],{"class":683},[563,16693,1520],{"class":577},[563,16695,16696,16699],{"class":565,"line":7635},[563,16697,16698],{"class":573},"      braceCount",[563,16700,16701],{"class":577},"++\n",[563,16703,16704,16707,16709],{"class":565,"line":7642},[563,16705,16706],{"class":573},"      foundStart",[563,16708,926],{"class":577},[563,16710,706],{"class":668},[563,16712,16713,16715,16717,16719,16721,16723,16725,16727,16729,16731,16733,16735,16737,16739],{"class":565,"line":7657},[563,16714,6227],{"class":577},[563,16716,11018],{"class":789},[563,16718,16266],{"class":789},[563,16720,1272],{"class":683},[563,16722,16674],{"class":573},[563,16724,6831],{"class":683},[563,16726,16679],{"class":573},[563,16728,2522],{"class":683},[563,16730,10043],{"class":577},[563,16732,1552],{"class":577},[563,16734,923],{"class":581},[563,16736,578],{"class":577},[563,16738,5028],{"class":683},[563,16740,1520],{"class":577},[563,16742,16743,16745],{"class":565,"line":7681},[563,16744,16698],{"class":573},[563,16746,16747],{"class":577},"--\n",[563,16749,16750,16752,16754,16757,16759,16761,16763,16765,16767],{"class":565,"line":7688},[563,16751,14536],{"class":789},[563,16753,1272],{"class":683},[563,16755,16756],{"class":573},"foundStart",[563,16758,7151],{"class":577},[563,16760,16594],{"class":573},[563,16762,6730],{"class":577},[563,16764,10239],{"class":1541},[563,16766,5028],{"class":683},[563,16768,1520],{"class":577},[563,16770,16771,16774,16776,16778,16780],{"class":565,"line":7693},[563,16772,16773],{"class":573},"        varsEnd",[563,16775,926],{"class":577},[563,16777,16536],{"class":573},[563,16779,6497],{"class":577},[563,16781,16782],{"class":1541}," 1\n",[563,16784,16785],{"class":565,"line":7698},[563,16786,13125],{"class":789},[563,16788,16789],{"class":565,"line":7703},[563,16790,2535],{"class":577},[563,16792,16793],{"class":565,"line":7730},[563,16794,2085],{"class":577},[563,16796,16797],{"class":565,"line":7756},[563,16798,712],{"class":577},[563,16800,16801],{"class":565,"line":7761},[563,16802,937],{"emptyLinePlaceholder":936},[563,16804,16805],{"class":565,"line":7768},[563,16806,16807],{"class":942},"  // Replace the vars section\n",[563,16809,16810,16812,16815,16817,16819,16821,16824,16826,16828,16830,16832],{"class":565,"line":7795},[563,16811,4973],{"class":749},[563,16813,16814],{"class":573}," before",[563,16816,926],{"class":577},[563,16818,16046],{"class":573},[563,16820,590],{"class":577},[563,16822,16823],{"class":569},"substring",[563,16825,574],{"class":683},[563,16827,6834],{"class":1541},[563,16829,795],{"class":577},[563,16831,16386],{"class":573},[563,16833,1122],{"class":683},[563,16835,16836,16838,16841,16843,16845,16847,16849,16851,16854],{"class":565,"line":7823},[563,16837,4973],{"class":749},[563,16839,16840],{"class":573}," after",[563,16842,926],{"class":577},[563,16844,16046],{"class":573},[563,16846,590],{"class":577},[563,16848,16823],{"class":569},[563,16850,574],{"class":683},[563,16852,16853],{"class":573},"varsEnd",[563,16855,1122],{"class":683},[563,16857,16858,16860,16863,16865,16867,16869,16871,16874,16876,16878,16880,16882],{"class":565,"line":7828},[563,16859,4973],{"class":749},[563,16861,16862],{"class":573}," newContent",[563,16864,926],{"class":577},[563,16866,16814],{"class":573},[563,16868,6497],{"class":577},[563,16870,1552],{"class":577},[563,16872,16873],{"class":581},"\"vars\": ",[563,16875,578],{"class":577},[563,16877,6497],{"class":577},[563,16879,16479],{"class":573},[563,16881,6497],{"class":577},[563,16883,16884],{"class":573}," after\n",[563,16886,16887],{"class":565,"line":7841},[563,16888,937],{"emptyLinePlaceholder":936},[563,16890,16891],{"class":565,"line":7857},[563,16892,16893],{"class":942},"  // Write updated config\n",[563,16895,16896,16899,16901,16903,16905,16907,16909,16911,16913,16915],{"class":565,"line":7875},[563,16897,16898],{"class":569},"  writeFileSync",[563,16900,574],{"class":683},[563,16902,7810],{"class":573},[563,16904,795],{"class":577},[563,16906,16862],{"class":573},[563,16908,795],{"class":577},[563,16910,1552],{"class":577},[563,16912,6162],{"class":581},[563,16914,578],{"class":577},[563,16916,1122],{"class":683},[563,16918,16919],{"class":565,"line":7895},[563,16920,937],{"emptyLinePlaceholder":936},[563,16922,16923,16925,16927,16929,16931,16933,16935,16938,16940],{"class":565,"line":7901},[563,16924,6066],{"class":573},[563,16926,590],{"class":577},[563,16928,6071],{"class":569},[563,16930,574],{"class":683},[563,16932,578],{"class":577},[563,16934,6480],{"class":573},[563,16936,16937],{"class":581},"✅ wrangler.jsonc updated successfully!",[563,16939,578],{"class":577},[563,16941,1122],{"class":683},[563,16943,16944,16946,16948,16950,16952,16954,16957,16959,16961,16963,16965,16968,16970,16972,16974,16977,16979],{"class":565,"line":7906},[563,16945,6066],{"class":573},[563,16947,590],{"class":577},[563,16949,6071],{"class":569},[563,16951,574],{"class":683},[563,16953,6609],{"class":577},[563,16955,16956],{"class":581},"   Added ",[563,16958,1031],{"class":577},[563,16960,13728],{"class":573},[563,16962,590],{"class":577},[563,16964,13733],{"class":569},[563,16966,16967],{"class":573},"(publicVars)",[563,16969,590],{"class":577},[563,16971,6793],{"class":573},[563,16973,923],{"class":577},[563,16975,16976],{"class":581}," public variables",[563,16978,6609],{"class":577},[563,16980,1122],{"class":683},[563,16982,16983],{"class":565,"line":7911},[563,16984,937],{"emptyLinePlaceholder":936},[563,16986,16987],{"class":565,"line":7925},[563,16988,16989],{"class":942},"  // Print instructions for secrets\n",[563,16991,16992,16994,16996,16999,17001,17003,17005,17007,17009],{"class":565,"line":7940},[563,16993,5019],{"class":789},[563,16995,1272],{"class":683},[563,16997,16998],{"class":573},"secretVars",[563,17000,590],{"class":577},[563,17002,6793],{"class":573},[563,17004,6785],{"class":577},[563,17006,10239],{"class":1541},[563,17008,5028],{"class":683},[563,17010,1520],{"class":577},[563,17012,17013,17015,17017,17019,17021,17023,17025,17028,17030],{"class":565,"line":7957},[563,17014,16430],{"class":573},[563,17016,590],{"class":577},[563,17018,6071],{"class":569},[563,17020,574],{"class":683},[563,17022,578],{"class":577},[563,17024,6480],{"class":573},[563,17026,17027],{"class":581},"🔐 SECRETS DETECTED - Add manually using wrangler CLI:",[563,17029,578],{"class":577},[563,17031,1122],{"class":683},[563,17033,17034,17036,17038,17040,17042,17044,17047,17049,17051],{"class":565,"line":7975},[563,17035,16430],{"class":573},[563,17037,590],{"class":577},[563,17039,6071],{"class":569},[563,17041,574],{"class":683},[563,17043,578],{"class":577},[563,17045,17046],{"class":581},"   Secrets should NEVER be committed to wrangler.jsonc",[563,17048,6480],{"class":573},[563,17050,578],{"class":577},[563,17052,1122],{"class":683},[563,17054,17055],{"class":565,"line":7980},[563,17056,937],{"emptyLinePlaceholder":936},[563,17058,17059,17062,17064,17066,17068,17071,17073],{"class":565,"line":7985},[563,17060,17061],{"class":573},"    secretVars",[563,17063,590],{"class":577},[563,17065,6549],{"class":569},[563,17067,574],{"class":683},[563,17069,17070],{"class":1275},"secret",[563,17072,767],{"class":749},[563,17074,646],{"class":577},[563,17076,17077,17079,17081,17083,17085,17087,17090,17092,17094,17096],{"class":565,"line":7990},[563,17078,16162],{"class":573},[563,17080,590],{"class":577},[563,17082,6071],{"class":569},[563,17084,574],{"class":683},[563,17086,6609],{"class":577},[563,17088,17089],{"class":581},"   wrangler secret put ",[563,17091,1031],{"class":577},[563,17093,17070],{"class":573},[563,17095,1056],{"class":577},[563,17097,1122],{"class":683},[563,17099,17100,17102,17104,17106,17108,17110,17113,17115],{"class":565,"line":8004},[563,17101,16162],{"class":573},[563,17103,590],{"class":577},[563,17105,6071],{"class":569},[563,17107,574],{"class":683},[563,17109,6609],{"class":577},[563,17111,17112],{"class":581},"   # Enter value when prompted",[563,17114,6609],{"class":577},[563,17116,1122],{"class":683},[563,17118,17119,17121,17123,17125,17127,17129],{"class":565,"line":8019},[563,17120,16162],{"class":573},[563,17122,590],{"class":577},[563,17124,6071],{"class":569},[563,17126,574],{"class":683},[563,17128,6689],{"class":577},[563,17130,1122],{"class":683},[563,17132,17133,17135],{"class":565,"line":8036},[563,17134,6227],{"class":577},[563,17136,1122],{"class":683},[563,17138,17139],{"class":565,"line":8054},[563,17140,712],{"class":577},[563,17142,17143],{"class":565,"line":8059},[563,17144,937],{"emptyLinePlaceholder":936},[563,17146,17147,17149,17151,17153,17155,17157,17159,17162,17164],{"class":565,"line":8064},[563,17148,6066],{"class":573},[563,17150,590],{"class":577},[563,17152,6071],{"class":569},[563,17154,574],{"class":683},[563,17156,578],{"class":577},[563,17158,6480],{"class":573},[563,17160,17161],{"class":581},"📝 Note: Secrets are encrypted and stored separately by Cloudflare",[563,17163,578],{"class":577},[563,17165,1122],{"class":683},[563,17167,17168],{"class":565,"line":8069},[563,17169,718],{"class":577},[563,17171,17172],{"class":565,"line":8093},[563,17173,937],{"emptyLinePlaceholder":936},[563,17175,17176],{"class":565,"line":8117},[563,17177,3528],{"class":942},[563,17179,17180],{"class":565,"line":8124},[563,17181,17182],{"class":942}," * Main\n",[563,17184,17185],{"class":565,"line":8139},[563,17186,3543],{"class":942},[563,17188,17189,17191,17193,17195],{"class":565,"line":8163},[563,17190,6035],{"class":749},[563,17192,8193],{"class":569},[563,17194,764],{"class":577},[563,17196,646],{"class":577},[563,17198,17199,17201,17204,17206,17208,17210,17212,17214,17216,17218,17220],{"class":565,"line":8171},[563,17200,4973],{"class":749},[563,17202,17203],{"class":573}," envPath",[563,17205,926],{"class":577},[563,17207,15185],{"class":569},[563,17209,574],{"class":683},[563,17211,7782],{"class":573},[563,17213,795],{"class":577},[563,17215,1552],{"class":577},[563,17217,3276],{"class":581},[563,17219,578],{"class":577},[563,17221,1122],{"class":683},[563,17223,17224,17226,17228,17230,17232,17234,17236,17238,17240,17242,17244],{"class":565,"line":8176},[563,17225,4973],{"class":749},[563,17227,7773],{"class":573},[563,17229,926],{"class":577},[563,17231,15185],{"class":569},[563,17233,574],{"class":683},[563,17235,7782],{"class":573},[563,17237,795],{"class":577},[563,17239,1552],{"class":577},[563,17241,2315],{"class":581},[563,17243,578],{"class":577},[563,17245,1122],{"class":683},[563,17247,17248],{"class":565,"line":8181},[563,17249,937],{"emptyLinePlaceholder":936},[563,17251,17252,17254,17256,17258,17260,17262,17265,17267,17269],{"class":565,"line":8186},[563,17253,6066],{"class":573},[563,17255,590],{"class":577},[563,17257,6071],{"class":569},[563,17259,574],{"class":683},[563,17261,578],{"class":577},[563,17263,17264],{"class":581},"🔄 Syncing environment variables to wrangler.jsonc...",[563,17266,6480],{"class":573},[563,17268,578],{"class":577},[563,17270,1122],{"class":683},[563,17272,17273],{"class":565,"line":8200},[563,17274,937],{"emptyLinePlaceholder":936},[563,17276,17277,17279],{"class":565,"line":8243},[563,17278,6134],{"class":789},[563,17280,646],{"class":577},[563,17282,17283,17285,17287,17289,17291,17293,17296],{"class":565,"line":8275},[563,17284,1083],{"class":749},[563,17286,16033],{"class":573},[563,17288,926],{"class":577},[563,17290,15430],{"class":569},[563,17292,574],{"class":683},[563,17294,17295],{"class":573},"envPath",[563,17297,1122],{"class":683},[563,17299,17300,17303,17305,17307,17309,17311],{"class":565,"line":8316},[563,17301,17302],{"class":569},"    updateWranglerVars",[563,17304,574],{"class":683},[563,17306,7810],{"class":573},[563,17308,795],{"class":577},[563,17310,16033],{"class":573},[563,17312,1122],{"class":683},[563,17314,17315,17317,17319,17321,17323,17325],{"class":565,"line":8321},[563,17316,1813],{"class":577},[563,17318,6236],{"class":789},[563,17320,1272],{"class":683},[563,17322,5270],{"class":573},[563,17324,5028],{"class":683},[563,17326,1520],{"class":577},[563,17328,17329,17331,17333,17335,17337,17339,17342,17344,17346,17348,17350,17352],{"class":565,"line":8336},[563,17330,16430],{"class":573},[563,17332,590],{"class":577},[563,17334,5270],{"class":569},[563,17336,574],{"class":683},[563,17338,578],{"class":577},[563,17340,17341],{"class":581},"❌ Error:",[563,17343,578],{"class":577},[563,17345,795],{"class":577},[563,17347,5299],{"class":573},[563,17349,590],{"class":577},[563,17351,5438],{"class":573},[563,17353,1122],{"class":683},[563,17355,17356,17358,17360,17362,17364,17366],{"class":565,"line":8356},[563,17357,10086],{"class":573},[563,17359,590],{"class":577},[563,17361,8660],{"class":569},[563,17363,574],{"class":683},[563,17365,7158],{"class":1541},[563,17367,1122],{"class":683},[563,17369,17370],{"class":565,"line":8382},[563,17371,712],{"class":577},[563,17373,17374],{"class":565,"line":8407},[563,17375,718],{"class":577},[563,17377,17378],{"class":565,"line":8412},[563,17379,937],{"emptyLinePlaceholder":936},[563,17381,17382,17384],{"class":565,"line":8432},[563,17383,8584],{"class":569},[563,17385,609],{"class":573},[554,17387,17390],{"className":556,"code":17388,"filename":17389,"language":558,"meta":559,"style":559},"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",[518,17391,17392,17413,17417,17425,17441,17457,17471],{"__ignoreMap":559},[563,17393,17394,17396,17398,17400,17403,17405,17407,17409,17411],{"class":565,"line":566},[563,17395,1671],{"class":789},[563,17397,13004],{"class":789},[563,17399,917],{"class":577},[563,17401,17402],{"class":573}," Config",[563,17404,1560],{"class":577},[563,17406,1691],{"class":789},[563,17408,1552],{"class":577},[563,17410,4724],{"class":581},[563,17412,1699],{"class":577},[563,17414,17415],{"class":565,"line":649},[563,17416,937],{"emptyLinePlaceholder":936},[563,17418,17419,17421,17423],{"class":565,"line":633},[563,17420,1860],{"class":789},[563,17422,1951],{"class":789},[563,17424,646],{"class":577},[563,17426,17427,17430,17432,17434,17437,17439],{"class":565,"line":675},[563,17428,17429],{"class":683},"  schema",[563,17431,552],{"class":577},[563,17433,1552],{"class":577},[563,17435,17436],{"class":581},"./server/database/schema.ts",[563,17438,578],{"class":577},[563,17440,672],{"class":577},[563,17442,17443,17446,17448,17450,17453,17455],{"class":565,"line":698},[563,17444,17445],{"class":683},"  out",[563,17447,552],{"class":577},[563,17449,1552],{"class":577},[563,17451,17452],{"class":581},"./server/database/migrations",[563,17454,578],{"class":577},[563,17456,672],{"class":577},[563,17458,17459,17462,17464,17466,17469],{"class":565,"line":709},[563,17460,17461],{"class":683},"  dialect",[563,17463,552],{"class":577},[563,17465,1552],{"class":577},[563,17467,17468],{"class":581},"sqlite",[563,17470,1699],{"class":577},[563,17472,17473,17475,17478],{"class":565,"line":715},[563,17474,923],{"class":577},[563,17476,17477],{"class":789}," satisfies",[563,17479,17480],{"class":640}," Config\n",[554,17482,17485],{"className":2231,"code":17483,"filename":17484,"language":2234,"meta":559,"style":559},"# 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",[518,17486,17487,17492,17497,17501,17506,17511,17516,17521,17525,17530,17535,17539,17544,17549,17554,17559,17564,17569,17574,17578],{"__ignoreMap":559},[563,17488,17489],{"class":565,"line":566},[563,17490,17491],{"class":942},"# Production Environment Variables\n",[563,17493,17494],{"class":565,"line":649},[563,17495,17496],{"class":942},"# For Cloudflare Workers, use Wrangler Secrets instead of .env files\n",[563,17498,17499],{"class":565,"line":633},[563,17500,937],{"emptyLinePlaceholder":936},[563,17502,17503],{"class":565,"line":675},[563,17504,17505],{"class":942},"# How to set production secrets:\n",[563,17507,17508],{"class":565,"line":698},[563,17509,17510],{"class":942},"# wrangler secret put BETTER_AUTH_SECRET\n",[563,17512,17513],{"class":565,"line":709},[563,17514,17515],{"class":942},"# wrangler secret put NUXT_TURNSTILE_SECRET_KEY\n",[563,17517,17518],{"class":565,"line":715},[563,17519,17520],{"class":942},"# wrangler secret put RESEND_API_KEY\n",[563,17522,17523],{"class":565,"line":989},[563,17524,937],{"emptyLinePlaceholder":936},[563,17526,17527],{"class":565,"line":994},[563,17528,17529],{"class":942},"# Note: These are NOT stored in files in production.\n",[563,17531,17532],{"class":565,"line":1022},[563,17533,17534],{"class":942},"# They're encrypted secrets in Cloudflare Workers.\n",[563,17536,17537],{"class":565,"line":1061},[563,17538,937],{"emptyLinePlaceholder":936},[563,17540,17541],{"class":565,"line":1074},[563,17542,17543],{"class":942},"# For reference, these are the secrets you'll need:\n",[563,17545,17546],{"class":565,"line":850},[563,17547,17548],{"class":942},"# - BETTER_AUTH_SECRET (authentication)\n",[563,17550,17551],{"class":565,"line":851},[563,17552,17553],{"class":942},"# - BETTER_AUTH_URL (your production URL, e.g., https://example.com)\n",[563,17555,17556],{"class":565,"line":852},[563,17557,17558],{"class":942},"# - NUXT_TURNSTILE_SECRET_KEY (Cloudflare Turnstile)\n",[563,17560,17561],{"class":565,"line":1139},[563,17562,17563],{"class":942},"# - RESEND_API_KEY (email service, if using Resend)\n",[563,17565,17566],{"class":565,"line":1148},[563,17567,17568],{"class":942},"# - GOOGLE_CLIENT_ID (OAuth, if enabled)\n",[563,17570,17571],{"class":565,"line":1153},[563,17572,17573],{"class":942},"# - GOOGLE_CLIENT_SECRET (OAuth, if enabled)\n",[563,17575,17576],{"class":565,"line":1162},[563,17577,937],{"emptyLinePlaceholder":936},[563,17579,17580],{"class":565,"line":1167},[563,17581,17582],{"class":942},"# Non-sensitive variables go in wrangler.jsonc under \"vars\"\n",[836,17584],{},[488,17586,17588],{"id":17587},"troubleshooting","Troubleshooting",[481,17590,17591,17600,17601,17604,17605,2556,17607,17610],{},[806,17592,17593,17594,725,17597,17599],{},"Build outputting to ",[518,17595,17596],{},"dist",[518,17598,3489],{},"?","\nRemove ",[518,17602,17603],{},"@nuxthub/core"," from your modules, delete ",[518,17606,17596],{},[518,17608,17609],{},".nuxt"," folders, rebuild.",[481,17612,17613,17616,17617,17619,17620,17623,17624,17627,17628,590],{},[806,17614,17615],{},"D1 Database binding not found?","\nCheck ",[518,17618,2315],{}," has the right ",[518,17621,17622],{},"database_id"," and binding name is ",[518,17625,17626],{},"\"DB\"",". For local dev, use ",[518,17629,17630],{},"pnpm run preview:local",[481,17632,17633,17636,17637,17639,17640,2556,17642,17645,17646,590],{},[806,17634,17635],{},"KV binding not found?","\nMake sure ",[518,17638,2315],{}," has ",[518,17641,12516],{},[518,17643,17644],{},"preview_id"," set. Binding name should be ",[518,17647,17648],{},"\"KV\"",[481,17650,17651,17654,17655,17658],{},[806,17652,17653],{},"Getting 500 errors instead of 401/403?","\nYour error handler needs to call ",[518,17656,17657],{},"setResponseStatus(event, statusCode)"," to set the proper HTTP status.",[836,17660],{},[488,17662,17664],{"id":17663},"wrapping-up","Wrapping Up",[481,17666,17667],{},"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.",[481,17669,17670],{},"Some notes:",[813,17672,17673,17680],{},[816,17674,17675,17676,17679],{},"That triple-check pattern for bindings (",[518,17677,17678],{},"process.env.DB || globalThis.__env__?.DB || globalThis.DB",") looks weird but it's necessary for different Cloudflare environments",[816,17681,17682,17683,725,17685,17687],{},"If your keep using nuxthub, the build outputs to ",[518,17684,17596],{},[518,17686,3489],{},", you may need to adjust scripts accordingly",[481,17689,17690],{},"We hope this guide makes your migration to Cloudflare Workers as smooth as possible.",[836,17692],{},[2149,17694],{"button-icon":179,"button-text":2151,"className":17695,"color":478,"description":17696,"form-action":2156,"icon":2157,"title":17697},[2153,2154],"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?",[2160,17699,17700],{},"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":559,"searchDepth":649,"depth":649,"links":17702},[17703,17704,17705,17706,17709,17710,17711,17712,17713,17714,17715],{"id":2202,"depth":649,"text":2203},{"id":2221,"depth":649,"text":2222},{"id":2287,"depth":649,"text":2288},{"id":3118,"depth":649,"text":3119,"children":17707},[17708],{"id":3269,"depth":633,"text":3270},{"id":3336,"depth":649,"text":3337},{"id":3402,"depth":649,"text":3403},{"id":3472,"depth":649,"text":3473},{"id":3498,"depth":649,"text":3499},{"id":3510,"depth":649,"text":3511},{"id":17587,"depth":649,"text":17588},{"id":17663,"depth":649,"text":17664},"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":17719},"blog/posts/202512/nuxthub/migrate_from_nuxthub.webp",{},"/blog/migrate-nuxthub-to-wrangler",{"title":2193,"description":17717},"3.blog/1.migrate-nuxthub-to-wrangler",[2186,2189,17725,17726],"Self-Hosting","DevOps","SUxeyVBHRhG86jkfLVASiLsQSE7LMFiWbDsajFCgDX0",{"id":17729,"title":17730,"authors":17731,"badge":17734,"body":17736,"date":17980,"description":17981,"extension":2178,"image":17982,"meta":17984,"navigation":936,"ogImage":446,"path":17985,"published":936,"seo":17986,"stem":17987,"tags":17988,"__hash__":17992},"posts/3.blog/0.welcome.md","What This Blog Is About (And Why You Might Care)",[17732],{"name":467,"avatar":17733},{"src":469},{"label":17735},"Welcome",{"type":473,"value":17737,"toc":17964},[17738,17742,17745,17748,17762,17765,17769,17772,17776,17779,17782,17786,17789,17792,17796,17799,17802,17806,17809,17812,17816,17819,17822,17826,17829,17832,17836,17839,17842,17846,17857,17861,17864,17867,17871,17874,17936,17939,17943,17950,17953,17956,17958],[488,17739,17741],{"id":17740},"hey","Hey 👋",[481,17743,17744],{},"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.",[481,17746,17747],{},"This blog exists because when building SaaS products, we kept running into the same frustrations:",[813,17749,17750,17753,17756,17759],{},[816,17751,17752],{},"Deployment shouldn't cost $500/month for a product with 10 users",[816,17754,17755],{},"Most tutorials assume you're either a complete beginner or you already know everything",[816,17757,17758],{},"A lot of \"production-ready\" advice is overkill for bootstrapped projects",[816,17760,17761],{},"The space between \"hello world\" and \"enterprise architecture\" is weirdly empty",[481,17763,17764],{},"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.",[488,17766,17768],{"id":17767},"what-youll-find-here","What You'll Find Here",[481,17770,17771],{},"We write about whatever we're working on or whatever problem we just solved. The main topics:",[1184,17773,17775],{"id":17774},"cheap-but-good-deployments","Cheap (But Good) Deployments",[481,17777,17778],{},"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.",[481,17780,17781],{},"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.",[1184,17783,17785],{"id":17784},"nuxt-vue","Nuxt & Vue",[481,17787,17788],{},"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.",[481,17790,17791],{},"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.",[1184,17793,17795],{"id":17794},"django","Django",[481,17797,17798],{},"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.",[481,17800,17801],{},"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.",[1184,17803,17805],{"id":17804},"architecting-stuff-that-scales-but-doesnt-have-to-yet","Architecting Stuff That Scales (But Doesn't Have To Yet)",[481,17807,17808],{},"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.",[481,17810,17811],{},"Not \"best practices\" — just what actually works based on shipping real products. Sometimes the \"right\" architecture is the one you can ship this week.",[1184,17813,17815],{"id":17814},"building-saas-for-founders","Building SaaS for Founders",[481,17817,17818],{},"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.",[481,17820,17821],{},"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.",[1184,17823,17825],{"id":17824},"building-nuxt-modules","Building Nuxt Modules",[481,17827,17828],{},"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.",[481,17830,17831],{},"Posts will cover module patterns, how to structure reusable features, auto-imports, build-time vs runtime, that sort of thing.",[1184,17833,17835],{"id":17834},"privacy-first-web-development","Privacy-First Web Development",[481,17837,17838],{},"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.",[481,17840,17841],{},"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.",[488,17843,17845],{"id":17844},"what-this-blog-is-not","What This Blog Is Not",[813,17847,17848,17851,17854],{},[816,17849,17850],{},"Not \"enterprise architecture patterns\" — if you have 500 engineers, you don't need our advice",[816,17852,17853],{},"Not framework wars — use what you know, ship something",[816,17855,17856],{},"Not \"monetize your blog\" or \"7 ways to grow your audience\" — this isn't that kind of blog",[488,17858,17860],{"id":17859},"who-we-are","Who We Are",[481,17862,17863],{},"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.",[481,17865,17866],{},"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.",[488,17868,17870],{"id":17869},"whats-next","What's Next",[481,17872,17873],{},"We've got a backlog of posts we want to write:",[813,17875,17876,17882,17888,17894,17900,17906,17912,17918,17924,17930],{},[816,17877,17878,17881],{},[806,17879,17880],{},"Deploying Nuxt to Cloudflare Workers"," — already published, check it out if you haven't",[816,17883,17884,17887],{},[806,17885,17886],{},"Docker Swarm for SaaS apps"," — multi-node setup, zero-downtime deploys, secrets management",[816,17889,17890,17893],{},[806,17891,17892],{},"Building a multi-tenant SaaS backend"," — database design, isolation strategies, what actually matters",[816,17895,17896,17899],{},[806,17897,17898],{},"Nuxt module development"," — creating reusable features, auto-imports, best practices",[816,17901,17902,17905],{},[806,17903,17904],{},"Django + Nuxt integration"," — REST APIs, authentication, where to split frontend/backend logic",[816,17907,17908,17911],{},[806,17909,17910],{},"Cheap monitoring and logging"," — you don't need Datadog, we're building our own solution for this",[816,17913,17914,17917],{},[806,17915,17916],{},"How FB pixel actually tracks you"," — across every site that uses it, and why you might not need it",[816,17919,17920,17923],{},[806,17921,17922],{},"Email tracking explained"," — tracking pixels, SES open tracking, and how to avoid being tracked",[816,17925,17926,17929],{},[806,17927,17928],{},"Building landing pages without cookie consent"," — when you actually need it vs when you don't",[816,17931,17932,17935],{},[806,17933,17934],{},"Privacy-focused analytics"," — Umami (self-hosted or cloud), Fathom, and other privacy-first options that don't violate privacy",[481,17937,17938],{},"Posts get published as we write them. No schedule, no content calendar. Just whenever we've got something worth sharing.",[488,17940,17942],{"id":17941},"subscribe-follow-whatever","Subscribe? Follow? Whatever",[481,17944,17945,17946,17949],{},"If you want updates when new posts drop, there's an RSS feed (",[518,17947,17948],{},"/blog/rss.xml",") or you can check back whenever. No email newsletters or any of that.",[481,17951,17952],{},"If you've got questions or you're stuck on something, feel free to reach out.",[481,17954,17955],{},"Alright, that's enough intro. Let's build some stuff.",[836,17957],{},[2149,17959],{"button-icon":179,"button-text":2151,"className":17960,"color":478,"description":17961,"form-action":2156,"icon":17962,"title":17963},[2153,2154],"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.","i-lucide-layout-template","Need a Landing Page?",{"title":559,"searchDepth":649,"depth":649,"links":17965},[17966,17967,17976,17977,17978,17979],{"id":17740,"depth":649,"text":17741},{"id":17767,"depth":649,"text":17768,"children":17968},[17969,17970,17971,17972,17973,17974,17975],{"id":17774,"depth":633,"text":17775},{"id":17784,"depth":633,"text":17785},{"id":17794,"depth":633,"text":17795},{"id":17804,"depth":633,"text":17805},{"id":17814,"depth":633,"text":17815},{"id":17824,"depth":633,"text":17825},{"id":17834,"depth":633,"text":17835},{"id":17844,"depth":649,"text":17845},{"id":17859,"depth":649,"text":17860},{"id":17869,"depth":649,"text":17870},{"id":17941,"depth":649,"text":17942},"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":17983},"blog/posts/202512/welcome/welcome_small.webp",{},"/blog/welcome",{"title":17730,"description":17981},"3.blog/0.welcome",[17989,17726,2186,17990,17991],"SaaS","Docker","Deployment","0vvobUFRgvMZNa-Bhp4MR20X9Q7Ud6_w9z1C0Z52e7U",1772977470499]