[{"data":1,"prerenderedAt":3376},["ShallowReactive",2],{"navigation":3,"examples-nav":224,"-examples-websocket":353,"-examples-websocket-surround":3371},[4,83,208,214,221],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":209,"path":210,"stem":211,"children":212,"icon":36},"Config","/config","3.config/0.index",[213],{"title":209,"path":210,"stem":211,"icon":36},{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Examples","/examples","4.examples/0.index",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-folder-code",{"title":5,"path":222,"stem":223},"/","index",[225,230,235,239,243,246,251,255,259,263,267,271,275,280,284,287,291,295,299,304,308,313,317,321,325,329,333,337,341,345,349],{"title":226,"description":227,"category":228,"path":229},"API Routes","File-based API routing with HTTP method support and dynamic parameters.","features","/examples/api-routes/readme",{"title":231,"description":232,"category":233,"path":234},"Auto Imports","Automatic imports for utilities and composables.","config","/examples/auto-imports/readme",{"title":236,"description":237,"category":228,"path":238},"Cached Handler","Cache route responses with configurable bypass logic.","/examples/cached-handler/readme",{"title":240,"description":241,"category":228,"path":242},"Custom Error Handler","Customize error responses with a global error handler.","/examples/custom-error-handler/readme",{"title":38,"description":244,"category":228,"path":245},"Built-in database support with SQL template literals.","/examples/database/readme",{"title":247,"description":248,"category":249,"path":250},"Elysia","Integrate Elysia with Nitro using the server entry.","backend frameworks","/examples/elysia/readme",{"title":252,"description":253,"category":249,"path":254},"Express","Integrate Express with Nitro using the server entry.","/examples/express/readme",{"title":256,"description":257,"category":249,"path":258},"Fastify","Integrate Fastify with Nitro using the server entry.","/examples/fastify/readme",{"title":260,"description":261,"category":228,"path":262},"Hello World","Minimal Nitro server using the web standard fetch handler.","/examples/hello-world/readme",{"title":264,"description":265,"category":249,"path":266},"Hono","Integrate Hono with Nitro using the server entry.","/examples/hono/readme",{"title":268,"description":269,"category":233,"path":270},"Import Alias","Custom import aliases for cleaner module paths.","/examples/import-alias/readme",{"title":272,"description":273,"category":228,"path":274},"Middleware","Request middleware for authentication, logging, and request modification.","/examples/middleware/readme",{"title":276,"description":277,"category":278,"path":279},"Mono JSX","Server-side JSX rendering in Nitro with mono-jsx.","server side rendering","/examples/mono-jsx/readme",{"title":281,"description":282,"category":278,"path":283},"Nano JSX","Server-side JSX rendering in Nitro with nano-jsx.","/examples/nano-jsx/readme",{"title":48,"description":285,"category":228,"path":286},"Extend Nitro with custom plugins for hooks and lifecycle events.","/examples/plugins/readme",{"title":288,"description":289,"category":278,"path":290},"Custom Renderer","Build a custom HTML renderer in Nitro with server-side data fetching.","/examples/renderer/readme",{"title":292,"description":293,"category":233,"path":294},"Runtime Config","Environment-aware configuration with runtime access.","/examples/runtime-config/readme",{"title":296,"description":297,"category":228,"path":298},"Server Fetch","Internal server-to-server requests without network overhead.","/examples/server-fetch/readme",{"title":300,"description":301,"category":302,"path":303},"Shiki","Server-side syntax highlighting in Nitro with Shiki.","integrations","/examples/shiki/readme",{"title":305,"description":306,"category":228,"path":307},"Virtual Routes","Define routes programmatically using Nitro's virtual module system.","/examples/virtual-routes/readme",{"title":309,"description":310,"category":311,"path":312},"Vite Nitro Plugin","Use Nitro as a Vite plugin for programmatic configuration.","vite","/examples/vite-nitro-plugin/readme",{"title":314,"description":315,"category":311,"path":316},"Vite RSC","React Server Components with Vite and Nitro.","/examples/vite-rsc/readme",{"title":318,"description":319,"category":278,"path":320},"Vite SSR HTML","Server-side rendering with vanilla HTML, Vite, and Nitro.","/examples/vite-ssr-html/readme",{"title":322,"description":323,"category":278,"path":324},"SSR with Preact","Server-side rendering with Preact in Nitro using Vite.","/examples/vite-ssr-preact/readme",{"title":326,"description":327,"category":278,"path":328},"SSR with React","Server-side rendering with React in Nitro using Vite.","/examples/vite-ssr-react/readme",{"title":330,"description":331,"category":278,"path":332},"SSR with SolidJS","Server-side rendering with SolidJS in Nitro using Vite.","/examples/vite-ssr-solid/readme",{"title":334,"description":335,"category":278,"path":336},"SSR with TanStack Router","Client-side routing with TanStack Router in Nitro using Vite.","/examples/vite-ssr-tsr-react/readme",{"title":338,"description":339,"category":278,"path":340},"SSR with TanStack Start","Full-stack React with TanStack Start in Nitro using Vite.","/examples/vite-ssr-tss-react/readme",{"title":342,"description":343,"category":278,"path":344},"SSR with Vue Router","Server-side rendering with Vue Router in Nitro using Vite.","/examples/vite-ssr-vue-router/readme",{"title":346,"description":347,"category":311,"path":348},"Vite + tRPC","End-to-end typesafe APIs with tRPC in Nitro using Vite.","/examples/vite-trpc/readme",{"title":350,"description":351,"category":228,"path":352},"WebSocket","Real-time bidirectional communication with WebSocket support.","/examples/websocket/readme",{"id":354,"title":350,"body":355,"category":228,"description":351,"extension":3364,"icon":3365,"meta":3366,"navigation":3367,"path":352,"seo":3368,"stem":3369,"__hash__":3370},"examples/examples/websocket/README.md",{"type":356,"value":357,"toc":3360},"minimark",[358,3057,3060,3065,3071,3329,3336,3340,3357],[359,360,363,2523,2597,2683,2707,2761],"code-tree",{":expand-all":361,"default-value":362,"expand-all":5},"true","routes/_ws.ts",[364,365,370],"pre",{"className":366,"code":367,"filename":368,"language":369,"meta":5,"style":5},"language-html shiki shiki-themes github-light github-dark github-dark","\u003Chtml lang=\"en\" data-theme=\"dark\">\n  \u003Chead>\n    \u003Ctitle>CrossWS Test Page\u003C/title>\n    \u003Cscript src=\"https://cdn.tailwindcss.com\">\u003C/script>\n    \u003Cstyle>\n      body {\n        background-color: #1a1a1a;\n      }\n    \u003C/style>\n    \u003Cscript type=\"module\">\n      import { createApp, reactive, nextTick } from \"https://esm.sh/petite-vue@0.4.1\";\n\n      let ws;\n\n      const store = reactive({\n        message: \"\",\n        messages: [],\n      });\n\n      const scroll = () => {\n        nextTick(() => {\n          const el = document.querySelector(\"#messages\");\n          el.scrollTop = el.scrollHeight;\n          el.scrollTo({\n            top: el.scrollHeight,\n            behavior: \"smooth\",\n          });\n        });\n      };\n\n      const format = async () => {\n        for (const message of store.messages) {\n          if (!message._fmt && message.text.startsWith(\"{\")) {\n            message._fmt = true;\n            const { codeToHtml } = await import(\"https://esm.sh/shiki@1.0.0\");\n            const str = JSON.stringify(JSON.parse(message.text), null, 2);\n            message.formattedText = await codeToHtml(str, {\n              lang: \"json\",\n              theme: \"dark-plus\",\n            });\n          }\n        }\n      };\n\n      const log = (user, ...args) => {\n        console.log(\"[ws]\", user, ...args);\n        store.messages.push({\n          text: args.join(\" \"),\n          formattedText: \"\",\n          user: user,\n          date: new Date().toLocaleString(),\n        });\n        scroll();\n        format();\n      };\n\n      const connect = async () => {\n        const isSecure = location.protocol === \"https:\";\n        const url = (isSecure ? \"wss://\" : \"ws://\") + location.host + \"/_ws\";\n        if (ws) {\n          log(\"ws\", \"Closing previous connection before reconnecting...\");\n          ws.close();\n          clear();\n        }\n\n        log(\"ws\", \"Connecting to\", url, \"...\");\n        ws = new WebSocket(url);\n\n        ws.addEventListener(\"message\", async (event) => {\n          let data = typeof event.data === \"string\" ? event.data : await event.data.text();\n          const { user = \"system\", message = \"\" } = data.startsWith(\"{\")\n            ? JSON.parse(data)\n            : { message: data };\n          log(user, typeof message === \"string\" ? message : JSON.stringify(message));\n        });\n\n        await new Promise((resolve) => ws.addEventListener(\"open\", resolve));\n        log(\"ws\", \"Connected!\");\n      };\n\n      const clear = () => {\n        store.messages.splice(0, store.messages.length);\n        log(\"system\", \"previous messages cleared\");\n      };\n\n      const send = () => {\n        console.log(\"sending message...\");\n        if (store.message) {\n          ws.send(store.message);\n        }\n        store.message = \"\";\n      };\n\n      const ping = () => {\n        log(\"ws\", \"Sending ping\");\n        ws.send(\"ping\");\n      };\n\n      createApp({\n        store,\n        send,\n        ping,\n        clear,\n        connect,\n        rand: Math.random(),\n      }).mount();\n\n      await connect();\n    \u003C/script>\n  \u003C/head>\n  \u003Cbody class=\"h-screen flex flex-col justify-between\">\n    \u003Cmain v-scope=\"{}\">\n      \u003C!-- Messages -->\n      \u003Cdiv id=\"messages\" class=\"flex-grow flex flex-col justify-end px-4 py-8\">\n        \u003Cdiv class=\"flex items-center mb-4\" v-for=\"message in store.messages\">\n          \u003Cdiv class=\"flex flex-col\">\n            \u003Cp class=\"text-gray-500 mb-1 text-xs ml-10\">{{ message.user }}\u003C/p>\n            \u003Cdiv class=\"flex items-center\">\n              \u003Cimg\n                :src=\"'https://www.gravatar.com/avatar/' + encodeURIComponent(message.user + rand) + '?s=512&d=monsterid'\"\n                alt=\"Avatar\"\n                class=\"w-8 h-8 rounded-full\"\n              />\n              \u003Cdiv class=\"ml-2 bg-gray-800 rounded-lg p-2\">\n                \u003Cp\n                  v-if=\"message.formattedText\"\n                  class=\"overflow-x-scroll\"\n                  v-html=\"message.formattedText\"\n                >\u003C/p>\n                \u003Cp v-else class=\"text-white\">{{ message.text }}\u003C/p>\n              \u003C/div>\n            \u003C/div>\n            \u003Cp class=\"text-gray-500 mt-1 text-xs ml-10\">{{ message.date }}\u003C/p>\n          \u003C/div>\n        \u003C/div>\n      \u003C/div>\n\n      \u003C!-- Chatbox -->\n      \u003Cdiv class=\"bg-gray-800 px-4 py-2 flex items-center justify-between fixed bottom-0 w-full\">\n        \u003Cdiv class=\"w-full min-w-6\">\n          \u003Cinput\n            type=\"text\"\n            placeholder=\"Type your message...\"\n            class=\"w-full rounded-l-lg px-4 py-2 bg-gray-700 text-white focus:outline-none focus:ring focus:border-blue-300\"\n            @keydown.enter=\"send\"\n            v-model=\"store.message\"\n          />\n        \u003C/div>\n        \u003Cdiv class=\"flex\">\n          \u003Cbutton class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\" @click=\"send\">\n            Send\n          \u003C/button>\n          \u003Cbutton class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\" @click=\"ping\">\n            Ping\n          \u003C/button>\n          \u003Cbutton class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\" @click=\"connect\">\n            Reconnect\n          \u003C/button>\n          \u003Cbutton\n            class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded-r-lg\"\n            @click=\"clear\"\n          >\n            Clear\n          \u003C/button>\n        \u003C/div>\n      \u003C/div>\n    \u003C/main>\n  \u003C/body>\n\u003C/html>\n`\n","index.html","html",[371,372,373,407,418,434,457,467,476,492,498,508,525,543,550,559,564,582,594,600,606,611,629,642,668,679,690,696,707,713,719,725,730,749,770,801,814,844,887,903,914,925,931,937,943,948,953,984,1006,1017,1034,1044,1050,1071,1076,1085,1093,1098,1103,1121,1143,1183,1192,1210,1221,1229,1234,1239,1262,1279,1284,1314,1354,1394,1409,1418,1451,1456,1461,1495,1511,1516,1521,1537,1558,1575,1580,1585,1601,1615,1623,1634,1639,1651,1656,1661,1677,1693,1707,1712,1717,1725,1731,1737,1743,1749,1755,1766,1777,1782,1792,1801,1811,1829,1847,1854,1880,1905,1922,1945,1961,1970,1981,1992,2003,2009,2025,2034,2045,2056,2066,2076,2100,2110,2120,2141,2151,2161,2171,2176,2182,2198,2214,2222,2233,2244,2255,2266,2277,2283,2292,2308,2333,2339,2348,2369,2375,2384,2406,2412,2421,2429,2439,2450,2456,2462,2471,2480,2489,2498,2507,2517],"code",{"__ignoreMap":5},[374,375,378,382,385,389,392,396,399,401,404],"span",{"class":376,"line":377},"line",1,[374,379,381],{"class":380},"slsVL","\u003C",[374,383,369],{"class":384},"sByVh",[374,386,388],{"class":387},"shcOC"," lang",[374,390,391],{"class":380},"=",[374,393,395],{"class":394},"sfrk1","\"en\"",[374,397,398],{"class":387}," data-theme",[374,400,391],{"class":380},[374,402,403],{"class":394},"\"dark\"",[374,405,406],{"class":380},">\n",[374,408,410,413,416],{"class":376,"line":409},2,[374,411,412],{"class":380},"  \u003C",[374,414,415],{"class":384},"head",[374,417,406],{"class":380},[374,419,421,424,427,430,432],{"class":376,"line":420},3,[374,422,423],{"class":380},"    \u003C",[374,425,426],{"class":384},"title",[374,428,429],{"class":380},">CrossWS Test Page\u003C/",[374,431,426],{"class":384},[374,433,406],{"class":380},[374,435,437,439,442,445,447,450,453,455],{"class":376,"line":436},4,[374,438,423],{"class":380},[374,440,441],{"class":384},"script",[374,443,444],{"class":387}," src",[374,446,391],{"class":380},[374,448,449],{"class":394},"\"https://cdn.tailwindcss.com\"",[374,451,452],{"class":380},">\u003C/",[374,454,441],{"class":384},[374,456,406],{"class":380},[374,458,460,462,465],{"class":376,"line":459},5,[374,461,423],{"class":380},[374,463,464],{"class":384},"style",[374,466,406],{"class":380},[374,468,470,473],{"class":376,"line":469},6,[374,471,472],{"class":384},"      body",[374,474,475],{"class":380}," {\n",[374,477,479,483,486,489],{"class":376,"line":478},7,[374,480,482],{"class":481},"suiK_","        background-color",[374,484,485],{"class":380},": ",[374,487,488],{"class":481},"#1a1a1a",[374,490,491],{"class":380},";\n",[374,493,495],{"class":376,"line":494},8,[374,496,497],{"class":380},"      }\n",[374,499,501,504,506],{"class":376,"line":500},9,[374,502,503],{"class":380},"    \u003C/",[374,505,464],{"class":384},[374,507,406],{"class":380},[374,509,511,513,515,518,520,523],{"class":376,"line":510},10,[374,512,423],{"class":380},[374,514,441],{"class":384},[374,516,517],{"class":387}," type",[374,519,391],{"class":380},[374,521,522],{"class":394},"\"module\"",[374,524,406],{"class":380},[374,526,528,532,535,538,541],{"class":376,"line":527},11,[374,529,531],{"class":530},"so5gQ","      import",[374,533,534],{"class":380}," { createApp, reactive, nextTick } ",[374,536,537],{"class":530},"from",[374,539,540],{"class":394}," \"https://esm.sh/petite-vue@0.4.1\"",[374,542,491],{"class":380},[374,544,546],{"class":376,"line":545},12,[374,547,549],{"emptyLinePlaceholder":548},true,"\n",[374,551,553,556],{"class":376,"line":552},13,[374,554,555],{"class":530},"      let",[374,557,558],{"class":380}," ws;\n",[374,560,562],{"class":376,"line":561},14,[374,563,549],{"emptyLinePlaceholder":548},[374,565,567,570,573,576,579],{"class":376,"line":566},15,[374,568,569],{"class":530},"      const",[374,571,572],{"class":481}," store",[374,574,575],{"class":530}," =",[374,577,578],{"class":387}," reactive",[374,580,581],{"class":380},"({\n",[374,583,585,588,591],{"class":376,"line":584},16,[374,586,587],{"class":380},"        message: ",[374,589,590],{"class":394},"\"\"",[374,592,593],{"class":380},",\n",[374,595,597],{"class":376,"line":596},17,[374,598,599],{"class":380},"        messages: [],\n",[374,601,603],{"class":376,"line":602},18,[374,604,605],{"class":380},"      });\n",[374,607,609],{"class":376,"line":608},19,[374,610,549],{"emptyLinePlaceholder":548},[374,612,614,616,619,621,624,627],{"class":376,"line":613},20,[374,615,569],{"class":530},[374,617,618],{"class":387}," scroll",[374,620,575],{"class":530},[374,622,623],{"class":380}," () ",[374,625,626],{"class":530},"=>",[374,628,475],{"class":380},[374,630,632,635,638,640],{"class":376,"line":631},21,[374,633,634],{"class":387},"        nextTick",[374,636,637],{"class":380},"(() ",[374,639,626],{"class":530},[374,641,475],{"class":380},[374,643,645,648,651,653,656,659,662,665],{"class":376,"line":644},22,[374,646,647],{"class":530},"          const",[374,649,650],{"class":481}," el",[374,652,575],{"class":530},[374,654,655],{"class":380}," document.",[374,657,658],{"class":387},"querySelector",[374,660,661],{"class":380},"(",[374,663,664],{"class":394},"\"#messages\"",[374,666,667],{"class":380},");\n",[374,669,671,674,676],{"class":376,"line":670},23,[374,672,673],{"class":380},"          el.scrollTop ",[374,675,391],{"class":530},[374,677,678],{"class":380}," el.scrollHeight;\n",[374,680,682,685,688],{"class":376,"line":681},24,[374,683,684],{"class":380},"          el.",[374,686,687],{"class":387},"scrollTo",[374,689,581],{"class":380},[374,691,693],{"class":376,"line":692},25,[374,694,695],{"class":380},"            top: el.scrollHeight,\n",[374,697,699,702,705],{"class":376,"line":698},26,[374,700,701],{"class":380},"            behavior: ",[374,703,704],{"class":394},"\"smooth\"",[374,706,593],{"class":380},[374,708,710],{"class":376,"line":709},27,[374,711,712],{"class":380},"          });\n",[374,714,716],{"class":376,"line":715},28,[374,717,718],{"class":380},"        });\n",[374,720,722],{"class":376,"line":721},29,[374,723,724],{"class":380},"      };\n",[374,726,728],{"class":376,"line":727},30,[374,729,549],{"emptyLinePlaceholder":548},[374,731,733,735,738,740,743,745,747],{"class":376,"line":732},31,[374,734,569],{"class":530},[374,736,737],{"class":387}," format",[374,739,575],{"class":530},[374,741,742],{"class":530}," async",[374,744,623],{"class":380},[374,746,626],{"class":530},[374,748,475],{"class":380},[374,750,752,755,758,761,764,767],{"class":376,"line":751},32,[374,753,754],{"class":530},"        for",[374,756,757],{"class":380}," (",[374,759,760],{"class":530},"const",[374,762,763],{"class":481}," message",[374,765,766],{"class":530}," of",[374,768,769],{"class":380}," store.messages) {\n",[374,771,773,776,778,781,784,787,790,793,795,798],{"class":376,"line":772},33,[374,774,775],{"class":530},"          if",[374,777,757],{"class":380},[374,779,780],{"class":530},"!",[374,782,783],{"class":380},"message._fmt ",[374,785,786],{"class":530},"&&",[374,788,789],{"class":380}," message.text.",[374,791,792],{"class":387},"startsWith",[374,794,661],{"class":380},[374,796,797],{"class":394},"\"{\"",[374,799,800],{"class":380},")) {\n",[374,802,804,807,809,812],{"class":376,"line":803},34,[374,805,806],{"class":380},"            message._fmt ",[374,808,391],{"class":530},[374,810,811],{"class":481}," true",[374,813,491],{"class":380},[374,815,817,820,823,826,829,831,834,837,839,842],{"class":376,"line":816},35,[374,818,819],{"class":530},"            const",[374,821,822],{"class":380}," { ",[374,824,825],{"class":481},"codeToHtml",[374,827,828],{"class":380}," } ",[374,830,391],{"class":530},[374,832,833],{"class":530}," await",[374,835,836],{"class":530}," import",[374,838,661],{"class":380},[374,840,841],{"class":394},"\"https://esm.sh/shiki@1.0.0\"",[374,843,667],{"class":380},[374,845,847,849,852,854,857,860,863,865,868,870,873,876,879,882,885],{"class":376,"line":846},36,[374,848,819],{"class":530},[374,850,851],{"class":481}," str",[374,853,575],{"class":530},[374,855,856],{"class":481}," JSON",[374,858,859],{"class":380},".",[374,861,862],{"class":387},"stringify",[374,864,661],{"class":380},[374,866,867],{"class":481},"JSON",[374,869,859],{"class":380},[374,871,872],{"class":387},"parse",[374,874,875],{"class":380},"(message.text), ",[374,877,878],{"class":481},"null",[374,880,881],{"class":380},", ",[374,883,884],{"class":481},"2",[374,886,667],{"class":380},[374,888,890,893,895,897,900],{"class":376,"line":889},37,[374,891,892],{"class":380},"            message.formattedText ",[374,894,391],{"class":530},[374,896,833],{"class":530},[374,898,899],{"class":387}," codeToHtml",[374,901,902],{"class":380},"(str, {\n",[374,904,906,909,912],{"class":376,"line":905},38,[374,907,908],{"class":380},"              lang: ",[374,910,911],{"class":394},"\"json\"",[374,913,593],{"class":380},[374,915,917,920,923],{"class":376,"line":916},39,[374,918,919],{"class":380},"              theme: ",[374,921,922],{"class":394},"\"dark-plus\"",[374,924,593],{"class":380},[374,926,928],{"class":376,"line":927},40,[374,929,930],{"class":380},"            });\n",[374,932,934],{"class":376,"line":933},41,[374,935,936],{"class":380},"          }\n",[374,938,940],{"class":376,"line":939},42,[374,941,942],{"class":380},"        }\n",[374,944,946],{"class":376,"line":945},43,[374,947,724],{"class":380},[374,949,951],{"class":376,"line":950},44,[374,952,549],{"emptyLinePlaceholder":548},[374,954,956,958,961,963,965,969,971,974,977,980,982],{"class":376,"line":955},45,[374,957,569],{"class":530},[374,959,960],{"class":387}," log",[374,962,575],{"class":530},[374,964,757],{"class":380},[374,966,968],{"class":967},"sQHwn","user",[374,970,881],{"class":380},[374,972,973],{"class":530},"...",[374,975,976],{"class":967},"args",[374,978,979],{"class":380},") ",[374,981,626],{"class":530},[374,983,475],{"class":380},[374,985,987,990,993,995,998,1001,1003],{"class":376,"line":986},46,[374,988,989],{"class":380},"        console.",[374,991,992],{"class":387},"log",[374,994,661],{"class":380},[374,996,997],{"class":394},"\"[ws]\"",[374,999,1000],{"class":380},", user, ",[374,1002,973],{"class":530},[374,1004,1005],{"class":380},"args);\n",[374,1007,1009,1012,1015],{"class":376,"line":1008},47,[374,1010,1011],{"class":380},"        store.messages.",[374,1013,1014],{"class":387},"push",[374,1016,581],{"class":380},[374,1018,1020,1023,1026,1028,1031],{"class":376,"line":1019},48,[374,1021,1022],{"class":380},"          text: args.",[374,1024,1025],{"class":387},"join",[374,1027,661],{"class":380},[374,1029,1030],{"class":394},"\" \"",[374,1032,1033],{"class":380},"),\n",[374,1035,1037,1040,1042],{"class":376,"line":1036},49,[374,1038,1039],{"class":380},"          formattedText: ",[374,1041,590],{"class":394},[374,1043,593],{"class":380},[374,1045,1047],{"class":376,"line":1046},50,[374,1048,1049],{"class":380},"          user: user,\n",[374,1051,1053,1056,1059,1062,1065,1068],{"class":376,"line":1052},51,[374,1054,1055],{"class":380},"          date: ",[374,1057,1058],{"class":530},"new",[374,1060,1061],{"class":387}," Date",[374,1063,1064],{"class":380},"().",[374,1066,1067],{"class":387},"toLocaleString",[374,1069,1070],{"class":380},"(),\n",[374,1072,1074],{"class":376,"line":1073},52,[374,1075,718],{"class":380},[374,1077,1079,1082],{"class":376,"line":1078},53,[374,1080,1081],{"class":387},"        scroll",[374,1083,1084],{"class":380},"();\n",[374,1086,1088,1091],{"class":376,"line":1087},54,[374,1089,1090],{"class":387},"        format",[374,1092,1084],{"class":380},[374,1094,1096],{"class":376,"line":1095},55,[374,1097,724],{"class":380},[374,1099,1101],{"class":376,"line":1100},56,[374,1102,549],{"emptyLinePlaceholder":548},[374,1104,1106,1108,1111,1113,1115,1117,1119],{"class":376,"line":1105},57,[374,1107,569],{"class":530},[374,1109,1110],{"class":387}," connect",[374,1112,575],{"class":530},[374,1114,742],{"class":530},[374,1116,623],{"class":380},[374,1118,626],{"class":530},[374,1120,475],{"class":380},[374,1122,1124,1127,1130,1132,1135,1138,1141],{"class":376,"line":1123},58,[374,1125,1126],{"class":530},"        const",[374,1128,1129],{"class":481}," isSecure",[374,1131,575],{"class":530},[374,1133,1134],{"class":380}," location.protocol ",[374,1136,1137],{"class":530},"===",[374,1139,1140],{"class":394}," \"https:\"",[374,1142,491],{"class":380},[374,1144,1146,1148,1151,1153,1156,1159,1162,1165,1168,1170,1173,1176,1178,1181],{"class":376,"line":1145},59,[374,1147,1126],{"class":530},[374,1149,1150],{"class":481}," url",[374,1152,575],{"class":530},[374,1154,1155],{"class":380}," (isSecure ",[374,1157,1158],{"class":530},"?",[374,1160,1161],{"class":394}," \"wss://\"",[374,1163,1164],{"class":530}," :",[374,1166,1167],{"class":394}," \"ws://\"",[374,1169,979],{"class":380},[374,1171,1172],{"class":530},"+",[374,1174,1175],{"class":380}," location.host ",[374,1177,1172],{"class":530},[374,1179,1180],{"class":394}," \"/_ws\"",[374,1182,491],{"class":380},[374,1184,1186,1189],{"class":376,"line":1185},60,[374,1187,1188],{"class":530},"        if",[374,1190,1191],{"class":380}," (ws) {\n",[374,1193,1195,1198,1200,1203,1205,1208],{"class":376,"line":1194},61,[374,1196,1197],{"class":387},"          log",[374,1199,661],{"class":380},[374,1201,1202],{"class":394},"\"ws\"",[374,1204,881],{"class":380},[374,1206,1207],{"class":394},"\"Closing previous connection before reconnecting...\"",[374,1209,667],{"class":380},[374,1211,1213,1216,1219],{"class":376,"line":1212},62,[374,1214,1215],{"class":380},"          ws.",[374,1217,1218],{"class":387},"close",[374,1220,1084],{"class":380},[374,1222,1224,1227],{"class":376,"line":1223},63,[374,1225,1226],{"class":387},"          clear",[374,1228,1084],{"class":380},[374,1230,1232],{"class":376,"line":1231},64,[374,1233,942],{"class":380},[374,1235,1237],{"class":376,"line":1236},65,[374,1238,549],{"emptyLinePlaceholder":548},[374,1240,1242,1245,1247,1249,1251,1254,1257,1260],{"class":376,"line":1241},66,[374,1243,1244],{"class":387},"        log",[374,1246,661],{"class":380},[374,1248,1202],{"class":394},[374,1250,881],{"class":380},[374,1252,1253],{"class":394},"\"Connecting to\"",[374,1255,1256],{"class":380},", url, ",[374,1258,1259],{"class":394},"\"...\"",[374,1261,667],{"class":380},[374,1263,1265,1268,1270,1273,1276],{"class":376,"line":1264},67,[374,1266,1267],{"class":380},"        ws ",[374,1269,391],{"class":530},[374,1271,1272],{"class":530}," new",[374,1274,1275],{"class":387}," WebSocket",[374,1277,1278],{"class":380},"(url);\n",[374,1280,1282],{"class":376,"line":1281},68,[374,1283,549],{"emptyLinePlaceholder":548},[374,1285,1287,1290,1293,1295,1298,1300,1303,1305,1308,1310,1312],{"class":376,"line":1286},69,[374,1288,1289],{"class":380},"        ws.",[374,1291,1292],{"class":387},"addEventListener",[374,1294,661],{"class":380},[374,1296,1297],{"class":394},"\"message\"",[374,1299,881],{"class":380},[374,1301,1302],{"class":530},"async",[374,1304,757],{"class":380},[374,1306,1307],{"class":967},"event",[374,1309,979],{"class":380},[374,1311,626],{"class":530},[374,1313,475],{"class":380},[374,1315,1317,1320,1323,1325,1328,1331,1333,1336,1339,1341,1344,1346,1349,1352],{"class":376,"line":1316},70,[374,1318,1319],{"class":530},"          let",[374,1321,1322],{"class":380}," data ",[374,1324,391],{"class":530},[374,1326,1327],{"class":530}," typeof",[374,1329,1330],{"class":380}," event.data ",[374,1332,1137],{"class":530},[374,1334,1335],{"class":394}," \"string\"",[374,1337,1338],{"class":530}," ?",[374,1340,1330],{"class":380},[374,1342,1343],{"class":530},":",[374,1345,833],{"class":530},[374,1347,1348],{"class":380}," event.data.",[374,1350,1351],{"class":387},"text",[374,1353,1084],{"class":380},[374,1355,1357,1359,1361,1363,1365,1368,1370,1373,1375,1378,1380,1382,1385,1387,1389,1391],{"class":376,"line":1356},71,[374,1358,647],{"class":530},[374,1360,822],{"class":380},[374,1362,968],{"class":481},[374,1364,575],{"class":530},[374,1366,1367],{"class":394}," \"system\"",[374,1369,881],{"class":380},[374,1371,1372],{"class":481},"message",[374,1374,575],{"class":530},[374,1376,1377],{"class":394}," \"\"",[374,1379,828],{"class":380},[374,1381,391],{"class":530},[374,1383,1384],{"class":380}," data.",[374,1386,792],{"class":387},[374,1388,661],{"class":380},[374,1390,797],{"class":394},[374,1392,1393],{"class":380},")\n",[374,1395,1397,1400,1402,1404,1406],{"class":376,"line":1396},72,[374,1398,1399],{"class":530},"            ?",[374,1401,856],{"class":481},[374,1403,859],{"class":380},[374,1405,872],{"class":387},[374,1407,1408],{"class":380},"(data)\n",[374,1410,1412,1415],{"class":376,"line":1411},73,[374,1413,1414],{"class":530},"            :",[374,1416,1417],{"class":380}," { message: data };\n",[374,1419,1421,1423,1426,1429,1432,1434,1436,1438,1440,1442,1444,1446,1448],{"class":376,"line":1420},74,[374,1422,1197],{"class":387},[374,1424,1425],{"class":380},"(user, ",[374,1427,1428],{"class":530},"typeof",[374,1430,1431],{"class":380}," message ",[374,1433,1137],{"class":530},[374,1435,1335],{"class":394},[374,1437,1338],{"class":530},[374,1439,1431],{"class":380},[374,1441,1343],{"class":530},[374,1443,856],{"class":481},[374,1445,859],{"class":380},[374,1447,862],{"class":387},[374,1449,1450],{"class":380},"(message));\n",[374,1452,1454],{"class":376,"line":1453},75,[374,1455,718],{"class":380},[374,1457,1459],{"class":376,"line":1458},76,[374,1460,549],{"emptyLinePlaceholder":548},[374,1462,1464,1467,1469,1472,1475,1478,1480,1482,1485,1487,1489,1492],{"class":376,"line":1463},77,[374,1465,1466],{"class":530},"        await",[374,1468,1272],{"class":530},[374,1470,1471],{"class":481}," Promise",[374,1473,1474],{"class":380},"((",[374,1476,1477],{"class":967},"resolve",[374,1479,979],{"class":380},[374,1481,626],{"class":530},[374,1483,1484],{"class":380}," ws.",[374,1486,1292],{"class":387},[374,1488,661],{"class":380},[374,1490,1491],{"class":394},"\"open\"",[374,1493,1494],{"class":380},", resolve));\n",[374,1496,1498,1500,1502,1504,1506,1509],{"class":376,"line":1497},78,[374,1499,1244],{"class":387},[374,1501,661],{"class":380},[374,1503,1202],{"class":394},[374,1505,881],{"class":380},[374,1507,1508],{"class":394},"\"Connected!\"",[374,1510,667],{"class":380},[374,1512,1514],{"class":376,"line":1513},79,[374,1515,724],{"class":380},[374,1517,1519],{"class":376,"line":1518},80,[374,1520,549],{"emptyLinePlaceholder":548},[374,1522,1524,1526,1529,1531,1533,1535],{"class":376,"line":1523},81,[374,1525,569],{"class":530},[374,1527,1528],{"class":387}," clear",[374,1530,575],{"class":530},[374,1532,623],{"class":380},[374,1534,626],{"class":530},[374,1536,475],{"class":380},[374,1538,1540,1542,1545,1547,1550,1553,1556],{"class":376,"line":1539},82,[374,1541,1011],{"class":380},[374,1543,1544],{"class":387},"splice",[374,1546,661],{"class":380},[374,1548,1549],{"class":481},"0",[374,1551,1552],{"class":380},", store.messages.",[374,1554,1555],{"class":481},"length",[374,1557,667],{"class":380},[374,1559,1561,1563,1565,1568,1570,1573],{"class":376,"line":1560},83,[374,1562,1244],{"class":387},[374,1564,661],{"class":380},[374,1566,1567],{"class":394},"\"system\"",[374,1569,881],{"class":380},[374,1571,1572],{"class":394},"\"previous messages cleared\"",[374,1574,667],{"class":380},[374,1576,1578],{"class":376,"line":1577},84,[374,1579,724],{"class":380},[374,1581,1583],{"class":376,"line":1582},85,[374,1584,549],{"emptyLinePlaceholder":548},[374,1586,1588,1590,1593,1595,1597,1599],{"class":376,"line":1587},86,[374,1589,569],{"class":530},[374,1591,1592],{"class":387}," send",[374,1594,575],{"class":530},[374,1596,623],{"class":380},[374,1598,626],{"class":530},[374,1600,475],{"class":380},[374,1602,1604,1606,1608,1610,1613],{"class":376,"line":1603},87,[374,1605,989],{"class":380},[374,1607,992],{"class":387},[374,1609,661],{"class":380},[374,1611,1612],{"class":394},"\"sending message...\"",[374,1614,667],{"class":380},[374,1616,1618,1620],{"class":376,"line":1617},88,[374,1619,1188],{"class":530},[374,1621,1622],{"class":380}," (store.message) {\n",[374,1624,1626,1628,1631],{"class":376,"line":1625},89,[374,1627,1215],{"class":380},[374,1629,1630],{"class":387},"send",[374,1632,1633],{"class":380},"(store.message);\n",[374,1635,1637],{"class":376,"line":1636},90,[374,1638,942],{"class":380},[374,1640,1642,1645,1647,1649],{"class":376,"line":1641},91,[374,1643,1644],{"class":380},"        store.message ",[374,1646,391],{"class":530},[374,1648,1377],{"class":394},[374,1650,491],{"class":380},[374,1652,1654],{"class":376,"line":1653},92,[374,1655,724],{"class":380},[374,1657,1659],{"class":376,"line":1658},93,[374,1660,549],{"emptyLinePlaceholder":548},[374,1662,1664,1666,1669,1671,1673,1675],{"class":376,"line":1663},94,[374,1665,569],{"class":530},[374,1667,1668],{"class":387}," ping",[374,1670,575],{"class":530},[374,1672,623],{"class":380},[374,1674,626],{"class":530},[374,1676,475],{"class":380},[374,1678,1680,1682,1684,1686,1688,1691],{"class":376,"line":1679},95,[374,1681,1244],{"class":387},[374,1683,661],{"class":380},[374,1685,1202],{"class":394},[374,1687,881],{"class":380},[374,1689,1690],{"class":394},"\"Sending ping\"",[374,1692,667],{"class":380},[374,1694,1696,1698,1700,1702,1705],{"class":376,"line":1695},96,[374,1697,1289],{"class":380},[374,1699,1630],{"class":387},[374,1701,661],{"class":380},[374,1703,1704],{"class":394},"\"ping\"",[374,1706,667],{"class":380},[374,1708,1710],{"class":376,"line":1709},97,[374,1711,724],{"class":380},[374,1713,1715],{"class":376,"line":1714},98,[374,1716,549],{"emptyLinePlaceholder":548},[374,1718,1720,1723],{"class":376,"line":1719},99,[374,1721,1722],{"class":387},"      createApp",[374,1724,581],{"class":380},[374,1726,1728],{"class":376,"line":1727},100,[374,1729,1730],{"class":380},"        store,\n",[374,1732,1734],{"class":376,"line":1733},101,[374,1735,1736],{"class":380},"        send,\n",[374,1738,1740],{"class":376,"line":1739},102,[374,1741,1742],{"class":380},"        ping,\n",[374,1744,1746],{"class":376,"line":1745},103,[374,1747,1748],{"class":380},"        clear,\n",[374,1750,1752],{"class":376,"line":1751},104,[374,1753,1754],{"class":380},"        connect,\n",[374,1756,1758,1761,1764],{"class":376,"line":1757},105,[374,1759,1760],{"class":380},"        rand: Math.",[374,1762,1763],{"class":387},"random",[374,1765,1070],{"class":380},[374,1767,1769,1772,1775],{"class":376,"line":1768},106,[374,1770,1771],{"class":380},"      }).",[374,1773,1774],{"class":387},"mount",[374,1776,1084],{"class":380},[374,1778,1780],{"class":376,"line":1779},107,[374,1781,549],{"emptyLinePlaceholder":548},[374,1783,1785,1788,1790],{"class":376,"line":1784},108,[374,1786,1787],{"class":530},"      await",[374,1789,1110],{"class":387},[374,1791,1084],{"class":380},[374,1793,1795,1797,1799],{"class":376,"line":1794},109,[374,1796,503],{"class":380},[374,1798,441],{"class":384},[374,1800,406],{"class":380},[374,1802,1804,1807,1809],{"class":376,"line":1803},110,[374,1805,1806],{"class":380},"  \u003C/",[374,1808,415],{"class":384},[374,1810,406],{"class":380},[374,1812,1814,1816,1819,1822,1824,1827],{"class":376,"line":1813},111,[374,1815,412],{"class":380},[374,1817,1818],{"class":384},"body",[374,1820,1821],{"class":387}," class",[374,1823,391],{"class":380},[374,1825,1826],{"class":394},"\"h-screen flex flex-col justify-between\"",[374,1828,406],{"class":380},[374,1830,1832,1834,1837,1840,1842,1845],{"class":376,"line":1831},112,[374,1833,423],{"class":380},[374,1835,1836],{"class":384},"main",[374,1838,1839],{"class":387}," v-scope",[374,1841,391],{"class":380},[374,1843,1844],{"class":394},"\"{}\"",[374,1846,406],{"class":380},[374,1848,1850],{"class":376,"line":1849},113,[374,1851,1853],{"class":1852},"sCsY4","      \u003C!-- Messages -->\n",[374,1855,1857,1860,1863,1866,1868,1871,1873,1875,1878],{"class":376,"line":1856},114,[374,1858,1859],{"class":380},"      \u003C",[374,1861,1862],{"class":384},"div",[374,1864,1865],{"class":387}," id",[374,1867,391],{"class":380},[374,1869,1870],{"class":394},"\"messages\"",[374,1872,1821],{"class":387},[374,1874,391],{"class":380},[374,1876,1877],{"class":394},"\"flex-grow flex flex-col justify-end px-4 py-8\"",[374,1879,406],{"class":380},[374,1881,1883,1886,1888,1890,1892,1895,1898,1900,1903],{"class":376,"line":1882},115,[374,1884,1885],{"class":380},"        \u003C",[374,1887,1862],{"class":384},[374,1889,1821],{"class":387},[374,1891,391],{"class":380},[374,1893,1894],{"class":394},"\"flex items-center mb-4\"",[374,1896,1897],{"class":387}," v-for",[374,1899,391],{"class":380},[374,1901,1902],{"class":394},"\"message in store.messages\"",[374,1904,406],{"class":380},[374,1906,1908,1911,1913,1915,1917,1920],{"class":376,"line":1907},116,[374,1909,1910],{"class":380},"          \u003C",[374,1912,1862],{"class":384},[374,1914,1821],{"class":387},[374,1916,391],{"class":380},[374,1918,1919],{"class":394},"\"flex flex-col\"",[374,1921,406],{"class":380},[374,1923,1925,1928,1931,1933,1935,1938,1941,1943],{"class":376,"line":1924},117,[374,1926,1927],{"class":380},"            \u003C",[374,1929,1930],{"class":384},"p",[374,1932,1821],{"class":387},[374,1934,391],{"class":380},[374,1936,1937],{"class":394},"\"text-gray-500 mb-1 text-xs ml-10\"",[374,1939,1940],{"class":380},">{{ message.user }}\u003C/",[374,1942,1930],{"class":384},[374,1944,406],{"class":380},[374,1946,1948,1950,1952,1954,1956,1959],{"class":376,"line":1947},118,[374,1949,1927],{"class":380},[374,1951,1862],{"class":384},[374,1953,1821],{"class":387},[374,1955,391],{"class":380},[374,1957,1958],{"class":394},"\"flex items-center\"",[374,1960,406],{"class":380},[374,1962,1964,1967],{"class":376,"line":1963},119,[374,1965,1966],{"class":380},"              \u003C",[374,1968,1969],{"class":384},"img\n",[374,1971,1973,1976,1978],{"class":376,"line":1972},120,[374,1974,1975],{"class":387},"                :src",[374,1977,391],{"class":380},[374,1979,1980],{"class":394},"\"'https://www.gravatar.com/avatar/' + encodeURIComponent(message.user + rand) + '?s=512&d=monsterid'\"\n",[374,1982,1984,1987,1989],{"class":376,"line":1983},121,[374,1985,1986],{"class":387},"                alt",[374,1988,391],{"class":380},[374,1990,1991],{"class":394},"\"Avatar\"\n",[374,1993,1995,1998,2000],{"class":376,"line":1994},122,[374,1996,1997],{"class":387},"                class",[374,1999,391],{"class":380},[374,2001,2002],{"class":394},"\"w-8 h-8 rounded-full\"\n",[374,2004,2006],{"class":376,"line":2005},123,[374,2007,2008],{"class":380},"              />\n",[374,2010,2012,2014,2016,2018,2020,2023],{"class":376,"line":2011},124,[374,2013,1966],{"class":380},[374,2015,1862],{"class":384},[374,2017,1821],{"class":387},[374,2019,391],{"class":380},[374,2021,2022],{"class":394},"\"ml-2 bg-gray-800 rounded-lg p-2\"",[374,2024,406],{"class":380},[374,2026,2028,2031],{"class":376,"line":2027},125,[374,2029,2030],{"class":380},"                \u003C",[374,2032,2033],{"class":384},"p\n",[374,2035,2037,2040,2042],{"class":376,"line":2036},126,[374,2038,2039],{"class":387},"                  v-if",[374,2041,391],{"class":380},[374,2043,2044],{"class":394},"\"message.formattedText\"\n",[374,2046,2048,2051,2053],{"class":376,"line":2047},127,[374,2049,2050],{"class":387},"                  class",[374,2052,391],{"class":380},[374,2054,2055],{"class":394},"\"overflow-x-scroll\"\n",[374,2057,2059,2062,2064],{"class":376,"line":2058},128,[374,2060,2061],{"class":387},"                  v-html",[374,2063,391],{"class":380},[374,2065,2044],{"class":394},[374,2067,2069,2072,2074],{"class":376,"line":2068},129,[374,2070,2071],{"class":380},"                >\u003C/",[374,2073,1930],{"class":384},[374,2075,406],{"class":380},[374,2077,2079,2081,2083,2086,2088,2090,2093,2096,2098],{"class":376,"line":2078},130,[374,2080,2030],{"class":380},[374,2082,1930],{"class":384},[374,2084,2085],{"class":387}," v-else",[374,2087,1821],{"class":387},[374,2089,391],{"class":380},[374,2091,2092],{"class":394},"\"text-white\"",[374,2094,2095],{"class":380},">{{ message.text }}\u003C/",[374,2097,1930],{"class":384},[374,2099,406],{"class":380},[374,2101,2103,2106,2108],{"class":376,"line":2102},131,[374,2104,2105],{"class":380},"              \u003C/",[374,2107,1862],{"class":384},[374,2109,406],{"class":380},[374,2111,2113,2116,2118],{"class":376,"line":2112},132,[374,2114,2115],{"class":380},"            \u003C/",[374,2117,1862],{"class":384},[374,2119,406],{"class":380},[374,2121,2123,2125,2127,2129,2131,2134,2137,2139],{"class":376,"line":2122},133,[374,2124,1927],{"class":380},[374,2126,1930],{"class":384},[374,2128,1821],{"class":387},[374,2130,391],{"class":380},[374,2132,2133],{"class":394},"\"text-gray-500 mt-1 text-xs ml-10\"",[374,2135,2136],{"class":380},">{{ message.date }}\u003C/",[374,2138,1930],{"class":384},[374,2140,406],{"class":380},[374,2142,2144,2147,2149],{"class":376,"line":2143},134,[374,2145,2146],{"class":380},"          \u003C/",[374,2148,1862],{"class":384},[374,2150,406],{"class":380},[374,2152,2154,2157,2159],{"class":376,"line":2153},135,[374,2155,2156],{"class":380},"        \u003C/",[374,2158,1862],{"class":384},[374,2160,406],{"class":380},[374,2162,2164,2167,2169],{"class":376,"line":2163},136,[374,2165,2166],{"class":380},"      \u003C/",[374,2168,1862],{"class":384},[374,2170,406],{"class":380},[374,2172,2174],{"class":376,"line":2173},137,[374,2175,549],{"emptyLinePlaceholder":548},[374,2177,2179],{"class":376,"line":2178},138,[374,2180,2181],{"class":1852},"      \u003C!-- Chatbox -->\n",[374,2183,2185,2187,2189,2191,2193,2196],{"class":376,"line":2184},139,[374,2186,1859],{"class":380},[374,2188,1862],{"class":384},[374,2190,1821],{"class":387},[374,2192,391],{"class":380},[374,2194,2195],{"class":394},"\"bg-gray-800 px-4 py-2 flex items-center justify-between fixed bottom-0 w-full\"",[374,2197,406],{"class":380},[374,2199,2201,2203,2205,2207,2209,2212],{"class":376,"line":2200},140,[374,2202,1885],{"class":380},[374,2204,1862],{"class":384},[374,2206,1821],{"class":387},[374,2208,391],{"class":380},[374,2210,2211],{"class":394},"\"w-full min-w-6\"",[374,2213,406],{"class":380},[374,2215,2217,2219],{"class":376,"line":2216},141,[374,2218,1910],{"class":380},[374,2220,2221],{"class":384},"input\n",[374,2223,2225,2228,2230],{"class":376,"line":2224},142,[374,2226,2227],{"class":387},"            type",[374,2229,391],{"class":380},[374,2231,2232],{"class":394},"\"text\"\n",[374,2234,2236,2239,2241],{"class":376,"line":2235},143,[374,2237,2238],{"class":387},"            placeholder",[374,2240,391],{"class":380},[374,2242,2243],{"class":394},"\"Type your message...\"\n",[374,2245,2247,2250,2252],{"class":376,"line":2246},144,[374,2248,2249],{"class":387},"            class",[374,2251,391],{"class":380},[374,2253,2254],{"class":394},"\"w-full rounded-l-lg px-4 py-2 bg-gray-700 text-white focus:outline-none focus:ring focus:border-blue-300\"\n",[374,2256,2258,2261,2263],{"class":376,"line":2257},145,[374,2259,2260],{"class":387},"            @keydown.enter",[374,2262,391],{"class":380},[374,2264,2265],{"class":394},"\"send\"\n",[374,2267,2269,2272,2274],{"class":376,"line":2268},146,[374,2270,2271],{"class":387},"            v-model",[374,2273,391],{"class":380},[374,2275,2276],{"class":394},"\"store.message\"\n",[374,2278,2280],{"class":376,"line":2279},147,[374,2281,2282],{"class":380},"          />\n",[374,2284,2286,2288,2290],{"class":376,"line":2285},148,[374,2287,2156],{"class":380},[374,2289,1862],{"class":384},[374,2291,406],{"class":380},[374,2293,2295,2297,2299,2301,2303,2306],{"class":376,"line":2294},149,[374,2296,1885],{"class":380},[374,2298,1862],{"class":384},[374,2300,1821],{"class":387},[374,2302,391],{"class":380},[374,2304,2305],{"class":394},"\"flex\"",[374,2307,406],{"class":380},[374,2309,2311,2313,2316,2318,2320,2323,2326,2328,2331],{"class":376,"line":2310},150,[374,2312,1910],{"class":380},[374,2314,2315],{"class":384},"button",[374,2317,1821],{"class":387},[374,2319,391],{"class":380},[374,2321,2322],{"class":394},"\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\"",[374,2324,2325],{"class":387}," @click",[374,2327,391],{"class":380},[374,2329,2330],{"class":394},"\"send\"",[374,2332,406],{"class":380},[374,2334,2336],{"class":376,"line":2335},151,[374,2337,2338],{"class":380},"            Send\n",[374,2340,2342,2344,2346],{"class":376,"line":2341},152,[374,2343,2146],{"class":380},[374,2345,2315],{"class":384},[374,2347,406],{"class":380},[374,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367],{"class":376,"line":2350},153,[374,2352,1910],{"class":380},[374,2354,2315],{"class":384},[374,2356,1821],{"class":387},[374,2358,391],{"class":380},[374,2360,2322],{"class":394},[374,2362,2325],{"class":387},[374,2364,391],{"class":380},[374,2366,1704],{"class":394},[374,2368,406],{"class":380},[374,2370,2372],{"class":376,"line":2371},154,[374,2373,2374],{"class":380},"            Ping\n",[374,2376,2378,2380,2382],{"class":376,"line":2377},155,[374,2379,2146],{"class":380},[374,2381,2315],{"class":384},[374,2383,406],{"class":380},[374,2385,2387,2389,2391,2393,2395,2397,2399,2401,2404],{"class":376,"line":2386},156,[374,2388,1910],{"class":380},[374,2390,2315],{"class":384},[374,2392,1821],{"class":387},[374,2394,391],{"class":380},[374,2396,2322],{"class":394},[374,2398,2325],{"class":387},[374,2400,391],{"class":380},[374,2402,2403],{"class":394},"\"connect\"",[374,2405,406],{"class":380},[374,2407,2409],{"class":376,"line":2408},157,[374,2410,2411],{"class":380},"            Reconnect\n",[374,2413,2415,2417,2419],{"class":376,"line":2414},158,[374,2416,2146],{"class":380},[374,2418,2315],{"class":384},[374,2420,406],{"class":380},[374,2422,2424,2426],{"class":376,"line":2423},159,[374,2425,1910],{"class":380},[374,2427,2428],{"class":384},"button\n",[374,2430,2432,2434,2436],{"class":376,"line":2431},160,[374,2433,2249],{"class":387},[374,2435,391],{"class":380},[374,2437,2438],{"class":394},"\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded-r-lg\"\n",[374,2440,2442,2445,2447],{"class":376,"line":2441},161,[374,2443,2444],{"class":387},"            @click",[374,2446,391],{"class":380},[374,2448,2449],{"class":394},"\"clear\"\n",[374,2451,2453],{"class":376,"line":2452},162,[374,2454,2455],{"class":380},"          >\n",[374,2457,2459],{"class":376,"line":2458},163,[374,2460,2461],{"class":380},"            Clear\n",[374,2463,2465,2467,2469],{"class":376,"line":2464},164,[374,2466,2146],{"class":380},[374,2468,2315],{"class":384},[374,2470,406],{"class":380},[374,2472,2474,2476,2478],{"class":376,"line":2473},165,[374,2475,2156],{"class":380},[374,2477,1862],{"class":384},[374,2479,406],{"class":380},[374,2481,2483,2485,2487],{"class":376,"line":2482},166,[374,2484,2166],{"class":380},[374,2486,1862],{"class":384},[374,2488,406],{"class":380},[374,2490,2492,2494,2496],{"class":376,"line":2491},167,[374,2493,503],{"class":380},[374,2495,1836],{"class":384},[374,2497,406],{"class":380},[374,2499,2501,2503,2505],{"class":376,"line":2500},168,[374,2502,1806],{"class":380},[374,2504,1818],{"class":384},[374,2506,406],{"class":380},[374,2508,2510,2513,2515],{"class":376,"line":2509},169,[374,2511,2512],{"class":380},"\u003C/",[374,2514,369],{"class":384},[374,2516,406],{"class":380},[374,2518,2520],{"class":376,"line":2519},170,[374,2521,2522],{"class":380},"`\n",[364,2524,2529],{"className":2525,"code":2526,"filename":2527,"language":2528,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverDir: \"./\",\n  renderer: { static: true },\n  features: { websocket: true },\n});\n","nitro.config.ts","ts",[371,2530,2531,2546,2550,2563,2573,2583,2592],{"__ignoreMap":5},[374,2532,2533,2536,2539,2541,2544],{"class":376,"line":377},[374,2534,2535],{"class":530},"import",[374,2537,2538],{"class":380}," { defineConfig } ",[374,2540,537],{"class":530},[374,2542,2543],{"class":394}," \"nitro\"",[374,2545,491],{"class":380},[374,2547,2548],{"class":376,"line":409},[374,2549,549],{"emptyLinePlaceholder":548},[374,2551,2552,2555,2558,2561],{"class":376,"line":420},[374,2553,2554],{"class":530},"export",[374,2556,2557],{"class":530}," default",[374,2559,2560],{"class":387}," defineConfig",[374,2562,581],{"class":380},[374,2564,2565,2568,2571],{"class":376,"line":436},[374,2566,2567],{"class":380},"  serverDir: ",[374,2569,2570],{"class":394},"\"./\"",[374,2572,593],{"class":380},[374,2574,2575,2578,2580],{"class":376,"line":459},[374,2576,2577],{"class":380},"  renderer: { static: ",[374,2579,361],{"class":481},[374,2581,2582],{"class":380}," },\n",[374,2584,2585,2588,2590],{"class":376,"line":469},[374,2586,2587],{"class":380},"  features: { websocket: ",[374,2589,361],{"class":481},[374,2591,2582],{"class":380},[374,2593,2594],{"class":376,"line":478},[374,2595,2596],{"class":380},"});\n",[364,2598,2603],{"className":2599,"code":2600,"filename":2601,"language":2602,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"nitro dev\",\n    \"build\": \"nitro build\"\n  },\n  \"devDependencies\": {\n    \"nitro\": \"latest\"\n  }\n}\n","package.json","json",[371,2604,2605,2610,2621,2629,2641,2651,2656,2663,2673,2678],{"__ignoreMap":5},[374,2606,2607],{"class":376,"line":377},[374,2608,2609],{"class":380},"{\n",[374,2611,2612,2615,2617,2619],{"class":376,"line":409},[374,2613,2614],{"class":481},"  \"type\"",[374,2616,485],{"class":380},[374,2618,522],{"class":394},[374,2620,593],{"class":380},[374,2622,2623,2626],{"class":376,"line":420},[374,2624,2625],{"class":481},"  \"scripts\"",[374,2627,2628],{"class":380},": {\n",[374,2630,2631,2634,2636,2639],{"class":376,"line":436},[374,2632,2633],{"class":481},"    \"dev\"",[374,2635,485],{"class":380},[374,2637,2638],{"class":394},"\"nitro dev\"",[374,2640,593],{"class":380},[374,2642,2643,2646,2648],{"class":376,"line":459},[374,2644,2645],{"class":481},"    \"build\"",[374,2647,485],{"class":380},[374,2649,2650],{"class":394},"\"nitro build\"\n",[374,2652,2653],{"class":376,"line":469},[374,2654,2655],{"class":380},"  },\n",[374,2657,2658,2661],{"class":376,"line":478},[374,2659,2660],{"class":481},"  \"devDependencies\"",[374,2662,2628],{"class":380},[374,2664,2665,2668,2670],{"class":376,"line":494},[374,2666,2667],{"class":481},"    \"nitro\"",[374,2669,485],{"class":380},[374,2671,2672],{"class":394},"\"latest\"\n",[374,2674,2675],{"class":376,"line":500},[374,2676,2677],{"class":380},"  }\n",[374,2679,2680],{"class":376,"line":510},[374,2681,2682],{"class":380},"}\n",[364,2684,2687],{"className":2599,"code":2685,"filename":2686,"language":2602,"meta":5,"style":5},"{\n  \"extends\": \"nitro/tsconfig\"\n}\n","tsconfig.json",[371,2688,2689,2693,2703],{"__ignoreMap":5},[374,2690,2691],{"class":376,"line":377},[374,2692,2609],{"class":380},[374,2694,2695,2698,2700],{"class":376,"line":409},[374,2696,2697],{"class":481},"  \"extends\"",[374,2699,485],{"class":380},[374,2701,2702],{"class":394},"\"nitro/tsconfig\"\n",[374,2704,2705],{"class":376,"line":420},[374,2706,2682],{"class":380},[364,2708,2711],{"className":2525,"code":2709,"filename":2710,"language":2528,"meta":5,"style":5},"import { defineConfig } from \"vite\";\nimport { nitro } from \"nitro/vite\";\n\nexport default defineConfig({ plugins: [nitro()] });\n","vite.config.ts",[371,2712,2713,2726,2740,2744],{"__ignoreMap":5},[374,2714,2715,2717,2719,2721,2724],{"class":376,"line":377},[374,2716,2535],{"class":530},[374,2718,2538],{"class":380},[374,2720,537],{"class":530},[374,2722,2723],{"class":394}," \"vite\"",[374,2725,491],{"class":380},[374,2727,2728,2730,2733,2735,2738],{"class":376,"line":409},[374,2729,2535],{"class":530},[374,2731,2732],{"class":380}," { nitro } ",[374,2734,537],{"class":530},[374,2736,2737],{"class":394}," \"nitro/vite\"",[374,2739,491],{"class":380},[374,2741,2742],{"class":376,"line":420},[374,2743,549],{"emptyLinePlaceholder":548},[374,2745,2746,2748,2750,2752,2755,2758],{"class":376,"line":436},[374,2747,2554],{"class":530},[374,2749,2557],{"class":530},[374,2751,2560],{"class":387},[374,2753,2754],{"class":380},"({ plugins: [",[374,2756,2757],{"class":387},"nitro",[374,2759,2760],{"class":380},"()] });\n",[364,2762,2764],{"className":2525,"code":2763,"filename":362,"language":2528,"meta":5,"style":5},"import { defineWebSocketHandler } from \"nitro/h3\";\n\nexport default defineWebSocketHandler({\n  open(peer) {\n    peer.send({ user: \"server\", message: `Welcome ${peer}!` });\n    peer.publish(\"chat\", { user: \"server\", message: `${peer} joined!` });\n    peer.subscribe(\"chat\");\n  },\n  message(peer, message) {\n    if (message.text().includes(\"ping\")) {\n      peer.send({ user: \"server\", message: \"pong\" });\n    } else {\n      const msg = {\n        user: peer.toString(),\n        message: message.toString(),\n      };\n      peer.send(msg); // echo\n      peer.publish(\"chat\", msg);\n    }\n  },\n  close(peer) {\n    peer.publish(\"chat\", { user: \"server\", message: `${peer} left!` });\n  },\n});\n",[371,2765,2766,2780,2784,2795,2808,2835,2864,2877,2881,2896,2917,2935,2945,2956,2966,2975,2979,2991,3004,3009,3013,3024,3049,3053],{"__ignoreMap":5},[374,2767,2768,2770,2773,2775,2778],{"class":376,"line":377},[374,2769,2535],{"class":530},[374,2771,2772],{"class":380}," { defineWebSocketHandler } ",[374,2774,537],{"class":530},[374,2776,2777],{"class":394}," \"nitro/h3\"",[374,2779,491],{"class":380},[374,2781,2782],{"class":376,"line":409},[374,2783,549],{"emptyLinePlaceholder":548},[374,2785,2786,2788,2790,2793],{"class":376,"line":420},[374,2787,2554],{"class":530},[374,2789,2557],{"class":530},[374,2791,2792],{"class":387}," defineWebSocketHandler",[374,2794,581],{"class":380},[374,2796,2797,2800,2802,2805],{"class":376,"line":436},[374,2798,2799],{"class":387},"  open",[374,2801,661],{"class":380},[374,2803,2804],{"class":967},"peer",[374,2806,2807],{"class":380},") {\n",[374,2809,2810,2813,2815,2818,2821,2824,2827,2829,2832],{"class":376,"line":459},[374,2811,2812],{"class":380},"    peer.",[374,2814,1630],{"class":387},[374,2816,2817],{"class":380},"({ user: ",[374,2819,2820],{"class":394},"\"server\"",[374,2822,2823],{"class":380},", message: ",[374,2825,2826],{"class":394},"`Welcome ${",[374,2828,2804],{"class":380},[374,2830,2831],{"class":394},"}!`",[374,2833,2834],{"class":380}," });\n",[374,2836,2837,2839,2842,2844,2847,2850,2852,2854,2857,2859,2862],{"class":376,"line":469},[374,2838,2812],{"class":380},[374,2840,2841],{"class":387},"publish",[374,2843,661],{"class":380},[374,2845,2846],{"class":394},"\"chat\"",[374,2848,2849],{"class":380},", { user: ",[374,2851,2820],{"class":394},[374,2853,2823],{"class":380},[374,2855,2856],{"class":394},"`${",[374,2858,2804],{"class":380},[374,2860,2861],{"class":394},"} joined!`",[374,2863,2834],{"class":380},[374,2865,2866,2868,2871,2873,2875],{"class":376,"line":478},[374,2867,2812],{"class":380},[374,2869,2870],{"class":387},"subscribe",[374,2872,661],{"class":380},[374,2874,2846],{"class":394},[374,2876,667],{"class":380},[374,2878,2879],{"class":376,"line":494},[374,2880,2655],{"class":380},[374,2882,2883,2886,2888,2890,2892,2894],{"class":376,"line":500},[374,2884,2885],{"class":387},"  message",[374,2887,661],{"class":380},[374,2889,2804],{"class":967},[374,2891,881],{"class":380},[374,2893,1372],{"class":967},[374,2895,2807],{"class":380},[374,2897,2898,2901,2904,2906,2908,2911,2913,2915],{"class":376,"line":510},[374,2899,2900],{"class":530},"    if",[374,2902,2903],{"class":380}," (message.",[374,2905,1351],{"class":387},[374,2907,1064],{"class":380},[374,2909,2910],{"class":387},"includes",[374,2912,661],{"class":380},[374,2914,1704],{"class":394},[374,2916,800],{"class":380},[374,2918,2919,2922,2924,2926,2928,2930,2933],{"class":376,"line":527},[374,2920,2921],{"class":380},"      peer.",[374,2923,1630],{"class":387},[374,2925,2817],{"class":380},[374,2927,2820],{"class":394},[374,2929,2823],{"class":380},[374,2931,2932],{"class":394},"\"pong\"",[374,2934,2834],{"class":380},[374,2936,2937,2940,2943],{"class":376,"line":545},[374,2938,2939],{"class":380},"    } ",[374,2941,2942],{"class":530},"else",[374,2944,475],{"class":380},[374,2946,2947,2949,2952,2954],{"class":376,"line":552},[374,2948,569],{"class":530},[374,2950,2951],{"class":481}," msg",[374,2953,575],{"class":530},[374,2955,475],{"class":380},[374,2957,2958,2961,2964],{"class":376,"line":561},[374,2959,2960],{"class":380},"        user: peer.",[374,2962,2963],{"class":387},"toString",[374,2965,1070],{"class":380},[374,2967,2968,2971,2973],{"class":376,"line":566},[374,2969,2970],{"class":380},"        message: message.",[374,2972,2963],{"class":387},[374,2974,1070],{"class":380},[374,2976,2977],{"class":376,"line":584},[374,2978,724],{"class":380},[374,2980,2981,2983,2985,2988],{"class":376,"line":596},[374,2982,2921],{"class":380},[374,2984,1630],{"class":387},[374,2986,2987],{"class":380},"(msg); ",[374,2989,2990],{"class":1852},"// echo\n",[374,2992,2993,2995,2997,2999,3001],{"class":376,"line":602},[374,2994,2921],{"class":380},[374,2996,2841],{"class":387},[374,2998,661],{"class":380},[374,3000,2846],{"class":394},[374,3002,3003],{"class":380},", msg);\n",[374,3005,3006],{"class":376,"line":608},[374,3007,3008],{"class":380},"    }\n",[374,3010,3011],{"class":376,"line":613},[374,3012,2655],{"class":380},[374,3014,3015,3018,3020,3022],{"class":376,"line":631},[374,3016,3017],{"class":387},"  close",[374,3019,661],{"class":380},[374,3021,2804],{"class":967},[374,3023,2807],{"class":380},[374,3025,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044,3047],{"class":376,"line":644},[374,3027,2812],{"class":380},[374,3029,2841],{"class":387},[374,3031,661],{"class":380},[374,3033,2846],{"class":394},[374,3035,2849],{"class":380},[374,3037,2820],{"class":394},[374,3039,2823],{"class":380},[374,3041,2856],{"class":394},[374,3043,2804],{"class":380},[374,3045,3046],{"class":394},"} left!`",[374,3048,2834],{"class":380},[374,3050,3051],{"class":376,"line":670},[374,3052,2655],{"class":380},[374,3054,3055],{"class":376,"line":681},[374,3056,2596],{"class":380},[1930,3058,3059],{},"This example implements a simple chat room using WebSockets. Clients connect, send messages, and receive messages from other users in real-time. The server broadcasts messages to all connected clients using pub/sub channels.",[3061,3062,3064],"h2",{"id":3063},"websocket-handler","WebSocket Handler",[1930,3066,3067,3068,859],{},"Create a WebSocket route using ",[371,3069,3070],{},"defineWebSocketHandler",[364,3072,3073],{"className":2525,"code":2763,"filename":362,"language":2528,"meta":5,"style":5},[371,3074,3075,3087,3091,3101,3111,3131,3155,3167,3171,3185,3203,3219,3227,3237,3245,3253,3257,3267,3279,3283,3287,3297,3321,3325],{"__ignoreMap":5},[374,3076,3077,3079,3081,3083,3085],{"class":376,"line":377},[374,3078,2535],{"class":530},[374,3080,2772],{"class":380},[374,3082,537],{"class":530},[374,3084,2777],{"class":394},[374,3086,491],{"class":380},[374,3088,3089],{"class":376,"line":409},[374,3090,549],{"emptyLinePlaceholder":548},[374,3092,3093,3095,3097,3099],{"class":376,"line":420},[374,3094,2554],{"class":530},[374,3096,2557],{"class":530},[374,3098,2792],{"class":387},[374,3100,581],{"class":380},[374,3102,3103,3105,3107,3109],{"class":376,"line":436},[374,3104,2799],{"class":387},[374,3106,661],{"class":380},[374,3108,2804],{"class":967},[374,3110,2807],{"class":380},[374,3112,3113,3115,3117,3119,3121,3123,3125,3127,3129],{"class":376,"line":459},[374,3114,2812],{"class":380},[374,3116,1630],{"class":387},[374,3118,2817],{"class":380},[374,3120,2820],{"class":394},[374,3122,2823],{"class":380},[374,3124,2826],{"class":394},[374,3126,2804],{"class":380},[374,3128,2831],{"class":394},[374,3130,2834],{"class":380},[374,3132,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153],{"class":376,"line":469},[374,3134,2812],{"class":380},[374,3136,2841],{"class":387},[374,3138,661],{"class":380},[374,3140,2846],{"class":394},[374,3142,2849],{"class":380},[374,3144,2820],{"class":394},[374,3146,2823],{"class":380},[374,3148,2856],{"class":394},[374,3150,2804],{"class":380},[374,3152,2861],{"class":394},[374,3154,2834],{"class":380},[374,3156,3157,3159,3161,3163,3165],{"class":376,"line":478},[374,3158,2812],{"class":380},[374,3160,2870],{"class":387},[374,3162,661],{"class":380},[374,3164,2846],{"class":394},[374,3166,667],{"class":380},[374,3168,3169],{"class":376,"line":494},[374,3170,2655],{"class":380},[374,3172,3173,3175,3177,3179,3181,3183],{"class":376,"line":500},[374,3174,2885],{"class":387},[374,3176,661],{"class":380},[374,3178,2804],{"class":967},[374,3180,881],{"class":380},[374,3182,1372],{"class":967},[374,3184,2807],{"class":380},[374,3186,3187,3189,3191,3193,3195,3197,3199,3201],{"class":376,"line":510},[374,3188,2900],{"class":530},[374,3190,2903],{"class":380},[374,3192,1351],{"class":387},[374,3194,1064],{"class":380},[374,3196,2910],{"class":387},[374,3198,661],{"class":380},[374,3200,1704],{"class":394},[374,3202,800],{"class":380},[374,3204,3205,3207,3209,3211,3213,3215,3217],{"class":376,"line":527},[374,3206,2921],{"class":380},[374,3208,1630],{"class":387},[374,3210,2817],{"class":380},[374,3212,2820],{"class":394},[374,3214,2823],{"class":380},[374,3216,2932],{"class":394},[374,3218,2834],{"class":380},[374,3220,3221,3223,3225],{"class":376,"line":545},[374,3222,2939],{"class":380},[374,3224,2942],{"class":530},[374,3226,475],{"class":380},[374,3228,3229,3231,3233,3235],{"class":376,"line":552},[374,3230,569],{"class":530},[374,3232,2951],{"class":481},[374,3234,575],{"class":530},[374,3236,475],{"class":380},[374,3238,3239,3241,3243],{"class":376,"line":561},[374,3240,2960],{"class":380},[374,3242,2963],{"class":387},[374,3244,1070],{"class":380},[374,3246,3247,3249,3251],{"class":376,"line":566},[374,3248,2970],{"class":380},[374,3250,2963],{"class":387},[374,3252,1070],{"class":380},[374,3254,3255],{"class":376,"line":584},[374,3256,724],{"class":380},[374,3258,3259,3261,3263,3265],{"class":376,"line":596},[374,3260,2921],{"class":380},[374,3262,1630],{"class":387},[374,3264,2987],{"class":380},[374,3266,2990],{"class":1852},[374,3268,3269,3271,3273,3275,3277],{"class":376,"line":602},[374,3270,2921],{"class":380},[374,3272,2841],{"class":387},[374,3274,661],{"class":380},[374,3276,2846],{"class":394},[374,3278,3003],{"class":380},[374,3280,3281],{"class":376,"line":608},[374,3282,3008],{"class":380},[374,3284,3285],{"class":376,"line":613},[374,3286,2655],{"class":380},[374,3288,3289,3291,3293,3295],{"class":376,"line":631},[374,3290,3017],{"class":387},[374,3292,661],{"class":380},[374,3294,2804],{"class":967},[374,3296,2807],{"class":380},[374,3298,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319],{"class":376,"line":644},[374,3300,2812],{"class":380},[374,3302,2841],{"class":387},[374,3304,661],{"class":380},[374,3306,2846],{"class":394},[374,3308,2849],{"class":380},[374,3310,2820],{"class":394},[374,3312,2823],{"class":380},[374,3314,2856],{"class":394},[374,3316,2804],{"class":380},[374,3318,3046],{"class":394},[374,3320,2834],{"class":380},[374,3322,3323],{"class":376,"line":670},[374,3324,2655],{"class":380},[374,3326,3327],{"class":376,"line":681},[374,3328,2596],{"class":380},[1930,3330,3331,3332,3335],{},"Different hooks are exposed by ",[371,3333,3334],{},"defineWebSocketHandler()"," to integrate with different parts of the websocket lifecycle.",[3061,3337,3339],{"id":3338},"learn-more","Learn More",[3341,3342,3343,3349],"ul",{},[3344,3345,3346],"li",{},[3347,3348,23],"a",{"href":24},[3344,3350,3351],{},[3347,3352,3356],{"href":3353,"rel":3354},"https://crossws.h3.dev/guide/hooks",[3355],"nofollow","crossws Documentation",[464,3358,3359],{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"title":5,"searchDepth":409,"depth":409,"links":3361},[3362,3363],{"id":3063,"depth":409,"text":3064},{"id":3338,"depth":409,"text":3339},"md","i-lucide-radio",{"automd":548},{},{"title":350,"description":351},"examples/websocket/README","bzFlTvdFtNwF83_mNVZ8u0Ke0EoI_ag0ocZI4SthS0E",[3372,3375],{"title":305,"path":3373,"stem":3374,"description":306,"children":-1},"/examples/virtual-routes","examples/virtual-routes/README",null,1773050454558]