Easy to use, fast to write, fully type safe
web server framework for TypeScript
import { Router } from "petrichorjs";
const router = new Router();
router.get("/").handle(({ request, response }) => {
response.ok().json({
message: "Hello World!",
});
});
const usersRouter = router.group("/users").handle();
usersGroup.get("/").handle(async ({ request, response }) => {
response.ok().json(await getUsers());
});
router.listen(3332);import { intParser } from "petrichorjs";
router
.get("/users/:id")
.parse({ id: intParser })
.handle(({ request, response }) => {
response.ok().json(await getUser(request.params.id));
});import vine from "@vinejs/vine";
import { validator } from "@petrichorjs/validator-vinejs";
router
.post("/users")
.validate({
body: validator(
vine.object({
id: vine.number().withoutDecimals(),
email: vine.string().email(),
profile: vine.object({
username: vine.string(),
}),
})
),
})
.handle(async ({ request, response }) => {
const data = await request.json();
await createUser(data);
response.created().json({
data: {
id: data.id,
},
});
});import { trailingSlash } from "petrichorjs";
router.use(trailingSlash());
router.use(async ({ request, response }, next) => {
console.log(`${request.method} ${request.url}`);
await next();
});
router
.get("/users/:id")
.parse({ id: intParser })
.before(async (request) => {
return {
user: await getUser(request.params.id),
};
})
.handle(({ request, response }) => {
response.ok().json(request.locals.user);
});