The web server module for bitbeat.
npm install @bitbeat/webThis is the official web module for bitbeat using fastify as web server.
This package will export you a web server, a web server config and basic default actions.
To use it follow the documentation of bitbeat at the homepage.
The following modules are always enabled:
- fastify-cors
- fastify-helmet
- fastify-sensible
Optionally these modules can be enabled or disabled:
- fastify-rate-limiter (enabled in production by default)
- underPressure (enabled in production by default)
- middie (enabled in default)
The default WebConfig looks like this:
``typescript
export default class WebServerConfig extends Configuration {
constructor() {
super();
}
default: WebConfigProperties = {
options: {
disableRequestLogging: true,
},
host: '0.0.0.0',
port: 8080,
pathForActions: 'api',
useVersioning: true,
useHeaderVersioning: false,
enableMiddlewares: true,
};
production: WebConfigProperties = {
fastifyRateLimit: {
max: 100,
},
underPressure: {
maxEventLoopDelay: 1000,
maxHeapUsedBytes: 100000000,
maxRssBytes: 100000000,
},
};
}
`
You can edit those properties by either extending the WebConfig class in your project's config folder as own class or edit it in the boot.js.
-- config
|-- myOwnConfig.ts
`typescript
import { WebConfig } from '@bitbeat/web';
import { merge } from 'lodash';
export default class MyOwnConfig extends WebConfig {
constructor() {
super();
}
default = {}; // this will overwrite the default props
/* or you can do something non-destructive like this
default = merge(default, {
port: 3000,
});
*/
}
`
This example happens in the boot.js:
`typescript
import { registerBulk } from '@bitbeat/core';
import { WebConfig, WebServer } from '@bitbeat/web';
export default async () => {
const webConfig = new WebConfig();
webConfig.default.port = 3000;
await registerBulk(new Set([webConfig, WebServer]));
};
`
To add your own custom logic to the existing server use one of the following methods:
- preRegisterpostRegister
- postRouteRegister
- postServerStart
- postServerStop
-
These are a sets of functions, which will run one by one and support async. There is always the "current" WebServer-runtime and WebConfig provided in those functions.
To add your own web action to the web server, just extend the WebAction-class in the actions` folder and the web server will automatically load them. Examples can be found in the default web actions.