[{"data":1,"prerenderedAt":1324},["ShallowReactive",2],{"navigation":3,"-guide-cli":56,"-guide-cli-surround":1319},[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":1313,"extension":1314,"meta":1315,"navigation":1316,"path":13,"seo":1317,"stem":14,"__hash__":1318},"content/1.guide/10.cli.md",{"type":59,"value":60,"toc":1309,"icon":15},"minimark",[61,70,158,163,1126,1130,1146,1162,1172,1191,1202,1305],[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 \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, --request \u003Cmethod>   HTTP method (default: GET, or POST if body is provided)\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  -v, --verbose            Show request and response headers\n\nENVIRONMENT\n\n  PORT                     Override port\n  HOST                     Override host\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,723,767,799,825,840,862,887,892,899,904,953,1000,1044,1067,1072,1078,1083,1095,1106],{"__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,696,699,701,703,706,708,711,713,715,718,721],{"class":86,"line":690},36,[84,692,693],{"class":90},"  --host",[84,695,531],{"class":488},[84,697,698],{"class":94},"hos",[84,700,665],{"class":537},[84,702,541],{"class":488},[84,704,705],{"class":94},"            Host",[84,707,553],{"class":94},[84,709,710],{"class":94}," bind",[84,712,553],{"class":94},[84,714,681],{"class":537},[84,716,717],{"class":94},"all",[84,719,720],{"class":94}," interfaces",[84,722,687],{"class":537},[84,724,726,729,732,734,736,738,740,743,746,749,752,755,758,760,762,765],{"class":86,"line":725},37,[84,727,728],{"class":90},"  -s,",[84,730,731],{"class":137}," --static",[84,733,531],{"class":488},[84,735,567],{"class":94},[84,737,570],{"class":537},[84,739,541],{"class":488},[84,741,742],{"class":94},"       Serve",[84,744,745],{"class":94}," static",[84,747,748],{"class":94}," files",[84,750,751],{"class":94}," from",[84,753,754],{"class":94}," the",[84,756,757],{"class":94}," specified",[84,759,578],{"class":94},[84,761,681],{"class":537},[84,763,764],{"class":94},"public",[84,766,687],{"class":537},[84,768,770,773,776,779,782,785,788,791,794,797],{"class":86,"line":769},38,[84,771,772],{"class":90},"  --prod",[84,774,775],{"class":94},"                   Run",[84,777,778],{"class":94}," in",[84,780,781],{"class":94}," production",[84,783,784],{"class":94}," mode",[84,786,787],{"class":537}," (no ",[84,789,790],{"class":94},"watch,",[84,792,793],{"class":94}," no",[84,795,796],{"class":94}," debug",[84,798,687],{"class":537},[84,800,802,805,807,810,812,814,817,820,822],{"class":86,"line":801},39,[84,803,804],{"class":90},"  --import",[84,806,531],{"class":488},[84,808,809],{"class":94},"loade",[84,811,570],{"class":537},[84,813,541],{"class":488},[84,815,816],{"class":94},"        ES",[84,818,819],{"class":94}," module",[84,821,553],{"class":94},[84,823,824],{"class":94}," preload\n",[84,826,828,831,834,837],{"class":86,"line":827},40,[84,829,830],{"class":90},"  --tls",[84,832,833],{"class":94},"                    Enable",[84,835,836],{"class":94}," TLS",[84,838,839],{"class":537}," (HTTPS/HTTP2)\n",[84,841,843,846,848,850,852,854,857,860],{"class":86,"line":842},41,[84,844,845],{"class":90},"  --cert",[84,847,531],{"class":488},[84,849,534],{"class":94},[84,851,538],{"class":537},[84,853,541],{"class":488},[84,855,856],{"class":94},"            TLS",[84,858,859],{"class":94}," certificate",[84,861,589],{"class":94},[84,863,865,868,871,873,875,877,879,882,885],{"class":86,"line":864},42,[84,866,867],{"class":90},"  --key",[84,869,870],{"class":488},"  \u003C",[84,872,534],{"class":94},[84,874,538],{"class":537},[84,876,541],{"class":488},[84,878,856],{"class":94},[84,880,881],{"class":94}," private",[84,883,884],{"class":94}," key",[84,886,589],{"class":94},[84,888,890],{"class":86,"line":889},43,[84,891,189],{"emptyLinePlaceholder":188},[84,893,895,897],{"class":86,"line":894},44,[84,896,338],{"class":90},[84,898,517],{"class":94},[84,900,902],{"class":86,"line":901},45,[84,903,189],{"emptyLinePlaceholder":188},[84,905,907,910,913,915,918,921,923,926,929,931,934,937,939,942,945,948,951],{"class":86,"line":906},46,[84,908,909],{"class":90},"  -X,",[84,911,912],{"class":137}," --request",[84,914,531],{"class":488},[84,916,917],{"class":94},"metho",[84,919,920],{"class":537},"d",[84,922,541],{"class":488},[84,924,925],{"class":94},"   HTTP",[84,927,928],{"class":94}," method",[84,930,681],{"class":537},[84,932,933],{"class":94},"GET,",[84,935,936],{"class":94}," or",[84,938,412],{"class":94},[84,940,941],{"class":94}," if",[84,943,944],{"class":94}," body",[84,946,947],{"class":94}," is",[84,949,950],{"class":94}," provided",[84,952,687],{"class":537},[84,954,956,959,962,964,967,969,971,974,977,980,983,986,989,992,995,998],{"class":86,"line":955},47,[84,957,958],{"class":90},"  -H,",[84,960,961],{"class":137}," --header",[84,963,531],{"class":488},[84,965,966],{"class":94},"heade",[84,968,570],{"class":537},[84,970,541],{"class":488},[84,972,973],{"class":94},"    Add",[84,975,976],{"class":94}," header",[84,978,979],{"class":537}," (format: ",[84,981,982],{"class":94},"\"Name: Value\",",[84,984,985],{"class":94}," can",[84,987,988],{"class":94}," be",[84,990,991],{"class":94}," used",[84,993,994],{"class":94}," multiple",[84,996,997],{"class":94}," times",[84,999,687],{"class":537},[84,1001,1003,1006,1009,1011,1014,1017,1019,1022,1024,1027,1030,1032,1035,1038,1040,1042],{"class":86,"line":1002},48,[84,1004,1005],{"class":90},"  -d,",[84,1007,1008],{"class":137}," --data",[84,1010,531],{"class":488},[84,1012,1013],{"class":94},"dat",[84,1015,1016],{"class":537},"a",[84,1018,541],{"class":488},[84,1020,1021],{"class":94},"        Request",[84,1023,944],{"class":94},[84,1025,1026],{"class":537}," (use ",[84,1028,1029],{"class":94},"@-",[84,1031,581],{"class":94},[84,1033,1034],{"class":94}," stdin,",[84,1036,1037],{"class":94}," @file",[84,1039,581],{"class":94},[84,1041,550],{"class":94},[84,1043,687],{"class":537},[84,1045,1047,1050,1053,1056,1059,1061,1064],{"class":86,"line":1046},49,[84,1048,1049],{"class":90},"  -v,",[84,1051,1052],{"class":137}," --verbose",[84,1054,1055],{"class":94},"            Show",[84,1057,1058],{"class":94}," request",[84,1060,625],{"class":94},[84,1062,1063],{"class":94}," response",[84,1065,1066],{"class":94}," headers\n",[84,1068,1070],{"class":86,"line":1069},50,[84,1071,189],{"emptyLinePlaceholder":188},[84,1073,1075],{"class":86,"line":1074},51,[84,1076,1077],{"class":90},"ENVIRONMENT\n",[84,1079,1081],{"class":86,"line":1080},52,[84,1082,189],{"emptyLinePlaceholder":188},[84,1084,1086,1089,1092],{"class":86,"line":1085},53,[84,1087,1088],{"class":90},"  PORT",[84,1090,1091],{"class":94},"                     Override",[84,1093,1094],{"class":94}," port\n",[84,1096,1098,1101,1103],{"class":86,"line":1097},54,[84,1099,1100],{"class":90},"  HOST",[84,1102,1091],{"class":94},[84,1104,1105],{"class":94}," host\n",[84,1107,1109,1112,1115,1117,1119,1121,1123],{"class":86,"line":1108},55,[84,1110,1111],{"class":90},"  NODE_ENV",[84,1113,1114],{"class":94},"                 Set",[84,1116,553],{"class":94},[84,1118,781],{"class":94},[84,1120,581],{"class":94},[84,1122,781],{"class":94},[84,1124,1125],{"class":94}," mode.\n",[159,1127,1129],{"id":1128},"serving-static-files","Serving static files",[62,1131,1132,1133,1141,1142,1145],{},"The CLI can serve a directory of static files, similar to ",[1016,1134,1138],{"href":1135,"rel":1136},"https://github.com/vercel/serve",[1137],"nofollow",[66,1139,1140],{},"serve",". No server entry is required — point ",[66,1143,1144],{},"--static"," at any folder:",[74,1147,1149],{"className":76,"code":1148,"language":79,"meta":80,"style":80},"npx srvx --static ./dist\n",[66,1150,1151],{"__ignoreMap":80},[84,1152,1153,1155,1157,1159],{"class":86,"line":87},[84,1154,91],{"class":90},[84,1156,219],{"class":94},[84,1158,731],{"class":137},[84,1160,1161],{"class":94}," ./dist\n",[62,1163,1164,1165,1167,1168,1171],{},"If ",[66,1166,1144],{}," is omitted, srvx serves files from a ",[66,1169,1170],{},"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,1173,1174,1175,1178,1179,1182,1183,1186,1187,1190],{},"Static serving includes automatic ",[66,1176,1177],{},"index.html"," resolution, ",[66,1180,1181],{},".html"," extension fallback (e.g. ",[66,1184,1185],{},"/about"," → ",[66,1188,1189],{},"about.html","), common MIME types, gzip/Brotli compression, and path-traversal protection.",[62,1192,1193,1194,1201],{},"For programmatic usage, import the ",[1016,1195,1198],{"href":1196,"rel":1197},"https://github.com/h3js/srvx/blob/main/src/static.ts",[1137],[66,1199,1200],{},"serveStatic"," middleware:",[74,1203,1208],{"className":1204,"code":1205,"filename":1206,"language":1207,"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,1209,1210,1227,1241,1245,1252,1268,1300],{"__ignoreMap":80},[84,1211,1212,1215,1218,1221,1224],{"class":86,"line":87},[84,1213,1214],{"class":488},"import",[84,1216,1217],{"class":537}," { serve } ",[84,1219,1220],{"class":488},"from",[84,1222,1223],{"class":94}," \"srvx\"",[84,1225,1226],{"class":537},";\n",[84,1228,1229,1231,1234,1236,1239],{"class":86,"line":185},[84,1230,1214],{"class":488},[84,1232,1233],{"class":537}," { serveStatic } ",[84,1235,1220],{"class":488},[84,1237,1238],{"class":94}," \"srvx/static\"",[84,1240,1226],{"class":537},[84,1242,1243],{"class":86,"line":192},[84,1244,189],{"emptyLinePlaceholder":188},[84,1246,1247,1249],{"class":86,"line":201},[84,1248,1140],{"class":90},[84,1250,1251],{"class":537},"({\n",[84,1253,1254,1257,1259,1262,1265],{"class":86,"line":206},[84,1255,1256],{"class":537},"  middleware: [",[84,1258,1200],{"class":90},[84,1260,1261],{"class":537},"({ dir: ",[84,1263,1264],{"class":94},"\"public\"",[84,1266,1267],{"class":537}," })],\n",[84,1269,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297],{"class":86,"line":213},[84,1271,1272],{"class":90},"  fetch",[84,1274,1275],{"class":537},": () ",[84,1277,1278],{"class":488},"=>",[84,1280,1281],{"class":488}," new",[84,1283,1284],{"class":90}," Response",[84,1286,1287],{"class":537},"(",[84,1289,1290],{"class":94},"\"Not found\"",[84,1292,1293],{"class":537},", { status: ",[84,1295,1296],{"class":137},"404",[84,1298,1299],{"class":537}," }),\n",[84,1301,1302],{"class":86,"line":234},[84,1303,1304],{"class":537},"});\n",[1306,1307,1308],"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":1310},[1311,1312],{"id":161,"depth":185,"text":162},{"id":1128,"depth":185,"text":1129},"Use the srvx CLI command to easily start a development or production server.","md",{"automd":188,"icon":15},{"icon":15},{"title":12,"description":1313},"hgrR5B7syWdr1Z-9SfDFqoNKRPJme54ubaCvNEfu0To",[1320,1322],{"title":5,"path":6,"stem":7,"description":1321,"icon":10,"children":-1},"Build HTTP servers with web standard APIs like fetch, Request, and Response.",{"title":17,"path":18,"stem":19,"description":1323,"icon":20,"children":-1},"Get familiar with srvx fetch server handler and ServerRequest.",1784030713101]