[{"data":1,"prerenderedAt":1604},["ShallowReactive",2],{"navigation":3,"-guide-cli":56,"-guide-cli-surround":1599},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","/guide","1.guide/1.index",[9,11,16,21,26,31,36,41,46,51],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Using CLI","/guide/cli","1.guide/10.cli","garden:terminal-cli-stroke-12",{"title":17,"path":18,"stem":19,"icon":20},"Fetch Handler","/guide/handler","1.guide/2.handler","i-fluent:target-24-regular",{"title":22,"path":23,"stem":24,"icon":25},"Server Instance","/guide/server","1.guide/3.server","radix-icons:component-instance",{"title":27,"path":28,"stem":29,"icon":30},"Middleware","/guide/middleware","1.guide/4.middleware","clarity:plugin-line",{"title":32,"path":33,"stem":34,"icon":35},"Server Options","/guide/options","1.guide/5.options","ri:settings-3-line",{"title":37,"path":38,"stem":39,"icon":40},"TLS","/guide/tls","1.guide/6.tls","ri:lock-2-line",{"title":42,"path":43,"stem":44,"icon":45},"Bundler Usage","/guide/bundler","1.guide/7.bundler","clarity:bundle-line",{"title":47,"path":48,"stem":49,"icon":50},"Node.js Support","/guide/node","1.guide/8.node","akar-icons:node-fill",{"title":52,"path":53,"stem":54,"icon":55},"AWS Lambda","/guide/aws-lambda","1.guide/9.aws-lambda","clarity:cloud-traffic-line",{"id":57,"title":12,"body":58,"description":1593,"extension":1594,"meta":1595,"navigation":1596,"path":13,"seo":1597,"stem":14,"__hash__":1598},"content/1.guide/10.cli.md",{"type":59,"value":60,"toc":1586,"icon":15},"minimark",[61,70,158,163,1255,1259,1262,1306,1310,1332,1355,1359,1383,1387,1403,1419,1429,1448,1468,1479,1582],[62,63,64,65,69],"p",{},"You can run ",[66,67,68],"code",{},"srvx"," with your preferred runtime without installation:",[71,72,73,96,109,124,142],"CodeGroup",{},[74,75,81],"pre",{"className":76,"code":77,"filename":78,"language":79,"meta":80,"style":80},"language-bash shiki shiki-themes github-light github-dark github-dark","npx srvx\n","npm","bash","",[66,82,83],{"__ignoreMap":80},[84,85,88,92],"span",{"class":86,"line":87},"line",1,[84,89,91],{"class":90},"shcOC","npx",[84,93,95],{"class":94},"sfrk1"," srvx\n",[74,97,100],{"className":76,"code":98,"filename":99,"language":79,"meta":80,"style":80},"pnpx srvx\n","pnpm",[66,101,102],{"__ignoreMap":80},[84,103,104,107],{"class":86,"line":87},[84,105,106],{"class":90},"pnpx",[84,108,95],{"class":94},[74,110,113],{"className":76,"code":111,"filename":112,"language":79,"meta":80,"style":80},"yarn dlx srvx\n","yarn",[66,114,115],{"__ignoreMap":80},[84,116,117,119,122],{"class":86,"line":87},[84,118,112],{"class":90},[84,120,121],{"class":94}," dlx",[84,123,95],{"class":94},[74,125,128],{"className":76,"code":126,"filename":127,"language":79,"meta":80,"style":80},"deno -A npm:srvx\n","Deno",[66,129,130],{"__ignoreMap":80},[84,131,132,135,139],{"class":86,"line":87},[84,133,134],{"class":90},"deno",[84,136,138],{"class":137},"suiK_"," -A",[84,140,141],{"class":94}," npm:srvx\n",[74,143,146],{"className":76,"code":144,"filename":145,"language":79,"meta":80,"style":80},"bunx --bun srvx\n","Bun",[66,147,148],{"__ignoreMap":80},[84,149,150,153,156],{"class":86,"line":87},[84,151,152],{"class":90},"bunx",[84,154,155],{"class":137}," --bun",[84,157,95],{"class":94},[159,160,162],"h2",{"id":161},"usage","Usage",[74,164,168],{"className":165,"code":166,"language":167,"meta":80,"style":80},"language-sh shiki shiki-themes github-light github-dark github-dark","srvx   - Universal Server.\n\nSERVE MODE\n\n# srvx serve [options]\n$ srvx serve --entry ./server.ts    # Start development server\n$ srvx serve --prod                 # Start production  server\n$ srvx serve --port=8080            # Listen on port 8080\n$ srvx serve --host=localhost       # Bind to localhost only\n$ srvx serve --static=./dist        # Serve static files (no entry needed)\n$ srvx serve --import=jiti/register # Enable [jiti](https://github.com/unjs/jiti) loader\n$ srvx serve --tls --cert=cert.pem --key=key.pem  # Enable TLS (HTTPS/HTTP2)\n\nFETCH MODE\n\n# srvx fetch|curl [options] [url]\n$ srvx fetch                  # Fetch from default entry\n$ srvx fetch /api/users       # Fetch a specific URL/path\n$ srvx fetch --entry ./server.ts /api/users # Fetch using a specific entry\n$ srvx fetch -X POST /api/users # POST request\n$ srvx fetch -H \"Content-Type: application/json\" /api # With headers\n$ srvx fetch -d '{\"name\":\"foo\"}' /api # With request body\n$ srvx fetch -v /api/users    # Verbose output (show headers)\n$ echo '{\"name\":\"foo\"}' | srvx fetch -d @- /api # Body from stdin\n\nCOMMON OPTIONS\n\n  --entry \u003Cfile>           Server entry file to use\n  --dir \u003Cdir>              Working directory for resolving entry file\n  -h, --help               Show this help message\n  --version                Show server and runtime versions\n\nSERVE OPTIONS\n\n  -p, --port \u003Cport>        Port to listen on (default: 3000)\n  --host, --hostname \u003Chost>  Host to bind to (default: all interfaces)\n  -s, --static \u003Cdir>       Serve static files from the specified directory (default: public)\n  --prod                   Run in production mode (no watch, no debug)\n  --import \u003Cloader>        ES module to preload\n  --tls                    Enable TLS (HTTPS/HTTP2)\n  --cert \u003Cfile>            TLS certificate file\n  --key  \u003Cfile>            TLS private key file\n\nFETCH OPTIONS\n\n  -X, --method \u003Cmethod>    HTTP method (default: GET, or POST if body is provided; --request is a curl alias)\n  -H, --header \u003Cheader>    Add header (format: \"Name: Value\", can be used multiple times)\n  -d, --data \u003Cdata>        Request body (use @- for stdin, @file for file)\n  --host \u003Chost>            Host for a schemeless URL/path (default: localhost)\n  --tls                    Use https for a schemeless URL/path\n  -v, --verbose            Show request and response headers\n\n  Exits with code 22 on a non-2xx response (like curl --fail).\n\nENVIRONMENT\n\n  PORT                     Default port to listen on\n  HOST                     Default host to bind to\n  NODE_ENV                 Set to production for production mode.\n","sh",[66,169,170,183,190,199,204,211,232,247,262,277,292,307,328,333,341,346,352,365,380,398,418,439,459,476,504,509,518,523,557,590,611,632,637,644,649,688,726,770,802,828,843,865,890,895,902,907,973,1020,1064,1098,1118,1141,1146,1182,1187,1193,1198,1217,1235],{"__ignoreMap":80},[84,171,172,174,177,180],{"class":86,"line":87},[84,173,68],{"class":90},[84,175,176],{"class":94},"   -",[84,178,179],{"class":94}," Universal",[84,181,182],{"class":94}," Server.\n",[84,184,186],{"class":86,"line":185},2,[84,187,189],{"emptyLinePlaceholder":188},true,"\n",[84,191,193,196],{"class":86,"line":192},3,[84,194,195],{"class":90},"SERVE",[84,197,198],{"class":94}," MODE\n",[84,200,202],{"class":86,"line":201},4,[84,203,189],{"emptyLinePlaceholder":188},[84,205,207],{"class":86,"line":206},5,[84,208,210],{"class":209},"sCsY4","# srvx serve [options]\n",[84,212,214,217,220,223,226,229],{"class":86,"line":213},6,[84,215,216],{"class":90},"$",[84,218,219],{"class":94}," srvx",[84,221,222],{"class":94}," serve",[84,224,225],{"class":137}," --entry",[84,227,228],{"class":94}," ./server.ts",[84,230,231],{"class":209},"    # Start development server\n",[84,233,235,237,239,241,244],{"class":86,"line":234},7,[84,236,216],{"class":90},[84,238,219],{"class":94},[84,240,222],{"class":94},[84,242,243],{"class":137}," --prod",[84,245,246],{"class":209},"                 # Start production  server\n",[84,248,250,252,254,256,259],{"class":86,"line":249},8,[84,251,216],{"class":90},[84,253,219],{"class":94},[84,255,222],{"class":94},[84,257,258],{"class":137}," --port=8080",[84,260,261],{"class":209},"            # Listen on port 8080\n",[84,263,265,267,269,271,274],{"class":86,"line":264},9,[84,266,216],{"class":90},[84,268,219],{"class":94},[84,270,222],{"class":94},[84,272,273],{"class":137}," --host=localhost",[84,275,276],{"class":209},"       # Bind to localhost only\n",[84,278,280,282,284,286,289],{"class":86,"line":279},10,[84,281,216],{"class":90},[84,283,219],{"class":94},[84,285,222],{"class":94},[84,287,288],{"class":137}," --static=./dist",[84,290,291],{"class":209},"        # Serve static files (no entry needed)\n",[84,293,295,297,299,301,304],{"class":86,"line":294},11,[84,296,216],{"class":90},[84,298,219],{"class":94},[84,300,222],{"class":94},[84,302,303],{"class":137}," --import=jiti/register",[84,305,306],{"class":209}," # Enable [jiti](https://github.com/unjs/jiti) loader\n",[84,308,310,312,314,316,319,322,325],{"class":86,"line":309},12,[84,311,216],{"class":90},[84,313,219],{"class":94},[84,315,222],{"class":94},[84,317,318],{"class":137}," --tls",[84,320,321],{"class":137}," --cert=cert.pem",[84,323,324],{"class":137}," --key=key.pem",[84,326,327],{"class":209},"  # Enable TLS (HTTPS/HTTP2)\n",[84,329,331],{"class":86,"line":330},13,[84,332,189],{"emptyLinePlaceholder":188},[84,334,336,339],{"class":86,"line":335},14,[84,337,338],{"class":90},"FETCH",[84,340,198],{"class":94},[84,342,344],{"class":86,"line":343},15,[84,345,189],{"emptyLinePlaceholder":188},[84,347,349],{"class":86,"line":348},16,[84,350,351],{"class":209},"# srvx fetch|curl [options] [url]\n",[84,353,355,357,359,362],{"class":86,"line":354},17,[84,356,216],{"class":90},[84,358,219],{"class":94},[84,360,361],{"class":94}," fetch",[84,363,364],{"class":209},"                  # Fetch from default entry\n",[84,366,368,370,372,374,377],{"class":86,"line":367},18,[84,369,216],{"class":90},[84,371,219],{"class":94},[84,373,361],{"class":94},[84,375,376],{"class":94}," /api/users",[84,378,379],{"class":209},"       # Fetch a specific URL/path\n",[84,381,383,385,387,389,391,393,395],{"class":86,"line":382},19,[84,384,216],{"class":90},[84,386,219],{"class":94},[84,388,361],{"class":94},[84,390,225],{"class":137},[84,392,228],{"class":94},[84,394,376],{"class":94},[84,396,397],{"class":209}," # Fetch using a specific entry\n",[84,399,401,403,405,407,410,413,415],{"class":86,"line":400},20,[84,402,216],{"class":90},[84,404,219],{"class":94},[84,406,361],{"class":94},[84,408,409],{"class":137}," -X",[84,411,412],{"class":94}," POST",[84,414,376],{"class":94},[84,416,417],{"class":209}," # POST request\n",[84,419,421,423,425,427,430,433,436],{"class":86,"line":420},21,[84,422,216],{"class":90},[84,424,219],{"class":94},[84,426,361],{"class":94},[84,428,429],{"class":137}," -H",[84,431,432],{"class":94}," \"Content-Type: application/json\"",[84,434,435],{"class":94}," /api",[84,437,438],{"class":209}," # With headers\n",[84,440,442,444,446,448,451,454,456],{"class":86,"line":441},22,[84,443,216],{"class":90},[84,445,219],{"class":94},[84,447,361],{"class":94},[84,449,450],{"class":137}," -d",[84,452,453],{"class":94}," '{\"name\":\"foo\"}'",[84,455,435],{"class":94},[84,457,458],{"class":209}," # With request body\n",[84,460,462,464,466,468,471,473],{"class":86,"line":461},23,[84,463,216],{"class":90},[84,465,219],{"class":94},[84,467,361],{"class":94},[84,469,470],{"class":137}," -v",[84,472,376],{"class":94},[84,474,475],{"class":209},"    # Verbose output (show headers)\n",[84,477,479,481,484,486,490,492,494,496,499,501],{"class":86,"line":478},24,[84,480,216],{"class":90},[84,482,483],{"class":94}," echo",[84,485,453],{"class":94},[84,487,489],{"class":488},"so5gQ"," |",[84,491,219],{"class":90},[84,493,361],{"class":94},[84,495,450],{"class":137},[84,497,498],{"class":94}," @-",[84,500,435],{"class":94},[84,502,503],{"class":209}," # Body from stdin\n",[84,505,507],{"class":86,"line":506},25,[84,508,189],{"emptyLinePlaceholder":188},[84,510,512,515],{"class":86,"line":511},26,[84,513,514],{"class":90},"COMMON",[84,516,517],{"class":94}," OPTIONS\n",[84,519,521],{"class":86,"line":520},27,[84,522,189],{"emptyLinePlaceholder":188},[84,524,526,529,532,535,539,542,545,548,551,554],{"class":86,"line":525},28,[84,527,528],{"class":90},"  --entry",[84,530,531],{"class":488}," \u003C",[84,533,534],{"class":94},"fil",[84,536,538],{"class":537},"slsVL","e",[84,540,541],{"class":488},">",[84,543,544],{"class":94},"           Server",[84,546,547],{"class":94}," entry",[84,549,550],{"class":94}," file",[84,552,553],{"class":94}," to",[84,555,556],{"class":94}," use\n",[84,558,560,563,565,568,571,573,576,579,582,585,587],{"class":86,"line":559},29,[84,561,562],{"class":90},"  --dir",[84,564,531],{"class":488},[84,566,567],{"class":94},"di",[84,569,570],{"class":537},"r",[84,572,541],{"class":488},[84,574,575],{"class":94},"              Working",[84,577,578],{"class":94}," directory",[84,580,581],{"class":94}," for",[84,583,584],{"class":94}," resolving",[84,586,547],{"class":94},[84,588,589],{"class":94}," file\n",[84,591,593,596,599,602,605,608],{"class":86,"line":592},30,[84,594,595],{"class":90},"  -h,",[84,597,598],{"class":137}," --help",[84,600,601],{"class":94},"               Show",[84,603,604],{"class":94}," this",[84,606,607],{"class":94}," help",[84,609,610],{"class":94}," message\n",[84,612,614,617,620,623,626,629],{"class":86,"line":613},31,[84,615,616],{"class":90},"  --version",[84,618,619],{"class":94},"                Show",[84,621,622],{"class":94}," server",[84,624,625],{"class":94}," and",[84,627,628],{"class":94}," runtime",[84,630,631],{"class":94}," versions\n",[84,633,635],{"class":86,"line":634},32,[84,636,189],{"emptyLinePlaceholder":188},[84,638,640,642],{"class":86,"line":639},33,[84,641,195],{"class":90},[84,643,517],{"class":94},[84,645,647],{"class":86,"line":646},34,[84,648,189],{"emptyLinePlaceholder":188},[84,650,652,655,658,660,663,666,668,671,673,676,679,682,685],{"class":86,"line":651},35,[84,653,654],{"class":90},"  -p,",[84,656,657],{"class":137}," --port",[84,659,531],{"class":488},[84,661,662],{"class":94},"por",[84,664,665],{"class":537},"t",[84,667,541],{"class":488},[84,669,670],{"class":94},"        Port",[84,672,553],{"class":94},[84,674,675],{"class":94}," listen",[84,677,678],{"class":94}," on",[84,680,681],{"class":537}," (default: ",[84,683,684],{"class":137},"3000",[84,686,687],{"class":537},")\n",[84,689,691,694,697,699,702,704,706,709,711,714,716,718,721,724],{"class":86,"line":690},36,[84,692,693],{"class":90},"  --host,",[84,695,696],{"class":137}," --hostname",[84,698,531],{"class":488},[84,700,701],{"class":94},"hos",[84,703,665],{"class":537},[84,705,541],{"class":488},[84,707,708],{"class":94},"  Host",[84,710,553],{"class":94},[84,712,713],{"class":94}," bind",[84,715,553],{"class":94},[84,717,681],{"class":537},[84,719,720],{"class":94},"all",[84,722,723],{"class":94}," interfaces",[84,725,687],{"class":537},[84,727,729,732,735,737,739,741,743,746,749,752,755,758,761,763,765,768],{"class":86,"line":728},37,[84,730,731],{"class":90},"  -s,",[84,733,734],{"class":137}," --static",[84,736,531],{"class":488},[84,738,567],{"class":94},[84,740,570],{"class":537},[84,742,541],{"class":488},[84,744,745],{"class":94},"       Serve",[84,747,748],{"class":94}," static",[84,750,751],{"class":94}," files",[84,753,754],{"class":94}," from",[84,756,757],{"class":94}," the",[84,759,760],{"class":94}," specified",[84,762,578],{"class":94},[84,764,681],{"class":537},[84,766,767],{"class":94},"public",[84,769,687],{"class":537},[84,771,773,776,779,782,785,788,791,794,797,800],{"class":86,"line":772},38,[84,774,775],{"class":90},"  --prod",[84,777,778],{"class":94},"                   Run",[84,780,781],{"class":94}," in",[84,783,784],{"class":94}," production",[84,786,787],{"class":94}," mode",[84,789,790],{"class":537}," (no ",[84,792,793],{"class":94},"watch,",[84,795,796],{"class":94}," no",[84,798,799],{"class":94}," debug",[84,801,687],{"class":537},[84,803,805,808,810,813,815,817,820,823,825],{"class":86,"line":804},39,[84,806,807],{"class":90},"  --import",[84,809,531],{"class":488},[84,811,812],{"class":94},"loade",[84,814,570],{"class":537},[84,816,541],{"class":488},[84,818,819],{"class":94},"        ES",[84,821,822],{"class":94}," module",[84,824,553],{"class":94},[84,826,827],{"class":94}," preload\n",[84,829,831,834,837,840],{"class":86,"line":830},40,[84,832,833],{"class":90},"  --tls",[84,835,836],{"class":94},"                    Enable",[84,838,839],{"class":94}," TLS",[84,841,842],{"class":537}," (HTTPS/HTTP2)\n",[84,844,846,849,851,853,855,857,860,863],{"class":86,"line":845},41,[84,847,848],{"class":90},"  --cert",[84,850,531],{"class":488},[84,852,534],{"class":94},[84,854,538],{"class":537},[84,856,541],{"class":488},[84,858,859],{"class":94},"            TLS",[84,861,862],{"class":94}," certificate",[84,864,589],{"class":94},[84,866,868,871,874,876,878,880,882,885,888],{"class":86,"line":867},42,[84,869,870],{"class":90},"  --key",[84,872,873],{"class":488},"  \u003C",[84,875,534],{"class":94},[84,877,538],{"class":537},[84,879,541],{"class":488},[84,881,859],{"class":94},[84,883,884],{"class":94}," private",[84,886,887],{"class":94}," key",[84,889,589],{"class":94},[84,891,893],{"class":86,"line":892},43,[84,894,189],{"emptyLinePlaceholder":188},[84,896,898,900],{"class":86,"line":897},44,[84,899,338],{"class":90},[84,901,517],{"class":94},[84,903,905],{"class":86,"line":904},45,[84,906,189],{"emptyLinePlaceholder":188},[84,908,910,913,916,918,921,924,926,929,932,934,937,940,942,945,948,951,954,957,960,962,965,968,971],{"class":86,"line":909},46,[84,911,912],{"class":90},"  -X,",[84,914,915],{"class":137}," --method",[84,917,531],{"class":488},[84,919,920],{"class":94},"metho",[84,922,923],{"class":537},"d",[84,925,541],{"class":488},[84,927,928],{"class":94},"    HTTP",[84,930,931],{"class":94}," method",[84,933,681],{"class":537},[84,935,936],{"class":94},"GET,",[84,938,939],{"class":94}," or",[84,941,412],{"class":94},[84,943,944],{"class":94}," if",[84,946,947],{"class":94}," body",[84,949,950],{"class":94}," is",[84,952,953],{"class":94}," provided",[84,955,956],{"class":537},"; ",[84,958,959],{"class":90},"--request",[84,961,950],{"class":94},[84,963,964],{"class":94}," a",[84,966,967],{"class":94}," curl",[84,969,970],{"class":94}," alias",[84,972,687],{"class":537},[84,974,976,979,982,984,987,989,991,994,997,1000,1003,1006,1009,1012,1015,1018],{"class":86,"line":975},47,[84,977,978],{"class":90},"  -H,",[84,980,981],{"class":137}," --header",[84,983,531],{"class":488},[84,985,986],{"class":94},"heade",[84,988,570],{"class":537},[84,990,541],{"class":488},[84,992,993],{"class":94},"    Add",[84,995,996],{"class":94}," header",[84,998,999],{"class":537}," (format: ",[84,1001,1002],{"class":94},"\"Name: Value\",",[84,1004,1005],{"class":94}," can",[84,1007,1008],{"class":94}," be",[84,1010,1011],{"class":94}," used",[84,1013,1014],{"class":94}," multiple",[84,1016,1017],{"class":94}," times",[84,1019,687],{"class":537},[84,1021,1023,1026,1029,1031,1034,1037,1039,1042,1044,1047,1050,1052,1055,1058,1060,1062],{"class":86,"line":1022},48,[84,1024,1025],{"class":90},"  -d,",[84,1027,1028],{"class":137}," --data",[84,1030,531],{"class":488},[84,1032,1033],{"class":94},"dat",[84,1035,1036],{"class":537},"a",[84,1038,541],{"class":488},[84,1040,1041],{"class":94},"        Request",[84,1043,947],{"class":94},[84,1045,1046],{"class":537}," (use ",[84,1048,1049],{"class":94},"@-",[84,1051,581],{"class":94},[84,1053,1054],{"class":94}," stdin,",[84,1056,1057],{"class":94}," @file",[84,1059,581],{"class":94},[84,1061,550],{"class":94},[84,1063,687],{"class":537},[84,1065,1067,1070,1072,1074,1076,1078,1081,1083,1085,1088,1091,1093,1096],{"class":86,"line":1066},49,[84,1068,1069],{"class":90},"  --host",[84,1071,531],{"class":488},[84,1073,701],{"class":94},[84,1075,665],{"class":537},[84,1077,541],{"class":488},[84,1079,1080],{"class":94},"            Host",[84,1082,581],{"class":94},[84,1084,964],{"class":94},[84,1086,1087],{"class":94}," schemeless",[84,1089,1090],{"class":94}," URL/path",[84,1092,681],{"class":537},[84,1094,1095],{"class":94},"localhost",[84,1097,687],{"class":537},[84,1099,1101,1103,1106,1109,1111,1113,1115],{"class":86,"line":1100},50,[84,1102,833],{"class":90},[84,1104,1105],{"class":94},"                    Use",[84,1107,1108],{"class":94}," https",[84,1110,581],{"class":94},[84,1112,964],{"class":94},[84,1114,1087],{"class":94},[84,1116,1117],{"class":94}," URL/path\n",[84,1119,1121,1124,1127,1130,1133,1135,1138],{"class":86,"line":1120},51,[84,1122,1123],{"class":90},"  -v,",[84,1125,1126],{"class":137}," --verbose",[84,1128,1129],{"class":94},"            Show",[84,1131,1132],{"class":94}," request",[84,1134,625],{"class":94},[84,1136,1137],{"class":94}," response",[84,1139,1140],{"class":94}," headers\n",[84,1142,1144],{"class":86,"line":1143},52,[84,1145,189],{"emptyLinePlaceholder":188},[84,1147,1149,1152,1155,1158,1161,1163,1165,1168,1170,1173,1176,1179],{"class":86,"line":1148},53,[84,1150,1151],{"class":90},"  Exits",[84,1153,1154],{"class":94}," with",[84,1156,1157],{"class":94}," code",[84,1159,1160],{"class":137}," 22",[84,1162,678],{"class":94},[84,1164,964],{"class":94},[84,1166,1167],{"class":94}," non-2xx",[84,1169,1137],{"class":94},[84,1171,1172],{"class":537}," (like ",[84,1174,1175],{"class":94},"curl",[84,1177,1178],{"class":137}," --fail",[84,1180,1181],{"class":537},").\n",[84,1183,1185],{"class":86,"line":1184},54,[84,1186,189],{"emptyLinePlaceholder":188},[84,1188,1190],{"class":86,"line":1189},55,[84,1191,1192],{"class":90},"ENVIRONMENT\n",[84,1194,1196],{"class":86,"line":1195},56,[84,1197,189],{"emptyLinePlaceholder":188},[84,1199,1201,1204,1207,1210,1212,1214],{"class":86,"line":1200},57,[84,1202,1203],{"class":90},"  PORT",[84,1205,1206],{"class":94},"                     Default",[84,1208,1209],{"class":94}," port",[84,1211,553],{"class":94},[84,1213,675],{"class":94},[84,1215,1216],{"class":94}," on\n",[84,1218,1220,1223,1225,1228,1230,1232],{"class":86,"line":1219},58,[84,1221,1222],{"class":90},"  HOST",[84,1224,1206],{"class":94},[84,1226,1227],{"class":94}," host",[84,1229,553],{"class":94},[84,1231,713],{"class":94},[84,1233,1234],{"class":94}," to\n",[84,1236,1238,1241,1244,1246,1248,1250,1252],{"class":86,"line":1237},59,[84,1239,1240],{"class":90},"  NODE_ENV",[84,1242,1243],{"class":94},"                 Set",[84,1245,553],{"class":94},[84,1247,784],{"class":94},[84,1249,581],{"class":94},[84,1251,784],{"class":94},[84,1253,1254],{"class":94}," mode.\n",[159,1256,1258],{"id":1257},"port-and-host-precedence","Port and host precedence",[62,1260,1261],{},"The port and host are resolved with the following precedence (highest first):",[1263,1264,1266,1281,1291,1300],"steps",{"level":1265},"4",[1267,1268,1269,1270,1273,1274,1273,1277,1280],"h4",{},"CLI flag (",[66,1271,1272],{},"--port"," / ",[66,1275,1276],{},"--host",[66,1278,1279],{},"--hostname",")",[1267,1282,1283,1284,1273,1287,1290],{},"Module option (",[66,1285,1286],{},"port",[66,1288,1289],{},"hostname"," exported from your server entry)",[1267,1292,1293,1294,1273,1297,1280],{},"Environment variable (",[66,1295,1296],{},"PORT",[66,1298,1299],{},"HOST",[1267,1301,1302,1303,1305],{},"Default (",[66,1304,684],{}," / all interfaces)",[159,1307,1309],{"id":1308},"exit-codes","Exit codes",[62,1311,1312,1313,1317,1318,1321,1322,1327,1328,1331],{},"In ",[1314,1315,1316],"strong",{},"fetch mode",", ",[66,1319,1320],{},"srvx fetch"," exits with code ",[1314,1323,1324],{},[66,1325,1326],{},"22"," for any non-2xx response, and ",[66,1329,1330],{},"0"," for a 2xx response.",[1333,1334,1335],"important",{},[62,1336,1337,1338,1340,1341,1343,1344,1347,1348,1350,1351,1354],{},"\nThis diverges from ",[66,1339,1175],{},", which exits ",[66,1342,1330],{}," regardless of the HTTP status unless you pass ",[66,1345,1346],{},"--fail",". With ",[66,1349,1320],{}," the non-2xx exit is the ",[1314,1352,1353],{},"default",", so no extra flag is needed to make a failing request fail your script.",[159,1356,1358],{"id":1357},"runtime-notes","Runtime notes",[1360,1361,1362],"note",{},[62,1363,1364,1365,1368,1369,1372,1373,1376,1377,1379,1380,1382],{},"\nThe ",[66,1366,1367],{},"--import"," flag preloads an ES module (e.g. a loader like ",[66,1370,1371],{},"jiti/register","). It is applied on ",[1314,1374,1375],{},"Node.js and Bun only"," — on ",[1314,1378,127],{}," it is silently ignored, since Deno does not support Node's ",[66,1381,1367],{}," preload flag.",[159,1384,1386],{"id":1385},"serving-static-files","Serving static files",[62,1388,1389,1390,1398,1399,1402],{},"The CLI can serve a directory of static files, similar to ",[1036,1391,1395],{"href":1392,"rel":1393},"https://github.com/vercel/serve",[1394],"nofollow",[66,1396,1397],{},"serve",". No server entry is required — point ",[66,1400,1401],{},"--static"," at any folder:",[74,1404,1406],{"className":76,"code":1405,"language":79,"meta":80,"style":80},"npx srvx --static ./dist\n",[66,1407,1408],{"__ignoreMap":80},[84,1409,1410,1412,1414,1416],{"class":86,"line":87},[84,1411,91],{"class":90},[84,1413,219],{"class":94},[84,1415,734],{"class":137},[84,1417,1418],{"class":94}," ./dist\n",[62,1420,1421,1422,1424,1425,1428],{},"If ",[66,1423,1401],{}," is omitted, srvx serves files from a ",[66,1426,1427],{},"public/"," directory when one exists. When both a server entry and a static directory are present, static files take priority and unmatched requests fall through to your handler.",[62,1430,1431,1432,1435,1436,1439,1440,1443,1444,1447],{},"Static serving includes automatic ",[66,1433,1434],{},"index.html"," resolution, ",[66,1437,1438],{},".html"," extension fallback (e.g. ",[66,1441,1442],{},"/about"," → ",[66,1445,1446],{},"about.html","), common MIME types, gzip/Brotli compression, and path-traversal protection.",[1360,1449,1450],{},[62,1451,1452,1455,1456,1459,1460,1463,1464,1467],{},[66,1453,1454],{},"srvx/static"," is ",[1314,1457,1458],{},"Node-API-only"," — it uses ",[66,1461,1462],{},"node:fs"," and ",[66,1465,1466],{},"node:zlib"," internally, so despite the runtime-neutral name it only works on runtimes with Node.js compatibility (Node, Deno, Bun).",[62,1469,1470,1471,1478],{},"For programmatic usage, import the ",[1036,1472,1475],{"href":1473,"rel":1474},"https://github.com/h3js/srvx/blob/main/src/static.ts",[1394],[66,1476,1477],{},"serveStatic"," middleware:",[74,1480,1485],{"className":1481,"code":1482,"filename":1483,"language":1484,"meta":80,"style":80},"language-ts shiki shiki-themes github-light github-dark github-dark","import { serve } from \"srvx\";\nimport { serveStatic } from \"srvx/static\";\n\nserve({\n  middleware: [serveStatic({ dir: \"public\" })],\n  fetch: () => new Response(\"Not found\", { status: 404 }),\n});\n","server.ts","ts",[66,1486,1487,1504,1518,1522,1529,1545,1577],{"__ignoreMap":80},[84,1488,1489,1492,1495,1498,1501],{"class":86,"line":87},[84,1490,1491],{"class":488},"import",[84,1493,1494],{"class":537}," { serve } ",[84,1496,1497],{"class":488},"from",[84,1499,1500],{"class":94}," \"srvx\"",[84,1502,1503],{"class":537},";\n",[84,1505,1506,1508,1511,1513,1516],{"class":86,"line":185},[84,1507,1491],{"class":488},[84,1509,1510],{"class":537}," { serveStatic } ",[84,1512,1497],{"class":488},[84,1514,1515],{"class":94}," \"srvx/static\"",[84,1517,1503],{"class":537},[84,1519,1520],{"class":86,"line":192},[84,1521,189],{"emptyLinePlaceholder":188},[84,1523,1524,1526],{"class":86,"line":201},[84,1525,1397],{"class":90},[84,1527,1528],{"class":537},"({\n",[84,1530,1531,1534,1536,1539,1542],{"class":86,"line":206},[84,1532,1533],{"class":537},"  middleware: [",[84,1535,1477],{"class":90},[84,1537,1538],{"class":537},"({ dir: ",[84,1540,1541],{"class":94},"\"public\"",[84,1543,1544],{"class":537}," })],\n",[84,1546,1547,1550,1553,1556,1559,1562,1565,1568,1571,1574],{"class":86,"line":213},[84,1548,1549],{"class":90},"  fetch",[84,1551,1552],{"class":537},": () ",[84,1554,1555],{"class":488},"=>",[84,1557,1558],{"class":488}," new",[84,1560,1561],{"class":90}," Response",[84,1563,1564],{"class":537},"(",[84,1566,1567],{"class":94},"\"Not found\"",[84,1569,1570],{"class":537},", { status: ",[84,1572,1573],{"class":137},"404",[84,1575,1576],{"class":537}," }),\n",[84,1578,1579],{"class":86,"line":234},[84,1580,1581],{"class":537},"});\n",[1583,1584,1585],"style",{},"html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html .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);}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html 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}",{"title":80,"searchDepth":185,"depth":185,"links":1587},[1588,1589,1590,1591,1592],{"id":161,"depth":185,"text":162},{"id":1257,"depth":185,"text":1258},{"id":1308,"depth":185,"text":1309},{"id":1357,"depth":185,"text":1358},{"id":1385,"depth":185,"text":1386},"Use the srvx CLI command to easily start a development or production server.","md",{"automd":188,"icon":15},{"icon":15},{"title":12,"description":1593},"C6PRluRs792bZNSQsKcy8QiN69IHgyTmfBLT77Qq7L0",[1600,1602],{"title":5,"path":6,"stem":7,"description":1601,"icon":10,"children":-1},"Build HTTP servers with web standard APIs like fetch, Request, and Response.",{"title":17,"path":18,"stem":19,"description":1603,"icon":20,"children":-1},"Get familiar with srvx fetch server handler and ServerRequest.",1784034230531]