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

2 years ago
import fastify from 'fastify'
import dotenv from 'dotenv'
import path from 'path'
2 years ago
import { EventEmitter } from 'events'
11 months ago
import formBody from '@fastify/formbody'
2 years ago
// getting .env
dotenv.config({ path: path.join(path.resolve(), '/../../.env') })
// create server
const server = fastify()
2 years ago
// adding eventEmitter
server.decorate('eventEmitter', new EventEmitter())
2 years ago
11 months ago
// adding formBody
server.register(formBody)
11 months ago
/**
* add xmpp
*
*/
2 years ago
import xmpp from './plugins/xmpp.js'
server.register(xmpp, {
2 years ago
service: process.env.XMPP_SERVICE,
domain: process.env.XMPP_DOMAIN,
username: process.env.XMPP_USERNAME,
2 years ago
password: process.env.XMPP_PASSWORD,
to: process.env.XMPP_TO
2 years ago
})
11 months ago
/**
* add helmet
*
*/
import helmet from '@fastify/helmet'
11 months ago
/***
server.register(
11 months ago
helmet, {
referrerPolicy: {
policy: ['origin']
}
}
11 months ago
)*/
11 months ago
/**
* 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)
2 years ago
/**
* add routes
*
*
*/
import webhookHttp from './http/api/webhook.js'
2 years ago
import healthHttp from './http/api/health.js'
2 years ago
server
.register(webhookHttp, {
'prefix': '/api/webhook'
2 years ago
})
2 years ago
.register(healthHttp, {
'prefix': '/api/health'
})
2 years ago
11 months ago
export default server