Skip to content

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.

License

Notifications You must be signed in to change notification settings

chubbyts/chubbyts-framework

Repository files navigation

chubbyts-framework

CI Coverage Status Mutation testing badge npm-version

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities

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.

Workflow

Requirements

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

Skeleton

Copyright

2024 Dominik Zogg

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published