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