⚛ A comprehensive framework for server-side applications. Being built on top of TypeScript, it surprisingly supports native Web APIs. It can also be used for REST/GraphQL and many others.
Repository
Current version released
3 years ago
Versions
Ion Framework
⚛ A comprehensive framework for server-side applications. Being built on top of TypeScript, it surprisingly supports native Web APIs. It can also be used for REST/GraphQL and many others.
Quick start
import { Server } from "https://deno.land/x/ion@0.1.0/mod.ts";
const server = new Server();
server.on("GET /", () => "Welcome!");
await server.listen();
IonContext
server.on("POST /user", ({ req, res }: any) => {
const accessToken = req.headers["Access-Token"];
// your access token logic...
if (accessToken === "X") {
res.status = 201;
return { id: 1, name: "Deno" };
} else {
res.status = 401;
}
});
IonRequest
// www.example.com/books/1?language=en
server.on("GET /books/:bookId", ({ req }: any) => {
console.log(req.method); // GET
console.log(req.url); // URL Object
console.log(req.headers); // Request Headers
console.log(req.query); // { language: "en" }
console.log(req.params); // { bookId: "1" }
});
IonResponse
server.on("GET /example", ({ res }: any) => {
res.headers["Access-Control-Allow-Origin"] = "*";
});
Custom Events
server.on("foo", (x: number, y: number, z: number) => console.log(x + y + z)); // 6
server.on("GET /bar", () => {
server.dispatch("foo", 1, 2, 3);
});
Custom Options
const server = new Server({ host: "127.0.0.0", port: 3000 }); // default 0.0.0.0:8080
Allowed Methods
server.on("GET /", () => null);
server.on("PUT /", () => null);
server.on("POST /", () => null);
server.on("PATCH /", () => null);
server.on("DELETE /", () => null);
server.on("OPTIONS /", () => null);
Built-in events
server.on("LISTEN", ({ host, port }: any) => console.log(host, port));
Soon
// middleware support
server.use(() => {});
// body parser(s)
server.on(({ req }: any) => console.log(req.body));