@chubbyts/chubbyts-framework
v1.9.4
Published
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.
Downloads
663
Maintainers
Readme
chubbyts-framework
Description
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.
Requirements
- node: 16
- @chubbyts/chubbyts-dic-types: ^1.2.1
- @chubbyts/chubbyts-http-error: ^2.3.1
- @chubbyts/chubbyts-http-types: ^1.2.3
- @chubbyts/chubbyts-log-types: ^1.3.2
- @chubbyts/chubbyts-throwable-to-error: ^1.2.1
Installation
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
Usage
App
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'] }
};
},
}),
]),
),
),
]);
Server
Node
Running the application via the standard node http implementation.
npm i @chubbyts/chubbyts-http-node-bridge@^1.2.0
Check the Usage section.
Uwebsockets
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.
Libraries
- @chubbyts/chubbyts-api
- @chubbyts/chubbyts-decode-encode
- @chubbyts/chubbyts-dic
- @chubbyts/chubbyts-dic-config
- @chubbyts/chubbyts-http-cors
- @chubbyts/chubbyts-http-multipart
- @chubbyts/chubbyts-http-static-file
- @chubbyts/chubbyts-negotiation
Skeleton
Copyright
2024 Dominik Zogg