[{"data":1,"prerenderedAt":599},["ShallowReactive",2],{"navigation":3,"-guide-advanced-plugins":193,"-guide-advanced-plugins-surround":594},[4,91,138,170,177],{"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,166],{"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},"HTTP QUERY Method","/examples/handle-query","4.examples/handle-query",{"title":155,"path":156,"stem":157,"icon":149},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":159,"path":160,"stem":161,"icon":149},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":163,"path":164,"stem":165,"icon":149},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":167,"path":168,"stem":169,"icon":149},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":171,"path":172,"stem":173,"children":174,"icon":176},"Migration","/migration","5.migration/0.index",[175],{"title":171,"path":172,"stem":173,"icon":176},"icons8:up-round",{"title":178,"path":179,"stem":180,"children":181},"Blog","/blog","99.blog",[182,185,189],{"title":178,"path":179,"stem":183,"icon":184},"99.blog/index","i-lucide-file-text",{"title":186,"path":187,"stem":188,"icon":184},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":190,"path":191,"stem":192,"icon":184},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":194,"title":76,"body":195,"description":588,"extension":589,"meta":590,"navigation":591,"path":77,"seo":592,"stem":78,"__hash__":593},"content/1.guide/901.advanced/1.plugins.md",{"type":196,"value":197,"toc":584,"icon":79},"minimark",[198,203,217,384,390,394,400,447,454,580],[199,200,202],"h2",{"id":201},"register-plugins","Register Plugins",[204,205,206,207,211,212,216],"p",{},"Plugins can be registered either when creating a new ",[208,209,210],"a",{"href":61},"H3 instance"," or by using ",[208,213,215],{"href":214},"/guide/api/h3#h3register","H3.register",".",[218,219,224],"pre",{"className":220,"code":221,"language":222,"meta":223,"style":223},"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","",[225,226,227,250,265,272,279,302,314,320,325,331,348,353,359],"code",{"__ignoreMap":223},[228,229,232,236,240,243,247],"span",{"class":230,"line":231},"line",1,[228,233,235],{"class":234},"so5gQ","import",[228,237,239],{"class":238},"slsVL"," { H3 } ",[228,241,242],{"class":234},"from",[228,244,246],{"class":245},"sfrk1"," \"h3\"",[228,248,249],{"class":238},";\n",[228,251,253,255,258,260,263],{"class":230,"line":252},2,[228,254,235],{"class":234},[228,256,257],{"class":238}," { logger } ",[228,259,242],{"class":234},[228,261,262],{"class":245}," \"./logger.mjs\"",[228,264,249],{"class":238},[228,266,268],{"class":230,"line":267},3,[228,269,271],{"emptyLinePlaceholder":270},true,"\n",[228,273,275],{"class":230,"line":274},4,[228,276,278],{"class":277},"sCsY4","// Using instance config\n",[228,280,282,285,289,292,295,299],{"class":230,"line":281},5,[228,283,284],{"class":234},"const",[228,286,288],{"class":287},"suiK_"," app",[228,290,291],{"class":234}," =",[228,293,294],{"class":234}," new",[228,296,298],{"class":297},"shcOC"," H3",[228,300,301],{"class":238},"({\n",[228,303,305,308,311],{"class":230,"line":304},6,[228,306,307],{"class":238},"  plugins: [",[228,309,310],{"class":297},"logger",[228,312,313],{"class":238},"()],\n",[228,315,317],{"class":230,"line":316},7,[228,318,319],{"class":238},"});\n",[228,321,323],{"class":230,"line":322},8,[228,324,271],{"emptyLinePlaceholder":270},[228,326,328],{"class":230,"line":327},9,[228,329,330],{"class":277},"// Or register later\n",[228,332,334,337,340,343,345],{"class":230,"line":333},10,[228,335,336],{"class":238},"app.",[228,338,339],{"class":297},"register",[228,341,342],{"class":238},"(",[228,344,310],{"class":297},[228,346,347],{"class":238},"());\n",[228,349,351],{"class":230,"line":350},11,[228,352,271],{"emptyLinePlaceholder":270},[228,354,356],{"class":230,"line":355},12,[228,357,358],{"class":277},"// ... rest of the code..\n",[228,360,362,364,367,369,372,375,378,381],{"class":230,"line":361},13,[228,363,336],{"class":238},[228,365,366],{"class":297},"get",[228,368,342],{"class":238},[228,370,371],{"class":245},"\"/**\"",[228,373,374],{"class":238},", () ",[228,376,377],{"class":234},"=>",[228,379,380],{"class":245}," \"Hello, World!\"",[228,382,383],{"class":238},");\n",[385,386,387],"note",{},[204,388,389],{},"\nPlugins are always registered immediately. Therefore, the order in which they are used might be important depending on the plugin's functionality.",[199,391,393],{"id":392},"creating-plugins","Creating Plugins",[204,395,396,397,399],{},"H3 plugins are simply functions that accept an ",[208,398,210],{"href":61}," as the first argument and immediately apply logic to extend it.",[218,401,403],{"className":220,"code":402,"language":222,"meta":223,"style":223},"app.register((app) => {\n  app.use(...)\n})\n",[225,404,405,426,442],{"__ignoreMap":223},[228,406,407,409,411,414,418,421,423],{"class":230,"line":231},[228,408,336],{"class":238},[228,410,339],{"class":297},[228,412,413],{"class":238},"((",[228,415,417],{"class":416},"sQHwn","app",[228,419,420],{"class":238},") ",[228,422,377],{"class":234},[228,424,425],{"class":238}," {\n",[228,427,428,431,434,436,439],{"class":230,"line":252},[228,429,430],{"class":238},"  app.",[228,432,433],{"class":297},"use",[228,435,342],{"class":238},[228,437,438],{"class":234},"...",[228,440,441],{"class":238},")\n",[228,443,444],{"class":230,"line":267},[228,445,446],{"class":238},"})\n",[204,448,449,450,453],{},"For convenience, H3 provides a built-in ",[225,451,452],{},"definePlugin"," utility, which creates a typed factory function with optional plugin-specific options.",[218,455,457],{"className":220,"code":456,"language":222,"meta":223,"style":223},"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",[225,458,459,472,476,505,513,531,566,571,576],{"__ignoreMap":223},[228,460,461,463,466,468,470],{"class":230,"line":231},[228,462,235],{"class":234},[228,464,465],{"class":238}," { definePlugin } ",[228,467,242],{"class":234},[228,469,246],{"class":245},[228,471,249],{"class":238},[228,473,474],{"class":230,"line":252},[228,475,271],{"emptyLinePlaceholder":270},[228,477,478,480,483,485,488,490,493,496,499,501,503],{"class":230,"line":267},[228,479,284],{"class":234},[228,481,482],{"class":287}," logger",[228,484,291],{"class":234},[228,486,487],{"class":297}," definePlugin",[228,489,413],{"class":238},[228,491,492],{"class":416},"h3",[228,494,495],{"class":238},", ",[228,497,498],{"class":416},"_options",[228,500,420],{"class":238},[228,502,377],{"class":234},[228,504,425],{"class":238},[228,506,507,510],{"class":230,"line":274},[228,508,509],{"class":234},"  if",[228,511,512],{"class":238}," (h3.config.debug) {\n",[228,514,515,518,520,522,525,527,529],{"class":230,"line":281},[228,516,517],{"class":238},"    h3.",[228,519,433],{"class":297},[228,521,413],{"class":238},[228,523,524],{"class":416},"req",[228,526,420],{"class":238},[228,528,377],{"class":234},[228,530,425],{"class":238},[228,532,533,536,539,541,544,546,548,551,554,556,558,561,564],{"class":230,"line":304},[228,534,535],{"class":238},"      console.",[228,537,538],{"class":297},"log",[228,540,342],{"class":238},[228,542,543],{"class":245},"`[${",[228,545,524],{"class":238},[228,547,216],{"class":245},[228,549,550],{"class":238},"method",[228,552,553],{"class":245},"}] ${",[228,555,524],{"class":238},[228,557,216],{"class":245},[228,559,560],{"class":238},"url",[228,562,563],{"class":245},"}`",[228,565,383],{"class":238},[228,567,568],{"class":230,"line":316},[228,569,570],{"class":238},"    });\n",[228,572,573],{"class":230,"line":322},[228,574,575],{"class":238},"  }\n",[228,577,578],{"class":230,"line":327},[228,579,319],{"class":238},[581,582,583],"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":223,"searchDepth":252,"depth":252,"links":585},[586,587],{"id":201,"depth":252,"text":202},{"id":392,"depth":252,"text":393},"H3 plugins allow you to extend an H3 app instance with reusable logic.","md",{"icon":79},{"icon":79},{"title":76,"description":588},"iSdJd2q9FryWLj2rmHfEr0Vo2dnNiIZqR0CMr3MOiTY",[595,597],{"title":65,"path":66,"stem":67,"description":596,"icon":68,"children":-1},"H3Event, carries incoming request, prepared response and context.",{"title":81,"path":82,"stem":83,"description":598,"icon":84,"children":-1},"H3 has built-in utilities for cross platform WebSocket and Server-Sent Events.",1783690727864]