[{"data":1,"prerenderedAt":2699},["ShallowReactive",2],{"navigation":3,"$UZtg7CVtNP":193,"$YUXRT_y-jv":2122,"$TgjJGouPIv":2560},[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,"page":-1},"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":190,"body":195,"description":2110,"extension":2111,"meta":2112,"navigation":2119,"path":191,"seo":2120,"stem":192,"__hash__":2121},"content/99.blog/2.v2-beta.md",{"type":196,"value":197,"toc":2099,"icon":184},"minimark",[198,213,233,236,263,282,287,328,338,347,483,493,497,500,553,630,634,637,749,762,779,783,806,815,1104,1113,1167,1172,1176,1189,1194,1926,1934,1938,1941,1949,1953,1978,1981,1988,2020,2024,2052,2056,2061,2076,2087,2095],[199,200,201],"read-more",{"to":6},[202,203,204,205,212],"p",{},"Visit the new ",[206,207,208],"a",{"href":6},[209,210,211],"strong",{},"H3 Guide"," to get started quickly.",[202,214,215,216,222,223,228,229,232],{},"H3 started in late 2020, during the rise of edge workers. With H3 + ",[206,217,221],{"href":218,"rel":219},"https://github.com/unjs/unenv",[220],"nofollow","unjs/unenv",", we could run ",[206,224,227],{"href":225,"rel":226},"https://nitro.build",[220],"Nitro"," deployments in worker environments with Node.js compatibility, best of both worlds! Since ",[206,230,231],{"href":187},"v1.8",", H3 has improved its support for web standards.",[202,234,235],{},"But still, H3 was primarily based on Node.js APIs with a compatibility layer for web standards. Logical choice at the time, given Node.js's popularity amongst JavaScript server runtimes.",[202,237,238,239,244,245,250,251,256,257,262],{},"Thanks to evolving web standards by initiatives like ",[206,240,243],{"href":241,"rel":242},"https://wintertc.org/",[220],"WinterTC"," and runtime support in ",[206,246,249],{"href":247,"rel":248},"https://deno.com/",[220],"Deno",", ",[206,252,255],{"href":253,"rel":254},"https://bun.sh/",[220],"Bun",", and the latest ",[206,258,261],{"href":259,"rel":260},"https://nodejs.org/en",[220],"Node.js",", ecosystem is ready to embrace web standards first class for server development. Benefits include:",[264,265,266,270,273,276,279],"ul",{},[267,268,269],"li",{},"Cross-runtime interoperability (Node.js, Deno, Bun, Workers, etc.)",[267,271,272],{},"Cross-framework compatibility (H3, Hono, Elysia, etc.)",[267,274,275],{},"Cross-environment compatibility (shared and familiar code between frontend and backend)",[267,277,278],{},"Leverage more of runtime native primitives like (Request, URL, Headers, etc.)",[267,280,281],{},"Easier API testing",[283,284,286],"h2",{"id":285},"srvx-universal-web-server-api","💥 srvx: Universal Web Server API",[202,288,289,290,294,295,298,299,301,302,304,305,308,309,314,315,321,322,327],{},"A major challenge was that Node.js lacks built-in support for web-standard HTTP servers. For ",[291,292,293],"code",{},"node:http"," compatibility, an adapter is needed to bridge Node.js ",[291,296,297],{},"IncomingMessage"," to web ",[291,300,99],{},", and to handle web ",[291,303,104],{}," via Node.js ",[291,306,307],{},"ServerResponse",". We have implemented a ",[206,310,313],{"href":311,"rel":312},"https://srvx.h3.dev/guide/node",[220],"compatibility layer"," that bridges interfaces and achieves ",[209,316,317,318,320],{},"up to 96.98% of native ",[291,319,293],{}," performance"," (see ",[206,323,326],{"href":324,"rel":325},"https://github.com/h3js/srvx/tree/main/test/bench-node",[220],"benchmarks",").",[202,329,330,331,250,334,337],{},"Runtimes such as ",[206,332,249],{"href":247,"rel":333},[220],[206,335,255],{"href":253,"rel":336},[220],", and Edge Workers pioneered the adoption of web standards for servers, but they did not agree on the same interface due to lack of enough specs. So how do you access the client IP address and additional context? How do you set the server port and TLS options? How do you handle WebSocket upgrades? Each runtime created its own API.",[202,339,340,341,346],{},"We have created ",[206,342,345],{"href":343,"rel":344},"https://srvx.h3.dev",[220],"💥 srvx",": A unified layer that works everywhere exactly the same. Compatible with Deno, Bun, Node.js, Service Workers, Edge Workers.",[348,349,350,354],"details",{},[351,352,353],"summary",{},"Example",[355,356,361],"pre",{"className":357,"code":358,"language":359,"meta":360,"style":360},"language-js shiki shiki-themes github-light github-dark github-dark","// Dynamic adapter will be used based export conditions of each runtime\nimport { serve } from \"srvx\";\n\nserve({\n  port: 3000,\n  // tls: { cert: \"server.crt\", key: \"server.key\" }\n  fetch(req) {\n    // Server Extensions: req.ip, req.waitUntil(), req.runtime?.{bun,deno,node,cloudflare,...}\n    return new Response(\"👋 Hello there!\");\n  },\n});\n","js","",[291,362,363,372,393,400,410,423,429,445,451,471,477],{"__ignoreMap":360},[364,365,368],"span",{"class":366,"line":367},"line",1,[364,369,371],{"class":370},"sCsY4","// Dynamic adapter will be used based export conditions of each runtime\n",[364,373,375,379,383,386,390],{"class":366,"line":374},2,[364,376,378],{"class":377},"so5gQ","import",[364,380,382],{"class":381},"slsVL"," { serve } ",[364,384,385],{"class":377},"from",[364,387,389],{"class":388},"sfrk1"," \"srvx\"",[364,391,392],{"class":381},";\n",[364,394,396],{"class":366,"line":395},3,[364,397,399],{"emptyLinePlaceholder":398},true,"\n",[364,401,403,407],{"class":366,"line":402},4,[364,404,406],{"class":405},"shcOC","serve",[364,408,409],{"class":381},"({\n",[364,411,413,416,420],{"class":366,"line":412},5,[364,414,415],{"class":381},"  port: ",[364,417,419],{"class":418},"suiK_","3000",[364,421,422],{"class":381},",\n",[364,424,426],{"class":366,"line":425},6,[364,427,428],{"class":370},"  // tls: { cert: \"server.crt\", key: \"server.key\" }\n",[364,430,432,435,438,442],{"class":366,"line":431},7,[364,433,434],{"class":405},"  fetch",[364,436,437],{"class":381},"(",[364,439,441],{"class":440},"sQHwn","req",[364,443,444],{"class":381},") {\n",[364,446,448],{"class":366,"line":447},8,[364,449,450],{"class":370},"    // Server Extensions: req.ip, req.waitUntil(), req.runtime?.{bun,deno,node,cloudflare,...}\n",[364,452,454,457,460,463,465,468],{"class":366,"line":453},9,[364,455,456],{"class":377},"    return",[364,458,459],{"class":377}," new",[364,461,462],{"class":405}," Response",[364,464,437],{"class":381},[364,466,467],{"class":388},"\"👋 Hello there!\"",[364,469,470],{"class":381},");\n",[364,472,474],{"class":366,"line":473},10,[364,475,476],{"class":381},"  },\n",[364,478,480],{"class":366,"line":479},11,[364,481,482],{"class":381},"});\n",[484,485,486],"tip",{},[202,487,488,489,492],{},"\nWith ",[206,490,345],{"href":343,"rel":491},[220]," unifying runtime differences, H3 can remain simpler, focusing exclusively on web standard APIs.",[283,494,496],{"id":495},"h3-tiny-server-composer","⚡ H3: Tiny Server Composer 🎶",[202,498,499],{},"We worked hard to minimize and simplify H3’s scope.",[264,501,502,510,524,533,539,545],{},[267,503,504,505,509],{},"🪶 Optimized for performances, ",[206,506,508],{"href":507},"#lighter-than-a-feather","lighter"," than a feather.",[267,511,512,513,250,516,519,520,523],{},"👌 Intuitive ",[206,514,515],{"href":34},"typed handlers",[206,517,518],{"href":39},"responses"," and ",[206,521,522],{"href":44},"errors",".",[267,525,526,527,519,530,523],{},"🧩 Reusable ",[206,528,529],{"href":29},"middleware",[206,531,532],{"href":77},"plugins",[267,534,535,536,523],{},"🌳 Fast ",[206,537,538],{"href":24},"routing",[267,540,541,542,523],{},"➕ Built-in ",[206,543,544],{"href":93},"utilities",[267,546,547,548,552],{},"❤️ Maximum ",[206,549,551],{"href":550},"/guide/api/h3#h3mount","compatibility"," based on web standards.",[355,554,556],{"className":357,"code":555,"language":359,"meta":360,"style":360},"import { H3, serve } from \"h3\";\n\nconst app = new H3().get(\"/\", () => \"⚡️ Tadaa!\");\n\nserve(app, { port: 3000 });\n",[291,557,558,572,576,614,618],{"__ignoreMap":360},[364,559,560,562,565,567,570],{"class":366,"line":367},[364,561,378],{"class":377},[364,563,564],{"class":381}," { H3, serve } ",[364,566,385],{"class":377},[364,568,569],{"class":388}," \"h3\"",[364,571,392],{"class":381},[364,573,574],{"class":366,"line":374},[364,575,399],{"emptyLinePlaceholder":398},[364,577,578,581,584,587,589,592,595,598,600,603,606,609,612],{"class":366,"line":395},[364,579,580],{"class":377},"const",[364,582,583],{"class":418}," app",[364,585,586],{"class":377}," =",[364,588,459],{"class":377},[364,590,591],{"class":405}," H3",[364,593,594],{"class":381},"().",[364,596,597],{"class":405},"get",[364,599,437],{"class":381},[364,601,602],{"class":388},"\"/\"",[364,604,605],{"class":381},", () ",[364,607,608],{"class":377},"=>",[364,610,611],{"class":388}," \"⚡️ Tadaa!\"",[364,613,470],{"class":381},[364,615,616],{"class":366,"line":402},[364,617,399],{"emptyLinePlaceholder":398},[364,619,620,622,625,627],{"class":366,"line":412},[364,621,406],{"class":405},[364,623,624],{"class":381},"(app, { port: ",[364,626,419],{"class":418},[364,628,629],{"class":381}," });\n",[283,631,633],{"id":632},"lighter-than-a-feather","🪶 Lighter Than a Feather",[202,635,636],{},"We approached benchmarking with a new method that focuses on measuring the overhead introduced by the framework itself, rather than the network layer. Our goal is to optimize all relevant measurements together, making the numbers as close as possible to a baseline where no framework is added or used. This method allowed H3 to achieve optimized latency improvements per request and a dramatically smaller core bundle size.",[638,639,640,656],"table",{},[641,642,643],"thead",{},[644,645,646,650,653],"tr",{},[647,648,649],"th",{},"Measurement",[647,651,652],{},"H3 v1",[647,654,655],{},"🚀 H3 v2",[657,658,659,705],"tbody",{},[644,660,661,665,675],{},[662,663,664],"td",{},"Request Handling",[662,666,667,668,671,672,674],{},"Node: 36 µs ",[669,670],"br",{}," Bun: 27 µs ",[669,673],{}," Deno: 7 ms",[662,676,677,678,681,682,685,686,688,689,681,692,685,695,697,698,681,701,704],{},"Node: ",[209,679,680],{},"7 µs"," (",[209,683,684],{},"5x faster",") ",[669,687],{}," Bun: ",[209,690,691],{},"3 µs",[209,693,694],{},"9x faster",[669,696],{}," Deno: ",[209,699,700],{},"1.2 µs",[209,702,703],{},"156x faster",")",[644,706,707,710,716],{},[662,708,709],{},"Bundle Size",[662,711,712,713,715],{},"min: 101 kB ",[669,714],{}," min+gzip: 39.6 kB",[662,717,718,719,681,722,685,725,727,728,681,731,685,734,736,737,740,741,681,744,748],{},"min: ",[209,720,721],{},"9,1 kB",[209,723,724],{},"91% smaller",[669,726],{}," min+gzip: ",[209,729,730],{},"3.6 kB",[209,732,733],{},"90% smaller",[669,735],{}," min: ",[209,738,739],{},"5.2 kB"," / min+gzip: ",[209,742,743],{},"2.1 kB",[206,745,747],{"href":746},"/guide/basics/handler#handler-fetch","fetchable"," handlers)",[484,750,751],{},[202,752,753,754,757,758,761],{},"\nH3 v2 performance is nearly identical to plain ",[291,755,756],{},"fetch"," handler with ",[291,759,760],{},"new URL(req.url).pathname"," for routing. In other words, you get the benefits of H3 with nearly zero performance cost!",[763,764,765],"note",{},[202,766,767,768,773,774,778],{},"\nBenchmarks apply to the H3 core using the Web Standard target and do not include adapters. They are primarily intended for internal optimization purposes. See the ",[206,769,772],{"href":770,"rel":771},"https://github.com/h3js/h3/tree/main/test/bench",[220],"benchmark"," for details and ",[206,775,777],{"href":324,"rel":776},[220],"srvx benchmarks"," for Node.js adapter performances.",[283,780,782],{"id":781},"typed-web-standards","✅ Typed Web Standards",[202,784,785,786,250,790,250,794,799,800,805],{},"H3 adopts web standard APIs such as ",[206,787,99],{"href":788,"rel":789},"https://developer.mozilla.org/en-US/docs/Web/API/Request",[220],[206,791,104],{"href":792,"rel":793},"https://developer.mozilla.org/en-US/docs/Web/API/Response",[220],[206,795,798],{"href":796,"rel":797},"https://developer.mozilla.org/en-US/docs/Web/API/URL",[220],"URL",", and ",[206,801,804],{"href":802,"rel":803},"https://developer.mozilla.org/en-US/docs/Web/API/Headers",[220],"Headers",", without introducing new conventions on top of the standards.",[202,807,808,809,814],{},"We have launched a new initiative to strongly type Web APIs: ",[206,810,813],{"href":811,"rel":812},"https://github.com/unjs/fetchdts",[220],"✅ fetchdts",". Integrated into the H3, now we combine the best of both worlds—standards and the convenience of types.",[355,816,818],{"className":357,"code":817,"language":359,"meta":360,"style":360},"import { defineHandler } from \"h3\";\n\nconst handler = defineHandler(async (event) => {\n  // URL Parsing\n  const { pathname, searchParams } = event.url;\n\n  // Access to request headers (try auto-completion in editor!)\n  const accept = event.req.headers.get(\"Accept\");\n\n  // Read body\n  const bodyStream = await event.req.body;\n  const bodyText = await event.req.text();\n  const bodyJSON = await event.req.json();\n  const bodyFormData = await event.req.formData();\n\n  // Access to runtime specific context\n  const { deno, bun, node } = event.req.runtime;\n\n  // Prepare response (h3 does this smartly)\n  event.res.headers.set(\"Content-Type\", \"application/json\");\n\n  return { hello: \"web\" };\n});\n",[291,819,820,833,837,866,871,896,900,905,926,930,935,950,971,990,1009,1014,1020,1047,1052,1058,1079,1084,1099],{"__ignoreMap":360},[364,821,822,824,827,829,831],{"class":366,"line":367},[364,823,378],{"class":377},[364,825,826],{"class":381}," { defineHandler } ",[364,828,385],{"class":377},[364,830,569],{"class":388},[364,832,392],{"class":381},[364,834,835],{"class":366,"line":374},[364,836,399],{"emptyLinePlaceholder":398},[364,838,839,841,844,846,849,851,854,856,859,861,863],{"class":366,"line":395},[364,840,580],{"class":377},[364,842,843],{"class":418}," handler",[364,845,586],{"class":377},[364,847,848],{"class":405}," defineHandler",[364,850,437],{"class":381},[364,852,853],{"class":377},"async",[364,855,681],{"class":381},[364,857,858],{"class":440},"event",[364,860,685],{"class":381},[364,862,608],{"class":377},[364,864,865],{"class":381}," {\n",[364,867,868],{"class":366,"line":402},[364,869,870],{"class":370},"  // URL Parsing\n",[364,872,873,876,879,882,884,887,890,893],{"class":366,"line":412},[364,874,875],{"class":377},"  const",[364,877,878],{"class":381}," { ",[364,880,881],{"class":418},"pathname",[364,883,250],{"class":381},[364,885,886],{"class":418},"searchParams",[364,888,889],{"class":381}," } ",[364,891,892],{"class":377},"=",[364,894,895],{"class":381}," event.url;\n",[364,897,898],{"class":366,"line":425},[364,899,399],{"emptyLinePlaceholder":398},[364,901,902],{"class":366,"line":431},[364,903,904],{"class":370},"  // Access to request headers (try auto-completion in editor!)\n",[364,906,907,909,912,914,917,919,921,924],{"class":366,"line":447},[364,908,875],{"class":377},[364,910,911],{"class":418}," accept",[364,913,586],{"class":377},[364,915,916],{"class":381}," event.req.headers.",[364,918,597],{"class":405},[364,920,437],{"class":381},[364,922,923],{"class":388},"\"Accept\"",[364,925,470],{"class":381},[364,927,928],{"class":366,"line":453},[364,929,399],{"emptyLinePlaceholder":398},[364,931,932],{"class":366,"line":473},[364,933,934],{"class":370},"  // Read body\n",[364,936,937,939,942,944,947],{"class":366,"line":479},[364,938,875],{"class":377},[364,940,941],{"class":418}," bodyStream",[364,943,586],{"class":377},[364,945,946],{"class":377}," await",[364,948,949],{"class":381}," event.req.body;\n",[364,951,953,955,958,960,962,965,968],{"class":366,"line":952},12,[364,954,875],{"class":377},[364,956,957],{"class":418}," bodyText",[364,959,586],{"class":377},[364,961,946],{"class":377},[364,963,964],{"class":381}," event.req.",[364,966,967],{"class":405},"text",[364,969,970],{"class":381},"();\n",[364,972,974,976,979,981,983,985,988],{"class":366,"line":973},13,[364,975,875],{"class":377},[364,977,978],{"class":418}," bodyJSON",[364,980,586],{"class":377},[364,982,946],{"class":377},[364,984,964],{"class":381},[364,986,987],{"class":405},"json",[364,989,970],{"class":381},[364,991,993,995,998,1000,1002,1004,1007],{"class":366,"line":992},14,[364,994,875],{"class":377},[364,996,997],{"class":418}," bodyFormData",[364,999,586],{"class":377},[364,1001,946],{"class":377},[364,1003,964],{"class":381},[364,1005,1006],{"class":405},"formData",[364,1008,970],{"class":381},[364,1010,1012],{"class":366,"line":1011},15,[364,1013,399],{"emptyLinePlaceholder":398},[364,1015,1017],{"class":366,"line":1016},16,[364,1018,1019],{"class":370},"  // Access to runtime specific context\n",[364,1021,1023,1025,1027,1030,1032,1035,1037,1040,1042,1044],{"class":366,"line":1022},17,[364,1024,875],{"class":377},[364,1026,878],{"class":381},[364,1028,1029],{"class":418},"deno",[364,1031,250],{"class":381},[364,1033,1034],{"class":418},"bun",[364,1036,250],{"class":381},[364,1038,1039],{"class":418},"node",[364,1041,889],{"class":381},[364,1043,892],{"class":377},[364,1045,1046],{"class":381}," event.req.runtime;\n",[364,1048,1050],{"class":366,"line":1049},18,[364,1051,399],{"emptyLinePlaceholder":398},[364,1053,1055],{"class":366,"line":1054},19,[364,1056,1057],{"class":370},"  // Prepare response (h3 does this smartly)\n",[364,1059,1061,1064,1067,1069,1072,1074,1077],{"class":366,"line":1060},20,[364,1062,1063],{"class":381},"  event.res.headers.",[364,1065,1066],{"class":405},"set",[364,1068,437],{"class":381},[364,1070,1071],{"class":388},"\"Content-Type\"",[364,1073,250],{"class":381},[364,1075,1076],{"class":388},"\"application/json\"",[364,1078,470],{"class":381},[364,1080,1082],{"class":366,"line":1081},21,[364,1083,399],{"emptyLinePlaceholder":398},[364,1085,1087,1090,1093,1096],{"class":366,"line":1086},22,[364,1088,1089],{"class":377},"  return",[364,1091,1092],{"class":381}," { hello: ",[364,1094,1095],{"class":388},"\"web\"",[364,1097,1098],{"class":381}," };\n",[364,1100,1102],{"class":366,"line":1101},23,[364,1103,482],{"class":381},[202,1105,1106,1107,1112],{},"Now go ahead and call handler ",[206,1108,1109],{"href":746},[291,1110,1111],{},".fetch",":",[355,1114,1116],{"className":357,"code":1115,"language":359,"meta":360,"style":360},"const response = await handler.fetch(\"/\");\n\n// 🧙 Typed response: { hello: string; }\nconst json = await response.json();\n",[291,1117,1118,1140,1144,1149],{"__ignoreMap":360},[364,1119,1120,1122,1125,1127,1129,1132,1134,1136,1138],{"class":366,"line":367},[364,1121,580],{"class":377},[364,1123,1124],{"class":418}," response",[364,1126,586],{"class":377},[364,1128,946],{"class":377},[364,1130,1131],{"class":381}," handler.",[364,1133,756],{"class":405},[364,1135,437],{"class":381},[364,1137,602],{"class":388},[364,1139,470],{"class":381},[364,1141,1142],{"class":366,"line":374},[364,1143,399],{"emptyLinePlaceholder":398},[364,1145,1146],{"class":366,"line":395},[364,1147,1148],{"class":370},"// 🧙 Typed response: { hello: string; }\n",[364,1150,1151,1153,1156,1158,1160,1163,1165],{"class":366,"line":402},[364,1152,580],{"class":377},[364,1154,1155],{"class":418}," json",[364,1157,586],{"class":377},[364,1159,946],{"class":377},[364,1161,1162],{"class":381}," response.",[364,1164,987],{"class":405},[364,1166,970],{"class":381},[484,1168,1169],{},[202,1170,1171],{},"\nYou can directly use event handlers as a standalone, even smaller web handlers without h3 core!",[283,1173,1175],{"id":1174},"middleware-and-plugins","🧩 Middleware and Plugins",[202,1177,1178,1179,1182,1183,1188],{},"H3 now offers an ergonomic, composable way to chain middleware using ",[291,1180,1181],{},"next()"," function (inspired by ",[206,1184,1187],{"href":1185,"rel":1186},"https://hono.dev/docs/guides/middleware",[220],"Hono middleware"," 💛).",[202,1190,1191,1192,523],{},"Additionally, we have introduced a simple yet powerful pattern to extend H3 apps using reusable ",[206,1193,532],{"href":77},[1195,1196,1197,1327,1422,1532,1639,1755],"CodeGroup",{},[355,1198,1200],{"className":357,"code":1199,"filename":529,"language":359,"meta":360,"style":360},"import { H3 } from \"h3\";\n\nconst app = new H3().use(async (event, next) => {\n  // ... before response ...\n  const body = await next();\n  // ... after response ...\n  event.res.headers.append(\"x-middleware\", \"works\");\n  event.waitUntil(sendMetrics(event));\n  return body;\n});\n",[291,1201,1202,1215,1219,1255,1260,1276,1281,1300,1316,1323],{"__ignoreMap":360},[364,1203,1204,1206,1209,1211,1213],{"class":366,"line":367},[364,1205,378],{"class":377},[364,1207,1208],{"class":381}," { H3 } ",[364,1210,385],{"class":377},[364,1212,569],{"class":388},[364,1214,392],{"class":381},[364,1216,1217],{"class":366,"line":374},[364,1218,399],{"emptyLinePlaceholder":398},[364,1220,1221,1223,1225,1227,1229,1231,1233,1236,1238,1240,1242,1244,1246,1249,1251,1253],{"class":366,"line":395},[364,1222,580],{"class":377},[364,1224,583],{"class":418},[364,1226,586],{"class":377},[364,1228,459],{"class":377},[364,1230,591],{"class":405},[364,1232,594],{"class":381},[364,1234,1235],{"class":405},"use",[364,1237,437],{"class":381},[364,1239,853],{"class":377},[364,1241,681],{"class":381},[364,1243,858],{"class":440},[364,1245,250],{"class":381},[364,1247,1248],{"class":440},"next",[364,1250,685],{"class":381},[364,1252,608],{"class":377},[364,1254,865],{"class":381},[364,1256,1257],{"class":366,"line":402},[364,1258,1259],{"class":370},"  // ... before response ...\n",[364,1261,1262,1264,1267,1269,1271,1274],{"class":366,"line":412},[364,1263,875],{"class":377},[364,1265,1266],{"class":418}," body",[364,1268,586],{"class":377},[364,1270,946],{"class":377},[364,1272,1273],{"class":405}," next",[364,1275,970],{"class":381},[364,1277,1278],{"class":366,"line":425},[364,1279,1280],{"class":370},"  // ... after response ...\n",[364,1282,1283,1285,1288,1290,1293,1295,1298],{"class":366,"line":431},[364,1284,1063],{"class":381},[364,1286,1287],{"class":405},"append",[364,1289,437],{"class":381},[364,1291,1292],{"class":388},"\"x-middleware\"",[364,1294,250],{"class":381},[364,1296,1297],{"class":388},"\"works\"",[364,1299,470],{"class":381},[364,1301,1302,1305,1308,1310,1313],{"class":366,"line":447},[364,1303,1304],{"class":381},"  event.",[364,1306,1307],{"class":405},"waitUntil",[364,1309,437],{"class":381},[364,1311,1312],{"class":405},"sendMetrics",[364,1314,1315],{"class":381},"(event));\n",[364,1317,1318,1320],{"class":366,"line":453},[364,1319,1089],{"class":377},[364,1321,1322],{"class":381}," body;\n",[364,1324,1325],{"class":366,"line":473},[364,1326,482],{"class":381},[355,1328,1331],{"className":357,"code":1329,"filename":1330,"language":359,"meta":360,"style":360},"import { defineHandler, basicAuth } from \"h3\";\n\nexport default defineHandler({\n  middleware: [basicAuth({ password: \"test\" })],\n  handler: (event) => `Hello ${event.context.basicAuth?.username}!`,\n});\n","basic auth",[291,1332,1333,1346,1350,1362,1379,1418],{"__ignoreMap":360},[364,1334,1335,1337,1340,1342,1344],{"class":366,"line":367},[364,1336,378],{"class":377},[364,1338,1339],{"class":381}," { defineHandler, basicAuth } ",[364,1341,385],{"class":377},[364,1343,569],{"class":388},[364,1345,392],{"class":381},[364,1347,1348],{"class":366,"line":374},[364,1349,399],{"emptyLinePlaceholder":398},[364,1351,1352,1355,1358,1360],{"class":366,"line":395},[364,1353,1354],{"class":377},"export",[364,1356,1357],{"class":377}," default",[364,1359,848],{"class":405},[364,1361,409],{"class":381},[364,1363,1364,1367,1370,1373,1376],{"class":366,"line":402},[364,1365,1366],{"class":381},"  middleware: [",[364,1368,1369],{"class":405},"basicAuth",[364,1371,1372],{"class":381},"({ password: ",[364,1374,1375],{"class":388},"\"test\"",[364,1377,1378],{"class":381}," })],\n",[364,1380,1381,1384,1387,1389,1391,1393,1396,1398,1400,1403,1405,1407,1410,1413,1416],{"class":366,"line":412},[364,1382,1383],{"class":405},"  handler",[364,1385,1386],{"class":381},": (",[364,1388,858],{"class":440},[364,1390,685],{"class":381},[364,1392,608],{"class":377},[364,1394,1395],{"class":388}," `Hello ${",[364,1397,858],{"class":381},[364,1399,523],{"class":388},[364,1401,1402],{"class":381},"context",[364,1404,523],{"class":388},[364,1406,1369],{"class":381},[364,1408,1409],{"class":388},"?.",[364,1411,1412],{"class":381},"username",[364,1414,1415],{"class":388},"}!`",[364,1417,422],{"class":381},[364,1419,1420],{"class":366,"line":425},[364,1421,482],{"class":381},[355,1423,1426],{"className":357,"code":1424,"filename":1425,"language":359,"meta":360,"style":360},"import { H3, onRequest } from \"h3\";\n\nconst app = new H3().use(\n  onRequest((event) => {\n    console.log(`Request: [${event.req.method}] ${event.url.pathname}`);\n  }),\n);\n","onRequest",[291,1427,1428,1441,1445,1464,1480,1523,1528],{"__ignoreMap":360},[364,1429,1430,1432,1435,1437,1439],{"class":366,"line":367},[364,1431,378],{"class":377},[364,1433,1434],{"class":381}," { H3, onRequest } ",[364,1436,385],{"class":377},[364,1438,569],{"class":388},[364,1440,392],{"class":381},[364,1442,1443],{"class":366,"line":374},[364,1444,399],{"emptyLinePlaceholder":398},[364,1446,1447,1449,1451,1453,1455,1457,1459,1461],{"class":366,"line":395},[364,1448,580],{"class":377},[364,1450,583],{"class":418},[364,1452,586],{"class":377},[364,1454,459],{"class":377},[364,1456,591],{"class":405},[364,1458,594],{"class":381},[364,1460,1235],{"class":405},[364,1462,1463],{"class":381},"(\n",[364,1465,1466,1469,1472,1474,1476,1478],{"class":366,"line":402},[364,1467,1468],{"class":405},"  onRequest",[364,1470,1471],{"class":381},"((",[364,1473,858],{"class":440},[364,1475,685],{"class":381},[364,1477,608],{"class":377},[364,1479,865],{"class":381},[364,1481,1482,1485,1488,1490,1493,1495,1497,1499,1501,1504,1507,1509,1511,1514,1516,1518,1521],{"class":366,"line":412},[364,1483,1484],{"class":381},"    console.",[364,1486,1487],{"class":405},"log",[364,1489,437],{"class":381},[364,1491,1492],{"class":388},"`Request: [${",[364,1494,858],{"class":381},[364,1496,523],{"class":388},[364,1498,441],{"class":381},[364,1500,523],{"class":388},[364,1502,1503],{"class":381},"method",[364,1505,1506],{"class":388},"}] ${",[364,1508,858],{"class":381},[364,1510,523],{"class":388},[364,1512,1513],{"class":381},"url",[364,1515,523],{"class":388},[364,1517,881],{"class":381},[364,1519,1520],{"class":388},"}`",[364,1522,470],{"class":381},[364,1524,1525],{"class":366,"line":425},[364,1526,1527],{"class":381},"  }),\n",[364,1529,1530],{"class":366,"line":431},[364,1531,470],{"class":381},[355,1533,1536],{"className":357,"code":1534,"filename":1535,"language":359,"meta":360,"style":360},"import { H3, onResponse } from \"h3\";\n\nconst app = new H3().use(\n  onResponse((response, event) => {\n    console.log(`Response: [${event.req.method}] ${event.url.pathname}`, body);\n  }),\n);\n","onResponse",[291,1537,1538,1551,1555,1573,1593,1631,1635],{"__ignoreMap":360},[364,1539,1540,1542,1545,1547,1549],{"class":366,"line":367},[364,1541,378],{"class":377},[364,1543,1544],{"class":381}," { H3, onResponse } ",[364,1546,385],{"class":377},[364,1548,569],{"class":388},[364,1550,392],{"class":381},[364,1552,1553],{"class":366,"line":374},[364,1554,399],{"emptyLinePlaceholder":398},[364,1556,1557,1559,1561,1563,1565,1567,1569,1571],{"class":366,"line":395},[364,1558,580],{"class":377},[364,1560,583],{"class":418},[364,1562,586],{"class":377},[364,1564,459],{"class":377},[364,1566,591],{"class":405},[364,1568,594],{"class":381},[364,1570,1235],{"class":405},[364,1572,1463],{"class":381},[364,1574,1575,1578,1580,1583,1585,1587,1589,1591],{"class":366,"line":402},[364,1576,1577],{"class":405},"  onResponse",[364,1579,1471],{"class":381},[364,1581,1582],{"class":440},"response",[364,1584,250],{"class":381},[364,1586,858],{"class":440},[364,1588,685],{"class":381},[364,1590,608],{"class":377},[364,1592,865],{"class":381},[364,1594,1595,1597,1599,1601,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628],{"class":366,"line":412},[364,1596,1484],{"class":381},[364,1598,1487],{"class":405},[364,1600,437],{"class":381},[364,1602,1603],{"class":388},"`Response: [${",[364,1605,858],{"class":381},[364,1607,523],{"class":388},[364,1609,441],{"class":381},[364,1611,523],{"class":388},[364,1613,1503],{"class":381},[364,1615,1506],{"class":388},[364,1617,858],{"class":381},[364,1619,523],{"class":388},[364,1621,1513],{"class":381},[364,1623,523],{"class":388},[364,1625,881],{"class":381},[364,1627,1520],{"class":388},[364,1629,1630],{"class":381},", body);\n",[364,1632,1633],{"class":366,"line":425},[364,1634,1527],{"class":381},[364,1636,1637],{"class":366,"line":431},[364,1638,470],{"class":381},[355,1640,1643],{"className":357,"code":1641,"filename":1642,"language":359,"meta":360,"style":360},"import { H3, onError } from \"h3\";\n\nconst app = new H3().use(\n  onError((error, event) => {\n    console.error(`[${event.req.method}] ${event.url.pathname} !! ${error.message}`);\n  }),\n);\n","onError",[291,1644,1645,1658,1662,1680,1700,1747,1751],{"__ignoreMap":360},[364,1646,1647,1649,1652,1654,1656],{"class":366,"line":367},[364,1648,378],{"class":377},[364,1650,1651],{"class":381}," { H3, onError } ",[364,1653,385],{"class":377},[364,1655,569],{"class":388},[364,1657,392],{"class":381},[364,1659,1660],{"class":366,"line":374},[364,1661,399],{"emptyLinePlaceholder":398},[364,1663,1664,1666,1668,1670,1672,1674,1676,1678],{"class":366,"line":395},[364,1665,580],{"class":377},[364,1667,583],{"class":418},[364,1669,586],{"class":377},[364,1671,459],{"class":377},[364,1673,591],{"class":405},[364,1675,594],{"class":381},[364,1677,1235],{"class":405},[364,1679,1463],{"class":381},[364,1681,1682,1685,1687,1690,1692,1694,1696,1698],{"class":366,"line":402},[364,1683,1684],{"class":405},"  onError",[364,1686,1471],{"class":381},[364,1688,1689],{"class":440},"error",[364,1691,250],{"class":381},[364,1693,858],{"class":440},[364,1695,685],{"class":381},[364,1697,608],{"class":377},[364,1699,865],{"class":381},[364,1701,1702,1704,1706,1708,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1736,1738,1740,1743,1745],{"class":366,"line":412},[364,1703,1484],{"class":381},[364,1705,1689],{"class":405},[364,1707,437],{"class":381},[364,1709,1710],{"class":388},"`[${",[364,1712,858],{"class":381},[364,1714,523],{"class":388},[364,1716,441],{"class":381},[364,1718,523],{"class":388},[364,1720,1503],{"class":381},[364,1722,1506],{"class":388},[364,1724,858],{"class":381},[364,1726,523],{"class":388},[364,1728,1513],{"class":381},[364,1730,523],{"class":388},[364,1732,881],{"class":381},[364,1734,1735],{"class":388},"} !! ${",[364,1737,1689],{"class":381},[364,1739,523],{"class":388},[364,1741,1742],{"class":381},"message",[364,1744,1520],{"class":388},[364,1746,470],{"class":381},[364,1748,1749],{"class":366,"line":425},[364,1750,1527],{"class":381},[364,1752,1753],{"class":366,"line":431},[364,1754,470],{"class":381},[355,1756,1758],{"className":357,"code":1757,"filename":532,"language":359,"meta":360,"style":360},"import { H3, serve, definePlugin } from \"h3\";\n\nconst logger = definePlugin((h3, _options) => {\n  if (h3.config.debug) {\n    h3.use((req) => {\n      console.log(`[${req.method}] ${req.url}`);\n    });\n  }\n});\n\nconst app = new H3({ debug: true }).register(logger()).all(\"/**\", () => \"Hello!\");\n",[291,1759,1760,1773,1777,1805,1813,1830,1859,1864,1869,1873,1877],{"__ignoreMap":360},[364,1761,1762,1764,1767,1769,1771],{"class":366,"line":367},[364,1763,378],{"class":377},[364,1765,1766],{"class":381}," { H3, serve, definePlugin } ",[364,1768,385],{"class":377},[364,1770,569],{"class":388},[364,1772,392],{"class":381},[364,1774,1775],{"class":366,"line":374},[364,1776,399],{"emptyLinePlaceholder":398},[364,1778,1779,1781,1784,1786,1789,1791,1794,1796,1799,1801,1803],{"class":366,"line":395},[364,1780,580],{"class":377},[364,1782,1783],{"class":418}," logger",[364,1785,586],{"class":377},[364,1787,1788],{"class":405}," definePlugin",[364,1790,1471],{"class":381},[364,1792,1793],{"class":440},"h3",[364,1795,250],{"class":381},[364,1797,1798],{"class":440},"_options",[364,1800,685],{"class":381},[364,1802,608],{"class":377},[364,1804,865],{"class":381},[364,1806,1807,1810],{"class":366,"line":402},[364,1808,1809],{"class":377},"  if",[364,1811,1812],{"class":381}," (h3.config.debug) {\n",[364,1814,1815,1818,1820,1822,1824,1826,1828],{"class":366,"line":412},[364,1816,1817],{"class":381},"    h3.",[364,1819,1235],{"class":405},[364,1821,1471],{"class":381},[364,1823,441],{"class":440},[364,1825,685],{"class":381},[364,1827,608],{"class":377},[364,1829,865],{"class":381},[364,1831,1832,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857],{"class":366,"line":425},[364,1833,1834],{"class":381},"      console.",[364,1836,1487],{"class":405},[364,1838,437],{"class":381},[364,1840,1710],{"class":388},[364,1842,441],{"class":381},[364,1844,523],{"class":388},[364,1846,1503],{"class":381},[364,1848,1506],{"class":388},[364,1850,441],{"class":381},[364,1852,523],{"class":388},[364,1854,1513],{"class":381},[364,1856,1520],{"class":388},[364,1858,470],{"class":381},[364,1860,1861],{"class":366,"line":431},[364,1862,1863],{"class":381},"    });\n",[364,1865,1866],{"class":366,"line":447},[364,1867,1868],{"class":381},"  }\n",[364,1870,1871],{"class":366,"line":453},[364,1872,482],{"class":381},[364,1874,1875],{"class":366,"line":473},[364,1876,399],{"emptyLinePlaceholder":398},[364,1878,1879,1881,1883,1885,1887,1889,1892,1895,1898,1901,1903,1906,1909,1912,1914,1917,1919,1921,1924],{"class":366,"line":479},[364,1880,580],{"class":377},[364,1882,583],{"class":418},[364,1884,586],{"class":377},[364,1886,459],{"class":377},[364,1888,591],{"class":405},[364,1890,1891],{"class":381},"({ debug: ",[364,1893,1894],{"class":418},"true",[364,1896,1897],{"class":381}," }).",[364,1899,1900],{"class":405},"register",[364,1902,437],{"class":381},[364,1904,1905],{"class":405},"logger",[364,1907,1908],{"class":381},"()).",[364,1910,1911],{"class":405},"all",[364,1913,437],{"class":381},[364,1915,1916],{"class":388},"\"/**\"",[364,1918,605],{"class":381},[364,1920,608],{"class":377},[364,1922,1923],{"class":388}," \"Hello!\"",[364,1925,470],{"class":381},[763,1927,1928],{},[202,1929,1930,1931,1933],{},"\nAccepting ",[291,1932,1248],{}," callback is optional. Middleware can be written like v1 without returning a response.",[283,1935,1937],{"id":1936},"️-migration-from-version-1","⬆️ Migration from Version 1",[202,1939,1940],{},"We've tried to minimize breaking changes. Most of utilities preserved backward compatibility.",[199,1942,1943],{"to":172},[202,1944,1945,1946,523],{},"Check out ",[206,1947,1948],{"href":172},"Migration Guide",[283,1950,1952],{"id":1951},"unified-http-server-tools-for-everyone","🙌 Unified H(TTP) Server Tools for Everyone",[202,1954,1955,1956,1961,1962,1967,1968,1973,1974,1188],{},"H3 and related projects moved to a dedicated ",[206,1957,1960],{"href":1958,"rel":1959},"https://github.com/h3js",[220],"github org"," and new ",[206,1963,1966],{"href":1964,"rel":1965},"https://h3.dev",[220],"h3.dev"," domain (thanks to the donation from ",[206,1969,1972],{"href":1970,"rel":1971},"https://syntax.fm/",[220],"syntax.fm"," and other ",[206,1975,1977],{"href":1976},"/#sponsors","sponsors",[202,1979,1980],{},"Under the H3 umbrella, we maintain several key components for universal JavaScript servers.",[202,1982,1983,1984,1987],{},"All fully open and usable with ",[209,1985,1986],{},"or without"," H3, and with any JavaScript runtime.",[264,1989,1990,1998,2006,2012],{},[267,1991,1992,1997],{},[206,1993,1996],{"href":1994,"rel":1995},"https://github.com/h3js/h3",[220],"⚡️ h3",": Minimal HTTP Framework.",[267,1999,2000,2005],{},[206,2001,2004],{"href":2002,"rel":2003},"https://github.com/h3js/rou3",[220],"🌳 rou3",": Lightweight JavaScript Router.",[267,2007,2008,2011],{},[206,2009,345],{"href":343,"rel":2010},[220],": Universal Web-based Server API.",[267,2013,2014,2019],{},[206,2015,2018],{"href":2016,"rel":2017},"https://crossws.h3.dev",[220],"🔌 crossws",": Cross-platform WebSocket support.",[283,2021,2023],{"id":2022},"️-special-thanks","❤️ Special Thanks",[202,2025,2026,2027,2032,2033,2038,2039,519,2044,799,2049,2051],{},"This release would not have been possible without wonderful ",[206,2028,2031],{"href":2029,"rel":2030},"https://github.com/h3js/h3/graphs/contributors",[220],"contributors",", feedback from the ",[206,2034,2037],{"href":2035,"rel":2036},"https://discord.h3.dev",[220],"community",", inspirations from web-standard frameworks including ",[206,2040,2043],{"href":2041,"rel":2042},"https://hono.dev/",[220],"Hono",[206,2045,2048],{"href":2046,"rel":2047},"https://elysiajs.com/",[220],"Elysia",[206,2050,1977],{"href":1976}," who made it possible to work on open source.",[283,2053,2055],{"id":2054},"️-roadmap-to-v2-stable","🗺️ Roadmap to v2 (stable)",[202,2057,2058],{},[209,2059,2060],{},"Next steps:",[264,2062,2063,2066,2069],{},[267,2064,2065],{},"Gather feedback from community.",[267,2067,2068],{},"Finalize API updates based on feedbacks.",[267,2070,2071,2072,2075],{},"Ensure ecosystem compatibility and upgrade for ",[206,2073,227],{"href":225,"rel":2074},[220]," v3.",[2077,2078,2079],"callout",{"to":2035},[202,2080,2081,2082,2086],{},"Join our ",[206,2083,2085],{"href":2035,"rel":2084},[220],"Discord"," to share your experience and feedback!",[199,2088,2089],{"to":6},[202,2090,204,2091,212],{},[206,2092,2093],{"href":6},[209,2094,211],{},[2096,2097,2098],"style",{},"html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}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":360,"searchDepth":374,"depth":374,"links":2100},[2101,2102,2103,2104,2105,2106,2107,2108,2109],{"id":285,"depth":374,"text":286},{"id":495,"depth":374,"text":496},{"id":632,"depth":374,"text":633},{"id":781,"depth":374,"text":782},{"id":1174,"depth":374,"text":1175},{"id":1936,"depth":374,"text":1937},{"id":1951,"depth":374,"text":1952},{"id":2022,"depth":374,"text":2023},{"id":2054,"depth":374,"text":2055},"⚡ H3 v2 beta is here — fully rewritten on web standards, backward-compatible, and faster than ever!","md",{"date":2113,"category":2114,"authors":2115,"icon":184},"2025-06-10","release",[2116],{"name":2117,"github":2118},"Pooya Parsa","pi0",{"icon":184},{"title":190,"description":2110},"hdrF6zuHk_F5FYh__oDgfRBS-bV6uoSbGgylUIvQsXY",{"username":2118,"sponsors":2123},[2124,2129,2138,2231],[2125],{"name":2126,"image":2127,"website":2128},"Vercel","https://avatars.githubusercontent.com/u/14985020?v=4","https://vercel.com/",[2130,2134],{"name":2131,"image":2132,"website":2133},"VoidZero","https://avatars.githubusercontent.com/u/149750581?v=4","https://voidzero.dev",{"name":2135,"image":2136,"website":2137},"StackBlitz","https://avatars.githubusercontent.com/u/28635252?v=4","https://stackblitz.com",[2139,2143,2147,2151,2155,2159,2163,2167,2171,2175,2179,2183,2187,2191,2195,2199,2203,2207,2211,2215,2219,2223,2227],{"name":2140,"image":2141,"website":2142},"Jan-Henrik Damaschke","https://avatars.githubusercontent.com/u/15030951?u=724eb8ee4cae7792ddf13e25c31589dd6c5cb1d1&v=4","https://www.itinsights.org",{"name":2144,"image":2145,"website":2146},"Marc Laventure","https://avatars.githubusercontent.com/u/6176314?u=830f5296a7dc0035a5c8dd3ee36d1071fef08927&v=4","https://github.com/marclave",{"name":2148,"image":2149,"website":2150},"Tractorbeam","https://avatars.githubusercontent.com/u/151565601?v=4","https://tractorbeam.ai",{"name":2152,"image":2153,"website":2154},"blackbird GmbH","https://avatars.githubusercontent.com/u/61544907?u=47c13f3eec39e9f0fa8e3bf4db9dac45699f4a90&v=4","https://www.zulassung.digital",{"name":2156,"image":2157,"website":2158},"n8n - Workflow Automation","https://avatars.githubusercontent.com/u/52133374?v=4","https://n8n.io",{"name":2160,"image":2161,"website":2162},"Ulrich Stark","https://avatars.githubusercontent.com/u/8657779?u=5cfc779c824faea1372da82157a469a581318f60&v=4","https://ustark.de",{"name":2164,"image":2165,"website":2166},"xjccc","https://avatars.githubusercontent.com/u/16478776?u=137452f9b9a638bf23b8fc87f6091b68d71cf854&v=4","https://github.com/xjccc",{"name":2168,"image":2169,"website":2170},"Lucas Nørgård","https://avatars.githubusercontent.com/u/40726067?u=b20c31b846bf2a042a62ebae3fa44f4dd6fad0c9&v=4","https://luxass.dev/",{"name":2172,"image":2173,"website":2174},"Florian Heuberger","https://avatars.githubusercontent.com/u/10813063?u=b8762c0dc88a85aaf7f03c644c0e7ebaf0bace34&v=4","https://fh-softdev.de",{"name":2176,"image":2177,"website":2178},"Sacha Stafyniak","https://avatars.githubusercontent.com/u/3911343?u=1c56387a4d67656ccd09ec1f5ca34b8396550e68&v=4","https://github.com/stafyniaksacha",{"name":2180,"image":2181,"website":2182},"Alireza Jahandideh","https://avatars.githubusercontent.com/u/2191898?u=a7a133927eb4e0fdad86e2f4fa73549ef23678a3&v=4","https://ajahandideh.com",{"name":2184,"image":2185,"website":2186},"kazuya kawaguchi","https://avatars.githubusercontent.com/u/72989?u=da19c1508357407cae0b7b11166b072c95c29786&v=4","https://github.com/kazupon",{"name":2188,"image":2189,"website":2190},"Max","https://avatars.githubusercontent.com/u/22072217?u=5cd9a530f8cd1669cff4f085b71096f3372b6e1e&v=4","https://onmax.me",{"name":2192,"image":2193,"website":2194},"Stefan","https://avatars.githubusercontent.com/u/1838511?u=b0c5b19bce0cd9bbacf6df31e451d8ab7770342b&v=4","https://github.com/stenet",{"name":2196,"image":2197,"website":2198},"Bjorn Lu","https://avatars.githubusercontent.com/u/34116392?u=b156c6773cb1d21bf37c99bd427486ce73b2173d&v=4","https://bjornlu.com",{"name":2200,"image":2201,"website":2202},"Email Testing for Developers - SMTP Labs, Inc.","https://avatars.githubusercontent.com/u/89388475?v=4","https://smtp.dev",{"name":2204,"image":2205,"website":2206},"HMT Engineering SARL","https://avatars.githubusercontent.com/u/69604561?v=4","https://github.com/HMT-Engineering",{"name":2208,"image":2209,"website":2210},"Diu","https://avatars.githubusercontent.com/u/1998168?u=1a3611db57af3878d7e33af99543b0a2494916fb&v=4","https://ddiu.io",{"name":2212,"image":2213,"website":2214},"Marco Solazzi","https://avatars.githubusercontent.com/u/104721?u=71fc42acc26ef894f084ca1080d60070072c9569&v=4","https://marco.solazzi.me/",{"name":2216,"image":2217,"website":2218},"Peter Steinberger","https://avatars.githubusercontent.com/u/58493?u=95a4fccef3d341039661c427695691a664e333ba&v=4","http://steipete.me",{"name":2220,"image":2221,"website":2222},"Clex1o1","https://avatars.githubusercontent.com/u/15003466?u=f9ddf29ee36aae9dcf0d63073a244e605e43a911&v=4","https://www.the-great.dev",{"name":2224,"image":2225,"website":2226},"Robin Genz","https://avatars.githubusercontent.com/u/13857929?u=bc79facfce465b4217c46f28e23b37d829c8f970&v=4","https://robingenz.dev",{"name":2228,"image":2229,"website":2230},"Oskar Lebuda","https://avatars.githubusercontent.com/u/10373127?u=33d3700cfce271aa08ff62412cc6e51568a2f9fc&v=4","https://github.com/OskarLebuda",[2232,2236,2240,2244,2248,2252,2256,2260,2264,2268,2272,2276,2280,2284,2288,2292,2296,2300,2304,2308,2312,2316,2320,2324,2328,2332,2336,2340,2344,2348,2352,2356,2360,2364,2368,2372,2376,2380,2384,2388,2392,2396,2400,2404,2408,2412,2416,2420,2424,2428,2432,2436,2440,2444,2448,2452,2456,2460,2464,2468,2472,2476,2480,2484,2488,2492,2496,2500,2504,2508,2512,2516,2520,2524,2528,2532,2536,2540,2544,2548,2552,2556],{"inactive":398,"name":2233,"image":2234,"website":2235},"Kevin Deng","https://avatars.githubusercontent.com/u/6481596?v=4","https://sxzz.dev",{"inactive":398,"name":2237,"image":2238,"website":2239},"Saman","https://avatars.githubusercontent.com/u/9444863?u=848025ca93b0934aa1edf333b3c3808459977f5f&v=4","https://samanfekri.me",{"inactive":398,"name":2241,"image":2242,"website":2243},"Mohamad Mohebifar","https://avatars.githubusercontent.com/u/6104558?u=ef5be92a094580739e0f9cd2b3f262dcac8499fa&v=4","https://github.com/mohebifar",{"inactive":398,"name":2245,"image":2246,"website":2247},"Daniel Roe","https://avatars.githubusercontent.com/u/28706372?u=c4a5aa5232c09c3248533366d5c93a138d7e8987&v=4","https://roe.dev",{"inactive":398,"name":2249,"image":2250,"website":2251},"Johann Schopplich","https://avatars.githubusercontent.com/u/27850750?u=19ad2478f28905f0659f88c3f81f96b0910b8047&v=4","https://johannschopplich.com",{"inactive":398,"name":2253,"image":2254,"website":2255},"Jonas Galvez","https://avatars.githubusercontent.com/u/12291?u=707571de1ce12565c1194652ad5be4b9938d3b18&v=4","http://hire.jonasgalvez.com.br",{"inactive":398,"name":2257,"image":2258,"website":2259},"Evan You","https://avatars.githubusercontent.com/u/499550?u=dd9a9ba40daf29be7c310f7075e74251609b03f3&v=4","http://evanyou.me",{"inactive":398,"name":2261,"image":2262,"website":2263},"Sarah Drasner","https://avatars.githubusercontent.com/u/2281088?u=84b646c98eb14480c53987c23901b0001652d9d7&v=4","https://sarah.dev",{"inactive":398,"name":2265,"image":2266,"website":2267},"Alba Silvente Fuentes","https://avatars.githubusercontent.com/u/36744484?u=3afa68ce1e90225f102a6f61118037584043d7d5&v=4","https://links.dawntraoz.com/",{"inactive":398,"name":2269,"image":2270,"website":2271},"Sven Ludwig","https://avatars.githubusercontent.com/u/37910952?u=17d318fbe0784fd1e1709845a5e7aab7463c5141&v=4","https://github.com/svnldwg",{"inactive":398,"name":2273,"image":2274,"website":2275},"Leo","https://avatars.githubusercontent.com/u/38490578?u=d43dc9f6ca05c2f20d98a0c862a3fa93f9c9ebb5&v=4","https://yuy1n.io",{"inactive":398,"name":2277,"image":2278,"website":2279},"Stephen Zhou","https://avatars.githubusercontent.com/u/38493346?u=73b116ae6704175ce20f30e993b35305ce1c631c&v=4","https://hyoban.cc",{"inactive":398,"name":2281,"image":2282,"website":2283},"Siddharth Gelera (reaper)","https://avatars.githubusercontent.com/u/43572006?u=49e7710c0d1602408ee0b6c125cf2f05b4385608&v=4","http://reaper.is",{"inactive":398,"name":2285,"image":2286,"website":2287},"SerKo","https://avatars.githubusercontent.com/u/44749100?u=e0c8f8e5305cffe6d9a047af11d8ac0fe20d3ab0&v=4","https://serko.dev",{"inactive":398,"name":2289,"image":2290,"website":2291},"YKK","https://avatars.githubusercontent.com/u/44870505?u=9e9dd01aa5bfe0fba3746492320c469bfd53d712&v=4","https://github.com/ysknsid25",{"inactive":398,"name":2293,"image":2294,"website":2295},"牛油果在东京学习","https://avatars.githubusercontent.com/u/206218794?u=012180cc0571579cc2f21afe074e56a7fc37bf40&v=4","https://avotokyo.me",{"inactive":398,"name":2297,"image":2298,"website":2299},"seho","https://avatars.githubusercontent.com/u/35763284?u=4957dd13ecc98b8009d8a46dc13c7474f1d5a63d&v=4","https://www.yinzhuoei.com",{"inactive":398,"name":2301,"image":2302,"website":2303},"HeroDevs","https://avatars.githubusercontent.com/u/35441165?v=4","https://herodevs.com",{"inactive":398,"name":2305,"image":2306,"website":2307},"@selimdoyranli","https://avatars.githubusercontent.com/u/22690563?u=ebb94ed7bd17f3e7871bba1ae14585f947ed27a4&v=4","https://selimdoyranli.com",{"inactive":398,"name":2309,"image":2310,"website":2311},"Viki Val","https://avatars.githubusercontent.com/u/22471030?u=a6926c83f25a9b638051189d067c8a21c76f0f9f&v=4","https://vik.ink",{"inactive":398,"name":2313,"image":2314,"website":2315},"Zafar","https://avatars.githubusercontent.com/u/22354051?u=1593668e675cb6de461eea512ced15e620c0174d&v=4","https://zafar.dev",{"inactive":398,"name":2317,"image":2318,"website":2319},"Damien Robinson","https://avatars.githubusercontent.com/u/21211734?u=ec46acafb7634763142c0c1a2f162dfa4e47a5ea&v=4","https://daim.dev",{"inactive":398,"name":2321,"image":2322,"website":2323},"@johnpyp","https://avatars.githubusercontent.com/u/20625636?u=35901411c42c213a7ac06bed4dd70abc88f79439&v=4","https://github.com/johnpyp",{"inactive":398,"name":2325,"image":2326,"website":2327},"Matt Maribojoc","https://avatars.githubusercontent.com/u/18535681?u=4a22b2924d1522f8e6c6e8960c0b459a38704347&v=4","https://github.com/mattmaribojoc",{"inactive":398,"name":2329,"image":2330,"website":2331},"tom","https://avatars.githubusercontent.com/u/17279485?u=de6a20187a6db8f84a0381bb0d14991518fe3356&v=4","https://github.com/dunklesToast",{"inactive":398,"name":2333,"image":2334,"website":2335},"Omar McAdam","https://avatars.githubusercontent.com/u/17185737?u=4772d9db7d1dd482082f7097c4ccc431c170e744&v=4","https://mcadam.io",{"inactive":398,"name":2337,"image":2338,"website":2339},"JAMflow Cloud","https://avatars.githubusercontent.com/u/165913352?v=4","https://jamflow.cloud/",{"inactive":398,"name":2341,"image":2342,"website":2343},"Syntax","https://avatars.githubusercontent.com/u/130389858?v=4","https://syntax.fm",{"inactive":398,"name":2345,"image":2346,"website":2347},"Iyimide Adekile","https://avatars.githubusercontent.com/u/105992164?u=0a701f45f96b00b37c3a8675f5e2b93a633dec0d&v=4","https://iyimide.dev",{"inactive":398,"name":2349,"image":2350,"website":2351},"Jack Shelton","https://avatars.githubusercontent.com/u/104264123?u=2248435a2150fd228592d276c6e707ea9b1506be&v=4","https://jackshelton.com",{"inactive":398,"name":2353,"image":2354,"website":2355},"Genezio","https://avatars.githubusercontent.com/u/103574863?v=4","https://genezio.com",{"inactive":398,"name":2357,"image":2358,"website":2359},"Cedric Mutesa","https://avatars.githubusercontent.com/u/96414111?u=16532e810c81ec0e3056dbb4c1f6e3aa5cf79241&v=4","https://mcedric.dev",{"inactive":398,"name":2361,"image":2362,"website":2363},"James Isaacs","https://avatars.githubusercontent.com/u/92189743?u=1d32367244f37d45a82c0b0076516d5ec2e8427a&v=4","https://linkedin.com/in/james-isaacs2",{"inactive":398,"name":2365,"image":2366,"website":2367},"Froggly","https://avatars.githubusercontent.com/u/79277835?v=4","https://froggly.pl",{"inactive":398,"name":2369,"image":2370,"website":2371},"FormKit","https://avatars.githubusercontent.com/u/76744415?v=4","https://www.formkit.com",{"inactive":398,"name":2373,"image":2374,"website":2375},"Luke Thomas","https://avatars.githubusercontent.com/u/73349308?u=12db5f4cd051ed0827dc8b806dcca3dcf5217b8d&v=4","https://github.com/lukethomaspassionatepeople",{"inactive":398,"name":2377,"image":2378,"website":2379},"ubugeeei","https://avatars.githubusercontent.com/u/71201308?u=44f9771e6bc51934d392e86a4644c32c615cdec8&v=4","https://wtrclred.io",{"inactive":398,"name":2381,"image":2382,"website":2383},"Julien Huang","https://avatars.githubusercontent.com/u/63512348?u=b60a88c0337dc98b9cdbf1d0a4b3c635786a01b0&v=4","https://github.com/huang-julien",{"inactive":398,"name":2385,"image":2386,"website":2387},"NaokiHaba","https://avatars.githubusercontent.com/u/59875779?u=9eb21272191d359fd1a13b301cdc258c73c2a2a5&v=4","https://github.com/naokihaba",{"inactive":398,"name":2389,"image":2390,"website":2391},"Localazy","https://avatars.githubusercontent.com/u/59409404?v=4","https://localazy.com",{"inactive":398,"name":2393,"image":2394,"website":2395},"Jason Poulin","https://avatars.githubusercontent.com/u/55339225?u=f97b60c098d906196b497c389286eb674d8f1e46&v=4","https://github.com/jasonvanguard",{"inactive":398,"name":2397,"image":2398,"website":2399},"Restent Ou","https://avatars.githubusercontent.com/u/53113178?u=f04eab17483bf3a7bce265de9005ecf07b397adf&v=4","https://www.gxres.net",{"inactive":398,"name":2401,"image":2402,"website":2403},"Joao Jack","https://avatars.githubusercontent.com/u/52300131?u=30b1fbf3ed6a07ced2a1ecf17df2d2f46dfe732c&v=4","https://joaojack.dev",{"inactive":398,"name":2405,"image":2406,"website":2407},"Lucas Alves Costa","https://avatars.githubusercontent.com/u/50385918?u=edb739a97ecf71ef6be8b337e446df5ea7f5d413&v=4","https://github.com/luckasnix",{"inactive":398,"name":2409,"image":2410,"website":2411},"Milos Dimitrijevic","https://avatars.githubusercontent.com/u/46306967?u=1d5e02f5ffcd99e21b5d869fe740b7c1d2ce0318&v=4","https://github.com/milos018",{"inactive":398,"name":2413,"image":2414,"website":2415},"Serhii Bedrytskyi","https://avatars.githubusercontent.com/u/45076741?u=e61b21a7d5dfe211d34452ca951d70660d282e94&v=4","https://github.com/bdrtsky",{"inactive":398,"name":2417,"image":2418,"website":2419},"Nate Mortensen","https://avatars.githubusercontent.com/u/2768475?u=26af5b5eba0f86ea3a3a3da2c13561c74cf4602a&v=4","https://github.com/natemortensen",{"inactive":398,"name":2421,"image":2422,"website":2423},"William DA SILVA","https://avatars.githubusercontent.com/u/2766008?u=c8ca89b2dea56cfbeca3ba0da931519a61ef20b5&v=4","https://william.to/web",{"inactive":398,"name":2425,"image":2426,"website":2427},"Thomas Marrec","https://avatars.githubusercontent.com/u/2362138?u=cb48a0de48ca04e2eb8cf2632520285d5a7a28bc&v=4","https://gomah.fr/",{"inactive":398,"name":2429,"image":2430,"website":2431},"Bruno Sato","https://avatars.githubusercontent.com/u/2257501?u=62e7db432487ab19a9e11db051198d91fb42fe95&v=4","http://twitter.com/brunoksato",{"inactive":398,"name":2433,"image":2434,"website":2435},"Eric Otto","https://avatars.githubusercontent.com/u/2243814?u=143335df10df14dbaf38c9701d53c5306a9de83c&v=4","https://eo.run",{"inactive":398,"name":2437,"image":2438,"website":2439},"juankamilo","https://avatars.githubusercontent.com/u/1947043?u=4b433e210359c0f6ad760abfcc46459351dd8b83&v=4","https://github.com/juankamilo",{"inactive":398,"name":2441,"image":2442,"website":2443},"replygirl","https://avatars.githubusercontent.com/u/1940038?u=09666f2e24c629fe72589f4051ba14a500cb5a74&v=4","https://replygirl.club",{"inactive":398,"name":2445,"image":2446,"website":2447},"Julio Marquez","https://avatars.githubusercontent.com/u/1911993?u=fced65341da9aa7e147e631d1d37e0c6cc68bc27&v=4","https://juliomarquez.com",{"inactive":398,"name":2449,"image":2450,"website":2451},"Israel Ortuño","https://avatars.githubusercontent.com/u/1769417?u=29c0ed774149fb6a8d46083b2c050e75229f0200&v=4","https://github.com/IsraelOrtuno",{"inactive":398,"name":2453,"image":2454,"website":2455},"John","https://avatars.githubusercontent.com/u/1719221?u=b5739798ee9a3d713f5ca3bd3d6a086c13d229a3&v=4","https://github.com/robokozo",{"inactive":398,"name":2457,"image":2458,"website":2459},"Marc Backes","https://avatars.githubusercontent.com/u/1444915?u=0466988bb19cd8d459f33b50b5ff9c48177ddd17&v=4","https://marc.dev",{"inactive":398,"name":2461,"image":2462,"website":2463},"Scott Cooper","https://avatars.githubusercontent.com/u/1400464?u=55a2d1a4fe7583b24718c9d11af43d400e233ea6&v=4","https://xmplaylist.com",{"inactive":398,"name":2465,"image":2466,"website":2467},"Matthew Stiles","https://avatars.githubusercontent.com/u/1377201?u=081a47344d4cff978c99d317d6f45ed235236983&v=4","https://github.com/stilesdev",{"inactive":398,"name":2469,"image":2470,"website":2471},"Chris Calo","https://avatars.githubusercontent.com/u/867717?v=4","https://github.com/chriscalo",{"inactive":398,"name":2473,"image":2474,"website":2475},"Lars Kappert","https://avatars.githubusercontent.com/u/456426?u=1d914b43a4f4e21e13d9e97ae4760f8bf41e0c89&v=4","https://webpro.nl",{"inactive":398,"name":2477,"image":2478,"website":2479},"Jamaluddin Rumi","https://avatars.githubusercontent.com/u/446780?u=1d6f3fcd7a90c72ef49a709e49c9ebf5fc364986&v=4","https://jamal.indomascot.com",{"inactive":398,"name":2481,"image":2482,"website":2483},"João Carmona","https://avatars.githubusercontent.com/u/411763?u=e1539021b583abe14d08fb5c8a30f18309b19b00&v=4","https://github.com/jpsc",{"inactive":398,"name":2485,"image":2486,"website":2487},"Justin C. Beck","https://avatars.githubusercontent.com/u/95119?v=4","https://github.com/justincbeck",{"inactive":398,"name":2489,"image":2490,"website":2491},"Ani Sanjeev","https://avatars.githubusercontent.com/u/80173?u=57b044944c572f3bbb2f2209a506bca3a4d112e4&v=4","http://www.skyronic.com",{"inactive":398,"name":2493,"image":2494,"website":2495},"Michael Holroyd","https://avatars.githubusercontent.com/u/10985?u=ac1067091bd6088ba91b28f9a417806ad1acc4ae&v=4","https://meekohi.com",{"inactive":398,"name":2497,"image":2498,"website":2499},"Lennart","https://avatars.githubusercontent.com/u/16143594?u=5912586fb7315f5a541e1ddabcd8881af8b7de63&v=4","https://www.lekoarts.de/",{"inactive":398,"name":2501,"image":2502,"website":2503},"Fabian Wohlfart","https://avatars.githubusercontent.com/u/15716389?u=298f0fb1cf42744e140cfa09569f3f6c6eb0afdd&v=4","https://anothercodeproject.eu/",{"inactive":398,"name":2505,"image":2506,"website":2507},"Ari Perkkiö","https://avatars.githubusercontent.com/u/14806298?u=3ddd26d15c2ad4193edd0e8bc6070510748bd211&v=4","https://github.com/AriPerkkio",{"inactive":398,"name":2509,"image":2510,"website":2511},"Storyblok","https://avatars.githubusercontent.com/u/13880908?v=4","https://www.storyblok.com",{"inactive":398,"name":2513,"image":2514,"website":2515},"Sandro Circi","https://avatars.githubusercontent.com/u/13056429?u=37da263a037d4051ba41dc01eb3cae656191e7ca&v=4","https://s94.dev",{"inactive":398,"name":2517,"image":2518,"website":2519},"Kamal","https://avatars.githubusercontent.com/u/12810203?u=b489c73c2734864ee472daba665c69f563ded9da&v=4","https://github.com/Kamalnrf",{"inactive":398,"name":2521,"image":2522,"website":2523},"Philipp Kief","https://avatars.githubusercontent.com/u/12248527?u=fca98653112684efcd19591a419a6b0f8b431cd4&v=4","https://pkief.com",{"inactive":398,"name":2525,"image":2526,"website":2527},"Anthony Fu","https://avatars.githubusercontent.com/u/11247099?u=5c092d3773a443e480a294f2b67aa39395982f46&v=4","https://antfu.me",{"inactive":398,"name":2529,"image":2530,"website":2531},"Matus Poruben","https://avatars.githubusercontent.com/u/10378000?u=feab88875f4428791e9c09c1121d50b9fda84ecd&v=4","https://matthewporuben.com",{"inactive":398,"name":2533,"image":2534,"website":2535},"Fábio Santos","https://avatars.githubusercontent.com/u/8303937?u=d72f02713747fcfa8af59b2f36ec7ee465e4142e&v=4","https://fabiofdsantos.com",{"inactive":398,"name":2537,"image":2538,"website":2539},"Christian Preston","https://avatars.githubusercontent.com/u/6619884?u=3b29c1a40e69c0442b97971fc8295e02984021cb&v=4","https://christianpreston.com",{"inactive":398,"name":2541,"image":2542,"website":2543},"Sam","https://avatars.githubusercontent.com/u/5327489?u=7fc13f69e450e988d63a8f9d25a48a86e231cd8f&v=4","https://samro.in",{"inactive":398,"name":2545,"image":2546,"website":2547},"Harlan Wilton","https://avatars.githubusercontent.com/u/5326365?u=171656f99ff4c2f33943f642d813fff8399e76a8&v=4","https://harlanzw.com",{"inactive":398,"name":2549,"image":2550,"website":2551},"@timmushen","https://avatars.githubusercontent.com/u/5281775?u=c12cf41491c7761aa90cc3437d5d980a3e811eb6&v=4","https://github.com/timmushen",{"inactive":398,"name":2553,"image":2554,"website":2555},"kissu","https://avatars.githubusercontent.com/u/5133074?u=5eddeda68548c1ea72460c75ee957289c96478e0&v=4","https://github.com/kissu",{"inactive":398,"name":2557,"image":2558,"website":2559},"@timhanlon","https://avatars.githubusercontent.com/u/4340187?u=99d45e9548a0bf67d4c391f1fac10a0587566e2a&v=4","https://github.com/timhanlon",[2561,2565,2570,2575,2580,2585,2590,2595,2600,2605,2610,2615,2620,2625,2630,2635,2640,2645,2650,2655,2660,2665,2670,2674,2679,2684,2689,2694],{"name":2562,"username":2118,"profile":2563,"avatar":2564},"@pi0","https://github.com/pi0","https://github.com/pi0.png",{"name":2566,"username":2567,"profile":2568,"avatar":2569},"@danielroe","danielroe","https://github.com/danielroe","https://github.com/danielroe.png",{"name":2571,"username":2572,"profile":2573,"avatar":2574},"@iiio2","iiio2","https://github.com/iiio2","https://github.com/iiio2.png",{"name":2576,"username":2577,"profile":2578,"avatar":2579},"@productdevbook","productdevbook","https://github.com/productdevbook","https://github.com/productdevbook.png",{"name":2581,"username":2582,"profile":2583,"avatar":2584},"@kricsleo","kricsleo","https://github.com/kricsleo","https://github.com/kricsleo.png",{"name":2586,"username":2587,"profile":2588,"avatar":2589},"@nozomuikuta","nozomuikuta","https://github.com/nozomuikuta","https://github.com/nozomuikuta.png",{"name":2591,"username":2592,"profile":2593,"avatar":2594},"@pi0x","pi0x","https://github.com/pi0x","https://github.com/pi0x.png",{"name":2596,"username":2597,"profile":2598,"avatar":2599},"@Barbapapazes","Barbapapazes","https://github.com/Barbapapazes","https://github.com/Barbapapazes.png",{"name":2601,"username":2602,"profile":2603,"avatar":2604},"@huseeiin","huseeiin","https://github.com/huseeiin","https://github.com/huseeiin.png",{"name":2606,"username":2607,"profile":2608,"avatar":2609},"@sandros94","sandros94","https://github.com/sandros94","https://github.com/sandros94.png",{"name":2611,"username":2612,"profile":2613,"avatar":2614},"@Hebilicious","Hebilicious","https://github.com/Hebilicious","https://github.com/Hebilicious.png",{"name":2616,"username":2617,"profile":2618,"avatar":2619},"@francisjohnjohnston-web","francisjohnjohnston-web","https://github.com/francisjohnjohnston-web","https://github.com/francisjohnjohnston-web.png",{"name":2621,"username":2622,"profile":2623,"avatar":2624},"@TheAlexLichter","TheAlexLichter","https://github.com/TheAlexLichter","https://github.com/TheAlexLichter.png",{"name":2626,"username":2627,"profile":2628,"avatar":2629},"@aaharu","aaharu","https://github.com/aaharu","https://github.com/aaharu.png",{"name":2631,"username":2632,"profile":2633,"avatar":2634},"@GalacticHypernova","GalacticHypernova","https://github.com/GalacticHypernova","https://github.com/GalacticHypernova.png",{"name":2636,"username":2637,"profile":2638,"avatar":2639},"@Aareksio","Aareksio","https://github.com/Aareksio","https://github.com/Aareksio.png",{"name":2641,"username":2642,"profile":2643,"avatar":2644},"@logaretm","logaretm","https://github.com/logaretm","https://github.com/logaretm.png",{"name":2646,"username":2647,"profile":2648,"avatar":2649},"@ytjmt","ytjmt","https://github.com/ytjmt","https://github.com/ytjmt.png",{"name":2651,"username":2652,"profile":2653,"avatar":2654},"@tobiasdiez","tobiasdiez","https://github.com/tobiasdiez","https://github.com/tobiasdiez.png",{"name":2656,"username":2657,"profile":2658,"avatar":2659},"@nickspaargaren","nickspaargaren","https://github.com/nickspaargaren","https://github.com/nickspaargaren.png",{"name":2661,"username":2662,"profile":2663,"avatar":2664},"@amondnet","amondnet","https://github.com/amondnet","https://github.com/amondnet.png",{"name":2666,"username":2667,"profile":2668,"avatar":2669},"@3m1n3nc3","3m1n3nc3","https://github.com/3m1n3nc3","https://github.com/3m1n3nc3.png",{"name":2671,"username":2672,"profile":2291,"avatar":2673},"@ysknsid25","ysknsid25","https://github.com/ysknsid25.png",{"name":2675,"username":2676,"profile":2677,"avatar":2678},"@iainsproat","iainsproat","https://github.com/iainsproat","https://github.com/iainsproat.png",{"name":2680,"username":2681,"profile":2682,"avatar":2683},"@harlan-zw","harlan-zw","https://github.com/harlan-zw","https://github.com/harlan-zw.png",{"name":2685,"username":2686,"profile":2687,"avatar":2688},"@DamianGlowala","DamianGlowala","https://github.com/DamianGlowala","https://github.com/DamianGlowala.png",{"name":2690,"username":2691,"profile":2692,"avatar":2693},"@ChangJoo-Park","ChangJoo-Park","https://github.com/ChangJoo-Park","https://github.com/ChangJoo-Park.png",{"name":2695,"username":2696,"profile":2697,"avatar":2698},"@antfu","antfu","https://github.com/antfu","https://github.com/antfu.png",1783690723587]