[{"data":1,"prerenderedAt":2450},["ShallowReactive",2],{"navigation":3,"-utils-request":189,"-utils-request-surround":2446},[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":2439,"extension":2440,"meta":2441,"navigation":2443,"path":100,"seo":2444,"stem":101,"__hash__":2445},"content/2.utils/1.request.md",{"type":192,"value":193,"toc":2412,"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,957,974,978,1026,1032,1035,1039,1086,1092,1095,1107,1110,1114,1160,1166,1169,1179,1185,1189,1235,1241,1244,1257,1260,1264,1310,1316,1319,1327,1337,1341,1387,1393,1396,1408,1412,1460,1466,1469,1478,1482,1528,1534,1537,1542,1546,1638,1642,1731,1735,1869,1875,1878,1886,1891,1895,1978,1982,2069,2073,2241,2247,2250,2260,2264,2353,2359,2362,2368,2371,2378,2384,2393,2396,2399,2405,2408],[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,953,956],{},"If the method is not allowed, it will throw a 405 error and include an ",[204,954,955],{},"Allow"," response header listing the permitted methods, as required by RFC 9110.",[208,958,959,960,963,964,966,967,970,971,949],{},"If ",[204,961,962],{},"allowHead"," is ",[204,965,625],{},", it will allow ",[204,968,969],{},"HEAD"," requests to pass if the expected method is ",[204,972,973],{},"GET",[208,975,976],{},[221,977,223],{},[225,979,981],{"className":227,"code":980,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  assertMethod(event, \"GET\");\n  // Handle GET request, otherwise throw 405 error\n});\n",[204,982,983,1004,1017,1022],{"__ignoreMap":230},[234,984,985,987,989,991,993,996,998,1000,1002],{"class":236,"line":237},[234,986,241],{"class":240},[234,988,245],{"class":244},[234,990,248],{"class":240},[234,992,252],{"class":251},[234,994,995],{"class":240},", (",[234,997,266],{"class":265},[234,999,269],{"class":240},[234,1001,272],{"class":258},[234,1003,275],{"class":240},[234,1005,1006,1009,1011,1014],{"class":236,"line":278},[234,1007,1008],{"class":244},"  assertMethod",[234,1010,287],{"class":240},[234,1012,1013],{"class":251},"\"GET\"",[234,1015,1016],{"class":240},");\n",[234,1018,1019],{"class":236,"line":311},[234,1020,1021],{"class":307},"  // Handle GET request, otherwise throw 405 error\n",[234,1023,1024],{"class":236,"line":335},[234,1025,338],{"class":240},[200,1027,1029],{"id":1028},"getqueryevent",[204,1030,1031],{},"getQuery(event)",[208,1033,1034],{},"Get parsed query string object from the request URL.",[208,1036,1037],{},[221,1038,223],{},[225,1040,1042],{"className":227,"code":1041,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const query = getQuery(event); // { key: \"value\", key2: [\"value1\", \"value2\"] }\n});\n",[204,1043,1044,1064,1082],{"__ignoreMap":230},[234,1045,1046,1048,1050,1052,1054,1056,1058,1060,1062],{"class":236,"line":237},[234,1047,241],{"class":240},[234,1049,245],{"class":244},[234,1051,248],{"class":240},[234,1053,252],{"class":251},[234,1055,995],{"class":240},[234,1057,266],{"class":265},[234,1059,269],{"class":240},[234,1061,272],{"class":258},[234,1063,275],{"class":240},[234,1065,1066,1068,1071,1073,1076,1079],{"class":236,"line":278},[234,1067,314],{"class":258},[234,1069,1070],{"class":290}," query",[234,1072,320],{"class":258},[234,1074,1075],{"class":244}," getQuery",[234,1077,1078],{"class":240},"(event); ",[234,1080,1081],{"class":307},"// { key: \"value\", key2: [\"value1\", \"value2\"] }\n",[234,1083,1084],{"class":236,"line":311},[234,1085,338],{"class":240},[200,1087,1089],{"id":1088},"getrequesthostevent-opts-xforwardedhost",[204,1090,1091],{},"getRequestHost(event, opts: { xForwardedHost? })",[208,1093,1094],{},"Get the request hostname.",[208,1096,959,1097,963,1100,1102,1103,1106],{},[204,1098,1099],{},"xForwardedHost",[204,1101,625],{},", it will use the ",[204,1104,1105],{},"x-forwarded-host"," header if it exists.",[208,1108,1109],{},"If no host header is found, it will return an empty string.",[208,1111,1112],{},[221,1113,223],{},[225,1115,1117],{"className":227,"code":1116,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const host = getRequestHost(event); // \"example.com\"\n});\n",[204,1118,1119,1139,1156],{"__ignoreMap":230},[234,1120,1121,1123,1125,1127,1129,1131,1133,1135,1137],{"class":236,"line":237},[234,1122,241],{"class":240},[234,1124,245],{"class":244},[234,1126,248],{"class":240},[234,1128,252],{"class":251},[234,1130,995],{"class":240},[234,1132,266],{"class":265},[234,1134,269],{"class":240},[234,1136,272],{"class":258},[234,1138,275],{"class":240},[234,1140,1141,1143,1146,1148,1151,1153],{"class":236,"line":278},[234,1142,314],{"class":258},[234,1144,1145],{"class":290}," host",[234,1147,320],{"class":258},[234,1149,1150],{"class":244}," getRequestHost",[234,1152,1078],{"class":240},[234,1154,1155],{"class":307},"// \"example.com\"\n",[234,1157,1158],{"class":236,"line":311},[234,1159,338],{"class":240},[200,1161,1163],{"id":1162},"getrequestipevent",[204,1164,1165],{},"getRequestIP(event)",[208,1167,1168],{},"Try to get the client IP address from the incoming request.",[208,1170,959,1171,963,1174,1102,1176,1106],{},[204,1172,1173],{},"xForwardedFor",[204,1175,625],{},[204,1177,1178],{},"x-forwarded-for",[208,1180,1181,1182,949],{},"If IP cannot be determined, it will default to ",[204,1183,1184],{},"undefined",[208,1186,1187],{},[221,1188,223],{},[225,1190,1192],{"className":227,"code":1191,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const ip = getRequestIP(event); // \"192.0.2.0\"\n});\n",[204,1193,1194,1214,1231],{"__ignoreMap":230},[234,1195,1196,1198,1200,1202,1204,1206,1208,1210,1212],{"class":236,"line":237},[234,1197,241],{"class":240},[234,1199,245],{"class":244},[234,1201,248],{"class":240},[234,1203,252],{"class":251},[234,1205,995],{"class":240},[234,1207,266],{"class":265},[234,1209,269],{"class":240},[234,1211,272],{"class":258},[234,1213,275],{"class":240},[234,1215,1216,1218,1221,1223,1226,1228],{"class":236,"line":278},[234,1217,314],{"class":258},[234,1219,1220],{"class":290}," ip",[234,1222,320],{"class":258},[234,1224,1225],{"class":244}," getRequestIP",[234,1227,1078],{"class":240},[234,1229,1230],{"class":307},"// \"192.0.2.0\"\n",[234,1232,1233],{"class":236,"line":311},[234,1234,338],{"class":240},[200,1236,1238],{"id":1237},"getrequestprotocolevent-opts-xforwardedproto",[204,1239,1240],{},"getRequestProtocol(event, opts: { xForwardedProto? })",[208,1242,1243],{},"Get the request protocol.",[208,1245,959,1246,1249,1250,1253,1254,949],{},[204,1247,1248],{},"x-forwarded-proto"," header is set to \"https\", it will return \"https\". If the header contains a comma-separated list of protocols, the first entry is used. You can disable this behavior by setting ",[204,1251,1252],{},"xForwardedProto"," to ",[204,1255,1256],{},"false",[208,1258,1259],{},"If protocol cannot be determined, it will default to \"http\".",[208,1261,1262],{},[221,1263,223],{},[225,1265,1267],{"className":227,"code":1266,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const protocol = getRequestProtocol(event); // \"https\"\n});\n",[204,1268,1269,1289,1306],{"__ignoreMap":230},[234,1270,1271,1273,1275,1277,1279,1281,1283,1285,1287],{"class":236,"line":237},[234,1272,241],{"class":240},[234,1274,245],{"class":244},[234,1276,248],{"class":240},[234,1278,252],{"class":251},[234,1280,995],{"class":240},[234,1282,266],{"class":265},[234,1284,269],{"class":240},[234,1286,272],{"class":258},[234,1288,275],{"class":240},[234,1290,1291,1293,1296,1298,1301,1303],{"class":236,"line":278},[234,1292,314],{"class":258},[234,1294,1295],{"class":290}," protocol",[234,1297,320],{"class":258},[234,1299,1300],{"class":244}," getRequestProtocol",[234,1302,1078],{"class":240},[234,1304,1305],{"class":307},"// \"https\"\n",[234,1307,1308],{"class":236,"line":311},[234,1309,338],{"class":240},[200,1311,1313],{"id":1312},"getrequesturlevent-opts-xforwardedhost-xforwardedproto",[204,1314,1315],{},"getRequestURL(event, opts: { xForwardedHost?, xForwardedProto? })",[208,1317,1318],{},"Generated the full incoming request URL.",[208,1320,959,1321,963,1323,1102,1325,1106],{},[204,1322,1099],{},[204,1324,625],{},[204,1326,1105],{},[208,1328,959,1329,963,1331,1333,1334,1336],{},[204,1330,1252],{},[204,1332,1256],{},", it will not use the ",[204,1335,1248],{}," header.",[208,1338,1339],{},[221,1340,223],{},[225,1342,1344],{"className":227,"code":1343,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const url = getRequestURL(event); // \"https://example.com/path\"\n});\n",[204,1345,1346,1366,1383],{"__ignoreMap":230},[234,1347,1348,1350,1352,1354,1356,1358,1360,1362,1364],{"class":236,"line":237},[234,1349,241],{"class":240},[234,1351,245],{"class":244},[234,1353,248],{"class":240},[234,1355,252],{"class":251},[234,1357,995],{"class":240},[234,1359,266],{"class":265},[234,1361,269],{"class":240},[234,1363,272],{"class":258},[234,1365,275],{"class":240},[234,1367,1368,1370,1373,1375,1378,1380],{"class":236,"line":278},[234,1369,314],{"class":258},[234,1371,1372],{"class":290}," url",[234,1374,320],{"class":258},[234,1376,1377],{"class":244}," getRequestURL",[234,1379,1078],{"class":240},[234,1381,1382],{"class":307},"// \"https://example.com/path\"\n",[234,1384,1385],{"class":236,"line":311},[234,1386,338],{"class":240},[200,1388,1390],{"id":1389},"getrouterparamevent-name-opts-decode",[204,1391,1392],{},"getRouterParam(event, name, opts: { decode? })",[208,1394,1395],{},"Get a matched route param by name.",[208,1397,959,1398,1401,1402,1404,1405,949],{},[204,1399,1400],{},"decode"," option is ",[204,1403,625],{},", it will decode the matched route param using ",[204,1406,1407],{},"decodeURIComponent",[208,1409,1410],{},[221,1411,223],{},[225,1413,1415],{"className":227,"code":1414,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const param = getRouterParam(event, \"key\");\n});\n",[204,1416,1417,1437,1456],{"__ignoreMap":230},[234,1418,1419,1421,1423,1425,1427,1429,1431,1433,1435],{"class":236,"line":237},[234,1420,241],{"class":240},[234,1422,245],{"class":244},[234,1424,248],{"class":240},[234,1426,252],{"class":251},[234,1428,995],{"class":240},[234,1430,266],{"class":265},[234,1432,269],{"class":240},[234,1434,272],{"class":258},[234,1436,275],{"class":240},[234,1438,1439,1441,1444,1446,1449,1451,1454],{"class":236,"line":278},[234,1440,314],{"class":258},[234,1442,1443],{"class":290}," param",[234,1445,320],{"class":258},[234,1447,1448],{"class":244}," getRouterParam",[234,1450,287],{"class":240},[234,1452,1453],{"class":251},"\"key\"",[234,1455,1016],{"class":240},[234,1457,1458],{"class":236,"line":311},[234,1459,338],{"class":240},[200,1461,1463],{"id":1462},"getrouterparamsevent-opts-decode",[204,1464,1465],{},"getRouterParams(event, opts: { decode? })",[208,1467,1468],{},"Get matched route params.",[208,1470,959,1471,1401,1473,1475,1476,949],{},[204,1472,1400],{},[204,1474,625],{},", it will decode the matched route params using ",[204,1477,1407],{},[208,1479,1480],{},[221,1481,223],{},[225,1483,1485],{"className":227,"code":1484,"language":229,"meta":230,"style":230},"app.get(\"/\", (event) => {\n  const params = getRouterParams(event); // { key: \"value\" }\n});\n",[204,1486,1487,1507,1524],{"__ignoreMap":230},[234,1488,1489,1491,1493,1495,1497,1499,1501,1503,1505],{"class":236,"line":237},[234,1490,241],{"class":240},[234,1492,245],{"class":244},[234,1494,248],{"class":240},[234,1496,252],{"class":251},[234,1498,995],{"class":240},[234,1500,266],{"class":265},[234,1502,269],{"class":240},[234,1504,272],{"class":258},[234,1506,275],{"class":240},[234,1508,1509,1511,1514,1516,1519,1521],{"class":236,"line":278},[234,1510,314],{"class":258},[234,1512,1513],{"class":290}," params",[234,1515,320],{"class":258},[234,1517,1518],{"class":244}," getRouterParams",[234,1520,1078],{"class":240},[234,1522,1523],{"class":307},"// { key: \"value\" }\n",[234,1525,1526],{"class":236,"line":311},[234,1527,338],{"class":240},[200,1529,1531],{"id":1530},"getvalidatedqueryevent-validate",[204,1532,1533],{},"getValidatedQuery(event, validate)",[208,1535,1536],{},"Get the query param from the request URL validated with validate function.",[208,1538,1539,1540,421],{},"You can use a simple function to validate the query object or use a Standard-Schema compatible library like ",[204,1541,420],{},[208,1543,1544],{},[221,1545,223],{},[225,1547,1549],{"className":227,"code":1548,"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,1550,1551,1575,1600,1629,1634],{"__ignoreMap":230},[234,1552,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573],{"class":236,"line":237},[234,1554,241],{"class":240},[234,1556,245],{"class":244},[234,1558,248],{"class":240},[234,1560,252],{"class":251},[234,1562,255],{"class":240},[234,1564,259],{"class":258},[234,1566,262],{"class":240},[234,1568,266],{"class":265},[234,1570,269],{"class":240},[234,1572,272],{"class":258},[234,1574,275],{"class":240},[234,1576,1577,1579,1581,1583,1585,1588,1591,1594,1596,1598],{"class":236,"line":278},[234,1578,314],{"class":258},[234,1580,1070],{"class":290},[234,1582,320],{"class":258},[234,1584,323],{"class":258},[234,1586,1587],{"class":244}," getValidatedQuery",[234,1589,1590],{"class":240},"(event, (",[234,1592,1593],{"class":265},"data",[234,1595,269],{"class":240},[234,1597,272],{"class":258},[234,1599,275],{"class":240},[234,1601,1602,1605,1608,1611,1614,1617,1619,1622,1624,1627],{"class":236,"line":311},[234,1603,1604],{"class":258},"    return",[234,1606,1607],{"class":251}," \"key\"",[234,1609,1610],{"class":258}," in",[234,1612,1613],{"class":240}," data ",[234,1615,1616],{"class":258},"&&",[234,1618,459],{"class":258},[234,1620,1621],{"class":240}," data.key ",[234,1623,465],{"class":258},[234,1625,1626],{"class":251}," \"string\"",[234,1628,482],{"class":240},[234,1630,1631],{"class":236,"line":335},[234,1632,1633],{"class":240},"  });\n",[234,1635,1636],{"class":236,"line":515},[234,1637,338],{"class":240},[208,1639,1640],{},[221,1641,223],{},[225,1643,1645],{"className":227,"code":1644,"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,1646,1647,1659,1683,1697,1701,1710,1719,1723,1727],{"__ignoreMap":230},[234,1648,1649,1651,1653,1655,1657],{"class":236,"line":237},[234,1650,548],{"class":258},[234,1652,551],{"class":240},[234,1654,554],{"class":258},[234,1656,557],{"class":251},[234,1658,482],{"class":240},[234,1660,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681],{"class":236,"line":278},[234,1662,241],{"class":240},[234,1664,245],{"class":244},[234,1666,248],{"class":240},[234,1668,252],{"class":251},[234,1670,255],{"class":240},[234,1672,259],{"class":258},[234,1674,262],{"class":240},[234,1676,266],{"class":265},[234,1678,269],{"class":240},[234,1680,272],{"class":258},[234,1682,275],{"class":240},[234,1684,1685,1687,1689,1691,1693,1695],{"class":236,"line":311},[234,1686,314],{"class":258},[234,1688,1070],{"class":290},[234,1690,320],{"class":258},[234,1692,323],{"class":258},[234,1694,1587],{"class":244},[234,1696,755],{"class":240},[234,1698,1699],{"class":236,"line":335},[234,1700,760],{"class":240},[234,1702,1703,1706,1708],{"class":236,"line":515},[234,1704,1705],{"class":240},"    z.",[234,1707,575],{"class":244},[234,1709,578],{"class":240},[234,1711,1712,1715,1717],{"class":236,"line":532},[234,1713,1714],{"class":240},"      key: z.",[234,1716,586],{"class":244},[234,1718,639],{"class":240},[234,1720,1721],{"class":236,"line":670},[234,1722,838],{"class":240},[234,1724,1725],{"class":236,"line":686},[234,1726,906],{"class":240},[234,1728,1729],{"class":236,"line":841},[234,1730,338],{"class":240},[208,1732,1733],{},[221,1734,223],{},[225,1736,1738],{"className":227,"code":1737,"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,1739,1740,1756,1780,1794,1798,1806,1815,1819,1823,1837,1845,1853,1857,1861,1865],{"__ignoreMap":230},[234,1741,1742,1744,1746,1748,1750,1752,1754],{"class":236,"line":237},[234,1743,548],{"class":258},[234,1745,294],{"class":290},[234,1747,706],{"class":258},[234,1749,709],{"class":240},[234,1751,554],{"class":258},[234,1753,714],{"class":251},[234,1755,482],{"class":240},[234,1757,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778],{"class":236,"line":278},[234,1759,241],{"class":240},[234,1761,245],{"class":244},[234,1763,248],{"class":240},[234,1765,252],{"class":251},[234,1767,255],{"class":240},[234,1769,259],{"class":258},[234,1771,262],{"class":240},[234,1773,266],{"class":265},[234,1775,269],{"class":240},[234,1777,272],{"class":258},[234,1779,275],{"class":240},[234,1781,1782,1784,1786,1788,1790,1792],{"class":236,"line":311},[234,1783,314],{"class":258},[234,1785,1513],{"class":290},[234,1787,320],{"class":258},[234,1789,323],{"class":258},[234,1791,1587],{"class":244},[234,1793,755],{"class":240},[234,1795,1796],{"class":236,"line":335},[234,1797,760],{"class":240},[234,1799,1800,1802,1804],{"class":236,"line":515},[234,1801,765],{"class":240},[234,1803,575],{"class":244},[234,1805,578],{"class":240},[234,1807,1808,1811,1813],{"class":236,"line":532},[234,1809,1810],{"class":240},"      key: v.",[234,1812,586],{"class":244},[234,1814,639],{"class":240},[234,1816,1817],{"class":236,"line":670},[234,1818,838],{"class":240},[234,1820,1821],{"class":236,"line":686},[234,1822,844],{"class":240},[234,1824,1825,1827,1829,1831,1833,1835],{"class":236,"line":841},[234,1826,850],{"class":244},[234,1828,853],{"class":240},[234,1830,856],{"class":265},[234,1832,859],{"class":240},[234,1834,272],{"class":258},[234,1836,864],{"class":240},[234,1838,1839,1841,1843],{"class":236,"line":847},[234,1840,870],{"class":240},[234,1842,873],{"class":251},[234,1844,876],{"class":240},[234,1846,1847,1849,1851],{"class":236,"line":867},[234,1848,882],{"class":240},[234,1850,885],{"class":244},[234,1852,888],{"class":240},[234,1854,1855],{"class":236,"line":879},[234,1856,894],{"class":240},[234,1858,1859],{"class":236,"line":891},[234,1860,900],{"class":240},[234,1862,1863],{"class":236,"line":897},[234,1864,906],{"class":240},[234,1866,1867],{"class":236,"line":903},[234,1868,338],{"class":240},[200,1870,1872],{"id":1871},"getvalidatedrouterparamsevent-validate",[204,1873,1874],{},"getValidatedRouterParams(event, validate)",[208,1876,1877],{},"Get matched route params and validate with validate function.",[208,1879,959,1880,1401,1882,1475,1884,949],{},[204,1881,1400],{},[204,1883,625],{},[204,1885,1407],{},[208,1887,1888,1889,421],{},"You can use a simple function to validate the params object or use a Standard-Schema compatible library like ",[204,1890,420],{},[208,1892,1893],{},[221,1894,223],{},[225,1896,1898],{"className":227,"code":1897,"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,1899,1900,1925,1948,1970,1974],{"__ignoreMap":230},[234,1901,1902,1904,1906,1908,1911,1913,1915,1917,1919,1921,1923],{"class":236,"line":237},[234,1903,241],{"class":240},[234,1905,245],{"class":244},[234,1907,248],{"class":240},[234,1909,1910],{"class":251},"\"/:key\"",[234,1912,255],{"class":240},[234,1914,259],{"class":258},[234,1916,262],{"class":240},[234,1918,266],{"class":265},[234,1920,269],{"class":240},[234,1922,272],{"class":258},[234,1924,275],{"class":240},[234,1926,1927,1929,1931,1933,1935,1938,1940,1942,1944,1946],{"class":236,"line":278},[234,1928,314],{"class":258},[234,1930,1513],{"class":290},[234,1932,320],{"class":258},[234,1934,323],{"class":258},[234,1936,1937],{"class":244}," getValidatedRouterParams",[234,1939,1590],{"class":240},[234,1941,1593],{"class":265},[234,1943,269],{"class":240},[234,1945,272],{"class":258},[234,1947,275],{"class":240},[234,1949,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968],{"class":236,"line":311},[234,1951,1604],{"class":258},[234,1953,1607],{"class":251},[234,1955,1610],{"class":258},[234,1957,1613],{"class":240},[234,1959,1616],{"class":258},[234,1961,459],{"class":258},[234,1963,1621],{"class":240},[234,1965,465],{"class":258},[234,1967,1626],{"class":251},[234,1969,482],{"class":240},[234,1971,1972],{"class":236,"line":335},[234,1973,1633],{"class":240},[234,1975,1976],{"class":236,"line":515},[234,1977,338],{"class":240},[208,1979,1980],{},[221,1981,223],{},[225,1983,1985],{"className":227,"code":1984,"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,1986,1987,1999,2023,2037,2041,2049,2057,2061,2065],{"__ignoreMap":230},[234,1988,1989,1991,1993,1995,1997],{"class":236,"line":237},[234,1990,548],{"class":258},[234,1992,551],{"class":240},[234,1994,554],{"class":258},[234,1996,557],{"class":251},[234,1998,482],{"class":240},[234,2000,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021],{"class":236,"line":278},[234,2002,241],{"class":240},[234,2004,245],{"class":244},[234,2006,248],{"class":240},[234,2008,1910],{"class":251},[234,2010,255],{"class":240},[234,2012,259],{"class":258},[234,2014,262],{"class":240},[234,2016,266],{"class":265},[234,2018,269],{"class":240},[234,2020,272],{"class":258},[234,2022,275],{"class":240},[234,2024,2025,2027,2029,2031,2033,2035],{"class":236,"line":311},[234,2026,314],{"class":258},[234,2028,1513],{"class":290},[234,2030,320],{"class":258},[234,2032,323],{"class":258},[234,2034,1937],{"class":244},[234,2036,755],{"class":240},[234,2038,2039],{"class":236,"line":335},[234,2040,760],{"class":240},[234,2042,2043,2045,2047],{"class":236,"line":515},[234,2044,1705],{"class":240},[234,2046,575],{"class":244},[234,2048,578],{"class":240},[234,2050,2051,2053,2055],{"class":236,"line":532},[234,2052,1714],{"class":240},[234,2054,586],{"class":244},[234,2056,639],{"class":240},[234,2058,2059],{"class":236,"line":670},[234,2060,838],{"class":240},[234,2062,2063],{"class":236,"line":686},[234,2064,906],{"class":240},[234,2066,2067],{"class":236,"line":841},[234,2068,338],{"class":240},[208,2070,2071],{},[221,2072,223],{},[225,2074,2076],{"className":227,"code":2075,"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,2077,2078,2094,2118,2132,2136,2144,2178,2182,2186,2195,2209,2217,2225,2229,2233,2237],{"__ignoreMap":230},[234,2079,2080,2082,2084,2086,2088,2090,2092],{"class":236,"line":237},[234,2081,548],{"class":258},[234,2083,294],{"class":290},[234,2085,706],{"class":258},[234,2087,709],{"class":240},[234,2089,554],{"class":258},[234,2091,714],{"class":251},[234,2093,482],{"class":240},[234,2095,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116],{"class":236,"line":278},[234,2097,241],{"class":240},[234,2099,245],{"class":244},[234,2101,248],{"class":240},[234,2103,1910],{"class":251},[234,2105,255],{"class":240},[234,2107,259],{"class":258},[234,2109,262],{"class":240},[234,2111,266],{"class":265},[234,2113,269],{"class":240},[234,2115,272],{"class":258},[234,2117,275],{"class":240},[234,2119,2120,2122,2124,2126,2128,2130],{"class":236,"line":311},[234,2121,314],{"class":258},[234,2123,1513],{"class":290},[234,2125,320],{"class":258},[234,2127,323],{"class":258},[234,2129,1937],{"class":244},[234,2131,755],{"class":240},[234,2133,2134],{"class":236,"line":335},[234,2135,760],{"class":240},[234,2137,2138,2140,2142],{"class":236,"line":515},[234,2139,765],{"class":240},[234,2141,575],{"class":244},[234,2143,578],{"class":240},[234,2145,2146,2148,2150,2152,2154,2156,2159,2162,2165,2167,2170,2172,2175],{"class":236,"line":532},[234,2147,1810],{"class":240},[234,2149,777],{"class":244},[234,2151,780],{"class":240},[234,2153,586],{"class":244},[234,2155,785],{"class":240},[234,2157,2158],{"class":244},"picklist",[234,2160,2161],{"class":240},"([",[234,2163,2164],{"class":251},"\"route-1\"",[234,2166,255],{"class":240},[234,2168,2169],{"class":251},"\"route-2\"",[234,2171,255],{"class":240},[234,2173,2174],{"class":251},"\"route-3\"",[234,2176,2177],{"class":240},"])),\n",[234,2179,2180],{"class":236,"line":670},[234,2181,838],{"class":240},[234,2183,2184],{"class":236,"line":686},[234,2185,844],{"class":240},[234,2187,2188,2191,2193],{"class":236,"line":841},[234,2189,2190],{"class":240},"      decode: ",[234,2192,625],{"class":290},[234,2194,876],{"class":240},[234,2196,2197,2199,2201,2203,2205,2207],{"class":236,"line":847},[234,2198,850],{"class":244},[234,2200,853],{"class":240},[234,2202,856],{"class":265},[234,2204,859],{"class":240},[234,2206,272],{"class":258},[234,2208,864],{"class":240},[234,2210,2211,2213,2215],{"class":236,"line":867},[234,2212,870],{"class":240},[234,2214,873],{"class":251},[234,2216,876],{"class":240},[234,2218,2219,2221,2223],{"class":236,"line":879},[234,2220,882],{"class":240},[234,2222,885],{"class":244},[234,2224,888],{"class":240},[234,2226,2227],{"class":236,"line":891},[234,2228,894],{"class":240},[234,2230,2231],{"class":236,"line":897},[234,2232,900],{"class":240},[234,2234,2235],{"class":236,"line":903},[234,2236,906],{"class":240},[234,2238,2239],{"class":236,"line":909},[234,2240,338],{"class":240},[200,2242,2244],{"id":2243},"ismethodevent-expected-allowhead",[204,2245,2246],{},"isMethod(event, expected, allowHead?)",[208,2248,2249],{},"Checks if the incoming request method is of the expected type.",[208,2251,959,2252,963,2254,966,2256,970,2258,949],{},[204,2253,962],{},[204,2255,625],{},[204,2257,969],{},[204,2259,973],{},[208,2261,2262],{},[221,2263,223],{},[225,2265,2267],{"className":227,"code":2266,"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,2268,2269,2289,2305,2310,2339,2344,2349],{"__ignoreMap":230},[234,2270,2271,2273,2275,2277,2279,2281,2283,2285,2287],{"class":236,"line":237},[234,2272,241],{"class":240},[234,2274,245],{"class":244},[234,2276,248],{"class":240},[234,2278,252],{"class":251},[234,2280,995],{"class":240},[234,2282,266],{"class":265},[234,2284,269],{"class":240},[234,2286,272],{"class":258},[234,2288,275],{"class":240},[234,2290,2291,2294,2296,2298,2300,2302],{"class":236,"line":278},[234,2292,2293],{"class":258},"  if",[234,2295,262],{"class":240},[234,2297,948],{"class":244},[234,2299,287],{"class":240},[234,2301,1013],{"class":251},[234,2303,2304],{"class":240},")) {\n",[234,2306,2307],{"class":236,"line":311},[234,2308,2309],{"class":307},"    // Handle GET request\n",[234,2311,2312,2315,2318,2321,2323,2325,2328,2331,2333,2336],{"class":236,"line":335},[234,2313,2314],{"class":240},"  } ",[234,2316,2317],{"class":258},"else",[234,2319,2320],{"class":258}," if",[234,2322,262],{"class":240},[234,2324,948],{"class":244},[234,2326,2327],{"class":240},"(event, [",[234,2329,2330],{"class":251},"\"POST\"",[234,2332,255],{"class":240},[234,2334,2335],{"class":251},"\"PUT\"",[234,2337,2338],{"class":240},"])) {\n",[234,2340,2341],{"class":236,"line":515},[234,2342,2343],{"class":307},"    // Handle POST or PUT request\n",[234,2345,2346],{"class":236,"line":532},[234,2347,2348],{"class":240},"  }\n",[234,2350,2351],{"class":236,"line":670},[234,2352,338],{"class":240},[200,2354,2356],{"id":2355},"requestwithbaseurlreq-base",[204,2357,2358],{},"requestWithBaseURL(req, base)",[208,2360,2361],{},"Create a lightweight request proxy with the base path stripped from the URL pathname.",[200,2363,2365],{"id":2364},"requestwithurlreq-url",[204,2366,2367],{},"requestWithURL(req, url)",[208,2369,2370],{},"Create a lightweight request proxy that overrides only the URL.",[208,2372,2373,2374,2377],{},"Avoids cloning the original request (no ",[204,2375,2376],{},"new Request()"," allocation).",[200,2379,2381],{"id":2380},"torequestinput-options",[204,2382,2383],{},"toRequest(input, options?)",[208,2385,2386,2387,949],{},"Convert input into a web ",[2388,2389,99],"a",{"href":2390,"rel":2391},"https://developer.mozilla.org/en-US/docs/Web/API/Request",[2392],"nofollow",[208,2394,2395],{},"If input is a relative URL, it will be normalized into a full path based on headers.",[208,2397,2398],{},"If input is already a Request and no options are provided, it will be returned as-is.",[200,2400,2402],{"id":2401},"getrequestfingerprintevent-opts",[204,2403,2404],{},"getRequestFingerprint(event, opts)",[208,2406,2407],{},"Get a unique fingerprint for the incoming request.",[2409,2410,2411],"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":2413},[2414,2419,2422],{"id":197,"depth":278,"text":198,"children":2415},[2416,2417,2418],{"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":2420},[2421],{"id":918,"depth":311,"text":921},{"id":935,"depth":278,"text":936,"children":2423},[2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438],{"id":939,"depth":311,"text":942},{"id":1028,"depth":311,"text":1031},{"id":1088,"depth":311,"text":1091},{"id":1162,"depth":311,"text":1165},{"id":1237,"depth":311,"text":1240},{"id":1312,"depth":311,"text":1315},{"id":1389,"depth":311,"text":1392},{"id":1462,"depth":311,"text":1465},{"id":1530,"depth":311,"text":1533},{"id":1871,"depth":311,"text":1874},{"id":2243,"depth":311,"text":2246},{"id":2355,"depth":311,"text":2358},{"id":2364,"depth":311,"text":2367},{"id":2380,"depth":311,"text":2383},{"id":2401,"depth":311,"text":2404},"H3 request utilities.","md",{"automd":2442,"icon":102},true,{"icon":102},{"title":99,"description":2439},"9vdfuo1a-E5eq0CLsEkufA-9b2cEgnk2B7cYV5sJ51k",[2447,2448],{"title":92,"path":93,"stem":94,"description":230,"icon":97,"children":-1},{"title":104,"path":105,"stem":106,"description":2449,"icon":107,"children":-1},"H3 response utilities.",1783115412054]