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