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