From 3fc8145fd8cc6b23fe22485d86707117563860cc Mon Sep 17 00:00:00 2001 From: Tim Rowe Date: Sat, 20 Apr 2024 14:44:41 +1000 Subject: [PATCH] Use simple-env-utils lib --- index.ts | 2 +- package-lock.json | 6 ++++++ package.json | 1 + src/database/mysqlConnections.ts | 13 +++++++------ src/server.ts | 4 +++- src/setup-tests.ts | 4 +++- src/utils.ts | 9 --------- src/utils/requireEnv.ts | 6 ------ src/utils/validateObjectId.ts | 2 +- src/utils/validateTag.ts | 2 +- 10 files changed, 23 insertions(+), 26 deletions(-) delete mode 100644 src/utils.ts delete mode 100644 src/utils/requireEnv.ts diff --git a/index.ts b/index.ts index ddbfa1e..b6d34f9 100644 --- a/index.ts +++ b/index.ts @@ -1,7 +1,7 @@ import * as dotenv from 'dotenv'; import express from 'express'; -import { requireEnv } from './src/utils/requireEnv'; +import { requireEnv } from '@tjsr/simple-env-utils'; import { startApp } from './src/server'; dotenv.config(); diff --git a/package-lock.json b/package-lock.json index 4cc1af0..8776708 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "license": "ISC", "dependencies": { + "@tjsr/simple-env-utils": "^0.0.4", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.0.3", @@ -4528,6 +4529,11 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@tjsr/simple-env-utils": { + "version": "0.0.4", + "resolved": "https://npm.pkg.github.com/download/@tjsr/simple-env-utils/0.0.4/1def668e73ef75bb986b50b91f7543211f4c4166", + "integrity": "sha512-5L6tma+pdBgZHlE9Nbld1yT4exe6o/DjpaT5pHz0BisMr1HGULmpBkjiJ6W+IK3SFVAxlr3av45pJkmhuz0UvQ==" + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", diff --git a/package.json b/package.json index 7931a44..dbfe108 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "url": "https://github.com/tjsr/tagtool/issues" }, "dependencies": { + "@tjsr/simple-env-utils": "^0.0.4", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.0.3", diff --git a/src/database/mysqlConnections.ts b/src/database/mysqlConnections.ts index 2c2f04e..6060bdb 100644 --- a/src/database/mysqlConnections.ts +++ b/src/database/mysqlConnections.ts @@ -1,24 +1,25 @@ -import * as dotenv from 'dotenv'; +import * as dotenv from 'dotenv-flow'; + +import { booleanEnv, intEnv, requireEnv } from '@tjsr/simple-env-utils'; import mysql from 'mysql'; -import { requireEnv } from '../utils/requireEnv'; export type PoolConnection = mysql.PoolConnection; -dotenv.config(); +dotenv.config({ silent: true }); const config: mysql.PoolConfig = { bigNumberStrings: true, - connectTimeout: process.env['MYSQL_CONNECT_TIMEOUT'] ? parseInt(process.env['MYSQL_CONNECT_TIMEOUT']) : 2000, + connectTimeout: intEnv('MYSQL_CONNECT_TIMEOUT', 2000), connectionLimit: process.env.MYSQL_CONNECTION_POOL_SIZE !== undefined ? parseInt(process.env.MYSQL_CONNECTION_POOL_SIZE) : 5, database: requireEnv('MYSQL_DATABASE'), - debug: process.env['MYSQL_DEBUG'] === 'true' ? true : false, + debug: booleanEnv('MYSQL_DEBUG', false), host: requireEnv('MYSQL_HOST'), password: requireEnv('MYSQL_PASSWORD'), - port: process.env['MYSQL_PORT'] ? parseInt(process.env['MYSQL_PORT']) : 3306, + port: intEnv('MYSQL_PORT', 3306), supportBigNumbers: true, user: requireEnv('MYSQL_USER'), }; diff --git a/src/server.ts b/src/server.ts index f6aa039..9aaceb8 100644 --- a/src/server.ts +++ b/src/server.ts @@ -46,7 +46,9 @@ export const getIp = (req: express.Request): IPAddress => { export const startApp = (sessionStore?: session.MemoryStore): express.Express => { const app: express.Express = express(); - app.use(morganLog); + if (process.env['USE_LOGGING'] !== 'false') { + app.use(morganLog); + } app.use(cors(corsOptions)); app.use(requestIp.mw()); app.set('trust proxy', true); diff --git a/src/setup-tests.ts b/src/setup-tests.ts index 29f3457..e477a65 100644 --- a/src/setup-tests.ts +++ b/src/setup-tests.ts @@ -1,7 +1,9 @@ import * as dotenvFlow from 'dotenv-flow'; -import { setTestMode } from './utils'; +import { setTestMode } from '@tjsr/simple-env-utils'; dotenvFlow.config({ path: process.cwd() }); +process.env['USE_LOGGING'] = 'false'; + setTestMode(); diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 76adab9..0000000 --- a/src/utils.ts +++ /dev/null @@ -1,9 +0,0 @@ -let TEST_MODE = false; - -export const setTestMode = (): void => { - TEST_MODE = true; -}; - -export const isTestMode = (): boolean => { - return process.env.NODE_ENV === 'test' || TEST_MODE; -}; diff --git a/src/utils/requireEnv.ts b/src/utils/requireEnv.ts deleted file mode 100644 index bc38f9c..0000000 --- a/src/utils/requireEnv.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const requireEnv = (val: string): string => { - if (process.env[val] === undefined) { - throw Error(`${val} environment variable not set, which is required.`); - } - return process.env[val] as string; -}; diff --git a/src/utils/validateObjectId.ts b/src/utils/validateObjectId.ts index c5a76a3..35003ef 100644 --- a/src/utils/validateObjectId.ts +++ b/src/utils/validateObjectId.ts @@ -1,5 +1,5 @@ import { ObjectId } from '../types'; -import { isTestMode } from '../utils'; +import { isTestMode } from '@tjsr/simple-env-utils'; import { validate } from 'uuid'; export const validateObjectId = (id: ObjectId): boolean => { diff --git a/src/utils/validateTag.ts b/src/utils/validateTag.ts index b2125d0..89f749c 100644 --- a/src/utils/validateTag.ts +++ b/src/utils/validateTag.ts @@ -1,4 +1,4 @@ -import { isTestMode } from '../utils'; +import { isTestMode } from '@tjsr/simple-env-utils'; import { validate } from 'uuid'; export const validateTag = (id: string): boolean => {