[{"data":1,"prerenderedAt":626},["ShallowReactive",2],{"navigation":3,"-guide-server":61,"-guide-server-surround":621},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","/guide","1.guide/01.index",[9,11,16,21,26,31,36,41,46,51,56],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Fetch Handler","/guide/handler","1.guide/02.handler","i-fluent:target-24-regular",{"title":17,"path":18,"stem":19,"icon":20},"Server Instance","/guide/server","1.guide/03.server","radix-icons:component-instance",{"title":22,"path":23,"stem":24,"icon":25},"Middleware","/guide/middleware","1.guide/04.middleware","clarity:plugin-line",{"title":27,"path":28,"stem":29,"icon":30},"Server Options","/guide/options","1.guide/05.options","ri:settings-3-line",{"title":32,"path":33,"stem":34,"icon":35},"TLS","/guide/tls","1.guide/06.tls","ri:lock-2-line",{"title":37,"path":38,"stem":39,"icon":40},"Bundler Usage","/guide/bundler","1.guide/07.bundler","clarity:bundle-line",{"title":42,"path":43,"stem":44,"icon":45},"Node.js Support","/guide/node","1.guide/08.node","akar-icons:node-fill",{"title":47,"path":48,"stem":49,"icon":50},"Using CLI","/guide/cli","1.guide/10.cli","garden:terminal-cli-stroke-12",{"title":52,"path":53,"stem":54,"icon":55},"Body Size Limiting","/guide/body-limit","1.guide/11.body-limit","ri:scales-3-line",{"title":57,"path":58,"stem":59,"icon":60},"AWS Lambda","/guide/aws-lambda","1.guide/9.aws-lambda","clarity:cloud-traffic-line",{"id":62,"title":17,"body":63,"description":615,"extension":616,"meta":617,"navigation":618,"path":18,"seo":619,"stem":19,"__hash__":620},"content/1.guide/03.server.md",{"type":64,"value":65,"toc":599,"icon":20},"minimark",[66,75,263,268,275,278,281,287,290,296,307,447,451,457,460,466,481,487,490,497,508,512,555,559,565,568,571,577,580,583,589,592,595],[67,68,69,70,74],"p",{},"When calling ",[71,72,73],"code",{},"serve"," to start a server, a server instance will be immediately returned in order to control the server instance.",[76,77,82],"pre",{"className":78,"code":79,"language":80,"meta":81,"style":81},"language-js shiki shiki-themes github-light github-dark github-dark","import { serve } from \"srvx\";\n\nconst server = serve({\n  fetch(request) {\n    return new Response(`🔥 Server is powered by ${server.runtime}.`);\n  },\n});\n\nawait server.ready();\n\nconsole.log(`🚀 Server is ready at ${server.url}`);\n\n// When server is no longer needed\n// await server.close(true /* closeActiveConnections */)\n","js","",[71,83,84,107,114,134,150,182,188,194,199,214,219,245,250,257],{"__ignoreMap":81},[85,86,89,93,97,100,104],"span",{"class":87,"line":88},"line",1,[85,90,92],{"class":91},"so5gQ","import",[85,94,96],{"class":95},"slsVL"," { serve } ",[85,98,99],{"class":91},"from",[85,101,103],{"class":102},"sfrk1"," \"srvx\"",[85,105,106],{"class":95},";\n",[85,108,110],{"class":87,"line":109},2,[85,111,113],{"emptyLinePlaceholder":112},true,"\n",[85,115,117,120,124,127,131],{"class":87,"line":116},3,[85,118,119],{"class":91},"const",[85,121,123],{"class":122},"suiK_"," server",[85,125,126],{"class":91}," =",[85,128,130],{"class":129},"shcOC"," serve",[85,132,133],{"class":95},"({\n",[85,135,137,140,143,147],{"class":87,"line":136},4,[85,138,139],{"class":129},"  fetch",[85,141,142],{"class":95},"(",[85,144,146],{"class":145},"sQHwn","request",[85,148,149],{"class":95},") {\n",[85,151,153,156,159,162,164,167,170,173,176,179],{"class":87,"line":152},5,[85,154,155],{"class":91},"    return",[85,157,158],{"class":91}," new",[85,160,161],{"class":129}," Response",[85,163,142],{"class":95},[85,165,166],{"class":102},"`🔥 Server is powered by ${",[85,168,169],{"class":95},"server",[85,171,172],{"class":102},".",[85,174,175],{"class":95},"runtime",[85,177,178],{"class":102},"}.`",[85,180,181],{"class":95},");\n",[85,183,185],{"class":87,"line":184},6,[85,186,187],{"class":95},"  },\n",[85,189,191],{"class":87,"line":190},7,[85,192,193],{"class":95},"});\n",[85,195,197],{"class":87,"line":196},8,[85,198,113],{"emptyLinePlaceholder":112},[85,200,202,205,208,211],{"class":87,"line":201},9,[85,203,204],{"class":91},"await",[85,206,207],{"class":95}," server.",[85,209,210],{"class":129},"ready",[85,212,213],{"class":95},"();\n",[85,215,217],{"class":87,"line":216},10,[85,218,113],{"emptyLinePlaceholder":112},[85,220,222,225,228,230,233,235,237,240,243],{"class":87,"line":221},11,[85,223,224],{"class":95},"console.",[85,226,227],{"class":129},"log",[85,229,142],{"class":95},[85,231,232],{"class":102},"`🚀 Server is ready at ${",[85,234,169],{"class":95},[85,236,172],{"class":102},[85,238,239],{"class":95},"url",[85,241,242],{"class":102},"}`",[85,244,181],{"class":95},[85,246,248],{"class":87,"line":247},12,[85,249,113],{"emptyLinePlaceholder":112},[85,251,253],{"class":87,"line":252},13,[85,254,256],{"class":255},"sCsY4","// When server is no longer needed\n",[85,258,260],{"class":87,"line":259},14,[85,261,262],{"class":255},"// await server.close(true /* closeActiveConnections */)\n",[264,265,267],"h2",{"id":266},"server-properties","Server Properties",[269,270,272],"h3",{"id":271},"serveroptions",[71,273,274],{},"server.options",[67,276,277],{},"Access to the sever options set during initialization.",[279,280],"read-more",{"to":28},[269,282,284],{"id":283},"serverurl",[71,285,286],{},"server.url",[67,288,289],{},"Get the computed server listening URL.",[269,291,293],{"id":292},"serverwaituntil",[71,294,295],{},"server.waitUntil?",[67,297,298,299,306],{},"Register a background task that the server should await before closing. This is the same function as ",[300,301,303],"a",{"href":302},"/guide/handler#requestwaituntil",[71,304,305],{},"request.waitUntil"," but available at the server level for use outside of request handlers.",[76,308,310],{"className":78,"code":309,"language":80,"meta":81,"style":81},"import { serve } from \"srvx\";\n\nconst server = serve({\n  fetch: (request) => new Response(\"OK\"),\n});\n\nconst promise = fetch(\"https://telemetry.example.com\", {\n  method: \"POST\",\n  body: JSON.stringify({ event: \"server_started\" }),\n});\n\nserver.waitUntil?.(promise);\n",[71,311,312,324,328,340,367,371,375,395,406,428,432,436],{"__ignoreMap":81},[85,313,314,316,318,320,322],{"class":87,"line":88},[85,315,92],{"class":91},[85,317,96],{"class":95},[85,319,99],{"class":91},[85,321,103],{"class":102},[85,323,106],{"class":95},[85,325,326],{"class":87,"line":109},[85,327,113],{"emptyLinePlaceholder":112},[85,329,330,332,334,336,338],{"class":87,"line":116},[85,331,119],{"class":91},[85,333,123],{"class":122},[85,335,126],{"class":91},[85,337,130],{"class":129},[85,339,133],{"class":95},[85,341,342,344,347,349,352,355,357,359,361,364],{"class":87,"line":136},[85,343,139],{"class":129},[85,345,346],{"class":95},": (",[85,348,146],{"class":145},[85,350,351],{"class":95},") ",[85,353,354],{"class":91},"=>",[85,356,158],{"class":91},[85,358,161],{"class":129},[85,360,142],{"class":95},[85,362,363],{"class":102},"\"OK\"",[85,365,366],{"class":95},"),\n",[85,368,369],{"class":87,"line":152},[85,370,193],{"class":95},[85,372,373],{"class":87,"line":184},[85,374,113],{"emptyLinePlaceholder":112},[85,376,377,379,382,384,387,389,392],{"class":87,"line":190},[85,378,119],{"class":91},[85,380,381],{"class":122}," promise",[85,383,126],{"class":91},[85,385,386],{"class":129}," fetch",[85,388,142],{"class":95},[85,390,391],{"class":102},"\"https://telemetry.example.com\"",[85,393,394],{"class":95},", {\n",[85,396,397,400,403],{"class":87,"line":196},[85,398,399],{"class":95},"  method: ",[85,401,402],{"class":102},"\"POST\"",[85,404,405],{"class":95},",\n",[85,407,408,411,414,416,419,422,425],{"class":87,"line":201},[85,409,410],{"class":95},"  body: ",[85,412,413],{"class":122},"JSON",[85,415,172],{"class":95},[85,417,418],{"class":129},"stringify",[85,420,421],{"class":95},"({ event: ",[85,423,424],{"class":102},"\"server_started\"",[85,426,427],{"class":95}," }),\n",[85,429,430],{"class":87,"line":216},[85,431,193],{"class":95},[85,433,434],{"class":87,"line":221},[85,435,113],{"emptyLinePlaceholder":112},[85,437,438,441,444],{"class":87,"line":247},[85,439,440],{"class":95},"server.",[85,442,443],{"class":129},"waitUntil",[85,445,446],{"class":95},"?.(promise);\n",[264,448,450],{"id":449},"server-methods","Server Methods",[269,452,454],{"id":453},"serverready",[71,455,456],{},"server.ready()",[67,458,459],{},"Returns a promise that will be resolved when server is listening to the port and ready to accept connections.",[67,461,462],{},[463,464,465],"strong",{},"Example:",[76,467,469],{"className":78,"code":468,"language":80,"meta":81,"style":81},"await server.ready();\n",[71,470,471],{"__ignoreMap":81},[85,472,473,475,477,479],{"class":87,"line":88},[85,474,204],{"class":91},[85,476,207],{"class":95},[85,478,210],{"class":129},[85,480,213],{"class":95},[269,482,484],{"id":483},"serverclosecloseactiveconnections",[71,485,486],{},"server.close(closeActiveConnections?)",[67,488,489],{},"Stop listening to prevent new connections from being accepted.",[67,491,492,493,496],{},"By default, calling ",[71,494,495],{},"close"," does not cancel in-flight requests or websockets. That means it may take some time before all network activity stops.",[67,498,499,500,503,504,507],{},"If ",[71,501,502],{},"closeActiveConnections"," is set to ",[71,505,506],{},"true",", it will immediately terminate in-flight requests, websockets, and stop accepting new connections.",[67,509,510],{},[463,511,465],{},[76,513,515],{"className":78,"code":514,"language":80,"meta":81,"style":81},"// Stop accepting new requests\nawait server.close();\n\n// Stop accepting new requests and cancel all current connections\nawait server.close(true);\n",[71,516,517,522,532,536,541],{"__ignoreMap":81},[85,518,519],{"class":87,"line":88},[85,520,521],{"class":255},"// Stop accepting new requests\n",[85,523,524,526,528,530],{"class":87,"line":109},[85,525,204],{"class":91},[85,527,207],{"class":95},[85,529,495],{"class":129},[85,531,213],{"class":95},[85,533,534],{"class":87,"line":116},[85,535,113],{"emptyLinePlaceholder":112},[85,537,538],{"class":87,"line":136},[85,539,540],{"class":255},"// Stop accepting new requests and cancel all current connections\n",[85,542,543,545,547,549,551,553],{"class":87,"line":152},[85,544,204],{"class":91},[85,546,207],{"class":95},[85,548,495],{"class":129},[85,550,142],{"class":95},[85,552,506],{"class":122},[85,554,181],{"class":95},[264,556,558],{"id":557},"access-to-the-underlying-server","Access to the Underlying Server",[269,560,562],{"id":561},"serverbunserver",[71,563,564],{},"server.bun.server",[67,566,567],{},"Access to the underlying Bun server instance when running in Bun.",[279,569],{"to":570},"https://bun.sh/docs/api/http",[269,572,574],{"id":573},"serverdenoserver",[71,575,576],{},"server.deno.server",[67,578,579],{},"Access to the underlying Deno server instance when running in Deno.",[279,581],{"to":582},"https://docs.deno.com/api/deno/~/Deno.HttpServer",[269,584,586],{"id":585},"servernodeserver",[71,587,588],{},"server.node.server",[67,590,591],{},"Access to the underlying Node.js server instance when running in Node.js",[279,593],{"to":594},"https://nodejs.org/api/http.html#class-httpserver",[596,597,598],"style",{},"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 .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":81,"searchDepth":109,"depth":109,"links":600},[601,606,610],{"id":266,"depth":109,"text":267,"children":602},[603,604,605],{"id":271,"depth":116,"text":274},{"id":283,"depth":116,"text":286},{"id":292,"depth":116,"text":295},{"id":449,"depth":109,"text":450,"children":607},[608,609],{"id":453,"depth":116,"text":456},{"id":483,"depth":116,"text":486},{"id":557,"depth":109,"text":558,"children":611},[612,613,614],{"id":561,"depth":116,"text":564},{"id":573,"depth":116,"text":576},{"id":585,"depth":116,"text":588},"Control srvx server lifecycle.","md",{"icon":20},{"icon":20},{"title":17,"description":615},"ui4LJXoHAM1jr7O18JACRLhz0FzqWOBIkWIuvWIAtOk",[622,624],{"title":12,"path":13,"stem":14,"description":623,"icon":15,"children":-1},"Get familiar with srvx fetch server handler and ServerRequest.",{"title":22,"path":23,"stem":24,"description":625,"icon":25,"children":-1},"Plugins and middleware allow adding reusable server extensions.",1785329752784]