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