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