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