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