From 973d50006c805b16d0dc673dbbba5059c757c6b2 Mon Sep 17 00:00:00 2001 From: William Oldham Date: Mon, 20 Jan 2025 16:37:06 +0000 Subject: [PATCH] refactor: move all config vars into central file --- src/cache.js | 2 +- src/config.js | 53 +++++++++++++++++++++++++++++++++++++++++++ src/database.js | 2 +- src/mailer.js | 9 ++------ src/routes/account.js | 2 +- src/server.js | 2 +- src/stripe.js | 2 +- src/util.js | 2 +- 8 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 src/config.js diff --git a/src/cache.js b/src/cache.js index 1389d56..af17544 100644 --- a/src/cache.js +++ b/src/cache.js @@ -1,6 +1,6 @@ const { GraphQLClient, gql } = require('graphql-request'); const Stripe = require('stripe'); -const config = require('../config.json'); +const config = require('./config'); const logger = require('./logger'); const github = new GraphQLClient('https://api.github.com/graphql', { diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..9b0771f --- /dev/null +++ b/src/config.js @@ -0,0 +1,53 @@ +const jsonConfig = require('../config.json'); + +const disableEmail = !jsonConfig.email?.from?.trim() || !jsonConfig.email?.ses?.region?.trim() || !jsonConfig.email?.ses?.key?.trim() || !jsonConfig.email?.ses?.secret?.trim(); + +const email = disableEmail + ? false + : { + from: jsonConfig.email.from, + ses: { + region: jsonConfig.email.ses.region, + key: jsonConfig.email.ses.key, + secret: jsonConfig.email.ses.secret + } + }; + +module.exports = { + api_base: jsonConfig.api_base, + http: { + base_url: jsonConfig.http.base_url, + port: jsonConfig.http.port + }, + github: { + graphql_token: jsonConfig.github.graphql_token + }, + stripe: { + secret_key: jsonConfig.stripe.secret_key, + webhook_secret: jsonConfig.stripe.webhook_secret, + goal_cents: jsonConfig.stripe.goal_cents, + notification_emails: jsonConfig.stripe.notification_emails + }, + database: { + account: { + connection_string: jsonConfig.database.account.connection_string, + options: jsonConfig.database.account.options + } + }, + discord: { + bot_token: jsonConfig.discord.bot_token, + client_id: jsonConfig.discord.client_id, + client_secret: jsonConfig.discord.client_secret, + guild_id: jsonConfig.discord.guild_id, + roles: { + supporter: jsonConfig.discord.roles.supporter, + tester: jsonConfig.discord.roles.tester + } + }, + discourse: { + sso: { + secret: jsonConfig.discourse.sso.secret + } + }, + email +}; diff --git a/src/database.js b/src/database.js index fe1b070..4a1e926 100644 --- a/src/database.js +++ b/src/database.js @@ -1,5 +1,5 @@ const mongoose = require('mongoose'); -const config = require('../config.json'); +const config = require('./config'); const PNIDSchema = require('./schema/pnid'); const accountServerConfig = config.database.account; diff --git a/src/mailer.js b/src/mailer.js index 39c0e8e..88e5fa0 100644 --- a/src/mailer.js +++ b/src/mailer.js @@ -1,15 +1,10 @@ const nodemailer = require('nodemailer'); const aws = require('@aws-sdk/client-ses'); -const config = require('../config.json'); +const config = require('./config'); -let disableEmail = false; let transporter; -if (!config.email?.from?.trim() || !config.email?.ses?.region?.trim() || !config.email?.ses?.key?.trim() || !config.email?.ses?.secret?.trim()) { - disableEmail = true; -} - -if (!disableEmail) { +if (config.email) { const ses = new aws.SES({ apiVersion: '2010-12-01', region: config.email.ses.region, diff --git a/src/routes/account.js b/src/routes/account.js index aea3a8c..d986b5d 100644 --- a/src/routes/account.js +++ b/src/routes/account.js @@ -10,8 +10,8 @@ const cache = require('../cache'); const util = require('../util'); const { handleStripeEvent } = require('../stripe'); const logger = require('../logger'); -const config = require('../../config.json'); const editorJSON = require('../json/miieditor.json'); +const config = require('../config'); const { Router } = express; diff --git a/src/server.js b/src/server.js index a0c023c..31c8cc5 100644 --- a/src/server.js +++ b/src/server.js @@ -9,7 +9,7 @@ const morgan = require('morgan'); const expressLocale = require('express-locale'); const cookieParser = require('cookie-parser'); // const Stripe = require('stripe'); -const config = require('../config.json'); +const config = require('./config'); const redirectMiddleware = require('./middleware/redirect'); const renderDataMiddleware = require('./middleware/render-data'); const database = require('./database'); diff --git a/src/stripe.js b/src/stripe.js index 839bf6b..53e417b 100644 --- a/src/stripe.js +++ b/src/stripe.js @@ -1,5 +1,5 @@ const Stripe = require('stripe'); -const config = require('../config.json'); +const config = require('./config'); const mailer = require('./mailer'); const util = require('./util'); const database = require('./database'); diff --git a/src/util.js b/src/util.js index 48e0da4..a2bc999 100644 --- a/src/util.js +++ b/src/util.js @@ -6,7 +6,7 @@ const { marked } = require('marked'); const { REST: DiscordRest } = require('@discordjs/rest'); const { Routes: DiscordRoutes } = require('discord-api-types/v10'); const merge = require('lodash.merge'); -const config = require('../config.json'); +const config = require('./config'); const logger = require('./logger'); const baseLocale = require(`${__dirname}/../locales/en_US.json`);