[{"data":1,"prerenderedAt":585},["ShallowReactive",2],{"navigation":3,"-guide-advanced-plugins":179,"-guide-advanced-plugins-surround":580},[4,86,128,156,163],{"title":5,"path":6,"stem":7,"children":8,"icon":85},"Guide","/guide","1.guide/0.index",[9,12,48,64],{"title":10,"path":6,"stem":7,"icon":11},"Getting Started","pixel:play",{"title":5,"icon":13,"path":14,"stem":15,"children":16,"page":47},"ph:book-open-duotone","/guide/basics","1.guide/1.basics",[17,22,27,32,37,42],{"title":18,"path":19,"stem":20,"icon":21},"Request Lifecycle","/guide/basics/lifecycle","1.guide/1.basics/1.lifecycle","icon-park-outline:handle-round",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/guide/basics/routing","1.guide/1.basics/2.routing","solar:routing-bold",{"title":28,"path":29,"stem":30,"icon":31},"Middleware","/guide/basics/middleware","1.guide/1.basics/3.middleware","mdi:middleware-outline",{"title":33,"path":34,"stem":35,"icon":36},"Event Handlers","/guide/basics/handler","1.guide/1.basics/4.handler","mdi:function",{"title":38,"path":39,"stem":40,"icon":41},"Sending Response","/guide/basics/response","1.guide/1.basics/5.response","tabler:json",{"title":43,"path":44,"stem":45,"icon":46},"Error Handling","/guide/basics/error","1.guide/1.basics/6.error","tabler:error-404",false,{"title":49,"icon":50,"path":51,"stem":52,"children":53,"page":47},"API","material-symbols-light:api-rounded","/guide/api","1.guide/900.api",[54,59],{"title":55,"path":56,"stem":57,"icon":58},"H3","/guide/api/h3","1.guide/900.api/1.h3","material-symbols:bolt-rounded",{"title":60,"path":61,"stem":62,"icon":63},"H3Event","/guide/api/h3event","1.guide/900.api/2.h3event","material-symbols:data-object-rounded",{"title":65,"icon":66,"path":67,"stem":68,"children":69,"page":47},"Advanced","hugeicons:more-01","/guide/advanced","1.guide/901.advanced",[70,75,80],{"title":71,"path":72,"stem":73,"icon":74},"Plugins","/guide/advanced/plugins","1.guide/901.advanced/1.plugins","clarity:plugin-line",{"title":76,"path":77,"stem":78,"icon":79},"WebSockets","/guide/advanced/websocket","1.guide/901.advanced/2.websocket","hugeicons:live-streaming-02",{"title":81,"path":82,"stem":83,"icon":84},"Nightly Builds","/guide/advanced/nightly","1.guide/901.advanced/9.nightly","game-icons:barn-owl","i-ph:book-open-duotone",{"title":87,"path":88,"stem":89,"children":90,"icon":92},"H3 Utils","/utils","2.utils/0.index",[91,93,98,103,108,113,118,123],{"title":87,"path":88,"stem":89,"icon":92},"ph:function-bold",{"title":94,"path":95,"stem":96,"icon":97},"Request","/utils/request","2.utils/1.request","material-symbols-light:input",{"title":99,"path":100,"stem":101,"icon":102},"Response","/utils/response","2.utils/2.response","material-symbols-light:output",{"title":104,"path":105,"stem":106,"icon":107},"Cookie","/utils/cookie","2.utils/3.cookie","material-symbols:cookie-outline",{"title":109,"path":110,"stem":111,"icon":112},"Security","/utils/security","2.utils/4.security","wpf:key-security",{"title":114,"path":115,"stem":116,"icon":117},"Proxy","/utils/proxy","2.utils/5.proxy","arcticons:super-proxy",{"title":119,"path":120,"stem":121,"icon":122},"More utils","/utils/more","2.utils/9.more","mingcute:plus-line",{"title":124,"path":125,"stem":126,"icon":127},"Community","/utils/community","2.utils/99.community","lets-icons:external",{"title":129,"path":130,"stem":131,"children":132,"icon":134},"Examples","/examples","4.examples/0.index",[133,135,140,144,148,152],{"title":129,"path":130,"stem":131,"icon":134},"ph:code",{"title":136,"path":137,"stem":138,"icon":139},"Cookies","/examples/handle-cookie","4.examples/handle-cookie","ph:arrow-right",{"title":141,"path":142,"stem":143,"icon":139},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":145,"path":146,"stem":147,"icon":139},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":149,"path":150,"stem":151,"icon":139},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":153,"path":154,"stem":155,"icon":139},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":157,"path":158,"stem":159,"children":160,"icon":162},"Migration guide for v1 to v2","/migration","5.migration/0.index",[161],{"title":157,"path":158,"stem":159,"icon":162},"icons8:up-round",{"title":164,"path":165,"stem":166,"children":167,"page":-1},"Blog","/blog","99.blog",[168,171,175],{"title":164,"path":165,"stem":169,"icon":170},"99.blog/index","i-lucide-file-text",{"title":172,"path":173,"stem":174,"icon":170},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":176,"path":177,"stem":178,"icon":170},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":180,"title":71,"body":181,"description":574,"extension":575,"meta":576,"navigation":577,"path":72,"seo":578,"stem":73,"__hash__":579},"content/1.guide/901.advanced/1.plugins.md",{"type":182,"value":183,"toc":570,"icon":74},"minimark",[184,189,203,370,376,380,386,433,440,566],[185,186,188],"h2",{"id":187},"register-plugins","Register Plugins",[190,191,192,193,197,198,202],"p",{},"Plugins can be registered either when creating a new ",[194,195,196],"a",{"href":56},"H3 instance"," or by using ",[194,199,201],{"href":200},"/guide/api/h3#h3register","H3.register",".",[204,205,210],"pre",{"className":206,"code":207,"language":208,"meta":209,"style":209},"language-js shiki shiki-themes github-light github-dark github-dark","import { H3 } from \"h3\";\nimport { logger } from \"./logger.mjs\";\n\n// Using instance config\nconst app = new H3({\n  plugins: [logger()],\n});\n\n// Or register later\napp.register(logger());\n\n// ... rest of the code..\napp.get(\"/**\", () => \"Hello, World!\");\n","js","",[211,212,213,236,251,258,265,288,300,306,311,317,334,339,345],"code",{"__ignoreMap":209},[214,215,218,222,226,229,233],"span",{"class":216,"line":217},"line",1,[214,219,221],{"class":220},"so5gQ","import",[214,223,225],{"class":224},"slsVL"," { H3 } ",[214,227,228],{"class":220},"from",[214,230,232],{"class":231},"sfrk1"," \"h3\"",[214,234,235],{"class":224},";\n",[214,237,239,241,244,246,249],{"class":216,"line":238},2,[214,240,221],{"class":220},[214,242,243],{"class":224}," { logger } ",[214,245,228],{"class":220},[214,247,248],{"class":231}," \"./logger.mjs\"",[214,250,235],{"class":224},[214,252,254],{"class":216,"line":253},3,[214,255,257],{"emptyLinePlaceholder":256},true,"\n",[214,259,261],{"class":216,"line":260},4,[214,262,264],{"class":263},"sCsY4","// Using instance config\n",[214,266,268,271,275,278,281,285],{"class":216,"line":267},5,[214,269,270],{"class":220},"const",[214,272,274],{"class":273},"suiK_"," app",[214,276,277],{"class":220}," =",[214,279,280],{"class":220}," new",[214,282,284],{"class":283},"shcOC"," H3",[214,286,287],{"class":224},"({\n",[214,289,291,294,297],{"class":216,"line":290},6,[214,292,293],{"class":224},"  plugins: [",[214,295,296],{"class":283},"logger",[214,298,299],{"class":224},"()],\n",[214,301,303],{"class":216,"line":302},7,[214,304,305],{"class":224},"});\n",[214,307,309],{"class":216,"line":308},8,[214,310,257],{"emptyLinePlaceholder":256},[214,312,314],{"class":216,"line":313},9,[214,315,316],{"class":263},"// Or register later\n",[214,318,320,323,326,329,331],{"class":216,"line":319},10,[214,321,322],{"class":224},"app.",[214,324,325],{"class":283},"register",[214,327,328],{"class":224},"(",[214,330,296],{"class":283},[214,332,333],{"class":224},"());\n",[214,335,337],{"class":216,"line":336},11,[214,338,257],{"emptyLinePlaceholder":256},[214,340,342],{"class":216,"line":341},12,[214,343,344],{"class":263},"// ... rest of the code..\n",[214,346,348,350,353,355,358,361,364,367],{"class":216,"line":347},13,[214,349,322],{"class":224},[214,351,352],{"class":283},"get",[214,354,328],{"class":224},[214,356,357],{"class":231},"\"/**\"",[214,359,360],{"class":224},", () ",[214,362,363],{"class":220},"=>",[214,365,366],{"class":231}," \"Hello, World!\"",[214,368,369],{"class":224},");\n",[371,372,373],"note",{},[190,374,375],{},"\nPlugins are always registered immediately. Therefore, the order in which they are used might be important depending on the plugin's functionality.",[185,377,379],{"id":378},"creating-plugins","Creating Plugins",[190,381,382,383,385],{},"H3 plugins are simply functions that accept an ",[194,384,196],{"href":56}," as the first argument and immediately apply logic to extend it.",[204,387,389],{"className":206,"code":388,"language":208,"meta":209,"style":209},"app.register((app) => {\n  app.use(...)\n})\n",[211,390,391,412,428],{"__ignoreMap":209},[214,392,393,395,397,400,404,407,409],{"class":216,"line":217},[214,394,322],{"class":224},[214,396,325],{"class":283},[214,398,399],{"class":224},"((",[214,401,403],{"class":402},"sQHwn","app",[214,405,406],{"class":224},") ",[214,408,363],{"class":220},[214,410,411],{"class":224}," {\n",[214,413,414,417,420,422,425],{"class":216,"line":238},[214,415,416],{"class":224},"  app.",[214,418,419],{"class":283},"use",[214,421,328],{"class":224},[214,423,424],{"class":220},"...",[214,426,427],{"class":224},")\n",[214,429,430],{"class":216,"line":253},[214,431,432],{"class":224},"})\n",[190,434,435,436,439],{},"For convenience, H3 provides a built-in ",[211,437,438],{},"definePlugin"," utility, which creates a typed factory function with optional plugin-specific options.",[204,441,443],{"className":206,"code":442,"language":208,"meta":209,"style":209},"import { definePlugin } from \"h3\";\n\nconst logger = definePlugin((h3, _options) => {\n  if (h3.config.debug) {\n    h3.use((req) => {\n      console.log(`[${req.method}] ${req.url}`);\n    });\n  }\n});\n",[211,444,445,458,462,491,499,517,552,557,562],{"__ignoreMap":209},[214,446,447,449,452,454,456],{"class":216,"line":217},[214,448,221],{"class":220},[214,450,451],{"class":224}," { definePlugin } ",[214,453,228],{"class":220},[214,455,232],{"class":231},[214,457,235],{"class":224},[214,459,460],{"class":216,"line":238},[214,461,257],{"emptyLinePlaceholder":256},[214,463,464,466,469,471,474,476,479,482,485,487,489],{"class":216,"line":253},[214,465,270],{"class":220},[214,467,468],{"class":273}," logger",[214,470,277],{"class":220},[214,472,473],{"class":283}," definePlugin",[214,475,399],{"class":224},[214,477,478],{"class":402},"h3",[214,480,481],{"class":224},", ",[214,483,484],{"class":402},"_options",[214,486,406],{"class":224},[214,488,363],{"class":220},[214,490,411],{"class":224},[214,492,493,496],{"class":216,"line":260},[214,494,495],{"class":220},"  if",[214,497,498],{"class":224}," (h3.config.debug) {\n",[214,500,501,504,506,508,511,513,515],{"class":216,"line":267},[214,502,503],{"class":224},"    h3.",[214,505,419],{"class":283},[214,507,399],{"class":224},[214,509,510],{"class":402},"req",[214,512,406],{"class":224},[214,514,363],{"class":220},[214,516,411],{"class":224},[214,518,519,522,525,527,530,532,534,537,540,542,544,547,550],{"class":216,"line":290},[214,520,521],{"class":224},"      console.",[214,523,524],{"class":283},"log",[214,526,328],{"class":224},[214,528,529],{"class":231},"`[${",[214,531,510],{"class":224},[214,533,202],{"class":231},[214,535,536],{"class":224},"method",[214,538,539],{"class":231},"}] ${",[214,541,510],{"class":224},[214,543,202],{"class":231},[214,545,546],{"class":224},"url",[214,548,549],{"class":231},"}`",[214,551,369],{"class":224},[214,553,554],{"class":216,"line":302},[214,555,556],{"class":224},"    });\n",[214,558,559],{"class":216,"line":308},[214,560,561],{"class":224},"  }\n",[214,563,564],{"class":216,"line":313},[214,565,305],{"class":224},[567,568,569],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}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);}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":209,"searchDepth":238,"depth":238,"links":571},[572,573],{"id":187,"depth":238,"text":188},{"id":378,"depth":238,"text":379},"H3 plugins allow you to extend an H3 app instance with reusable logic.","md",{"icon":74},{"icon":74},{"title":71,"description":574},"iSdJd2q9FryWLj2rmHfEr0Vo2dnNiIZqR0CMr3MOiTY",[581,583],{"title":60,"path":61,"stem":62,"description":582,"icon":63,"children":-1},"H3Event, carries incoming request, prepared response and context.",{"title":76,"path":77,"stem":78,"description":584,"icon":79,"children":-1},"H3 has built-in utilities for cross platform WebSocket and Server-Sent Events.",1751015547753]