Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Coggers is a object-based web server, boasting amazing modularity.
Coggers uses "blueprints" to define what a server should look like.
For example, where in express you'd use
import express from "express";
const app = express();
app.get("/users/:id/", (req, res) => {
const user = database.getUser(params.id);
res.send(user);
});
app.post("/users/:id/", (req, res) => {
const user = database.createUser(params.id);
res.send(user);
});
app.listen(8080, () => console.log("Listening!"));
in Coggers you instead use
import { Coggers } from "coggers";
const coggers = new Coggers({
users: {
":id": {
$get(req, res, params) {
const user = database.getUser(params.id);
res.send(user);
},
$post(req, res, params) {
const user = database.createUser(params.id);
res.send(user);
},
},
},
});
coggers.listen(8080).then(() => console.log("Listening!"));
In Coggers, middleware does not have a next() function. More info
Anyhow, to add middleware you can use the $
key, with an array of middlewares.
import { express } from "coggers/compat";
import cookieParser from "cookie-parser";
const coggers = new Coggers({
// express() turns express-based middleware into coggers middleware.
$: [express(cookieParser())],
$get(req, res, params) {
const user = database.getUser(req.cookies.id);
res.send(user);
},
$post(req, res, params) {
const user = database.createUser(req.cookies.id);
res.send(user);
},
});
As Coggers is fully object-based, modularity is simpler than ever. All you need to do is export a part of a blueprint from file A, and then you can import that in file B and simply put it right in.
Because of this modularity, it's likely that there's blueprints that aren't passed directly into the Coggers constructor. (In the last example, the variable users
.)
For your IDE to be able to autocomplete blueprints, you can use the blueprint()
utility function. (don't worry, it won't do anything with your blueprint!)
import { blueprint } from "coggers";
const blue = blueprint({
// Woah, intellisense
});
In typescript, you can also annotate your variable with the Blueprint
type:
import { Blueprint } from "coggers";
const blue: Blueprint = {
// Woah, intellisense
};
Render engines are defined using the renderEngine middleware. Full example here
import { Coggers, renderEngine } from "coggers";
import { renderFile } from "poggies";
const viewsDirectory = new URL("views", import.meta.url);
const coggers = new Coggers({
// Poggies files end with ".pog", so "pog" here ⬇️
$: [renderEngine(renderFile, viewsDirectory, "pog")],
$get(req, res) {
res.render("index", {
random: Math.random(),
});
},
});
Asynchronous middleware is expected to either be defined as an async function, or to return a promise. If a middleware doesn't want to continue to the next handler, it has to send something to the client (using res.sendStatus(<number>)
, res.end()
, etc.)
FAQs
we go **fast**
We found that coggers demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.