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