diff --git a/src/FileUploadMiddleware.ts b/src/FileUploadMiddleware.ts index 7aa353e..e6159cf 100644 --- a/src/FileUploadMiddleware.ts +++ b/src/FileUploadMiddleware.ts @@ -23,9 +23,9 @@ export default abstract class FileUploadMiddleware extends Middleware { resolve(); }); }); - } catch (e: any) { + } catch (e) { const bag = new ValidationBag(); - const fileError = new FileError(e); + const fileError = new FileError(String(e)); fileError.thingName = this.getDefaultField(); bag.addMessage(fileError); next(bag); diff --git a/src/Utils.ts b/src/Utils.ts index b4920a7..443319b 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -1,4 +1,4 @@ -import {promises as fs} from "fs"; +import fs, {promises as afs} from "fs"; import path from "path"; export async function sleep(ms: number): Promise { @@ -49,10 +49,10 @@ export function getMethods(obj: T): string[] } export async function listFilesRecursively(dir: string): Promise { - const localFiles = await fs.readdir(dir); + const localFiles = await afs.readdir(dir); const files: string[] = []; for (const file of localFiles.map(file => path.join(dir, file))) { - const stat = await fs.stat(file); + const stat = await afs.stat(file); if (stat.isDirectory()) { files.push(...await listFilesRecursively(file)); @@ -65,14 +65,17 @@ export async function listFilesRecursively(dir: string): Promise { export async function doesFileExist(file: string): Promise { - try { - await fs.stat(file); - } catch (err: any) { - if (err?.code === 'ENOENT') { - return false; - } else { - throw err; - } - } - return true; + return await new Promise((resolve, reject) => { + fs.stat(file, err => { + if (err) { + if (err.code === 'ENOENT') { + return resolve(false); + } else { + return reject(err); + } + } else { + return resolve(true); + } + }); + }); } diff --git a/src/components/MailComponent.ts b/src/components/MailComponent.ts index 391924d..4109c06 100644 --- a/src/components/MailComponent.ts +++ b/src/components/MailComponent.ts @@ -48,8 +48,12 @@ export default class MailComponent extends ApplicationComponent { try { await util.promisify(transporter.verify)(); this.transporter = transporter; - } catch (e: any) { - throw new MailError('Connection to mail service unsuccessful.', e); + } catch (e) { + if (e instanceof Error) { + throw new MailError('Connection to mail service unsuccessful.', e); + } else { + throw e; + } } logger.info(`Mail ready to be distributed via ${config.get('mail.host')}:${config.get('mail.port')}`); diff --git a/src/db/MysqlConnectionManager.ts b/src/db/MysqlConnectionManager.ts index 5183493..e5ee183 100644 --- a/src/db/MysqlConnectionManager.ts +++ b/src/db/MysqlConnectionManager.ts @@ -183,9 +183,14 @@ export default class MysqlConnectionManager { try { const result = await query('SELECT id FROM migrations ORDER BY id DESC LIMIT 1'); currentVersion = Number(result.results[0]?.id); - } catch (e: any) { - if (e.code === 'ECONNREFUSED' || e.code !== 'ER_NO_SUCH_TABLE') { - throw new Error('Cannot run migrations: ' + e.code); + } catch (e) { + if (e instanceof Error) { + const mysqlError = e as MysqlError; + if (mysqlError.code !== 'ER_NO_SUCH_TABLE') { + throw new Error('Cannot run migrations: ' + mysqlError.code); + } + } else { + throw e; } } diff --git a/src/db/Validator.ts b/src/db/Validator.ts index 18ea2b8..2a1136e 100644 --- a/src/db/Validator.ts +++ b/src/db/Validator.ts @@ -61,8 +61,12 @@ export default class Validator { if (result instanceof Promise) { result = await result; } - } catch (e: any) { - throw new ServerError(`An error occurred while validating ${thingName} with value "${value}".`, e); + } catch (e) { + if (e instanceof Error) { + throw new ServerError(`An error occurred while validating ${thingName} with value "${value}".`, e); + } else { + throw e; + } } if (result === false && step.throw) { diff --git a/src/migrations/CreateMigrationsTable.ts b/src/migrations/CreateMigrationsTable.ts index 21dadc3..22be569 100644 --- a/src/migrations/CreateMigrationsTable.ts +++ b/src/migrations/CreateMigrationsTable.ts @@ -1,3 +1,5 @@ +import {MysqlError} from "mysql"; + import Migration from "../db/Migration.js"; import {query} from "../db/MysqlConnectionManager.js"; @@ -8,8 +10,8 @@ export default class CreateMigrationsTable extends Migration { public async shouldRun(currentVersion: number): Promise { try { await query('SELECT 1 FROM migrations LIMIT 1'); - } catch (e: any) { - if (e.code !== 'ER_NO_SUCH_TABLE') { + } catch (e) { + if (!(e instanceof Error) || (e as MysqlError).code !== 'ER_NO_SUCH_TABLE') { return false; } }