diff --git a/package-lock.json b/package-lock.json index 028d1e8..36f65e0 100755 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@tycrek/discord-hookr": "^0.1.0", "@tycrek/express-postcss": "^0.4.0", "@tycrek/joint": "^1.0.0-1", - "@tycrek/log": "^0.6.0-7", + "@tycrek/log": "^0.7.0-3", "@tycrek/papito": "^0.3.4", "@xoi/gps-metadata-remover": "^1.1.1", "any-shell-escape": "^0.1.1", @@ -32,7 +32,7 @@ "ffmpeg-static": "^5.1.0", "fs-extra": "^11.1.0", "helmet": "^6.0.1", - "luxon": "^3.2.1", + "luxon": "^3.3.0", "nanoid": "^3.3.4", "node-fetch": "^2.6.7", "node-vibrant": "^3.1.6", @@ -54,7 +54,7 @@ "@types/express-busboy": "^8.0.0", "@types/ffmpeg-static": "^3.0.0", "@types/fs-extra": "^9.0.12", - "@types/luxon": "^2.0.3", + "@types/luxon": "^3.3.0", "@types/marked": "^3.0.0", "@types/node": "^16.9.0", "@types/node-fetch": "^2.5.12", @@ -955,37 +955,12 @@ } }, "node_modules/@tycrek/log": { - "version": "0.6.0-7", - "resolved": "https://registry.npmjs.org/@tycrek/log/-/log-0.6.0-7.tgz", - "integrity": "sha512-jqi3zrmHh3UEA//rExIFtip1e2cEYAyIUOaCikmVVCEpz9MtjJEQEnTH9XGB0Qai9ESqZ0dzvWNcDnIEdD28Cw==", + "version": "0.7.0-3", + "resolved": "https://registry.npmjs.org/@tycrek/log/-/log-0.7.0-3.tgz", + "integrity": "sha512-cy1WYpNsMN+OEjyP/hpqVqsct4A1bG18/JTde0PmKObBdEYExnQYDp1uIgDOQSktu3hnxDG7/rAu0XWsveUpMw==", "dependencies": { - "@tsconfig/node16": "^1.0.2", - "@types/express": "^4.17.13", - "@types/luxon": "^2.3.1", - "@types/node": "^17.0.23", - "chalk": "^4.1.1", - "luxon": "^1.27.0" - }, - "engines": { - "node": ">=16.14.x", - "npm": ">=8.3.x" - }, - "funding": { - "type": "patreon", - "url": "https://patreon.com/tycrek" - } - }, - "node_modules/@tycrek/log/node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" - }, - "node_modules/@tycrek/log/node_modules/luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==", - "engines": { - "node": "*" + "chalk": "^4.1.2", + "luxon": "^3.3.0" } }, "node_modules/@tycrek/papito": { @@ -1138,9 +1113,10 @@ "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" }, "node_modules/@types/luxon": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz", - "integrity": "sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "dev": true }, "node_modules/@types/marked": { "version": "3.0.3", @@ -3709,9 +3685,9 @@ } }, "node_modules/luxon": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", - "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", "engines": { "node": ">=12" } @@ -7125,28 +7101,12 @@ "integrity": "sha512-LYM2VVxCUFTf/kHKlbP7h4Phnljt/si7OQtj9ehRC9WaypYdO3BVfHovnXxcfRbShr3NPMNn2foN/zHQFN5Ltw==" }, "@tycrek/log": { - "version": "0.6.0-7", - "resolved": "https://registry.npmjs.org/@tycrek/log/-/log-0.6.0-7.tgz", - "integrity": "sha512-jqi3zrmHh3UEA//rExIFtip1e2cEYAyIUOaCikmVVCEpz9MtjJEQEnTH9XGB0Qai9ESqZ0dzvWNcDnIEdD28Cw==", + "version": "0.7.0-3", + "resolved": "https://registry.npmjs.org/@tycrek/log/-/log-0.7.0-3.tgz", + "integrity": "sha512-cy1WYpNsMN+OEjyP/hpqVqsct4A1bG18/JTde0PmKObBdEYExnQYDp1uIgDOQSktu3hnxDG7/rAu0XWsveUpMw==", "requires": { - "@tsconfig/node16": "^1.0.2", - "@types/express": "^4.17.13", - "@types/luxon": "^2.3.1", - "@types/node": "^17.0.23", - "chalk": "^4.1.1", - "luxon": "^1.27.0" - }, - "dependencies": { - "@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" - }, - "luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==" - } + "chalk": "^4.1.2", + "luxon": "^3.3.0" } }, "@tycrek/papito": { @@ -7290,9 +7250,10 @@ "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" }, "@types/luxon": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz", - "integrity": "sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "dev": true }, "@types/marked": { "version": "3.0.3", @@ -9252,9 +9213,9 @@ } }, "luxon": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", - "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==" }, "make-dir": { "version": "3.1.0", diff --git a/package.json b/package.json index d5aa554..1b74898 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@tycrek/discord-hookr": "^0.1.0", "@tycrek/express-postcss": "^0.4.0", "@tycrek/joint": "^1.0.0-1", - "@tycrek/log": "^0.6.0-7", + "@tycrek/log": "^0.7.0-3", "@tycrek/papito": "^0.3.4", "@xoi/gps-metadata-remover": "^1.1.1", "any-shell-escape": "^0.1.1", @@ -65,7 +65,7 @@ "ffmpeg-static": "^5.1.0", "fs-extra": "^11.1.0", "helmet": "^6.0.1", - "luxon": "^3.2.1", + "luxon": "^3.3.0", "nanoid": "^3.3.4", "node-fetch": "^2.6.7", "node-vibrant": "^3.1.6", @@ -87,7 +87,7 @@ "@types/express-busboy": "^8.0.0", "@types/ffmpeg-static": "^3.0.0", "@types/fs-extra": "^9.0.12", - "@types/luxon": "^2.0.3", + "@types/luxon": "^3.3.0", "@types/marked": "^3.0.0", "@types/node": "^16.9.0", "@types/node-fetch": "^2.5.12", diff --git a/src/ass.ts b/src/ass.ts index a18b9d3..e0992ac 100644 --- a/src/ass.ts +++ b/src/ass.ts @@ -78,7 +78,7 @@ const bruteforce = new ExpressBrute(new ExpressBrute.MemoryStore(), { app.get(['/'], bruteforce.prevent, (_req, _res, next) => next()); // Express logger middleware -app.use(log.middleware()); +// app.use(log.middleware()); // Body parser for API POST requests // (I really don't like this being top level but it does not work inside the API Router as of 2022-12-24) @@ -130,7 +130,11 @@ app.use('/css', epcss({ app.use('/:resourceId', (req, _res, next) => (req.resourceId = req.params.resourceId, next()), ROUTERS.resource); // skipcq: JS-0086, JS-0090 // Error handler -app.use((err: ErrWrap, _req: Request, res: Response) => log.error(err.message).err(err).callback(() => res.sendStatus(CODE_INTERNAL_SERVER_ERROR))); // skipcq: JS-0128 +app.use((err: ErrWrap, _req: Request, res: Response) => { + log.error(err.message); + console.error(err); + res.sendStatus(CODE_INTERNAL_SERVER_ERROR); +}); (async function start() { await AuthOnStart(); @@ -144,5 +148,5 @@ app.use((err: ErrWrap, _req: Request, res: Response) => log.error(err.message).e .info('Frontend', ASS_FRONTEND.enabled ? ASS_FRONTEND.brand : 'disabled', `${ASS_FRONTEND.enabled ? `${getTrueHttp()}${getTrueDomain()}${ASS_FRONTEND.endpoint}` : ''}`) .info('Custom index', ASS_INDEX ?? 'disabled') .blank() - .express()!.Host(app, port, host, () => log.success('Ready for uploads', `Storing resources ${s3enabled ? 'in S3' : 'on disk'}`)); + .callback(() => app.listen(port, host, () => log.success('Ready for uploads', `Storing resources ${s3enabled ? 'in S3' : 'on disk'}`))); })(); diff --git a/src/auth.ts b/src/auth.ts index e2a0620..7e3d29b 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -370,7 +370,7 @@ export const onStart = (authFile = 'auth.json') => new Promise((resolve, reject) log.debug('File does not exist', authFile, 'will be created automatically'); return fs.writeJson(file, { migrated: true }); }) - .catch((errWriteJson) => log.error('Failed to create auth.json').callback(reject, errWriteJson)) + .catch((errWriteJson) => log.error('Failed to create auth.json').callback(() => reject(errWriteJson))) // File exists or was created .then(() => fs.readJson(file)) @@ -393,7 +393,7 @@ export const onStart = (authFile = 'auth.json') => new Promise((resolve, reject) // Add users to the map return json.users.forEach((user) => users.push(user)); }) - .catch((errReadJson) => log.error('Failed to read auth.json').callback(reject, errReadJson)) + .catch((errReadJson) => log.error('Failed to read auth.json').callback(() => reject(errReadJson))) .then(resolve); }); diff --git a/src/checkEngine.js b/src/checkEngine.js index 1c7ce94..e01c131 100644 --- a/src/checkEngine.js +++ b/src/checkEngine.js @@ -18,5 +18,5 @@ function doCheck() { if (require.main !== module) module.exports = doCheck; else doCheck() - .then((result) => logger.comment(`Wanted: ${ENGINES.node} (npm ${ENGINES.npm})`).node().success(result)) + .then((result) => logger.comment(`Wanted: ${ENGINES.node} (npm ${ENGINES.npm})`)/* .node() */.success(result)) .catch((err) => logger.error(err) && process.exit(1)); diff --git a/src/hash.ts b/src/hash.ts index a7c0fc2..4d0b3db 100644 --- a/src/hash.ts +++ b/src/hash.ts @@ -12,5 +12,5 @@ export default (file: FileData): Promise => toArray((fs.createReadStream(file.path))) .then((parts: any[]) => Buffer.concat(parts.map((part: any) => (Buffer.isBuffer(part) ? part : Buffer.from(part))))) .then((buf: Buffer) => crypto.createHash('sha1').update(buf).digest('hex')) // skipcq: JS-D003 - .then((hash: string) => log.debug(`Hash for ${file.originalname}`, hash, 'SHA1, hex').callback(resolve, hash)) + .then((hash: string) => log.debug(`Hash for ${file.originalname}`, hash, 'SHA1, hex').callback(() => resolve(hash))) .catch(reject)); diff --git a/src/logger.ts b/src/logger.ts index 209a710..7746b3e 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -1,34 +1,10 @@ -import { TLog, DateTimePreset } from '@tycrek/log'; +import { TLog } from '@tycrek/log'; +import { DateTime } from 'luxon'; // Set up logging -const logger = new TLog({ - // @ts-ignore - level: process.env.LOG_LEVEL || (process.env.NODE_ENV === 'production' ? 'info' : 'debug'), - timestamp: { - enabled: true, - colour: 'grey', - preset: DateTimePreset.DATETIME_MED - } -}); +const logger = new TLog(process.env.NODE_ENV === 'production' ? 'info' : 'debug') + .setTimestamp({ preset: DateTime.DATETIME_MED }); -// Enable the Express logger -logger.enable.express({ - middleware: { - excludePaths: ['favicon.ico'], - }, - trim: { - enabled: true, - maxLength: 80, - delim: ': ', - }, - handle404: true, - handle500: false -}).debug('Plugin enabled', 'Express'); +// todo: re-enable the Express logger -/** - * @type {TLog} - */ -// yeet - - -export default logger; \ No newline at end of file +export default logger; diff --git a/src/routers/upload.ts b/src/routers/upload.ts index 1bf8c4c..66326c4 100644 --- a/src/routers/upload.ts +++ b/src/routers/upload.ts @@ -148,7 +148,7 @@ router.post('/', (req: Request, res: Response, next: Function) => { log.debug(`Sending${admin ? ' admin' : ''} embed to webhook`); hook.addEmbed(embed).send() .then(() => log.debug(`Webhook${admin ? ' admin' : ''} sent`)) - .catch((err) => log.error('Webhook error').err(err)); + .catch((err) => (log.error('Webhook error'), console.error(err))); } // Send the response diff --git a/src/storage.ts b/src/storage.ts index 869ae47..cba9b67 100644 --- a/src/storage.ts +++ b/src/storage.ts @@ -95,7 +95,7 @@ export function processUploaded(req: Request, res: Response, next: Function) { / .callback(() => res.sendStatus(CODE_UNSUPPORTED_MEDIA_TYPE))) .catch((err) => log .error('Temp file could not be deleted', err) - .callback(next, err))); + .callback(() => next(err)))); // Remove unwanted fields delete req.file.uuid;