You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tellme-bot/packages/server/_bootstrap.js

89 lines
1.5 KiB

import fastify from 'fastify'
import dotenv from 'dotenv'
import path from 'path'
import { EventEmitter } from 'events'
import formBody from '@fastify/formbody'
// getting .env
dotenv.config({ path: path.join(path.resolve(), '/../../.env') })
// create server
const server = fastify()
// adding eventEmitter
server.decorate('eventEmitter', new EventEmitter())
// adding formBody
server.register(formBody)
/**
* add xmpp
*
*/
import xmpp from './plugins/xmpp.js'
server.register(xmpp, {
service: process.env.XMPP_SERVICE,
domain: process.env.XMPP_DOMAIN,
username: process.env.XMPP_USERNAME,
password: process.env.XMPP_PASSWORD,
to: process.env.XMPP_TO
})
/**
* add helmet
*
*/
import helmet from '@fastify/helmet'
/***
server.register(
helmet, {
referrerPolicy: {
policy: ['origin']
}
}
)*/
/**
* add rateLimit
*
*/
import rateLimit from '@fastify/rate-limit'
const rateLimitSettings = {
max: 100,
timeWindow: 60000
}
if (process.env.APP_RATE_LIMIT_MAX) {
rateLimitSettings.max = process.env.APP_RATE_LIMIT_MAX
}
if (process.env.APP_RATE_LIMIT_TIMEWINDOW) {
rateLimitSettings.timeWindow = process.env.APP_RATE_LIMIT_TIMEWINDOW
}
server.register(rateLimit, rateLimitSettings)
/**
* add routes
*
*
*/
import webhookHttp from './http/api/webhook.js'
import healthHttp from './http/api/health.js'
server
.register(webhookHttp, {
'prefix': '/api/webhook'
})
.register(healthHttp, {
'prefix': '/api/health'
})
export default server