A minimal, highly performant middleware PSR-15 inspired function based microframework built with as little complexity as possible, aimed primarily at those developers who want to understand all the vendors they use.
Through NPM as @chubbyts/chubbyts-framework.
npm i \
@chubbyts/chubbyts-framework-router-path-to-regexp@^1.4.0 \
@chubbyts/chubbyts-framework@^1.9.4 \
@chubbyts/chubbyts-http@^1.2.1
import { createApplication } from '@chubbyts/chubbyts-framework/dist/application';
import { createErrorMiddleware } from '@chubbyts/chubbyts-framework/dist/middleware/error-middleware';
import { createRouteMatcherMiddleware } from '@chubbyts/chubbyts-framework/dist/middleware/route-matcher-middleware';
import { createGetRoute } from '@chubbyts/chubbyts-framework/dist/router/route';
import { createRoutesByName } from '@chubbyts/chubbyts-framework/dist/router/routes-by-name';
import { createResponseFactory } from '@chubbyts/chubbyts-http/dist/message-factory';
import { createPathToRegexpRouteMatcher } from '@chubbyts/chubbyts-framework-router-path-to-regexp/dist/path-to-regexp-router';
import { Response, ServerRequest } from '@chubbyts/chubbyts-http-types/dist/message';
const responseFactory = createResponseFactory();
const app = createApplication([
createErrorMiddleware(responseFactory, true),
createRouteMatcherMiddleware(
createPathToRegexpRouteMatcher(
createRoutesByName([
createGetRoute({
path: '/hello/:name([a-z]+)',
name: 'hello',
handler: async (request: ServerRequest): Promise<Response> => {
const response = responseFactory(200);
response.body.end(`Hello, ${request.attributes.name}`);
return {
...response,
headers: { ...response.headers, 'content-type': ['text/plain'] }
};
},
}),
]),
),
),
]);
Running the application via the standard node http implementation.
npm i @chubbyts/chubbyts-http-node-bridge@^1.2.0
Check the Usage section.
Running the application via the uwebsockets http implementation. Linux only. Faster than the node implemenation.
npm i @chubbyts/chubbyts-http-uwebsockets-bridge@^1.2.1
Check the Usage section.
2024 Dominik Zogg