← Todos os pacotes
xs-server
HTTP server suite: router, CORS, sessions, rate limiting, WebSocket, HTML and EJS templating
serverhttproutercorssessionratelimitwebsockethtmlejstemplating
README
xs-server
Suíte completa para servidor HTTP e networking em um único pacote: router, CORS, sessões, rate limit, WebSocket, HTML e EJS.
Router
router-cria()— novo routerrouter-get(router, caminho, handler)/router-post/router-put/router-deleterouter-rota(router, methodo, caminho, handler)— método arbitrário (*para todos)router-testa(router, methodo, caminho)— casa rota, devolve{ rota, params }ounulorouter-executa(router, req, res)— despacha e devolve{ ok }ounulo(404)
Caminhos suportam :param e wildcard *.
CORS
cors-padrao()/cors-headers(opcoes)— cabeçalhos CORSserver-cors-aplica(opcoes, res)— aplica em uma resposta
Sessões
sessao-cria({ ttl })— store em memóriasessao-id()/sessao-set(store, id, chave, valor)/sessao-get/sessao-temsessao-limpa/sessao-remove/sessao-cookie/sessao-cookie-parse
Rate Limit
limite-cria({ janela, max })— janela fixa em memórialimite-checa(limiter, chave)—{ permitido, contagem, restante, resetEm }
WebSocket
ws-aceita(chave)— calculaSec-WebSocket-Accept(handshake)ws-resposta(aceita)— resposta 101 Switching Protocolsws-enquadra(opcode, dados)— monta frame (servidor → cliente)ws-dequadra(buffer)— desmonta frame mascarado (cliente → servidor)
HTML
html-escape(texto)— escapa& " 'html-tag(nome, atributos, filhos)/html-atributos/html-junta
EJS
ejs-render(modelo, dados)—(escapado),(cru),(código),(comentário)
Servidor integrado
server-cria(opcoes)—{ cors, sessao, limite }+ routerserver-escuta(config, porta)— sobe o servidor (usa oescutaembutido)server-manipula(req, res)— middleware (CORS → sessão → rate limit → router → 404)
Exemplo
traz-ai "xs-server" as s
cria cfg = s.server-cria({
cors: { origem: "*" },
sessao: { nome: "sid", ttl: 3600000 },
limite: { max: 60, janela: 60000 }
})
s.router-get(cfg.rotas, "/api/usuario/:id", (req, res) => {
res.json({ id: req.params.id, nome: "Maria" })
})
s.router-get(cfg.rotas, "/", (req, res) => {
res.enviar(s.ejs-render("Ola ", { nome: "Mundo" }), "text/html")
})
cria srv = s.server-escuta(cfg, 8080)Dependência: módulos nativos node:http, node:vm, crypto (incluídos no Node/XanaScript).
Avaliações
Nenhuma avaliação ainda.