[{"data":1,"prerenderedAt":3244},["ShallowReactive",2],{"navigation":3,"-utils-request":193,"-utils-request-surround":3240},[4,91,138,170,177],{"title":5,"path":6,"stem":7,"children":8,"icon":90},"Guide","/guide","1.guide/0.index",[9,12,53,69],{"title":10,"path":6,"stem":7,"icon":11},"Getting Started","pixel:play",{"title":5,"icon":13,"path":14,"stem":15,"children":16,"page":52},"ph:book-open-duotone","/guide/basics","1.guide/1.basics",[17,22,27,32,37,42,47],{"title":18,"path":19,"stem":20,"icon":21},"Request Lifecycle","/guide/basics/lifecycle","1.guide/1.basics/1.lifecycle","icon-park-outline:handle-round",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/guide/basics/routing","1.guide/1.basics/2.routing","solar:routing-bold",{"title":28,"path":29,"stem":30,"icon":31},"Middleware","/guide/basics/middleware","1.guide/1.basics/3.middleware","mdi:middleware-outline",{"title":33,"path":34,"stem":35,"icon":36},"Event Handlers","/guide/basics/handler","1.guide/1.basics/4.handler","mdi:function",{"title":38,"path":39,"stem":40,"icon":41},"Sending Response","/guide/basics/response","1.guide/1.basics/5.response","tabler:json",{"title":43,"path":44,"stem":45,"icon":46},"Error Handling","/guide/basics/error","1.guide/1.basics/6.error","tabler:error-404",{"title":48,"path":49,"stem":50,"icon":51},"Nested Apps","/guide/basics/nested-apps","1.guide/1.basics/7.nested-apps","material-symbols-light:layers-outline",false,{"title":54,"icon":55,"path":56,"stem":57,"children":58,"page":52},"API","material-symbols-light:api-rounded","/guide/api","1.guide/900.api",[59,64],{"title":60,"path":61,"stem":62,"icon":63},"H3","/guide/api/h3","1.guide/900.api/1.h3","material-symbols:bolt-rounded",{"title":65,"path":66,"stem":67,"icon":68},"H3Event","/guide/api/h3event","1.guide/900.api/2.h3event","material-symbols:data-object-rounded",{"title":70,"icon":71,"path":72,"stem":73,"children":74,"page":52},"Advanced","hugeicons:more-01","/guide/advanced","1.guide/901.advanced",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"Plugins","/guide/advanced/plugins","1.guide/901.advanced/1.plugins","clarity:plugin-line",{"title":81,"path":82,"stem":83,"icon":84},"WebSockets","/guide/advanced/websocket","1.guide/901.advanced/2.websocket","hugeicons:live-streaming-02",{"title":86,"path":87,"stem":88,"icon":89},"Nightly Builds","/guide/advanced/nightly","1.guide/901.advanced/9.nightly","game-icons:barn-owl","i-ph:book-open-duotone",{"title":92,"path":93,"stem":94,"children":95,"icon":97},"Utils","/utils","2.utils/0.index",[96,98,103,108,113,118,123,128,133],{"title":92,"path":93,"stem":94,"icon":97},"ph:function-bold",{"title":99,"path":100,"stem":101,"icon":102},"Request","/utils/request","2.utils/1.request","material-symbols-light:input",{"title":104,"path":105,"stem":106,"icon":107},"Response","/utils/response","2.utils/2.response","material-symbols-light:output",{"title":109,"path":110,"stem":111,"icon":112},"Cookie","/utils/cookie","2.utils/3.cookie","material-symbols:cookie-outline",{"title":114,"path":115,"stem":116,"icon":117},"Security","/utils/security","2.utils/4.security","wpf:key-security",{"title":119,"path":120,"stem":121,"icon":122},"Proxy","/utils/proxy","2.utils/5.proxy","arcticons:super-proxy",{"title":124,"path":125,"stem":126,"icon":127},"MCP","/utils/mcp","2.utils/6.mcp","material-symbols:swap-calls",{"title":129,"path":130,"stem":131,"icon":132},"More utils","/utils/more","2.utils/9.more","mingcute:plus-line",{"title":134,"path":135,"stem":136,"icon":137},"Community","/utils/community","2.utils/99.community","lets-icons:external",{"title":139,"path":140,"stem":141,"children":142,"icon":144},"Examples","/examples","4.examples/0.index",[143,145,150,154,158,162,166],{"title":139,"path":140,"stem":141,"icon":144},"ph:code",{"title":146,"path":147,"stem":148,"icon":149},"Cookies","/examples/handle-cookie","4.examples/handle-cookie","ph:arrow-right",{"title":151,"path":152,"stem":153,"icon":149},"HTTP QUERY Method","/examples/handle-query","4.examples/handle-query",{"title":155,"path":156,"stem":157,"icon":149},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":159,"path":160,"stem":161,"icon":149},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":163,"path":164,"stem":165,"icon":149},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":167,"path":168,"stem":169,"icon":149},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":171,"path":172,"stem":173,"children":174,"icon":176},"Migration","/migration","5.migration/0.index",[175],{"title":171,"path":172,"stem":173,"icon":176},"icons8:up-round",{"title":178,"path":179,"stem":180,"children":181},"Blog","/blog","99.blog",[182,185,189],{"title":178,"path":179,"stem":183,"icon":184},"99.blog/index","i-lucide-file-text",{"title":186,"path":187,"stem":188,"icon":184},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":190,"path":191,"stem":192,"icon":184},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":194,"title":99,"body":195,"description":3233,"extension":3234,"meta":3235,"navigation":3237,"path":100,"seo":3238,"stem":101,"__hash__":3239},"content/2.utils/1.request.md",{"type":196,"value":197,"toc":3200,"icon":102},"minimark",[198,203,211,215,222,228,343,349,352,371,375,426,430,485,491,498,505,509,617,621,771,775,994,1002,1019,1025,1035,1048,1052,1117,1123,1133,1150,1178,1182,1433,1437,1540,1546,1555,1558,1585,1603,1607,1678,1682,1688,1699,1703,1709,1715,1722,1737,1741,1788,1794,1797,1801,1847,1853,1856,1868,1871,1875,1921,1927,1930,1940,1946,1950,1996,2002,2005,2018,2021,2025,2071,2077,2080,2088,2098,2102,2148,2154,2157,2185,2189,2237,2243,2246,2263,2267,2313,2319,2322,2327,2331,2421,2425,2514,2518,2652,2658,2661,2677,2682,2686,2769,2773,2860,2864,3032,3038,3041,3051,3055,3143,3149,3152,3158,3161,3168,3174,3181,3184,3187,3193,3196],[199,200,202],"h2",{"id":201},"body","Body",[204,205,207],"h3",{"id":206},"assertbodysizeevent-limit",[208,209,210],"code",{},"assertBodySize(event, limit)",[212,213,214],"p",{},"Asserts that request body size is within the specified limit.",[212,216,217,218,221],{},"If body size exceeds the limit, throws a ",[208,219,220],{},"413"," Request Entity Too Large response error.",[212,223,224],{},[225,226,227],"strong",{},"Example:",[229,230,235],"pre",{"className":231,"code":232,"language":233,"meta":234,"style":234},"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","",[208,236,237,280,313,337],{"__ignoreMap":234},[238,239,242,246,250,253,257,260,264,267,271,274,277],"span",{"class":240,"line":241},"line",1,[238,243,245],{"class":244},"slsVL","app.",[238,247,249],{"class":248},"shcOC","get",[238,251,252],{"class":244},"(",[238,254,256],{"class":255},"sfrk1","\"/\"",[238,258,259],{"class":244},", ",[238,261,263],{"class":262},"so5gQ","async",[238,265,266],{"class":244}," (",[238,268,270],{"class":269},"sQHwn","event",[238,272,273],{"class":244},") ",[238,275,276],{"class":262},"=>",[238,278,279],{"class":244}," {\n",[238,281,283,286,289,292,296,299,302,304,306,309],{"class":240,"line":282},2,[238,284,285],{"class":262},"  await",[238,287,288],{"class":248}," assertBodySize",[238,290,291],{"class":244},"(event, ",[238,293,295],{"class":294},"suiK_","10",[238,297,298],{"class":262}," *",[238,300,301],{"class":294}," 1024",[238,303,298],{"class":262},[238,305,301],{"class":294},[238,307,308],{"class":244},"); ",[238,310,312],{"class":311},"sCsY4","// 10MB\n",[238,314,316,319,322,325,328,331,334],{"class":240,"line":315},3,[238,317,318],{"class":262},"  const",[238,320,321],{"class":294}," data",[238,323,324],{"class":262}," =",[238,326,327],{"class":262}," await",[238,329,330],{"class":244}," event.req.",[238,332,333],{"class":248},"formData",[238,335,336],{"class":244},"();\n",[238,338,340],{"class":240,"line":339},4,[238,341,342],{"class":244},"});\n",[204,344,346],{"id":345},"readbodyevent-options",[208,347,348],{},"readBody(event, options?)",[212,350,351],{},"Reads request body and tries to parse using JSON.parse or URLSearchParams.",[212,353,354,355,358,359,362,363,366,367,370],{},"By default the body is parsed as JSON (falling back to URL-encoded parsing when the ",[208,356,357],{},"Content-Type"," is ",[208,360,361],{},"application/x-www-form-urlencoded","). Other body types, such as ",[208,364,365],{},"multipart/form-data",", must be opted into explicitly via ",[208,368,369],{},"options.type"," and are never auto-detected from the request headers.",[212,372,373],{},[225,374,227],{},[229,376,378],{"className":231,"code":377,"language":233,"meta":234,"style":234},"app.post(\"/\", async (event) => {\n  const body = await readBody(event);\n});\n",[208,379,380,405,422],{"__ignoreMap":234},[238,381,382,384,387,389,391,393,395,397,399,401,403],{"class":240,"line":241},[238,383,245],{"class":244},[238,385,386],{"class":248},"post",[238,388,252],{"class":244},[238,390,256],{"class":255},[238,392,259],{"class":244},[238,394,263],{"class":262},[238,396,266],{"class":244},[238,398,270],{"class":269},[238,400,273],{"class":244},[238,402,276],{"class":262},[238,404,279],{"class":244},[238,406,407,409,412,414,416,419],{"class":240,"line":282},[238,408,318],{"class":262},[238,410,411],{"class":294}," body",[238,413,324],{"class":262},[238,415,327],{"class":262},[238,417,418],{"class":248}," readBody",[238,420,421],{"class":244},"(event);\n",[238,423,424],{"class":240,"line":315},[238,425,342],{"class":244},[212,427,428],{},[225,429,227],{},[229,431,433],{"className":231,"code":432,"language":233,"meta":234,"style":234},"app.post(\"/upload\", async (event) => {\n  const body = await readBody(event, { type: \"formData\" });\n});\n",[208,434,435,460,481],{"__ignoreMap":234},[238,436,437,439,441,443,446,448,450,452,454,456,458],{"class":240,"line":241},[238,438,245],{"class":244},[238,440,386],{"class":248},[238,442,252],{"class":244},[238,444,445],{"class":255},"\"/upload\"",[238,447,259],{"class":244},[238,449,263],{"class":262},[238,451,266],{"class":244},[238,453,270],{"class":269},[238,455,273],{"class":244},[238,457,276],{"class":262},[238,459,279],{"class":244},[238,461,462,464,466,468,470,472,475,478],{"class":240,"line":282},[238,463,318],{"class":262},[238,465,411],{"class":294},[238,467,324],{"class":262},[238,469,327],{"class":262},[238,471,418],{"class":248},[238,473,474],{"class":244},"(event, { type: ",[238,476,477],{"class":255},"\"formData\"",[238,479,480],{"class":244}," });\n",[238,482,483],{"class":240,"line":315},[238,484,342],{"class":244},[204,486,488],{"id":487},"readvalidatedbodyevent-validate",[208,489,490],{},"readValidatedBody(event, validate)",[212,492,493,494,497],{},"Tries to read the request body via ",[208,495,496],{},"readBody",", then uses the provided validation schema or function and either throws a validation error or returns the result.",[212,499,500,501,504],{},"You can use a simple function to validate the body or use a Standard-Schema compatible library like ",[208,502,503],{},"zod"," to define a schema.",[212,506,507],{},[225,508,227],{},[229,510,512],{"className":231,"code":511,"language":233,"meta":234,"style":234},"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",[208,513,514,535,566,571,595,612],{"__ignoreMap":234},[238,515,516,519,522,524,526,529,532],{"class":240,"line":241},[238,517,518],{"class":262},"function",[238,520,521],{"class":248}," validateBody",[238,523,252],{"class":244},[238,525,201],{"class":269},[238,527,528],{"class":262},":",[238,530,531],{"class":294}," any",[238,533,534],{"class":244},") {\n",[238,536,537,540,543,546,549,552,555,557,560,563],{"class":240,"line":282},[238,538,539],{"class":262},"  return",[238,541,542],{"class":262}," typeof",[238,544,545],{"class":244}," body ",[238,547,548],{"class":262},"===",[238,550,551],{"class":255}," \"object\"",[238,553,554],{"class":262}," &&",[238,556,545],{"class":244},[238,558,559],{"class":262},"!==",[238,561,562],{"class":294}," null",[238,564,565],{"class":244},";\n",[238,567,568],{"class":240,"line":315},[238,569,570],{"class":244},"}\n",[238,572,573,575,577,579,581,583,585,587,589,591,593],{"class":240,"line":339},[238,574,245],{"class":244},[238,576,386],{"class":248},[238,578,252],{"class":244},[238,580,256],{"class":255},[238,582,259],{"class":244},[238,584,263],{"class":262},[238,586,266],{"class":244},[238,588,270],{"class":269},[238,590,273],{"class":244},[238,592,276],{"class":262},[238,594,279],{"class":244},[238,596,598,600,602,604,606,609],{"class":240,"line":597},5,[238,599,318],{"class":262},[238,601,411],{"class":294},[238,603,324],{"class":262},[238,605,327],{"class":262},[238,607,608],{"class":248}," readValidatedBody",[238,610,611],{"class":244},"(event, validateBody);\n",[238,613,615],{"class":240,"line":614},6,[238,616,342],{"class":244},[212,618,619],{},[225,620,227],{},[229,622,624],{"className":231,"code":623,"language":233,"meta":234,"style":234},"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",[208,625,626,642,661,694,722,726,750,766],{"__ignoreMap":234},[238,627,628,631,634,637,640],{"class":240,"line":241},[238,629,630],{"class":262},"import",[238,632,633],{"class":244}," { z } ",[238,635,636],{"class":262},"from",[238,638,639],{"class":255}," \"zod\"",[238,641,565],{"class":244},[238,643,644,647,650,652,655,658],{"class":240,"line":282},[238,645,646],{"class":262},"const",[238,648,649],{"class":294}," objectSchema",[238,651,324],{"class":262},[238,653,654],{"class":244}," z.",[238,656,657],{"class":248},"object",[238,659,660],{"class":244},"({\n",[238,662,663,666,669,672,675,677,680,683,686,688,691],{"class":240,"line":315},[238,664,665],{"class":244},"  name: z.",[238,667,668],{"class":248},"string",[238,670,671],{"class":244},"().",[238,673,674],{"class":248},"min",[238,676,252],{"class":244},[238,678,679],{"class":294},"3",[238,681,682],{"class":244},").",[238,684,685],{"class":248},"max",[238,687,252],{"class":244},[238,689,690],{"class":294},"20",[238,692,693],{"class":244},"),\n",[238,695,696,699,702,705,708,711,714,716,719],{"class":240,"line":339},[238,697,698],{"class":244},"  age: z.",[238,700,701],{"class":248},"number",[238,703,704],{"class":244},"({ coerce: ",[238,706,707],{"class":294},"true",[238,709,710],{"class":244}," }).",[238,712,713],{"class":248},"positive",[238,715,671],{"class":244},[238,717,718],{"class":248},"int",[238,720,721],{"class":244},"(),\n",[238,723,724],{"class":240,"line":597},[238,725,342],{"class":244},[238,727,728,730,732,734,736,738,740,742,744,746,748],{"class":240,"line":614},[238,729,245],{"class":244},[238,731,386],{"class":248},[238,733,252],{"class":244},[238,735,256],{"class":255},[238,737,259],{"class":244},[238,739,263],{"class":262},[238,741,266],{"class":244},[238,743,270],{"class":269},[238,745,273],{"class":244},[238,747,276],{"class":262},[238,749,279],{"class":244},[238,751,753,755,757,759,761,763],{"class":240,"line":752},7,[238,754,318],{"class":262},[238,756,411],{"class":294},[238,758,324],{"class":262},[238,760,327],{"class":262},[238,762,608],{"class":248},[238,764,765],{"class":244},"(event, objectSchema);\n",[238,767,769],{"class":240,"line":768},8,[238,770,342],{"class":244},[212,772,773],{},[225,774,227],{},[229,776,778],{"className":231,"code":777,"language":233,"meta":234,"style":234},"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",[208,779,780,799,823,838,843,852,888,916,921,927,947,959,971,977,983,989],{"__ignoreMap":234},[238,781,782,784,786,789,792,794,797],{"class":240,"line":241},[238,783,630],{"class":262},[238,785,298],{"class":294},[238,787,788],{"class":262}," as",[238,790,791],{"class":244}," v ",[238,793,636],{"class":262},[238,795,796],{"class":255}," \"valibot\"",[238,798,565],{"class":244},[238,800,801,803,805,807,809,811,813,815,817,819,821],{"class":240,"line":282},[238,802,245],{"class":244},[238,804,386],{"class":248},[238,806,252],{"class":244},[238,808,256],{"class":255},[238,810,259],{"class":244},[238,812,263],{"class":262},[238,814,266],{"class":244},[238,816,270],{"class":269},[238,818,273],{"class":244},[238,820,276],{"class":262},[238,822,279],{"class":244},[238,824,825,827,829,831,833,835],{"class":240,"line":315},[238,826,318],{"class":262},[238,828,411],{"class":294},[238,830,324],{"class":262},[238,832,327],{"class":262},[238,834,608],{"class":248},[238,836,837],{"class":244},"(\n",[238,839,840],{"class":240,"line":339},[238,841,842],{"class":244},"    event,\n",[238,844,845,848,850],{"class":240,"line":597},[238,846,847],{"class":244},"    v.",[238,849,657],{"class":248},[238,851,660],{"class":244},[238,853,854,857,860,863,865,868,871,873,875,878,881,883,885],{"class":240,"line":614},[238,855,856],{"class":244},"      name: v.",[238,858,859],{"class":248},"pipe",[238,861,862],{"class":244},"(v.",[238,864,668],{"class":248},[238,866,867],{"class":244},"(), v.",[238,869,870],{"class":248},"minLength",[238,872,252],{"class":244},[238,874,679],{"class":294},[238,876,877],{"class":244},"), v.",[238,879,880],{"class":248},"maxLength",[238,882,252],{"class":244},[238,884,690],{"class":294},[238,886,887],{"class":244},")),\n",[238,889,890,893,895,897,899,901,904,906,909,911,914],{"class":240,"line":752},[238,891,892],{"class":244},"      age: v.",[238,894,859],{"class":248},[238,896,862],{"class":244},[238,898,701],{"class":248},[238,900,867],{"class":244},[238,902,903],{"class":248},"integer",[238,905,867],{"class":244},[238,907,908],{"class":248},"minValue",[238,910,252],{"class":244},[238,912,913],{"class":294},"1",[238,915,887],{"class":244},[238,917,918],{"class":240,"line":768},[238,919,920],{"class":244},"    }),\n",[238,922,924],{"class":240,"line":923},9,[238,925,926],{"class":244},"    {\n",[238,928,930,933,936,939,942,944],{"class":240,"line":929},10,[238,931,932],{"class":248},"      onError",[238,934,935],{"class":244},": ({ ",[238,937,938],{"class":269},"issues",[238,940,941],{"class":244}," }) ",[238,943,276],{"class":262},[238,945,946],{"class":244}," ({\n",[238,948,950,953,956],{"class":240,"line":949},11,[238,951,952],{"class":244},"        statusText: ",[238,954,955],{"class":255},"\"Custom validation error\"",[238,957,958],{"class":244},",\n",[238,960,962,965,968],{"class":240,"line":961},12,[238,963,964],{"class":244},"        message: v.",[238,966,967],{"class":248},"summarize",[238,969,970],{"class":244},"(issues),\n",[238,972,974],{"class":240,"line":973},13,[238,975,976],{"class":244},"      }),\n",[238,978,980],{"class":240,"line":979},14,[238,981,982],{"class":244},"    },\n",[238,984,986],{"class":240,"line":985},15,[238,987,988],{"class":244},"  );\n",[238,990,992],{"class":240,"line":991},16,[238,993,342],{"class":244},[199,995,997,998,1001],{"id":996},"query-http-query-method","Query (HTTP ",[208,999,1000],{},"QUERY"," method)",[212,1003,1004,1005,1015,1016,1018],{},"Utilities for the ",[1006,1007,1011,1012,1014],"a",{"href":1008,"rel":1009},"https://www.rfc-editor.org/rfc/rfc10008",[1010],"nofollow","HTTP ",[208,1013,1000],{}," method (RFC 10008)",": advertise the query formats a resource accepts and validate the request ",[208,1017,357],{},".",[204,1020,1022],{"id":1021},"appendacceptqueryevent-mediatypes",[208,1023,1024],{},"appendAcceptQuery(event, mediaTypes)",[212,1026,1027,1028,1031,1032,1034],{},"Advertise the query formats a resource accepts by setting the ",[208,1029,1030],{},"Accept-Query"," response header (RFC 10008, HTTP ",[208,1033,1000],{}," method).",[212,1036,1037,1038,1043,1044,1047],{},"The media types are serialized as a ",[1006,1039,1042],{"href":1040,"rel":1041},"https://www.rfc-editor.org/rfc/rfc8941",[1010],"Structured Fields"," List: the base media type becomes a token and any ",[208,1045,1046],{},";name=value"," parameters are emitted with their values as quoted strings.",[212,1049,1050],{},[225,1051,227],{},[229,1053,1055],{"className":231,"code":1054,"language":233,"meta":234,"style":234},"app.query(\"/search\", (event) => {\n  appendAcceptQuery(event, [\"application/sql;charset=UTF-8\", \"application/jsonpath\"]);\n  // Accept-Query: application/sql;charset=\"UTF-8\", application/jsonpath\n  return handleSearch(event);\n});\n",[208,1056,1057,1080,1099,1104,1113],{"__ignoreMap":234},[238,1058,1059,1061,1064,1066,1069,1072,1074,1076,1078],{"class":240,"line":241},[238,1060,245],{"class":244},[238,1062,1063],{"class":248},"query",[238,1065,252],{"class":244},[238,1067,1068],{"class":255},"\"/search\"",[238,1070,1071],{"class":244},", (",[238,1073,270],{"class":269},[238,1075,273],{"class":244},[238,1077,276],{"class":262},[238,1079,279],{"class":244},[238,1081,1082,1085,1088,1091,1093,1096],{"class":240,"line":282},[238,1083,1084],{"class":248},"  appendAcceptQuery",[238,1086,1087],{"class":244},"(event, [",[238,1089,1090],{"class":255},"\"application/sql;charset=UTF-8\"",[238,1092,259],{"class":244},[238,1094,1095],{"class":255},"\"application/jsonpath\"",[238,1097,1098],{"class":244},"]);\n",[238,1100,1101],{"class":240,"line":315},[238,1102,1103],{"class":311},"  // Accept-Query: application/sql;charset=\"UTF-8\", application/jsonpath\n",[238,1105,1106,1108,1111],{"class":240,"line":339},[238,1107,539],{"class":262},[238,1109,1110],{"class":248}," handleSearch",[238,1112,421],{"class":244},[238,1114,1115],{"class":240,"line":597},[238,1116,342],{"class":244},[204,1118,1120],{"id":1119},"definequeryhandler",[208,1121,1122],{},"defineQueryHandler()",[212,1124,1125,1126,1128,1129,1132],{},"Define an HTTP ",[208,1127,1000],{}," method handler (RFC 10008) with the accepted query ",[208,1130,1131],{},"formats"," enforced and advertised.",[212,1134,1135,1136,1138,1139,1142,1143,1145,1146,1149],{},"The ",[208,1137,1131],{}," array lists the accepted query media types (wildcards like ",[208,1140,1141],{},"application/*"," are supported). On every response — including error responses — they are advertised via the ",[208,1144,1030],{}," header. The handler receives the matched request media type as ",[208,1147,1148],{},"format"," (lower-cased, without parameters) and reads the query from the request body as usual.",[212,1151,1152,1153,1156,1157,1159,1160,1163,1164,1166,1167,1170,1171,1173,1174,1177],{},"Requests are rejected with ",[208,1154,1155],{},"405"," (non-",[208,1158,1000],{}," method), ",[208,1161,1162],{},"400"," (missing ",[208,1165,357],{},"), ",[208,1168,1169],{},"422"," (malformed ",[208,1172,357],{},"), or ",[208,1175,1176],{},"415"," (unsupported query format).",[212,1179,1180],{},[225,1181,227],{},[229,1183,1185],{"className":231,"code":1184,"language":233,"meta":234,"style":234},"app.query(\"/books\", defineQueryHandler({\n  formats: [\"application/sql\", \"application/jsonpath\"],\n  handler: async (event, { format }) => {\n    const query = await readBody(event, { type: \"text\" });\n    return runQuery(format, query);\n  },\n}));\nWith the `get` option, the same handler also serves an equivalent,\nHTTP-cacheable GET (RFC 10008 §2.3): the query is read from the given URL\nsearch param (and the format from `?format=`), the handler receives the\nresolved `query` in its context on both paths, and successful QUERY\nresponses advertise the equivalent GET via `Content-Location` — preserving\nexisting search params, and skipped when the URL would exceed 2048 chars.\nRegister the handler for both methods; `HEAD` is served automatically via\nthe GET route. GET-path rejections are `400`.\n",[208,1186,1187,1205,1220,1245,1266,1277,1282,1287,1298,1332,1349,1366,1382,1399,1410],{"__ignoreMap":234},[238,1188,1189,1191,1193,1195,1198,1200,1203],{"class":240,"line":241},[238,1190,245],{"class":244},[238,1192,1063],{"class":248},[238,1194,252],{"class":244},[238,1196,1197],{"class":255},"\"/books\"",[238,1199,259],{"class":244},[238,1201,1202],{"class":248},"defineQueryHandler",[238,1204,660],{"class":244},[238,1206,1207,1210,1213,1215,1217],{"class":240,"line":282},[238,1208,1209],{"class":244},"  formats: [",[238,1211,1212],{"class":255},"\"application/sql\"",[238,1214,259],{"class":244},[238,1216,1095],{"class":255},[238,1218,1219],{"class":244},"],\n",[238,1221,1222,1225,1228,1230,1232,1234,1237,1239,1241,1243],{"class":240,"line":315},[238,1223,1224],{"class":248},"  handler",[238,1226,1227],{"class":244},": ",[238,1229,263],{"class":262},[238,1231,266],{"class":244},[238,1233,270],{"class":269},[238,1235,1236],{"class":244},", { ",[238,1238,1148],{"class":269},[238,1240,941],{"class":244},[238,1242,276],{"class":262},[238,1244,279],{"class":244},[238,1246,1247,1250,1253,1255,1257,1259,1261,1264],{"class":240,"line":339},[238,1248,1249],{"class":262},"    const",[238,1251,1252],{"class":294}," query",[238,1254,324],{"class":262},[238,1256,327],{"class":262},[238,1258,418],{"class":248},[238,1260,474],{"class":244},[238,1262,1263],{"class":255},"\"text\"",[238,1265,480],{"class":244},[238,1267,1268,1271,1274],{"class":240,"line":597},[238,1269,1270],{"class":262},"    return",[238,1272,1273],{"class":248}," runQuery",[238,1275,1276],{"class":244},"(format, query);\n",[238,1278,1279],{"class":240,"line":614},[238,1280,1281],{"class":244},"  },\n",[238,1283,1284],{"class":240,"line":752},[238,1285,1286],{"class":244},"}));\n",[238,1288,1289,1292,1295],{"class":240,"line":768},[238,1290,1291],{"class":244},"With the ",[238,1293,1294],{"class":255},"`get`",[238,1296,1297],{"class":244}," option, the same handler also serves an equivalent,\n",[238,1299,1300,1303,1306,1309,1312,1314,1317,1320,1323,1326,1329],{"class":240,"line":923},[238,1301,1302],{"class":294},"HTTP",[238,1304,1305],{"class":262},"-",[238,1307,1308],{"class":244},"cacheable ",[238,1310,1311],{"class":248},"GET",[238,1313,266],{"class":244},[238,1315,1316],{"class":294},"RFC",[238,1318,1319],{"class":294}," 10008",[238,1321,1322],{"class":244}," §",[238,1324,1325],{"class":294},"2.3",[238,1327,1328],{"class":244},"): the query is read from the given ",[238,1330,1331],{"class":294},"URL\n",[238,1333,1334,1337,1340,1343,1346],{"class":240,"line":929},[238,1335,1336],{"class":244},"search ",[238,1338,1339],{"class":248},"param",[238,1341,1342],{"class":244}," (and the format from ",[238,1344,1345],{"class":255},"`?format=`",[238,1347,1348],{"class":244},"), the handler receives the\n",[238,1350,1351,1354,1357,1360,1363],{"class":240,"line":949},[238,1352,1353],{"class":244},"resolved ",[238,1355,1356],{"class":255},"`query`",[238,1358,1359],{"class":262}," in",[238,1361,1362],{"class":244}," its context on both paths, and successful ",[238,1364,1365],{"class":294},"QUERY\n",[238,1367,1368,1371,1373,1376,1379],{"class":240,"line":961},[238,1369,1370],{"class":244},"responses advertise the equivalent ",[238,1372,1311],{"class":294},[238,1374,1375],{"class":244}," via ",[238,1377,1378],{"class":255},"`Content-Location`",[238,1380,1381],{"class":244}," — preserving\n",[238,1383,1384,1387,1390,1393,1396],{"class":240,"line":973},[238,1385,1386],{"class":244},"existing search params, and skipped when the ",[238,1388,1389],{"class":294},"URL",[238,1391,1392],{"class":244}," would exceed ",[238,1394,1395],{"class":294},"2048",[238,1397,1398],{"class":244}," chars.\n",[238,1400,1401,1404,1407],{"class":240,"line":979},[238,1402,1403],{"class":244},"Register the handler for both methods; ",[238,1405,1406],{"class":255},"`HEAD`",[238,1408,1409],{"class":244}," is served automatically via\n",[238,1411,1412,1415,1417,1420,1422,1424,1427,1430],{"class":240,"line":985},[238,1413,1414],{"class":244},"the ",[238,1416,1311],{"class":294},[238,1418,1419],{"class":244}," route. ",[238,1421,1311],{"class":294},[238,1423,1305],{"class":262},[238,1425,1426],{"class":244},"path rejections are ",[238,1428,1429],{"class":255},"`400`",[238,1431,1432],{"class":244},".\n",[212,1434,1435],{},[225,1436,227],{},[229,1438,1440],{"className":231,"code":1439,"language":233,"meta":234,"style":234},"const searchBooks = defineQueryHandler({\n  formats: [\"application/sql\", \"application/jsonpath\"],\n  get: \"q\",\n  handler: (event, { format, query }) => runQuery(format, query),\n});\napp.get(\"/books\", searchBooks).query(\"/books\", searchBooks);\n// QUERY /books        -> 200 + Content-Location: /books?q=\u003Cquery>&format=\u003Cformat>\n// GET /books?q=...    -> same result, ordinary HTTP caching applies\n",[208,1441,1442,1456,1468,1478,1504,1508,1530,1535],{"__ignoreMap":234},[238,1443,1444,1446,1449,1451,1454],{"class":240,"line":241},[238,1445,646],{"class":262},[238,1447,1448],{"class":294}," searchBooks",[238,1450,324],{"class":262},[238,1452,1453],{"class":248}," defineQueryHandler",[238,1455,660],{"class":244},[238,1457,1458,1460,1462,1464,1466],{"class":240,"line":282},[238,1459,1209],{"class":244},[238,1461,1212],{"class":255},[238,1463,259],{"class":244},[238,1465,1095],{"class":255},[238,1467,1219],{"class":244},[238,1469,1470,1473,1476],{"class":240,"line":315},[238,1471,1472],{"class":244},"  get: ",[238,1474,1475],{"class":255},"\"q\"",[238,1477,958],{"class":244},[238,1479,1480,1482,1485,1487,1489,1491,1493,1495,1497,1499,1501],{"class":240,"line":339},[238,1481,1224],{"class":248},[238,1483,1484],{"class":244},": (",[238,1486,270],{"class":269},[238,1488,1236],{"class":244},[238,1490,1148],{"class":269},[238,1492,259],{"class":244},[238,1494,1063],{"class":269},[238,1496,941],{"class":244},[238,1498,276],{"class":262},[238,1500,1273],{"class":248},[238,1502,1503],{"class":244},"(format, query),\n",[238,1505,1506],{"class":240,"line":597},[238,1507,342],{"class":244},[238,1509,1510,1512,1514,1516,1518,1521,1523,1525,1527],{"class":240,"line":614},[238,1511,245],{"class":244},[238,1513,249],{"class":248},[238,1515,252],{"class":244},[238,1517,1197],{"class":255},[238,1519,1520],{"class":244},", searchBooks).",[238,1522,1063],{"class":248},[238,1524,252],{"class":244},[238,1526,1197],{"class":255},[238,1528,1529],{"class":244},", searchBooks);\n",[238,1531,1532],{"class":240,"line":752},[238,1533,1534],{"class":311},"// QUERY /books        -> 200 + Content-Location: /books?q=\u003Cquery>&format=\u003Cformat>\n",[238,1536,1537],{"class":240,"line":768},[238,1538,1539],{"class":311},"// GET /books?q=...    -> same result, ordinary HTTP caching applies\n",[204,1541,1543],{"id":1542},"requirecontenttypeevent-acceptedtypes",[208,1544,1545],{},"requireContentType(event, acceptedTypes)",[212,1547,1548,1549,1551,1552,1554],{},"Assert that the request ",[208,1550,357],{}," is present and one of the accepted media types, following the requirements of RFC 10008 for the HTTP ",[208,1553,1000],{}," method.",[212,1556,1557],{},"Throws:",[1559,1560,1561,1571,1579],"ul",{},[1562,1563,1564,1567,1568,1570],"li",{},[208,1565,1566],{},"400 Bad Request"," if the ",[208,1569,357],{}," header is missing.",[1562,1572,1573,1567,1576,1578],{},[208,1574,1575],{},"422 Unprocessable Content",[208,1577,357],{}," header is malformed.",[1562,1580,1581,1584],{},[208,1582,1583],{},"415 Unsupported Media Type"," if the media type is not accepted.",[212,1586,1587,1588,1591,1592,1595,1596,1599,1600,1018],{},"Accepted types may use wildcards: ",[208,1589,1590],{},"*"," / ",[208,1593,1594],{},"*&#47;*"," match anything and ",[208,1597,1598],{},"type/*"," matches any subtype of ",[208,1601,1602],{},"type",[212,1604,1605],{},[225,1606,227],{},[229,1608,1610],{"className":231,"code":1609,"language":233,"meta":234,"style":234},"app.query(\"/search\", async (event) => {\n  requireContentType(event, [\"application/sql\", \"application/jsonpath\"]);\n  const body = await readBody(event, { type: \"text\" });\n  // ...\n});\n",[208,1611,1612,1636,1651,1669,1674],{"__ignoreMap":234},[238,1613,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634],{"class":240,"line":241},[238,1615,245],{"class":244},[238,1617,1063],{"class":248},[238,1619,252],{"class":244},[238,1621,1068],{"class":255},[238,1623,259],{"class":244},[238,1625,263],{"class":262},[238,1627,266],{"class":244},[238,1629,270],{"class":269},[238,1631,273],{"class":244},[238,1633,276],{"class":262},[238,1635,279],{"class":244},[238,1637,1638,1641,1643,1645,1647,1649],{"class":240,"line":282},[238,1639,1640],{"class":248},"  requireContentType",[238,1642,1087],{"class":244},[238,1644,1212],{"class":255},[238,1646,259],{"class":244},[238,1648,1095],{"class":255},[238,1650,1098],{"class":244},[238,1652,1653,1655,1657,1659,1661,1663,1665,1667],{"class":240,"line":315},[238,1654,318],{"class":262},[238,1656,411],{"class":294},[238,1658,324],{"class":262},[238,1660,327],{"class":262},[238,1662,418],{"class":248},[238,1664,474],{"class":244},[238,1666,1263],{"class":255},[238,1668,480],{"class":244},[238,1670,1671],{"class":240,"line":339},[238,1672,1673],{"class":311},"  // ...\n",[238,1675,1676],{"class":240,"line":597},[238,1677,342],{"class":244},[199,1679,1681],{"id":1680},"cache","Cache",[204,1683,1685],{"id":1684},"handlecacheheadersevent-opts",[208,1686,1687],{},"handleCacheHeaders(event, opts)",[212,1689,1690,1691,1694,1695,1698],{},"Check request caching headers (",[208,1692,1693],{},"If-Modified-Since",") and add caching headers (Last-Modified, Cache-Control) Note: ",[208,1696,1697],{},"public"," cache control will be added by default",[199,1700,1702],{"id":1701},"more-request-utils","More Request Utils",[204,1704,1706],{"id":1705},"assertmethodevent-expected-allowhead",[208,1707,1708],{},"assertMethod(event, expected, allowHead?)",[212,1710,1711,1712,1018],{},"Asserts that the incoming request method is of the expected type using ",[208,1713,1714],{},"isMethod",[212,1716,1717,1718,1721],{},"If the method is not allowed, it will throw a 405 error and include an ",[208,1719,1720],{},"Allow"," response header listing the permitted methods, as required by RFC 9110.",[212,1723,1724,1725,358,1728,1730,1731,1734,1735,1018],{},"If ",[208,1726,1727],{},"allowHead",[208,1729,707],{},", it will allow ",[208,1732,1733],{},"HEAD"," requests to pass if the expected method is ",[208,1736,1311],{},[212,1738,1739],{},[225,1740,227],{},[229,1742,1744],{"className":231,"code":1743,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  assertMethod(event, \"GET\");\n  // Handle GET request, otherwise throw 405 error\n});\n",[208,1745,1746,1766,1779,1784],{"__ignoreMap":234},[238,1747,1748,1750,1752,1754,1756,1758,1760,1762,1764],{"class":240,"line":241},[238,1749,245],{"class":244},[238,1751,249],{"class":248},[238,1753,252],{"class":244},[238,1755,256],{"class":255},[238,1757,1071],{"class":244},[238,1759,270],{"class":269},[238,1761,273],{"class":244},[238,1763,276],{"class":262},[238,1765,279],{"class":244},[238,1767,1768,1771,1773,1776],{"class":240,"line":282},[238,1769,1770],{"class":248},"  assertMethod",[238,1772,291],{"class":244},[238,1774,1775],{"class":255},"\"GET\"",[238,1777,1778],{"class":244},");\n",[238,1780,1781],{"class":240,"line":315},[238,1782,1783],{"class":311},"  // Handle GET request, otherwise throw 405 error\n",[238,1785,1786],{"class":240,"line":339},[238,1787,342],{"class":244},[204,1789,1791],{"id":1790},"getqueryevent",[208,1792,1793],{},"getQuery(event)",[212,1795,1796],{},"Get parsed query string object from the request URL.",[212,1798,1799],{},[225,1800,227],{},[229,1802,1804],{"className":231,"code":1803,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const query = getQuery(event); // { key: \"value\", key2: [\"value1\", \"value2\"] }\n});\n",[208,1805,1806,1826,1843],{"__ignoreMap":234},[238,1807,1808,1810,1812,1814,1816,1818,1820,1822,1824],{"class":240,"line":241},[238,1809,245],{"class":244},[238,1811,249],{"class":248},[238,1813,252],{"class":244},[238,1815,256],{"class":255},[238,1817,1071],{"class":244},[238,1819,270],{"class":269},[238,1821,273],{"class":244},[238,1823,276],{"class":262},[238,1825,279],{"class":244},[238,1827,1828,1830,1832,1834,1837,1840],{"class":240,"line":282},[238,1829,318],{"class":262},[238,1831,1252],{"class":294},[238,1833,324],{"class":262},[238,1835,1836],{"class":248}," getQuery",[238,1838,1839],{"class":244},"(event); ",[238,1841,1842],{"class":311},"// { key: \"value\", key2: [\"value1\", \"value2\"] }\n",[238,1844,1845],{"class":240,"line":315},[238,1846,342],{"class":244},[204,1848,1850],{"id":1849},"getrequesthostevent-opts-xforwardedhost",[208,1851,1852],{},"getRequestHost(event, opts: { xForwardedHost? })",[212,1854,1855],{},"Get the request hostname.",[212,1857,1724,1858,358,1861,1863,1864,1867],{},[208,1859,1860],{},"xForwardedHost",[208,1862,707],{},", it will use the ",[208,1865,1866],{},"x-forwarded-host"," header if it exists.",[212,1869,1870],{},"If no host header is found, it will return an empty string.",[212,1872,1873],{},[225,1874,227],{},[229,1876,1878],{"className":231,"code":1877,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const host = getRequestHost(event); // \"example.com\"\n});\n",[208,1879,1880,1900,1917],{"__ignoreMap":234},[238,1881,1882,1884,1886,1888,1890,1892,1894,1896,1898],{"class":240,"line":241},[238,1883,245],{"class":244},[238,1885,249],{"class":248},[238,1887,252],{"class":244},[238,1889,256],{"class":255},[238,1891,1071],{"class":244},[238,1893,270],{"class":269},[238,1895,273],{"class":244},[238,1897,276],{"class":262},[238,1899,279],{"class":244},[238,1901,1902,1904,1907,1909,1912,1914],{"class":240,"line":282},[238,1903,318],{"class":262},[238,1905,1906],{"class":294}," host",[238,1908,324],{"class":262},[238,1910,1911],{"class":248}," getRequestHost",[238,1913,1839],{"class":244},[238,1915,1916],{"class":311},"// \"example.com\"\n",[238,1918,1919],{"class":240,"line":315},[238,1920,342],{"class":244},[204,1922,1924],{"id":1923},"getrequestipevent",[208,1925,1926],{},"getRequestIP(event)",[212,1928,1929],{},"Try to get the client IP address from the incoming request.",[212,1931,1724,1932,358,1935,1863,1937,1867],{},[208,1933,1934],{},"xForwardedFor",[208,1936,707],{},[208,1938,1939],{},"x-forwarded-for",[212,1941,1942,1943,1018],{},"If IP cannot be determined, it will default to ",[208,1944,1945],{},"undefined",[212,1947,1948],{},[225,1949,227],{},[229,1951,1953],{"className":231,"code":1952,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const ip = getRequestIP(event); // \"192.0.2.0\"\n});\n",[208,1954,1955,1975,1992],{"__ignoreMap":234},[238,1956,1957,1959,1961,1963,1965,1967,1969,1971,1973],{"class":240,"line":241},[238,1958,245],{"class":244},[238,1960,249],{"class":248},[238,1962,252],{"class":244},[238,1964,256],{"class":255},[238,1966,1071],{"class":244},[238,1968,270],{"class":269},[238,1970,273],{"class":244},[238,1972,276],{"class":262},[238,1974,279],{"class":244},[238,1976,1977,1979,1982,1984,1987,1989],{"class":240,"line":282},[238,1978,318],{"class":262},[238,1980,1981],{"class":294}," ip",[238,1983,324],{"class":262},[238,1985,1986],{"class":248}," getRequestIP",[238,1988,1839],{"class":244},[238,1990,1991],{"class":311},"// \"192.0.2.0\"\n",[238,1993,1994],{"class":240,"line":315},[238,1995,342],{"class":244},[204,1997,1999],{"id":1998},"getrequestprotocolevent-opts-xforwardedproto",[208,2000,2001],{},"getRequestProtocol(event, opts: { xForwardedProto? })",[212,2003,2004],{},"Get the request protocol.",[212,2006,1724,2007,2010,2011,2014,2015,1018],{},[208,2008,2009],{},"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 ",[208,2012,2013],{},"xForwardedProto"," to ",[208,2016,2017],{},"false",[212,2019,2020],{},"If protocol cannot be determined, it will default to \"http\".",[212,2022,2023],{},[225,2024,227],{},[229,2026,2028],{"className":231,"code":2027,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const protocol = getRequestProtocol(event); // \"https\"\n});\n",[208,2029,2030,2050,2067],{"__ignoreMap":234},[238,2031,2032,2034,2036,2038,2040,2042,2044,2046,2048],{"class":240,"line":241},[238,2033,245],{"class":244},[238,2035,249],{"class":248},[238,2037,252],{"class":244},[238,2039,256],{"class":255},[238,2041,1071],{"class":244},[238,2043,270],{"class":269},[238,2045,273],{"class":244},[238,2047,276],{"class":262},[238,2049,279],{"class":244},[238,2051,2052,2054,2057,2059,2062,2064],{"class":240,"line":282},[238,2053,318],{"class":262},[238,2055,2056],{"class":294}," protocol",[238,2058,324],{"class":262},[238,2060,2061],{"class":248}," getRequestProtocol",[238,2063,1839],{"class":244},[238,2065,2066],{"class":311},"// \"https\"\n",[238,2068,2069],{"class":240,"line":315},[238,2070,342],{"class":244},[204,2072,2074],{"id":2073},"getrequesturlevent-opts-xforwardedhost-xforwardedproto",[208,2075,2076],{},"getRequestURL(event, opts: { xForwardedHost?, xForwardedProto? })",[212,2078,2079],{},"Generated the full incoming request URL.",[212,2081,1724,2082,358,2084,1863,2086,1867],{},[208,2083,1860],{},[208,2085,707],{},[208,2087,1866],{},[212,2089,1724,2090,358,2092,2094,2095,2097],{},[208,2091,2013],{},[208,2093,2017],{},", it will not use the ",[208,2096,2009],{}," header.",[212,2099,2100],{},[225,2101,227],{},[229,2103,2105],{"className":231,"code":2104,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const url = getRequestURL(event); // \"https://example.com/path\"\n});\n",[208,2106,2107,2127,2144],{"__ignoreMap":234},[238,2108,2109,2111,2113,2115,2117,2119,2121,2123,2125],{"class":240,"line":241},[238,2110,245],{"class":244},[238,2112,249],{"class":248},[238,2114,252],{"class":244},[238,2116,256],{"class":255},[238,2118,1071],{"class":244},[238,2120,270],{"class":269},[238,2122,273],{"class":244},[238,2124,276],{"class":262},[238,2126,279],{"class":244},[238,2128,2129,2131,2134,2136,2139,2141],{"class":240,"line":282},[238,2130,318],{"class":262},[238,2132,2133],{"class":294}," url",[238,2135,324],{"class":262},[238,2137,2138],{"class":248}," getRequestURL",[238,2140,1839],{"class":244},[238,2142,2143],{"class":311},"// \"https://example.com/path\"\n",[238,2145,2146],{"class":240,"line":315},[238,2147,342],{"class":244},[204,2149,2151],{"id":2150},"getrouterparamevent-name-opts-decode",[208,2152,2153],{},"getRouterParam(event, name, opts: { decode? })",[212,2155,2156],{},"Get a matched route param by name.",[212,2158,1724,2159,2162,2163,2165,2166,2169,2170,259,2173,2176,2177,2180,2181,2184],{},[208,2160,2161],{},"decode"," option is ",[208,2164,707],{},", it will decode the matched route param (like ",[208,2167,2168],{},"decodeURIComponent","), except encoded path separators (",[208,2171,2172],{},"%2f",[208,2174,2175],{},"%5c",") are kept encoded so decoding can never reintroduce a ",[208,2178,2179],{},"/"," or ",[208,2182,2183],{},"\\"," the router never matched.",[212,2186,2187],{},[225,2188,227],{},[229,2190,2192],{"className":231,"code":2191,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const param = getRouterParam(event, \"key\");\n});\n",[208,2193,2194,2214,2233],{"__ignoreMap":234},[238,2195,2196,2198,2200,2202,2204,2206,2208,2210,2212],{"class":240,"line":241},[238,2197,245],{"class":244},[238,2199,249],{"class":248},[238,2201,252],{"class":244},[238,2203,256],{"class":255},[238,2205,1071],{"class":244},[238,2207,270],{"class":269},[238,2209,273],{"class":244},[238,2211,276],{"class":262},[238,2213,279],{"class":244},[238,2215,2216,2218,2221,2223,2226,2228,2231],{"class":240,"line":282},[238,2217,318],{"class":262},[238,2219,2220],{"class":294}," param",[238,2222,324],{"class":262},[238,2224,2225],{"class":248}," getRouterParam",[238,2227,291],{"class":244},[238,2229,2230],{"class":255},"\"key\"",[238,2232,1778],{"class":244},[238,2234,2235],{"class":240,"line":315},[238,2236,342],{"class":244},[204,2238,2240],{"id":2239},"getrouterparamsevent-opts-decode",[208,2241,2242],{},"getRouterParams(event, opts: { decode? })",[212,2244,2245],{},"Get matched route params.",[212,2247,1724,2248,2162,2250,2252,2253,2169,2255,259,2257,2176,2259,2180,2261,2184],{},[208,2249,2161],{},[208,2251,707],{},", it will decode the matched route params (like ",[208,2254,2168],{},[208,2256,2172],{},[208,2258,2175],{},[208,2260,2179],{},[208,2262,2183],{},[212,2264,2265],{},[225,2266,227],{},[229,2268,2270],{"className":231,"code":2269,"language":233,"meta":234,"style":234},"app.get(\"/\", (event) => {\n  const params = getRouterParams(event); // { key: \"value\" }\n});\n",[208,2271,2272,2292,2309],{"__ignoreMap":234},[238,2273,2274,2276,2278,2280,2282,2284,2286,2288,2290],{"class":240,"line":241},[238,2275,245],{"class":244},[238,2277,249],{"class":248},[238,2279,252],{"class":244},[238,2281,256],{"class":255},[238,2283,1071],{"class":244},[238,2285,270],{"class":269},[238,2287,273],{"class":244},[238,2289,276],{"class":262},[238,2291,279],{"class":244},[238,2293,2294,2296,2299,2301,2304,2306],{"class":240,"line":282},[238,2295,318],{"class":262},[238,2297,2298],{"class":294}," params",[238,2300,324],{"class":262},[238,2302,2303],{"class":248}," getRouterParams",[238,2305,1839],{"class":244},[238,2307,2308],{"class":311},"// { key: \"value\" }\n",[238,2310,2311],{"class":240,"line":315},[238,2312,342],{"class":244},[204,2314,2316],{"id":2315},"getvalidatedqueryevent-validate",[208,2317,2318],{},"getValidatedQuery(event, validate)",[212,2320,2321],{},"Get the query param from the request URL validated with validate function.",[212,2323,2324,2325,504],{},"You can use a simple function to validate the query object or use a Standard-Schema compatible library like ",[208,2326,503],{},[212,2328,2329],{},[225,2330,227],{},[229,2332,2334],{"className":231,"code":2333,"language":233,"meta":234,"style":234},"app.get(\"/\", async (event) => {\n  const query = await getValidatedQuery(event, (data) => {\n    return \"key\" in data && typeof data.key === \"string\";\n  });\n});\n",[208,2335,2336,2360,2385,2412,2417],{"__ignoreMap":234},[238,2337,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358],{"class":240,"line":241},[238,2339,245],{"class":244},[238,2341,249],{"class":248},[238,2343,252],{"class":244},[238,2345,256],{"class":255},[238,2347,259],{"class":244},[238,2349,263],{"class":262},[238,2351,266],{"class":244},[238,2353,270],{"class":269},[238,2355,273],{"class":244},[238,2357,276],{"class":262},[238,2359,279],{"class":244},[238,2361,2362,2364,2366,2368,2370,2373,2376,2379,2381,2383],{"class":240,"line":282},[238,2363,318],{"class":262},[238,2365,1252],{"class":294},[238,2367,324],{"class":262},[238,2369,327],{"class":262},[238,2371,2372],{"class":248}," getValidatedQuery",[238,2374,2375],{"class":244},"(event, (",[238,2377,2378],{"class":269},"data",[238,2380,273],{"class":244},[238,2382,276],{"class":262},[238,2384,279],{"class":244},[238,2386,2387,2389,2392,2394,2397,2400,2402,2405,2407,2410],{"class":240,"line":315},[238,2388,1270],{"class":262},[238,2390,2391],{"class":255}," \"key\"",[238,2393,1359],{"class":262},[238,2395,2396],{"class":244}," data ",[238,2398,2399],{"class":262},"&&",[238,2401,542],{"class":262},[238,2403,2404],{"class":244}," data.key ",[238,2406,548],{"class":262},[238,2408,2409],{"class":255}," \"string\"",[238,2411,565],{"class":244},[238,2413,2414],{"class":240,"line":339},[238,2415,2416],{"class":244},"  });\n",[238,2418,2419],{"class":240,"line":597},[238,2420,342],{"class":244},[212,2422,2423],{},[225,2424,227],{},[229,2426,2428],{"className":231,"code":2427,"language":233,"meta":234,"style":234},"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",[208,2429,2430,2442,2466,2480,2484,2493,2502,2506,2510],{"__ignoreMap":234},[238,2431,2432,2434,2436,2438,2440],{"class":240,"line":241},[238,2433,630],{"class":262},[238,2435,633],{"class":244},[238,2437,636],{"class":262},[238,2439,639],{"class":255},[238,2441,565],{"class":244},[238,2443,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462,2464],{"class":240,"line":282},[238,2445,245],{"class":244},[238,2447,249],{"class":248},[238,2449,252],{"class":244},[238,2451,256],{"class":255},[238,2453,259],{"class":244},[238,2455,263],{"class":262},[238,2457,266],{"class":244},[238,2459,270],{"class":269},[238,2461,273],{"class":244},[238,2463,276],{"class":262},[238,2465,279],{"class":244},[238,2467,2468,2470,2472,2474,2476,2478],{"class":240,"line":315},[238,2469,318],{"class":262},[238,2471,1252],{"class":294},[238,2473,324],{"class":262},[238,2475,327],{"class":262},[238,2477,2372],{"class":248},[238,2479,837],{"class":244},[238,2481,2482],{"class":240,"line":339},[238,2483,842],{"class":244},[238,2485,2486,2489,2491],{"class":240,"line":597},[238,2487,2488],{"class":244},"    z.",[238,2490,657],{"class":248},[238,2492,660],{"class":244},[238,2494,2495,2498,2500],{"class":240,"line":614},[238,2496,2497],{"class":244},"      key: z.",[238,2499,668],{"class":248},[238,2501,721],{"class":244},[238,2503,2504],{"class":240,"line":752},[238,2505,920],{"class":244},[238,2507,2508],{"class":240,"line":768},[238,2509,988],{"class":244},[238,2511,2512],{"class":240,"line":923},[238,2513,342],{"class":244},[212,2515,2516],{},[225,2517,227],{},[229,2519,2521],{"className":231,"code":2520,"language":233,"meta":234,"style":234},"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",[208,2522,2523,2539,2563,2577,2581,2589,2598,2602,2606,2620,2628,2636,2640,2644,2648],{"__ignoreMap":234},[238,2524,2525,2527,2529,2531,2533,2535,2537],{"class":240,"line":241},[238,2526,630],{"class":262},[238,2528,298],{"class":294},[238,2530,788],{"class":262},[238,2532,791],{"class":244},[238,2534,636],{"class":262},[238,2536,796],{"class":255},[238,2538,565],{"class":244},[238,2540,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561],{"class":240,"line":282},[238,2542,245],{"class":244},[238,2544,249],{"class":248},[238,2546,252],{"class":244},[238,2548,256],{"class":255},[238,2550,259],{"class":244},[238,2552,263],{"class":262},[238,2554,266],{"class":244},[238,2556,270],{"class":269},[238,2558,273],{"class":244},[238,2560,276],{"class":262},[238,2562,279],{"class":244},[238,2564,2565,2567,2569,2571,2573,2575],{"class":240,"line":315},[238,2566,318],{"class":262},[238,2568,2298],{"class":294},[238,2570,324],{"class":262},[238,2572,327],{"class":262},[238,2574,2372],{"class":248},[238,2576,837],{"class":244},[238,2578,2579],{"class":240,"line":339},[238,2580,842],{"class":244},[238,2582,2583,2585,2587],{"class":240,"line":597},[238,2584,847],{"class":244},[238,2586,657],{"class":248},[238,2588,660],{"class":244},[238,2590,2591,2594,2596],{"class":240,"line":614},[238,2592,2593],{"class":244},"      key: v.",[238,2595,668],{"class":248},[238,2597,721],{"class":244},[238,2599,2600],{"class":240,"line":752},[238,2601,920],{"class":244},[238,2603,2604],{"class":240,"line":768},[238,2605,926],{"class":244},[238,2607,2608,2610,2612,2614,2616,2618],{"class":240,"line":923},[238,2609,932],{"class":248},[238,2611,935],{"class":244},[238,2613,938],{"class":269},[238,2615,941],{"class":244},[238,2617,276],{"class":262},[238,2619,946],{"class":244},[238,2621,2622,2624,2626],{"class":240,"line":929},[238,2623,952],{"class":244},[238,2625,955],{"class":255},[238,2627,958],{"class":244},[238,2629,2630,2632,2634],{"class":240,"line":949},[238,2631,964],{"class":244},[238,2633,967],{"class":248},[238,2635,970],{"class":244},[238,2637,2638],{"class":240,"line":961},[238,2639,976],{"class":244},[238,2641,2642],{"class":240,"line":973},[238,2643,982],{"class":244},[238,2645,2646],{"class":240,"line":979},[238,2647,988],{"class":244},[238,2649,2650],{"class":240,"line":985},[238,2651,342],{"class":244},[204,2653,2655],{"id":2654},"getvalidatedrouterparamsevent-validate",[208,2656,2657],{},"getValidatedRouterParams(event, validate)",[212,2659,2660],{},"Get matched route params and validate with validate function.",[212,2662,1724,2663,2162,2665,2252,2667,2169,2669,259,2671,2176,2673,2180,2675,2184],{},[208,2664,2161],{},[208,2666,707],{},[208,2668,2168],{},[208,2670,2172],{},[208,2672,2175],{},[208,2674,2179],{},[208,2676,2183],{},[212,2678,2679,2680,504],{},"You can use a simple function to validate the params object or use a Standard-Schema compatible library like ",[208,2681,503],{},[212,2683,2684],{},[225,2685,227],{},[229,2687,2689],{"className":231,"code":2688,"language":233,"meta":234,"style":234},"app.get(\"/:key\", async (event) => {\n  const params = await getValidatedRouterParams(event, (data) => {\n    return \"key\" in data && typeof data.key === \"string\";\n  });\n});\n",[208,2690,2691,2716,2739,2761,2765],{"__ignoreMap":234},[238,2692,2693,2695,2697,2699,2702,2704,2706,2708,2710,2712,2714],{"class":240,"line":241},[238,2694,245],{"class":244},[238,2696,249],{"class":248},[238,2698,252],{"class":244},[238,2700,2701],{"class":255},"\"/:key\"",[238,2703,259],{"class":244},[238,2705,263],{"class":262},[238,2707,266],{"class":244},[238,2709,270],{"class":269},[238,2711,273],{"class":244},[238,2713,276],{"class":262},[238,2715,279],{"class":244},[238,2717,2718,2720,2722,2724,2726,2729,2731,2733,2735,2737],{"class":240,"line":282},[238,2719,318],{"class":262},[238,2721,2298],{"class":294},[238,2723,324],{"class":262},[238,2725,327],{"class":262},[238,2727,2728],{"class":248}," getValidatedRouterParams",[238,2730,2375],{"class":244},[238,2732,2378],{"class":269},[238,2734,273],{"class":244},[238,2736,276],{"class":262},[238,2738,279],{"class":244},[238,2740,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759],{"class":240,"line":315},[238,2742,1270],{"class":262},[238,2744,2391],{"class":255},[238,2746,1359],{"class":262},[238,2748,2396],{"class":244},[238,2750,2399],{"class":262},[238,2752,542],{"class":262},[238,2754,2404],{"class":244},[238,2756,548],{"class":262},[238,2758,2409],{"class":255},[238,2760,565],{"class":244},[238,2762,2763],{"class":240,"line":339},[238,2764,2416],{"class":244},[238,2766,2767],{"class":240,"line":597},[238,2768,342],{"class":244},[212,2770,2771],{},[225,2772,227],{},[229,2774,2776],{"className":231,"code":2775,"language":233,"meta":234,"style":234},"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",[208,2777,2778,2790,2814,2828,2832,2840,2848,2852,2856],{"__ignoreMap":234},[238,2779,2780,2782,2784,2786,2788],{"class":240,"line":241},[238,2781,630],{"class":262},[238,2783,633],{"class":244},[238,2785,636],{"class":262},[238,2787,639],{"class":255},[238,2789,565],{"class":244},[238,2791,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812],{"class":240,"line":282},[238,2793,245],{"class":244},[238,2795,249],{"class":248},[238,2797,252],{"class":244},[238,2799,2701],{"class":255},[238,2801,259],{"class":244},[238,2803,263],{"class":262},[238,2805,266],{"class":244},[238,2807,270],{"class":269},[238,2809,273],{"class":244},[238,2811,276],{"class":262},[238,2813,279],{"class":244},[238,2815,2816,2818,2820,2822,2824,2826],{"class":240,"line":315},[238,2817,318],{"class":262},[238,2819,2298],{"class":294},[238,2821,324],{"class":262},[238,2823,327],{"class":262},[238,2825,2728],{"class":248},[238,2827,837],{"class":244},[238,2829,2830],{"class":240,"line":339},[238,2831,842],{"class":244},[238,2833,2834,2836,2838],{"class":240,"line":597},[238,2835,2488],{"class":244},[238,2837,657],{"class":248},[238,2839,660],{"class":244},[238,2841,2842,2844,2846],{"class":240,"line":614},[238,2843,2497],{"class":244},[238,2845,668],{"class":248},[238,2847,721],{"class":244},[238,2849,2850],{"class":240,"line":752},[238,2851,920],{"class":244},[238,2853,2854],{"class":240,"line":768},[238,2855,988],{"class":244},[238,2857,2858],{"class":240,"line":923},[238,2859,342],{"class":244},[212,2861,2862],{},[225,2863,227],{},[229,2865,2867],{"className":231,"code":2866,"language":233,"meta":234,"style":234},"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",[208,2868,2869,2885,2909,2923,2927,2935,2969,2973,2977,2986,3000,3008,3016,3020,3024,3028],{"__ignoreMap":234},[238,2870,2871,2873,2875,2877,2879,2881,2883],{"class":240,"line":241},[238,2872,630],{"class":262},[238,2874,298],{"class":294},[238,2876,788],{"class":262},[238,2878,791],{"class":244},[238,2880,636],{"class":262},[238,2882,796],{"class":255},[238,2884,565],{"class":244},[238,2886,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907],{"class":240,"line":282},[238,2888,245],{"class":244},[238,2890,249],{"class":248},[238,2892,252],{"class":244},[238,2894,2701],{"class":255},[238,2896,259],{"class":244},[238,2898,263],{"class":262},[238,2900,266],{"class":244},[238,2902,270],{"class":269},[238,2904,273],{"class":244},[238,2906,276],{"class":262},[238,2908,279],{"class":244},[238,2910,2911,2913,2915,2917,2919,2921],{"class":240,"line":315},[238,2912,318],{"class":262},[238,2914,2298],{"class":294},[238,2916,324],{"class":262},[238,2918,327],{"class":262},[238,2920,2728],{"class":248},[238,2922,837],{"class":244},[238,2924,2925],{"class":240,"line":339},[238,2926,842],{"class":244},[238,2928,2929,2931,2933],{"class":240,"line":597},[238,2930,847],{"class":244},[238,2932,657],{"class":248},[238,2934,660],{"class":244},[238,2936,2937,2939,2941,2943,2945,2947,2950,2953,2956,2958,2961,2963,2966],{"class":240,"line":614},[238,2938,2593],{"class":244},[238,2940,859],{"class":248},[238,2942,862],{"class":244},[238,2944,668],{"class":248},[238,2946,867],{"class":244},[238,2948,2949],{"class":248},"picklist",[238,2951,2952],{"class":244},"([",[238,2954,2955],{"class":255},"\"route-1\"",[238,2957,259],{"class":244},[238,2959,2960],{"class":255},"\"route-2\"",[238,2962,259],{"class":244},[238,2964,2965],{"class":255},"\"route-3\"",[238,2967,2968],{"class":244},"])),\n",[238,2970,2971],{"class":240,"line":752},[238,2972,920],{"class":244},[238,2974,2975],{"class":240,"line":768},[238,2976,926],{"class":244},[238,2978,2979,2982,2984],{"class":240,"line":923},[238,2980,2981],{"class":244},"      decode: ",[238,2983,707],{"class":294},[238,2985,958],{"class":244},[238,2987,2988,2990,2992,2994,2996,2998],{"class":240,"line":929},[238,2989,932],{"class":248},[238,2991,935],{"class":244},[238,2993,938],{"class":269},[238,2995,941],{"class":244},[238,2997,276],{"class":262},[238,2999,946],{"class":244},[238,3001,3002,3004,3006],{"class":240,"line":949},[238,3003,952],{"class":244},[238,3005,955],{"class":255},[238,3007,958],{"class":244},[238,3009,3010,3012,3014],{"class":240,"line":961},[238,3011,964],{"class":244},[238,3013,967],{"class":248},[238,3015,970],{"class":244},[238,3017,3018],{"class":240,"line":973},[238,3019,976],{"class":244},[238,3021,3022],{"class":240,"line":979},[238,3023,982],{"class":244},[238,3025,3026],{"class":240,"line":985},[238,3027,988],{"class":244},[238,3029,3030],{"class":240,"line":991},[238,3031,342],{"class":244},[204,3033,3035],{"id":3034},"ismethodevent-expected-allowhead",[208,3036,3037],{},"isMethod(event, expected, allowHead?)",[212,3039,3040],{},"Checks if the incoming request method is of the expected type.",[212,3042,1724,3043,358,3045,1730,3047,1734,3049,1018],{},[208,3044,1727],{},[208,3046,707],{},[208,3048,1733],{},[208,3050,1311],{},[212,3052,3053],{},[225,3054,227],{},[229,3056,3058],{"className":231,"code":3057,"language":233,"meta":234,"style":234},"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",[208,3059,3060,3080,3096,3101,3129,3134,3139],{"__ignoreMap":234},[238,3061,3062,3064,3066,3068,3070,3072,3074,3076,3078],{"class":240,"line":241},[238,3063,245],{"class":244},[238,3065,249],{"class":248},[238,3067,252],{"class":244},[238,3069,256],{"class":255},[238,3071,1071],{"class":244},[238,3073,270],{"class":269},[238,3075,273],{"class":244},[238,3077,276],{"class":262},[238,3079,279],{"class":244},[238,3081,3082,3085,3087,3089,3091,3093],{"class":240,"line":282},[238,3083,3084],{"class":262},"  if",[238,3086,266],{"class":244},[238,3088,1714],{"class":248},[238,3090,291],{"class":244},[238,3092,1775],{"class":255},[238,3094,3095],{"class":244},")) {\n",[238,3097,3098],{"class":240,"line":315},[238,3099,3100],{"class":311},"    // Handle GET request\n",[238,3102,3103,3106,3109,3112,3114,3116,3118,3121,3123,3126],{"class":240,"line":339},[238,3104,3105],{"class":244},"  } ",[238,3107,3108],{"class":262},"else",[238,3110,3111],{"class":262}," if",[238,3113,266],{"class":244},[238,3115,1714],{"class":248},[238,3117,1087],{"class":244},[238,3119,3120],{"class":255},"\"POST\"",[238,3122,259],{"class":244},[238,3124,3125],{"class":255},"\"PUT\"",[238,3127,3128],{"class":244},"])) {\n",[238,3130,3131],{"class":240,"line":597},[238,3132,3133],{"class":311},"    // Handle POST or PUT request\n",[238,3135,3136],{"class":240,"line":614},[238,3137,3138],{"class":244},"  }\n",[238,3140,3141],{"class":240,"line":752},[238,3142,342],{"class":244},[204,3144,3146],{"id":3145},"requestwithbaseurlreq-base",[208,3147,3148],{},"requestWithBaseURL(req, base)",[212,3150,3151],{},"Create a lightweight request proxy with the base path stripped from the URL pathname.",[204,3153,3155],{"id":3154},"requestwithurlreq-url",[208,3156,3157],{},"requestWithURL(req, url)",[212,3159,3160],{},"Create a lightweight request proxy that overrides only the URL.",[212,3162,3163,3164,3167],{},"Avoids cloning the original request (no ",[208,3165,3166],{},"new Request()"," allocation).",[204,3169,3171],{"id":3170},"torequestinput-options",[208,3172,3173],{},"toRequest(input, options?)",[212,3175,3176,3177,1018],{},"Convert input into a web ",[1006,3178,99],{"href":3179,"rel":3180},"https://developer.mozilla.org/en-US/docs/Web/API/Request",[1010],[212,3182,3183],{},"If input is a relative URL, it will be normalized into a full path based on headers.",[212,3185,3186],{},"If input is already a Request and no options are provided, it will be returned as-is.",[204,3188,3190],{"id":3189},"getrequestfingerprintevent-opts",[208,3191,3192],{},"getRequestFingerprint(event, opts)",[212,3194,3195],{},"Get a unique fingerprint for the incoming request.",[3197,3198,3199],"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":234,"searchDepth":282,"depth":282,"links":3201},[3202,3207,3213,3216],{"id":201,"depth":282,"text":202,"children":3203},[3204,3205,3206],{"id":206,"depth":315,"text":210},{"id":345,"depth":315,"text":348},{"id":487,"depth":315,"text":490},{"id":996,"depth":282,"text":3208,"children":3209},"Query (HTTP QUERY method)",[3210,3211,3212],{"id":1021,"depth":315,"text":1024},{"id":1119,"depth":315,"text":1122},{"id":1542,"depth":315,"text":1545},{"id":1680,"depth":282,"text":1681,"children":3214},[3215],{"id":1684,"depth":315,"text":1687},{"id":1701,"depth":282,"text":1702,"children":3217},[3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232],{"id":1705,"depth":315,"text":1708},{"id":1790,"depth":315,"text":1793},{"id":1849,"depth":315,"text":1852},{"id":1923,"depth":315,"text":1926},{"id":1998,"depth":315,"text":2001},{"id":2073,"depth":315,"text":2076},{"id":2150,"depth":315,"text":2153},{"id":2239,"depth":315,"text":2242},{"id":2315,"depth":315,"text":2318},{"id":2654,"depth":315,"text":2657},{"id":3034,"depth":315,"text":3037},{"id":3145,"depth":315,"text":3148},{"id":3154,"depth":315,"text":3157},{"id":3170,"depth":315,"text":3173},{"id":3189,"depth":315,"text":3192},"H3 request utilities.","md",{"automd":3236,"icon":102},true,{"icon":102},{"title":99,"description":3233},"micBzy3ZAxcv1_iFaM5YV_TIeI5QVebPvcw1XWiuu54",[3241,3242],{"title":92,"path":93,"stem":94,"description":234,"icon":97,"children":-1},{"title":104,"path":105,"stem":106,"description":3243,"icon":107,"children":-1},"H3 response utilities.",1783670989893]