@cosmic-ts/server
v0.2.2
Published
HTTP/HTTPS server for cosmic-ts (Static TS + dialect TCP/TLS)
Maintainers
Readme
@cosmic-ts/server
Express-like HTTP/HTTPS for cosmic-ts — pure Static TS on dialect TCP/TLS
builtins (cosmic:http, cosmic:fs, cosmic:bytes).
import { App, HttpResponse, cors } from "@cosmic-ts/server";
const app = new App();
app.use(cors());
app.staticFiles("./public");
app.gzipThreshold(512);
app.maxConnections(256);
app.maxBodyBytes(1048576);
app.get("/api/hello/:name", (req) => {
const res = HttpResponse.json('{"hi":"' + req.param("name") + '"}');
res.setCookie("seen", "1");
return res;
});
app.getAsync("/async", async (_req) => {
await delay(10);
return HttpResponse.text("ok");
});
app.listen(8080);
// app.listenTls(8443, certPem, keyPem);Request / response bodies
HttpRequest.body and HttpResponse.body are u8[] (raw bytes). Use
request.bodyText() / response.bodyText() for UTF-8 text, or
response.setBodyText(text) to replace a response body. Helpers like
HttpResponse.text / json / html accept strings and encode internally;
HttpResponse.bytes(data, contentType) is for binary or pass-through echo.
app.post("/echo", (req) =>
HttpResponse.bytes(req.body, req.header("content-type")),
);
app.post("/upper", (req) =>
HttpResponse.text(req.bodyText().toUpperCase()),
);Features
- Routing:
get/post/put/patch/delete/route, plus*Async - Middleware (
use), includingcors() - Cookies:
req.cookie,res.setCookie - Static files:
staticFiles(root)with..rejection and root prefix checks - Optional gzip when the client sends
Accept-Encoding: gzip(skips images/wasm) - HTTPS:
listenTls(port, certPem, keyPem) - HTTP/1.1 keep-alive (30 s idle, 100 requests per connection)
maxConnections(n)(default 256) andmaxBodyBytes(n)(default 1 MiB)
@cosmic-ts/http-client re-exports this package for one minor.
See HTTP dialect docs for limits and arena contract details.
