Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
aldo-application
Advanced tools
Aldo-application
is an object containing a stack of middleware functions which are composed and executed upon each HTTP request.
const { Application } = require('aldo')
const app = new Application()
// add a request handler
app.use(() => 'Hello world!')
// create a HTTP server to serve the application
app.start(process.env.PORT)
Middlewares could be a common or an async function.
Each function receives a request context and a next
function to call the downstream middlewares, and must return a response as output.
// Handler function signature
declare type Middleware = (ctx: Context, next: () => any) => any;
You can register as many middlewares as needed with the application's method .use(fn)
// to add a handler directly in the stack
app.use(middleware)
Whether a middleware runs before or after a downstream middlewares depends on the middleware itself. For example, the following middleware would perform some task before the others
app.use((ctx, next) => {
// Perform task
return next()
})
However, this middleware would perform its task after the request is handled by the following middlewares
app.use(async (ctx, next) => {
let response = await next()
// Perform task
return response
})
The context object is a simple plain object with these properties:
request
refers to the incoming request objectresponse
function to get a new Response
instance each time called.set(key, value)
or .bind(key, getter)
declare interface Context {
request: Request;
response: ResponseFactory;
[key: string]: any;
}
To extend the request context, and add shared properties, like a DB connection or a global logger, you may use .set(key, value)
const mongoose = require('mongoose')
await mongoose.connect('mongodb://localhost/test')
app.set('db', mongoose)
To set a per request private properties, you may use .bind(key, getter)
. This method takes a field name, and a function to be used as a lazy
getter of the field value.
app.bind('session', () => new Session(options))
This method is very useful, since it allows you to lazily (only when needed) attach a per request property into the context without adding a dedicated handler.
.has(key)
and .get(key)
are aldo available to check the existence of a certain field or to get a previously defined field value.
The middleware output could be:
strings
or buffers
sent directlystreams
which will be piped to the outgoing responsenull
or undefind
as empty responses (By default with 204 status code)Response
instances which can be created with the context response
propertyJSON
, with the proper Content-Type
and Content-Length
FAQs
Aldo's application package
The npm package aldo-application receives a total of 4 weekly downloads. As such, aldo-application popularity was classified as not popular.
We found that aldo-application 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
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.