[{"data":1,"prerenderedAt":2415},["ShallowReactive",2],{"navigation":3,"-utils-request":184,"-utils-request-surround":2411},[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":99,"body":186,"description":2404,"extension":2405,"meta":2406,"navigation":2408,"path":100,"seo":2409,"stem":101,"__hash__":2410},"content/2.utils/1.request.md",{"type":187,"value":188,"toc":2379,"icon":102},"minimark",[189,194,202,206,213,219,334,340,343,347,397,403,410,417,421,530,534,684,688,907,911,917,928,932,938,945,948,965,969,1017,1023,1026,1030,1077,1083,1086,1098,1101,1105,1151,1157,1160,1170,1176,1180,1226,1232,1235,1248,1251,1255,1301,1307,1310,1318,1328,1332,1378,1384,1387,1399,1403,1451,1457,1460,1470,1474,1520,1526,1529,1534,1538,1630,1634,1723,1727,1861,1867,1870,1878,1883,1887,1970,1974,2061,2065,2233,2239,2242,2252,2256,2345,2351,2360,2363,2366,2372,2375],[190,191,193],"h2",{"id":192},"body","Body",[195,196,198],"h3",{"id":197},"assertbodysizeevent-limit",[199,200,201],"code",{},"assertBodySize(event, limit)",[203,204,205],"p",{},"Asserts that request body size is within the specified limit.",[203,207,208,209,212],{},"If body size exceeds the limit, throws a ",[199,210,211],{},"413"," Request Entity Too Large response error.",[203,214,215],{},[216,217,218],"strong",{},"Example:",[220,221,226],"pre",{"className":222,"code":223,"language":224,"meta":225,"style":225},"language-ts shiki shiki-themes github-light github-dark github-dark","app.get(\"/\", async (event) => {\n  await assertBodySize(event, 10 * 1024 * 1024); // 10MB\n  const data = await event.req.formData();\n});\n","ts","",[199,227,228,271,304,328],{"__ignoreMap":225},[229,230,233,237,241,244,248,251,255,258,262,265,268],"span",{"class":231,"line":232},"line",1,[229,234,236],{"class":235},"slsVL","app.",[229,238,240],{"class":239},"shcOC","get",[229,242,243],{"class":235},"(",[229,245,247],{"class":246},"sfrk1","\"/\"",[229,249,250],{"class":235},", ",[229,252,254],{"class":253},"so5gQ","async",[229,256,257],{"class":235}," (",[229,259,261],{"class":260},"sQHwn","event",[229,263,264],{"class":235},") ",[229,266,267],{"class":253},"=>",[229,269,270],{"class":235}," {\n",[229,272,274,277,280,283,287,290,293,295,297,300],{"class":231,"line":273},2,[229,275,276],{"class":253},"  await",[229,278,279],{"class":239}," assertBodySize",[229,281,282],{"class":235},"(event, ",[229,284,286],{"class":285},"suiK_","10",[229,288,289],{"class":253}," *",[229,291,292],{"class":285}," 1024",[229,294,289],{"class":253},[229,296,292],{"class":285},[229,298,299],{"class":235},"); ",[229,301,303],{"class":302},"sCsY4","// 10MB\n",[229,305,307,310,313,316,319,322,325],{"class":231,"line":306},3,[229,308,309],{"class":253},"  const",[229,311,312],{"class":285}," data",[229,314,315],{"class":253}," =",[229,317,318],{"class":253}," await",[229,320,321],{"class":235}," event.req.",[229,323,324],{"class":239},"formData",[229,326,327],{"class":235},"();\n",[229,329,331],{"class":231,"line":330},4,[229,332,333],{"class":235},"});\n",[195,335,337],{"id":336},"readbodyevent",[199,338,339],{},"readBody(event)",[203,341,342],{},"Reads request body and tries to parse using JSON.parse or URLSearchParams.",[203,344,345],{},[216,346,218],{},[220,348,350],{"className":222,"code":349,"language":224,"meta":225,"style":225},"app.get(\"/\", async (event) => {\n  const body = await readBody(event);\n});\n",[199,351,352,376,393],{"__ignoreMap":225},[229,353,354,356,358,360,362,364,366,368,370,372,374],{"class":231,"line":232},[229,355,236],{"class":235},[229,357,240],{"class":239},[229,359,243],{"class":235},[229,361,247],{"class":246},[229,363,250],{"class":235},[229,365,254],{"class":253},[229,367,257],{"class":235},[229,369,261],{"class":260},[229,371,264],{"class":235},[229,373,267],{"class":253},[229,375,270],{"class":235},[229,377,378,380,383,385,387,390],{"class":231,"line":273},[229,379,309],{"class":253},[229,381,382],{"class":285}," body",[229,384,315],{"class":253},[229,386,318],{"class":253},[229,388,389],{"class":239}," readBody",[229,391,392],{"class":235},"(event);\n",[229,394,395],{"class":231,"line":306},[229,396,333],{"class":235},[195,398,400],{"id":399},"readvalidatedbodyevent-validate",[199,401,402],{},"readValidatedBody(event, validate)",[203,404,405,406,409],{},"Tries to read the request body via ",[199,407,408],{},"readBody",", then uses the provided validation schema or function and either throws a validation error or returns the result.",[203,411,412,413,416],{},"You can use a simple function to validate the body or use a Standard-Schema compatible library like ",[199,414,415],{},"zod"," to define a schema.",[203,418,419],{},[216,420,218],{},[220,422,424],{"className":222,"code":423,"language":224,"meta":225,"style":225},"function validateBody(body: any) {\n  return typeof body === \"object\" && body !== null;\n}\napp.post(\"/\", async (event) => {\n  const body = await readValidatedBody(event, validateBody);\n});\n",[199,425,426,447,478,483,508,525],{"__ignoreMap":225},[229,427,428,431,434,436,438,441,444],{"class":231,"line":232},[229,429,430],{"class":253},"function",[229,432,433],{"class":239}," validateBody",[229,435,243],{"class":235},[229,437,192],{"class":260},[229,439,440],{"class":253},":",[229,442,443],{"class":285}," any",[229,445,446],{"class":235},") {\n",[229,448,449,452,455,458,461,464,467,469,472,475],{"class":231,"line":273},[229,450,451],{"class":253},"  return",[229,453,454],{"class":253}," typeof",[229,456,457],{"class":235}," body ",[229,459,460],{"class":253},"===",[229,462,463],{"class":246}," \"object\"",[229,465,466],{"class":253}," &&",[229,468,457],{"class":235},[229,470,471],{"class":253},"!==",[229,473,474],{"class":285}," null",[229,476,477],{"class":235},";\n",[229,479,480],{"class":231,"line":306},[229,481,482],{"class":235},"}\n",[229,484,485,487,490,492,494,496,498,500,502,504,506],{"class":231,"line":330},[229,486,236],{"class":235},[229,488,489],{"class":239},"post",[229,491,243],{"class":235},[229,493,247],{"class":246},[229,495,250],{"class":235},[229,497,254],{"class":253},[229,499,257],{"class":235},[229,501,261],{"class":260},[229,503,264],{"class":235},[229,505,267],{"class":253},[229,507,270],{"class":235},[229,509,511,513,515,517,519,522],{"class":231,"line":510},5,[229,512,309],{"class":253},[229,514,382],{"class":285},[229,516,315],{"class":253},[229,518,318],{"class":253},[229,520,521],{"class":239}," readValidatedBody",[229,523,524],{"class":235},"(event, validateBody);\n",[229,526,528],{"class":231,"line":527},6,[229,529,333],{"class":235},[203,531,532],{},[216,533,218],{},[220,535,537],{"className":222,"code":536,"language":224,"meta":225,"style":225},"import { z } from \"zod\";\nconst objectSchema = z.object({\n  name: z.string().min(3).max(20),\n  age: z.number({ coerce: true }).positive().int(),\n});\napp.post(\"/\", async (event) => {\n  const body = await readValidatedBody(event, objectSchema);\n});\n",[199,538,539,555,574,607,635,639,663,679],{"__ignoreMap":225},[229,540,541,544,547,550,553],{"class":231,"line":232},[229,542,543],{"class":253},"import",[229,545,546],{"class":235}," { z } ",[229,548,549],{"class":253},"from",[229,551,552],{"class":246}," \"zod\"",[229,554,477],{"class":235},[229,556,557,560,563,565,568,571],{"class":231,"line":273},[229,558,559],{"class":253},"const",[229,561,562],{"class":285}," objectSchema",[229,564,315],{"class":253},[229,566,567],{"class":235}," z.",[229,569,570],{"class":239},"object",[229,572,573],{"class":235},"({\n",[229,575,576,579,582,585,588,590,593,596,599,601,604],{"class":231,"line":306},[229,577,578],{"class":235},"  name: z.",[229,580,581],{"class":239},"string",[229,583,584],{"class":235},"().",[229,586,587],{"class":239},"min",[229,589,243],{"class":235},[229,591,592],{"class":285},"3",[229,594,595],{"class":235},").",[229,597,598],{"class":239},"max",[229,600,243],{"class":235},[229,602,603],{"class":285},"20",[229,605,606],{"class":235},"),\n",[229,608,609,612,615,618,621,624,627,629,632],{"class":231,"line":330},[229,610,611],{"class":235},"  age: z.",[229,613,614],{"class":239},"number",[229,616,617],{"class":235},"({ coerce: ",[229,619,620],{"class":285},"true",[229,622,623],{"class":235}," }).",[229,625,626],{"class":239},"positive",[229,628,584],{"class":235},[229,630,631],{"class":239},"int",[229,633,634],{"class":235},"(),\n",[229,636,637],{"class":231,"line":510},[229,638,333],{"class":235},[229,640,641,643,645,647,649,651,653,655,657,659,661],{"class":231,"line":527},[229,642,236],{"class":235},[229,644,489],{"class":239},[229,646,243],{"class":235},[229,648,247],{"class":246},[229,650,250],{"class":235},[229,652,254],{"class":253},[229,654,257],{"class":235},[229,656,261],{"class":260},[229,658,264],{"class":235},[229,660,267],{"class":253},[229,662,270],{"class":235},[229,664,666,668,670,672,674,676],{"class":231,"line":665},7,[229,667,309],{"class":253},[229,669,382],{"class":285},[229,671,315],{"class":253},[229,673,318],{"class":253},[229,675,521],{"class":239},[229,677,678],{"class":235},"(event, objectSchema);\n",[229,680,682],{"class":231,"line":681},8,[229,683,333],{"class":235},[203,685,686],{},[216,687,218],{},[220,689,691],{"className":222,"code":690,"language":224,"meta":225,"style":225},"import * as v from \"valibot\";\napp.post(\"/\", async (event) => {\n  const body = await readValidatedBody(\n    event,\n    v.object({\n      name: v.pipe(v.string(), v.minLength(3), v.maxLength(20)),\n      age: v.pipe(v.number(), v.integer(), v.minValue(1)),\n    }),\n    {\n      onError: ({ issues }) => ({\n        statusText: \"Custom validation error\",\n        message: v.summarize(issues),\n      }),\n    },\n  );\n});\n",[199,692,693,712,736,751,756,765,801,829,834,840,860,872,884,890,896,902],{"__ignoreMap":225},[229,694,695,697,699,702,705,707,710],{"class":231,"line":232},[229,696,543],{"class":253},[229,698,289],{"class":285},[229,700,701],{"class":253}," as",[229,703,704],{"class":235}," v ",[229,706,549],{"class":253},[229,708,709],{"class":246}," \"valibot\"",[229,711,477],{"class":235},[229,713,714,716,718,720,722,724,726,728,730,732,734],{"class":231,"line":273},[229,715,236],{"class":235},[229,717,489],{"class":239},[229,719,243],{"class":235},[229,721,247],{"class":246},[229,723,250],{"class":235},[229,725,254],{"class":253},[229,727,257],{"class":235},[229,729,261],{"class":260},[229,731,264],{"class":235},[229,733,267],{"class":253},[229,735,270],{"class":235},[229,737,738,740,742,744,746,748],{"class":231,"line":306},[229,739,309],{"class":253},[229,741,382],{"class":285},[229,743,315],{"class":253},[229,745,318],{"class":253},[229,747,521],{"class":239},[229,749,750],{"class":235},"(\n",[229,752,753],{"class":231,"line":330},[229,754,755],{"class":235},"    event,\n",[229,757,758,761,763],{"class":231,"line":510},[229,759,760],{"class":235},"    v.",[229,762,570],{"class":239},[229,764,573],{"class":235},[229,766,767,770,773,776,778,781,784,786,788,791,794,796,798],{"class":231,"line":527},[229,768,769],{"class":235},"      name: v.",[229,771,772],{"class":239},"pipe",[229,774,775],{"class":235},"(v.",[229,777,581],{"class":239},[229,779,780],{"class":235},"(), v.",[229,782,783],{"class":239},"minLength",[229,785,243],{"class":235},[229,787,592],{"class":285},[229,789,790],{"class":235},"), v.",[229,792,793],{"class":239},"maxLength",[229,795,243],{"class":235},[229,797,603],{"class":285},[229,799,800],{"class":235},")),\n",[229,802,803,806,808,810,812,814,817,819,822,824,827],{"class":231,"line":665},[229,804,805],{"class":235},"      age: v.",[229,807,772],{"class":239},[229,809,775],{"class":235},[229,811,614],{"class":239},[229,813,780],{"class":235},[229,815,816],{"class":239},"integer",[229,818,780],{"class":235},[229,820,821],{"class":239},"minValue",[229,823,243],{"class":235},[229,825,826],{"class":285},"1",[229,828,800],{"class":235},[229,830,831],{"class":231,"line":681},[229,832,833],{"class":235},"    }),\n",[229,835,837],{"class":231,"line":836},9,[229,838,839],{"class":235},"    {\n",[229,841,843,846,849,852,855,857],{"class":231,"line":842},10,[229,844,845],{"class":239},"      onError",[229,847,848],{"class":235},": ({ ",[229,850,851],{"class":260},"issues",[229,853,854],{"class":235}," }) ",[229,856,267],{"class":253},[229,858,859],{"class":235}," ({\n",[229,861,863,866,869],{"class":231,"line":862},11,[229,864,865],{"class":235},"        statusText: ",[229,867,868],{"class":246},"\"Custom validation error\"",[229,870,871],{"class":235},",\n",[229,873,875,878,881],{"class":231,"line":874},12,[229,876,877],{"class":235},"        message: v.",[229,879,880],{"class":239},"summarize",[229,882,883],{"class":235},"(issues),\n",[229,885,887],{"class":231,"line":886},13,[229,888,889],{"class":235},"      }),\n",[229,891,893],{"class":231,"line":892},14,[229,894,895],{"class":235},"    },\n",[229,897,899],{"class":231,"line":898},15,[229,900,901],{"class":235},"  );\n",[229,903,905],{"class":231,"line":904},16,[229,906,333],{"class":235},[190,908,910],{"id":909},"cache","Cache",[195,912,914],{"id":913},"handlecacheheadersevent-opts",[199,915,916],{},"handleCacheHeaders(event, opts)",[203,918,919,920,923,924,927],{},"Check request caching headers (",[199,921,922],{},"If-Modified-Since",") and add caching headers (Last-Modified, Cache-Control) Note: ",[199,925,926],{},"public"," cache control will be added by default",[190,929,931],{"id":930},"more-request-utils","More Request Utils",[195,933,935],{"id":934},"assertmethodevent-expected-allowhead",[199,936,937],{},"assertMethod(event, expected, allowHead?)",[203,939,940,941,944],{},"Asserts that the incoming request method is of the expected type using ",[199,942,943],{},"isMethod",".",[203,946,947],{},"If the method is not allowed, it will throw a 405 error with the message \"HTTP method is not allowed\".",[203,949,950,951,954,955,957,958,961,962,944],{},"If ",[199,952,953],{},"allowHead"," is ",[199,956,620],{},", it will allow ",[199,959,960],{},"HEAD"," requests to pass if the expected method is ",[199,963,964],{},"GET",[203,966,967],{},[216,968,218],{},[220,970,972],{"className":222,"code":971,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  assertMethod(event, \"GET\");\n  // Handle GET request, otherwise throw 405 error\n});\n",[199,973,974,995,1008,1013],{"__ignoreMap":225},[229,975,976,978,980,982,984,987,989,991,993],{"class":231,"line":232},[229,977,236],{"class":235},[229,979,240],{"class":239},[229,981,243],{"class":235},[229,983,247],{"class":246},[229,985,986],{"class":235},", (",[229,988,261],{"class":260},[229,990,264],{"class":235},[229,992,267],{"class":253},[229,994,270],{"class":235},[229,996,997,1000,1002,1005],{"class":231,"line":273},[229,998,999],{"class":239},"  assertMethod",[229,1001,282],{"class":235},[229,1003,1004],{"class":246},"\"GET\"",[229,1006,1007],{"class":235},");\n",[229,1009,1010],{"class":231,"line":306},[229,1011,1012],{"class":302},"  // Handle GET request, otherwise throw 405 error\n",[229,1014,1015],{"class":231,"line":330},[229,1016,333],{"class":235},[195,1018,1020],{"id":1019},"getqueryevent",[199,1021,1022],{},"getQuery(event)",[203,1024,1025],{},"Get parsed query string object from the request URL.",[203,1027,1028],{},[216,1029,218],{},[220,1031,1033],{"className":222,"code":1032,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const query = getQuery(event); // { key: \"value\", key2: [\"value1\", \"value2\"] }\n});\n",[199,1034,1035,1055,1073],{"__ignoreMap":225},[229,1036,1037,1039,1041,1043,1045,1047,1049,1051,1053],{"class":231,"line":232},[229,1038,236],{"class":235},[229,1040,240],{"class":239},[229,1042,243],{"class":235},[229,1044,247],{"class":246},[229,1046,986],{"class":235},[229,1048,261],{"class":260},[229,1050,264],{"class":235},[229,1052,267],{"class":253},[229,1054,270],{"class":235},[229,1056,1057,1059,1062,1064,1067,1070],{"class":231,"line":273},[229,1058,309],{"class":253},[229,1060,1061],{"class":285}," query",[229,1063,315],{"class":253},[229,1065,1066],{"class":239}," getQuery",[229,1068,1069],{"class":235},"(event); ",[229,1071,1072],{"class":302},"// { key: \"value\", key2: [\"value1\", \"value2\"] }\n",[229,1074,1075],{"class":231,"line":306},[229,1076,333],{"class":235},[195,1078,1080],{"id":1079},"getrequesthostevent-opts-xforwardedhost",[199,1081,1082],{},"getRequestHost(event, opts: { xForwardedHost? })",[203,1084,1085],{},"Get the request hostname.",[203,1087,950,1088,954,1091,1093,1094,1097],{},[199,1089,1090],{},"xForwardedHost",[199,1092,620],{},", it will use the ",[199,1095,1096],{},"x-forwarded-host"," header if it exists.",[203,1099,1100],{},"If no host header is found, it will default to \"localhost\".",[203,1102,1103],{},[216,1104,218],{},[220,1106,1108],{"className":222,"code":1107,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const host = getRequestHost(event); // \"example.com\"\n});\n",[199,1109,1110,1130,1147],{"__ignoreMap":225},[229,1111,1112,1114,1116,1118,1120,1122,1124,1126,1128],{"class":231,"line":232},[229,1113,236],{"class":235},[229,1115,240],{"class":239},[229,1117,243],{"class":235},[229,1119,247],{"class":246},[229,1121,986],{"class":235},[229,1123,261],{"class":260},[229,1125,264],{"class":235},[229,1127,267],{"class":253},[229,1129,270],{"class":235},[229,1131,1132,1134,1137,1139,1142,1144],{"class":231,"line":273},[229,1133,309],{"class":253},[229,1135,1136],{"class":285}," host",[229,1138,315],{"class":253},[229,1140,1141],{"class":239}," getRequestHost",[229,1143,1069],{"class":235},[229,1145,1146],{"class":302},"// \"example.com\"\n",[229,1148,1149],{"class":231,"line":306},[229,1150,333],{"class":235},[195,1152,1154],{"id":1153},"getrequestipevent",[199,1155,1156],{},"getRequestIP(event)",[203,1158,1159],{},"Try to get the client IP address from the incoming request.",[203,1161,950,1162,954,1165,1093,1167,1097],{},[199,1163,1164],{},"xForwardedFor",[199,1166,620],{},[199,1168,1169],{},"x-forwarded-for",[203,1171,1172,1173,944],{},"If IP cannot be determined, it will default to ",[199,1174,1175],{},"undefined",[203,1177,1178],{},[216,1179,218],{},[220,1181,1183],{"className":222,"code":1182,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const ip = getRequestIP(event); // \"192.0.2.0\"\n});\n",[199,1184,1185,1205,1222],{"__ignoreMap":225},[229,1186,1187,1189,1191,1193,1195,1197,1199,1201,1203],{"class":231,"line":232},[229,1188,236],{"class":235},[229,1190,240],{"class":239},[229,1192,243],{"class":235},[229,1194,247],{"class":246},[229,1196,986],{"class":235},[229,1198,261],{"class":260},[229,1200,264],{"class":235},[229,1202,267],{"class":253},[229,1204,270],{"class":235},[229,1206,1207,1209,1212,1214,1217,1219],{"class":231,"line":273},[229,1208,309],{"class":253},[229,1210,1211],{"class":285}," ip",[229,1213,315],{"class":253},[229,1215,1216],{"class":239}," getRequestIP",[229,1218,1069],{"class":235},[229,1220,1221],{"class":302},"// \"192.0.2.0\"\n",[229,1223,1224],{"class":231,"line":306},[229,1225,333],{"class":235},[195,1227,1229],{"id":1228},"getrequestprotocolevent-opts-xforwardedproto",[199,1230,1231],{},"getRequestProtocol(event, opts: { xForwardedProto? })",[203,1233,1234],{},"Get the request protocol.",[203,1236,950,1237,1240,1241,1244,1245,944],{},[199,1238,1239],{},"x-forwarded-proto"," header is set to \"https\", it will return \"https\". You can disable this behavior by setting ",[199,1242,1243],{},"xForwardedProto"," to ",[199,1246,1247],{},"false",[203,1249,1250],{},"If protocol cannot be determined, it will default to \"http\".",[203,1252,1253],{},[216,1254,218],{},[220,1256,1258],{"className":222,"code":1257,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const protocol = getRequestProtocol(event); // \"https\"\n});\n",[199,1259,1260,1280,1297],{"__ignoreMap":225},[229,1261,1262,1264,1266,1268,1270,1272,1274,1276,1278],{"class":231,"line":232},[229,1263,236],{"class":235},[229,1265,240],{"class":239},[229,1267,243],{"class":235},[229,1269,247],{"class":246},[229,1271,986],{"class":235},[229,1273,261],{"class":260},[229,1275,264],{"class":235},[229,1277,267],{"class":253},[229,1279,270],{"class":235},[229,1281,1282,1284,1287,1289,1292,1294],{"class":231,"line":273},[229,1283,309],{"class":253},[229,1285,1286],{"class":285}," protocol",[229,1288,315],{"class":253},[229,1290,1291],{"class":239}," getRequestProtocol",[229,1293,1069],{"class":235},[229,1295,1296],{"class":302},"// \"https\"\n",[229,1298,1299],{"class":231,"line":306},[229,1300,333],{"class":235},[195,1302,1304],{"id":1303},"getrequesturlevent-opts-xforwardedhost-xforwardedproto",[199,1305,1306],{},"getRequestURL(event, opts: { xForwardedHost?, xForwardedProto? })",[203,1308,1309],{},"Generated the full incoming request URL.",[203,1311,950,1312,954,1314,1093,1316,1097],{},[199,1313,1090],{},[199,1315,620],{},[199,1317,1096],{},[203,1319,950,1320,954,1322,1324,1325,1327],{},[199,1321,1243],{},[199,1323,1247],{},", it will not use the ",[199,1326,1239],{}," header.",[203,1329,1330],{},[216,1331,218],{},[220,1333,1335],{"className":222,"code":1334,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const url = getRequestURL(event); // \"https://example.com/path\"\n});\n",[199,1336,1337,1357,1374],{"__ignoreMap":225},[229,1338,1339,1341,1343,1345,1347,1349,1351,1353,1355],{"class":231,"line":232},[229,1340,236],{"class":235},[229,1342,240],{"class":239},[229,1344,243],{"class":235},[229,1346,247],{"class":246},[229,1348,986],{"class":235},[229,1350,261],{"class":260},[229,1352,264],{"class":235},[229,1354,267],{"class":253},[229,1356,270],{"class":235},[229,1358,1359,1361,1364,1366,1369,1371],{"class":231,"line":273},[229,1360,309],{"class":253},[229,1362,1363],{"class":285}," url",[229,1365,315],{"class":253},[229,1367,1368],{"class":239}," getRequestURL",[229,1370,1069],{"class":235},[229,1372,1373],{"class":302},"// \"https://example.com/path\"\n",[229,1375,1376],{"class":231,"line":306},[229,1377,333],{"class":235},[195,1379,1381],{"id":1380},"getrouterparamevent-name-opts-decode",[199,1382,1383],{},"getRouterParam(event, name, opts: { decode? })",[203,1385,1386],{},"Get a matched route param by name.",[203,1388,950,1389,1392,1393,1395,1396,944],{},[199,1390,1391],{},"decode"," option is ",[199,1394,620],{},", it will decode the matched route param using ",[199,1397,1398],{},"decodeURI",[203,1400,1401],{},[216,1402,218],{},[220,1404,1406],{"className":222,"code":1405,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const param = getRouterParam(event, \"key\");\n});\n",[199,1407,1408,1428,1447],{"__ignoreMap":225},[229,1409,1410,1412,1414,1416,1418,1420,1422,1424,1426],{"class":231,"line":232},[229,1411,236],{"class":235},[229,1413,240],{"class":239},[229,1415,243],{"class":235},[229,1417,247],{"class":246},[229,1419,986],{"class":235},[229,1421,261],{"class":260},[229,1423,264],{"class":235},[229,1425,267],{"class":253},[229,1427,270],{"class":235},[229,1429,1430,1432,1435,1437,1440,1442,1445],{"class":231,"line":273},[229,1431,309],{"class":253},[229,1433,1434],{"class":285}," param",[229,1436,315],{"class":253},[229,1438,1439],{"class":239}," getRouterParam",[229,1441,282],{"class":235},[229,1443,1444],{"class":246},"\"key\"",[229,1446,1007],{"class":235},[229,1448,1449],{"class":231,"line":306},[229,1450,333],{"class":235},[195,1452,1454],{"id":1453},"getrouterparamsevent-opts-decode",[199,1455,1456],{},"getRouterParams(event, opts: { decode? })",[203,1458,1459],{},"Get matched route params.",[203,1461,950,1462,1392,1464,1466,1467,944],{},[199,1463,1391],{},[199,1465,620],{},", it will decode the matched route params using ",[199,1468,1469],{},"decodeURIComponent",[203,1471,1472],{},[216,1473,218],{},[220,1475,1477],{"className":222,"code":1476,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  const params = getRouterParams(event); // { key: \"value\" }\n});\n",[199,1478,1479,1499,1516],{"__ignoreMap":225},[229,1480,1481,1483,1485,1487,1489,1491,1493,1495,1497],{"class":231,"line":232},[229,1482,236],{"class":235},[229,1484,240],{"class":239},[229,1486,243],{"class":235},[229,1488,247],{"class":246},[229,1490,986],{"class":235},[229,1492,261],{"class":260},[229,1494,264],{"class":235},[229,1496,267],{"class":253},[229,1498,270],{"class":235},[229,1500,1501,1503,1506,1508,1511,1513],{"class":231,"line":273},[229,1502,309],{"class":253},[229,1504,1505],{"class":285}," params",[229,1507,315],{"class":253},[229,1509,1510],{"class":239}," getRouterParams",[229,1512,1069],{"class":235},[229,1514,1515],{"class":302},"// { key: \"value\" }\n",[229,1517,1518],{"class":231,"line":306},[229,1519,333],{"class":235},[195,1521,1523],{"id":1522},"getvalidatedqueryevent-validate",[199,1524,1525],{},"getValidatedQuery(event, validate)",[203,1527,1528],{},"Get the query param from the request URL validated with validate function.",[203,1530,1531,1532,416],{},"You can use a simple function to validate the query object or use a Standard-Schema compatible library like ",[199,1533,415],{},[203,1535,1536],{},[216,1537,218],{},[220,1539,1541],{"className":222,"code":1540,"language":224,"meta":225,"style":225},"app.get(\"/\", async (event) => {\n  const query = await getValidatedQuery(event, (data) => {\n    return \"key\" in data && typeof data.key === \"string\";\n  });\n});\n",[199,1542,1543,1567,1592,1621,1626],{"__ignoreMap":225},[229,1544,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565],{"class":231,"line":232},[229,1546,236],{"class":235},[229,1548,240],{"class":239},[229,1550,243],{"class":235},[229,1552,247],{"class":246},[229,1554,250],{"class":235},[229,1556,254],{"class":253},[229,1558,257],{"class":235},[229,1560,261],{"class":260},[229,1562,264],{"class":235},[229,1564,267],{"class":253},[229,1566,270],{"class":235},[229,1568,1569,1571,1573,1575,1577,1580,1583,1586,1588,1590],{"class":231,"line":273},[229,1570,309],{"class":253},[229,1572,1061],{"class":285},[229,1574,315],{"class":253},[229,1576,318],{"class":253},[229,1578,1579],{"class":239}," getValidatedQuery",[229,1581,1582],{"class":235},"(event, (",[229,1584,1585],{"class":260},"data",[229,1587,264],{"class":235},[229,1589,267],{"class":253},[229,1591,270],{"class":235},[229,1593,1594,1597,1600,1603,1606,1609,1611,1614,1616,1619],{"class":231,"line":306},[229,1595,1596],{"class":253},"    return",[229,1598,1599],{"class":246}," \"key\"",[229,1601,1602],{"class":253}," in",[229,1604,1605],{"class":235}," data ",[229,1607,1608],{"class":253},"&&",[229,1610,454],{"class":253},[229,1612,1613],{"class":235}," data.key ",[229,1615,460],{"class":253},[229,1617,1618],{"class":246}," \"string\"",[229,1620,477],{"class":235},[229,1622,1623],{"class":231,"line":330},[229,1624,1625],{"class":235},"  });\n",[229,1627,1628],{"class":231,"line":510},[229,1629,333],{"class":235},[203,1631,1632],{},[216,1633,218],{},[220,1635,1637],{"className":222,"code":1636,"language":224,"meta":225,"style":225},"import { z } from \"zod\";\napp.get(\"/\", async (event) => {\n  const query = await getValidatedQuery(\n    event,\n    z.object({\n      key: z.string(),\n    }),\n  );\n});\n",[199,1638,1639,1651,1675,1689,1693,1702,1711,1715,1719],{"__ignoreMap":225},[229,1640,1641,1643,1645,1647,1649],{"class":231,"line":232},[229,1642,543],{"class":253},[229,1644,546],{"class":235},[229,1646,549],{"class":253},[229,1648,552],{"class":246},[229,1650,477],{"class":235},[229,1652,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673],{"class":231,"line":273},[229,1654,236],{"class":235},[229,1656,240],{"class":239},[229,1658,243],{"class":235},[229,1660,247],{"class":246},[229,1662,250],{"class":235},[229,1664,254],{"class":253},[229,1666,257],{"class":235},[229,1668,261],{"class":260},[229,1670,264],{"class":235},[229,1672,267],{"class":253},[229,1674,270],{"class":235},[229,1676,1677,1679,1681,1683,1685,1687],{"class":231,"line":306},[229,1678,309],{"class":253},[229,1680,1061],{"class":285},[229,1682,315],{"class":253},[229,1684,318],{"class":253},[229,1686,1579],{"class":239},[229,1688,750],{"class":235},[229,1690,1691],{"class":231,"line":330},[229,1692,755],{"class":235},[229,1694,1695,1698,1700],{"class":231,"line":510},[229,1696,1697],{"class":235},"    z.",[229,1699,570],{"class":239},[229,1701,573],{"class":235},[229,1703,1704,1707,1709],{"class":231,"line":527},[229,1705,1706],{"class":235},"      key: z.",[229,1708,581],{"class":239},[229,1710,634],{"class":235},[229,1712,1713],{"class":231,"line":665},[229,1714,833],{"class":235},[229,1716,1717],{"class":231,"line":681},[229,1718,901],{"class":235},[229,1720,1721],{"class":231,"line":836},[229,1722,333],{"class":235},[203,1724,1725],{},[216,1726,218],{},[220,1728,1730],{"className":222,"code":1729,"language":224,"meta":225,"style":225},"import * as v from \"valibot\";\napp.get(\"/\", async (event) => {\n  const params = await getValidatedQuery(\n    event,\n    v.object({\n      key: v.string(),\n    }),\n    {\n      onError: ({ issues }) => ({\n        statusText: \"Custom validation error\",\n        message: v.summarize(issues),\n      }),\n    },\n  );\n});\n",[199,1731,1732,1748,1772,1786,1790,1798,1807,1811,1815,1829,1837,1845,1849,1853,1857],{"__ignoreMap":225},[229,1733,1734,1736,1738,1740,1742,1744,1746],{"class":231,"line":232},[229,1735,543],{"class":253},[229,1737,289],{"class":285},[229,1739,701],{"class":253},[229,1741,704],{"class":235},[229,1743,549],{"class":253},[229,1745,709],{"class":246},[229,1747,477],{"class":235},[229,1749,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770],{"class":231,"line":273},[229,1751,236],{"class":235},[229,1753,240],{"class":239},[229,1755,243],{"class":235},[229,1757,247],{"class":246},[229,1759,250],{"class":235},[229,1761,254],{"class":253},[229,1763,257],{"class":235},[229,1765,261],{"class":260},[229,1767,264],{"class":235},[229,1769,267],{"class":253},[229,1771,270],{"class":235},[229,1773,1774,1776,1778,1780,1782,1784],{"class":231,"line":306},[229,1775,309],{"class":253},[229,1777,1505],{"class":285},[229,1779,315],{"class":253},[229,1781,318],{"class":253},[229,1783,1579],{"class":239},[229,1785,750],{"class":235},[229,1787,1788],{"class":231,"line":330},[229,1789,755],{"class":235},[229,1791,1792,1794,1796],{"class":231,"line":510},[229,1793,760],{"class":235},[229,1795,570],{"class":239},[229,1797,573],{"class":235},[229,1799,1800,1803,1805],{"class":231,"line":527},[229,1801,1802],{"class":235},"      key: v.",[229,1804,581],{"class":239},[229,1806,634],{"class":235},[229,1808,1809],{"class":231,"line":665},[229,1810,833],{"class":235},[229,1812,1813],{"class":231,"line":681},[229,1814,839],{"class":235},[229,1816,1817,1819,1821,1823,1825,1827],{"class":231,"line":836},[229,1818,845],{"class":239},[229,1820,848],{"class":235},[229,1822,851],{"class":260},[229,1824,854],{"class":235},[229,1826,267],{"class":253},[229,1828,859],{"class":235},[229,1830,1831,1833,1835],{"class":231,"line":842},[229,1832,865],{"class":235},[229,1834,868],{"class":246},[229,1836,871],{"class":235},[229,1838,1839,1841,1843],{"class":231,"line":862},[229,1840,877],{"class":235},[229,1842,880],{"class":239},[229,1844,883],{"class":235},[229,1846,1847],{"class":231,"line":874},[229,1848,889],{"class":235},[229,1850,1851],{"class":231,"line":886},[229,1852,895],{"class":235},[229,1854,1855],{"class":231,"line":892},[229,1856,901],{"class":235},[229,1858,1859],{"class":231,"line":898},[229,1860,333],{"class":235},[195,1862,1864],{"id":1863},"getvalidatedrouterparamsevent-validate",[199,1865,1866],{},"getValidatedRouterParams(event, validate)",[203,1868,1869],{},"Get matched route params and validate with validate function.",[203,1871,950,1872,1392,1874,1466,1876,944],{},[199,1873,1391],{},[199,1875,620],{},[199,1877,1398],{},[203,1879,1880,1881,416],{},"You can use a simple function to validate the params object or use a Standard-Schema compatible library like ",[199,1882,415],{},[203,1884,1885],{},[216,1886,218],{},[220,1888,1890],{"className":222,"code":1889,"language":224,"meta":225,"style":225},"app.get(\"/:key\", async (event) => {\n  const params = await getValidatedRouterParams(event, (data) => {\n    return \"key\" in data && typeof data.key === \"string\";\n  });\n});\n",[199,1891,1892,1917,1940,1962,1966],{"__ignoreMap":225},[229,1893,1894,1896,1898,1900,1903,1905,1907,1909,1911,1913,1915],{"class":231,"line":232},[229,1895,236],{"class":235},[229,1897,240],{"class":239},[229,1899,243],{"class":235},[229,1901,1902],{"class":246},"\"/:key\"",[229,1904,250],{"class":235},[229,1906,254],{"class":253},[229,1908,257],{"class":235},[229,1910,261],{"class":260},[229,1912,264],{"class":235},[229,1914,267],{"class":253},[229,1916,270],{"class":235},[229,1918,1919,1921,1923,1925,1927,1930,1932,1934,1936,1938],{"class":231,"line":273},[229,1920,309],{"class":253},[229,1922,1505],{"class":285},[229,1924,315],{"class":253},[229,1926,318],{"class":253},[229,1928,1929],{"class":239}," getValidatedRouterParams",[229,1931,1582],{"class":235},[229,1933,1585],{"class":260},[229,1935,264],{"class":235},[229,1937,267],{"class":253},[229,1939,270],{"class":235},[229,1941,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960],{"class":231,"line":306},[229,1943,1596],{"class":253},[229,1945,1599],{"class":246},[229,1947,1602],{"class":253},[229,1949,1605],{"class":235},[229,1951,1608],{"class":253},[229,1953,454],{"class":253},[229,1955,1613],{"class":235},[229,1957,460],{"class":253},[229,1959,1618],{"class":246},[229,1961,477],{"class":235},[229,1963,1964],{"class":231,"line":330},[229,1965,1625],{"class":235},[229,1967,1968],{"class":231,"line":510},[229,1969,333],{"class":235},[203,1971,1972],{},[216,1973,218],{},[220,1975,1977],{"className":222,"code":1976,"language":224,"meta":225,"style":225},"import { z } from \"zod\";\napp.get(\"/:key\", async (event) => {\n  const params = await getValidatedRouterParams(\n    event,\n    z.object({\n      key: z.string(),\n    }),\n  );\n});\n",[199,1978,1979,1991,2015,2029,2033,2041,2049,2053,2057],{"__ignoreMap":225},[229,1980,1981,1983,1985,1987,1989],{"class":231,"line":232},[229,1982,543],{"class":253},[229,1984,546],{"class":235},[229,1986,549],{"class":253},[229,1988,552],{"class":246},[229,1990,477],{"class":235},[229,1992,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013],{"class":231,"line":273},[229,1994,236],{"class":235},[229,1996,240],{"class":239},[229,1998,243],{"class":235},[229,2000,1902],{"class":246},[229,2002,250],{"class":235},[229,2004,254],{"class":253},[229,2006,257],{"class":235},[229,2008,261],{"class":260},[229,2010,264],{"class":235},[229,2012,267],{"class":253},[229,2014,270],{"class":235},[229,2016,2017,2019,2021,2023,2025,2027],{"class":231,"line":306},[229,2018,309],{"class":253},[229,2020,1505],{"class":285},[229,2022,315],{"class":253},[229,2024,318],{"class":253},[229,2026,1929],{"class":239},[229,2028,750],{"class":235},[229,2030,2031],{"class":231,"line":330},[229,2032,755],{"class":235},[229,2034,2035,2037,2039],{"class":231,"line":510},[229,2036,1697],{"class":235},[229,2038,570],{"class":239},[229,2040,573],{"class":235},[229,2042,2043,2045,2047],{"class":231,"line":527},[229,2044,1706],{"class":235},[229,2046,581],{"class":239},[229,2048,634],{"class":235},[229,2050,2051],{"class":231,"line":665},[229,2052,833],{"class":235},[229,2054,2055],{"class":231,"line":681},[229,2056,901],{"class":235},[229,2058,2059],{"class":231,"line":836},[229,2060,333],{"class":235},[203,2062,2063],{},[216,2064,218],{},[220,2066,2068],{"className":222,"code":2067,"language":224,"meta":225,"style":225},"import * as v from \"valibot\";\napp.get(\"/:key\", async (event) => {\n  const params = await getValidatedRouterParams(\n    event,\n    v.object({\n      key: v.pipe(v.string(), v.picklist([\"route-1\", \"route-2\", \"route-3\"])),\n    }),\n    {\n      decode: true,\n      onError: ({ issues }) => ({\n        statusText: \"Custom validation error\",\n        message: v.summarize(issues),\n      }),\n    },\n  );\n});\n",[199,2069,2070,2086,2110,2124,2128,2136,2170,2174,2178,2187,2201,2209,2217,2221,2225,2229],{"__ignoreMap":225},[229,2071,2072,2074,2076,2078,2080,2082,2084],{"class":231,"line":232},[229,2073,543],{"class":253},[229,2075,289],{"class":285},[229,2077,701],{"class":253},[229,2079,704],{"class":235},[229,2081,549],{"class":253},[229,2083,709],{"class":246},[229,2085,477],{"class":235},[229,2087,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108],{"class":231,"line":273},[229,2089,236],{"class":235},[229,2091,240],{"class":239},[229,2093,243],{"class":235},[229,2095,1902],{"class":246},[229,2097,250],{"class":235},[229,2099,254],{"class":253},[229,2101,257],{"class":235},[229,2103,261],{"class":260},[229,2105,264],{"class":235},[229,2107,267],{"class":253},[229,2109,270],{"class":235},[229,2111,2112,2114,2116,2118,2120,2122],{"class":231,"line":306},[229,2113,309],{"class":253},[229,2115,1505],{"class":285},[229,2117,315],{"class":253},[229,2119,318],{"class":253},[229,2121,1929],{"class":239},[229,2123,750],{"class":235},[229,2125,2126],{"class":231,"line":330},[229,2127,755],{"class":235},[229,2129,2130,2132,2134],{"class":231,"line":510},[229,2131,760],{"class":235},[229,2133,570],{"class":239},[229,2135,573],{"class":235},[229,2137,2138,2140,2142,2144,2146,2148,2151,2154,2157,2159,2162,2164,2167],{"class":231,"line":527},[229,2139,1802],{"class":235},[229,2141,772],{"class":239},[229,2143,775],{"class":235},[229,2145,581],{"class":239},[229,2147,780],{"class":235},[229,2149,2150],{"class":239},"picklist",[229,2152,2153],{"class":235},"([",[229,2155,2156],{"class":246},"\"route-1\"",[229,2158,250],{"class":235},[229,2160,2161],{"class":246},"\"route-2\"",[229,2163,250],{"class":235},[229,2165,2166],{"class":246},"\"route-3\"",[229,2168,2169],{"class":235},"])),\n",[229,2171,2172],{"class":231,"line":665},[229,2173,833],{"class":235},[229,2175,2176],{"class":231,"line":681},[229,2177,839],{"class":235},[229,2179,2180,2183,2185],{"class":231,"line":836},[229,2181,2182],{"class":235},"      decode: ",[229,2184,620],{"class":285},[229,2186,871],{"class":235},[229,2188,2189,2191,2193,2195,2197,2199],{"class":231,"line":842},[229,2190,845],{"class":239},[229,2192,848],{"class":235},[229,2194,851],{"class":260},[229,2196,854],{"class":235},[229,2198,267],{"class":253},[229,2200,859],{"class":235},[229,2202,2203,2205,2207],{"class":231,"line":862},[229,2204,865],{"class":235},[229,2206,868],{"class":246},[229,2208,871],{"class":235},[229,2210,2211,2213,2215],{"class":231,"line":874},[229,2212,877],{"class":235},[229,2214,880],{"class":239},[229,2216,883],{"class":235},[229,2218,2219],{"class":231,"line":886},[229,2220,889],{"class":235},[229,2222,2223],{"class":231,"line":892},[229,2224,895],{"class":235},[229,2226,2227],{"class":231,"line":898},[229,2228,901],{"class":235},[229,2230,2231],{"class":231,"line":904},[229,2232,333],{"class":235},[195,2234,2236],{"id":2235},"ismethodevent-expected-allowhead",[199,2237,2238],{},"isMethod(event, expected, allowHead?)",[203,2240,2241],{},"Checks if the incoming request method is of the expected type.",[203,2243,950,2244,954,2246,957,2248,961,2250,944],{},[199,2245,953],{},[199,2247,620],{},[199,2249,960],{},[199,2251,964],{},[203,2253,2254],{},[216,2255,218],{},[220,2257,2259],{"className":222,"code":2258,"language":224,"meta":225,"style":225},"app.get(\"/\", (event) => {\n  if (isMethod(event, \"GET\")) {\n    // Handle GET request\n  } else if (isMethod(event, [\"POST\", \"PUT\"])) {\n    // Handle POST or PUT request\n  }\n});\n",[199,2260,2261,2281,2297,2302,2331,2336,2341],{"__ignoreMap":225},[229,2262,2263,2265,2267,2269,2271,2273,2275,2277,2279],{"class":231,"line":232},[229,2264,236],{"class":235},[229,2266,240],{"class":239},[229,2268,243],{"class":235},[229,2270,247],{"class":246},[229,2272,986],{"class":235},[229,2274,261],{"class":260},[229,2276,264],{"class":235},[229,2278,267],{"class":253},[229,2280,270],{"class":235},[229,2282,2283,2286,2288,2290,2292,2294],{"class":231,"line":273},[229,2284,2285],{"class":253},"  if",[229,2287,257],{"class":235},[229,2289,943],{"class":239},[229,2291,282],{"class":235},[229,2293,1004],{"class":246},[229,2295,2296],{"class":235},")) {\n",[229,2298,2299],{"class":231,"line":306},[229,2300,2301],{"class":302},"    // Handle GET request\n",[229,2303,2304,2307,2310,2313,2315,2317,2320,2323,2325,2328],{"class":231,"line":330},[229,2305,2306],{"class":235},"  } ",[229,2308,2309],{"class":253},"else",[229,2311,2312],{"class":253}," if",[229,2314,257],{"class":235},[229,2316,943],{"class":239},[229,2318,2319],{"class":235},"(event, [",[229,2321,2322],{"class":246},"\"POST\"",[229,2324,250],{"class":235},[229,2326,2327],{"class":246},"\"PUT\"",[229,2329,2330],{"class":235},"])) {\n",[229,2332,2333],{"class":231,"line":510},[229,2334,2335],{"class":302},"    // Handle POST or PUT request\n",[229,2337,2338],{"class":231,"line":527},[229,2339,2340],{"class":235},"  }\n",[229,2342,2343],{"class":231,"line":665},[229,2344,333],{"class":235},[195,2346,2348],{"id":2347},"torequestinput-options",[199,2349,2350],{},"toRequest(input, options?)",[203,2352,2353,2354,944],{},"Convert input into a web ",[2355,2356,99],"a",{"href":2357,"rel":2358},"https://developer.mozilla.org/en-US/docs/Web/API/Request",[2359],"nofollow",[203,2361,2362],{},"If input is a relative URL, it will be normalized into a full path based on headers.",[203,2364,2365],{},"If input is already a Request and no options are provided, it will be returned as-is.",[195,2367,2369],{"id":2368},"getrequestfingerprintevent-opts",[199,2370,2371],{},"getRequestFingerprint(event, opts)",[203,2373,2374],{},"Get a unique fingerprint for the incoming request.",[2376,2377,2378],"style",{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}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 .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 .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}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":225,"searchDepth":273,"depth":273,"links":2380},[2381,2386,2389],{"id":192,"depth":273,"text":193,"children":2382},[2383,2384,2385],{"id":197,"depth":306,"text":201},{"id":336,"depth":306,"text":339},{"id":399,"depth":306,"text":402},{"id":909,"depth":273,"text":910,"children":2387},[2388],{"id":913,"depth":306,"text":916},{"id":930,"depth":273,"text":931,"children":2390},[2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403],{"id":934,"depth":306,"text":937},{"id":1019,"depth":306,"text":1022},{"id":1079,"depth":306,"text":1082},{"id":1153,"depth":306,"text":1156},{"id":1228,"depth":306,"text":1231},{"id":1303,"depth":306,"text":1306},{"id":1380,"depth":306,"text":1383},{"id":1453,"depth":306,"text":1456},{"id":1522,"depth":306,"text":1525},{"id":1863,"depth":306,"text":1866},{"id":2235,"depth":306,"text":2238},{"id":2347,"depth":306,"text":2350},{"id":2368,"depth":306,"text":2371},"H3 request utilities.","md",{"automd":2407,"icon":102},true,{"icon":102},{"title":99,"description":2404},"UGzgNvK0aPLnH5J2zox4K7VrYPIyX_2ZmPbMR9lCfcQ",[2412,2413],{"title":92,"path":93,"stem":94,"description":225,"icon":97,"children":-1},{"title":104,"path":105,"stem":106,"description":2414,"icon":107,"children":-1},"H3 response utilities.",1768646388630]