From 7b8674147de15b7a5112f6e03fa99114a9f33003 Mon Sep 17 00:00:00 2001 From: Kath <55346310+Kathund@users.noreply.github.com> Date: Sun, 17 Dec 2023 13:31:52 +0800 Subject: [PATCH] feat(prettier): Missing Config (#17) * feat(prettier): Missing Config * style(prettier) * style(prettier) --- .eslintrc | 6 +--- .github/workflows/ci-cd-16x.yml | 2 +- .github/workflows/ci-cd-18x.yml | 2 +- .github/workflows/ci-cd-20x.yml | 2 +- .prettierrc | 9 +++++ index.ts | 22 ++++++------ src/endpoints/file.ts | 22 +++++------- src/endpoints/save.ts | 42 +++++++++------------- src/helper.ts | 14 ++++---- src/logger.ts | 62 ++++++++++++++++----------------- 10 files changed, 87 insertions(+), 96 deletions(-) create mode 100644 .prettierrc diff --git a/.eslintrc b/.eslintrc index dd671d6..79d322c 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,11 +4,7 @@ "es2021": true, "node": true }, - "extends": [ - "plugin:@typescript-eslint/recommended", - "eslint:recommended", - "plugin:import/recommended" - ], + "extends": ["plugin:@typescript-eslint/recommended", "eslint:recommended", "plugin:import/recommended"], "parserOptions": { "ecmaVersion": "latest" }, "overrides": [], "rules": { diff --git a/.github/workflows/ci-cd-16x.yml b/.github/workflows/ci-cd-16x.yml index 0485178..06e5b3e 100644 --- a/.github/workflows/ci-cd-16x.yml +++ b/.github/workflows/ci-cd-16x.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - NODE_VERSION: "16.x" + NODE_VERSION: '16.x' jobs: prettier: diff --git a/.github/workflows/ci-cd-18x.yml b/.github/workflows/ci-cd-18x.yml index a3c3fb4..a8d31c2 100644 --- a/.github/workflows/ci-cd-18x.yml +++ b/.github/workflows/ci-cd-18x.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - NODE_VERSION: "18.x" + NODE_VERSION: '18.x' jobs: prettier: diff --git a/.github/workflows/ci-cd-20x.yml b/.github/workflows/ci-cd-20x.yml index e5754bc..c08af59 100644 --- a/.github/workflows/ci-cd-20x.yml +++ b/.github/workflows/ci-cd-20x.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - NODE_VERSION: "20.x" + NODE_VERSION: '20.x' jobs: prettier: diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..46ce0c2 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "bracketSameLine": true, + "arrowParens": "always", + "trailingComma": "es5", + "bracketSpacing": true, + "singleQuote": true, + "printWidth": 120, + "tabWidth": 2 +} diff --git a/index.ts b/index.ts index 40076fb..3c78495 100644 --- a/index.ts +++ b/index.ts @@ -1,12 +1,12 @@ -import { errorMessage, otherMessage } from "./src/logger"; -import { loadEndpoints } from "./src/helper"; -import fileUpload from "express-fileupload"; -import { existsSync, mkdirSync } from "fs"; -import { PORT } from "./config.json"; -import express from "express"; -import { join } from "path"; +import { errorMessage, otherMessage } from './src/logger'; +import { loadEndpoints } from './src/helper'; +import fileUpload from 'express-fileupload'; +import { existsSync, mkdirSync } from 'fs'; +import { PORT } from './config.json'; +import express from 'express'; +import { join } from 'path'; -const filesDir = join(__dirname, "src", "files"); +const filesDir = join(__dirname, 'src', 'files'); if (!existsSync(filesDir)) { mkdirSync(filesDir); } @@ -16,12 +16,10 @@ const app = express(); try { app.use(fileUpload()); - const endpointsDir = join(__dirname, "src", "endpoints"); + const endpointsDir = join(__dirname, 'src', 'endpoints'); const result = loadEndpoints(endpointsDir, app); if (result !== undefined) { - otherMessage( - `Loaded ${result.loaded} endpoints, skipped ${result.skipped} endpoints`, - ); + otherMessage(`Loaded ${result.loaded} endpoints, skipped ${result.skipped} endpoints`); } else { otherMessage(`No endpoints found in ${endpointsDir}`); } diff --git a/src/endpoints/file.ts b/src/endpoints/file.ts index 619695a..c5b5e69 100644 --- a/src/endpoints/file.ts +++ b/src/endpoints/file.ts @@ -1,32 +1,28 @@ -import { Application, Request, Response } from "express"; -import { apiMessage, errorMessage } from "../logger"; -import { existsSync } from "fs"; -import { resolve } from "path"; +import { Application, Request, Response } from 'express'; +import { apiMessage, errorMessage } from '../logger'; +import { existsSync } from 'fs'; +import { resolve } from 'path'; export default (app: Application) => { - app.get("/:name", async (req: Request, res: Response) => { + app.get('/:name', async (req: Request, res: Response) => { try { const fileName = req.params.name; apiMessage(req.path, `User is trying to get a file - ${fileName}`); const fileNamePattern = /^[a-zA-Z0-9_-]+$/; if (!fileNamePattern.test(fileName)) { - return res.status(400).json({ error: "Invalid file name" }); + return res.status(400).json({ error: 'Invalid file name' }); } - const filePath = resolve(__dirname, "../", "files", fileName); + const filePath = resolve(__dirname, '../', 'files', fileName); if (!existsSync(filePath)) { errorMessage(`File ${fileName} not found`); - return res - .status(404) - .send({ sucsess: false, message: `File ${fileName} not found` }); + return res.status(404).send({ sucsess: false, message: `File ${fileName} not found` }); } apiMessage(req.path, `File ${fileName} found`); return res.sendFile(filePath); } catch (err) { errorMessage(err as string); - return res - .status(500) - .send({ sucsess: false, message: "Internal server error" }); + return res.status(500).send({ sucsess: false, message: 'Internal server error' }); } }); }; diff --git a/src/endpoints/save.ts b/src/endpoints/save.ts index 75e6fd0..3e0dabf 100644 --- a/src/endpoints/save.ts +++ b/src/endpoints/save.ts @@ -1,41 +1,35 @@ -import { Application, Request, Response } from "express"; -import { apiMessage, errorMessage } from "../logger"; -import { UploadedFile } from "express-fileupload"; -import { url, key } from "../../config.json"; -import { existsSync } from "fs"; -import { join } from "path"; +import { Application, Request, Response } from 'express'; +import { apiMessage, errorMessage } from '../logger'; +import { UploadedFile } from 'express-fileupload'; +import { url, key } from '../../config.json'; +import { existsSync } from 'fs'; +import { join } from 'path'; export default (app: Application) => { - app.post("/save/:name", async (req: Request, res: Response) => { + app.post('/save/:name', async (req: Request, res: Response) => { try { - const apiKey = req.headers["API-KEY"]; + const apiKey = req.headers['API-KEY']; if (apiKey !== key) { - errorMessage("Invalid API key provided"); - return res - .status(400) - .send({ sucsess: false, message: "Invalid API key" }); + errorMessage('Invalid API key provided'); + return res.status(400).send({ sucsess: false, message: 'Invalid API key' }); } - apiMessage(req.path, "User is trying to save a file"); + apiMessage(req.path, 'User is trying to save a file'); const file = req.files?.file as UploadedFile; if (!file) { - errorMessage("No file provided for upload"); - return res - .status(400) - .send({ sucsess: false, message: "No file provided" }); + errorMessage('No file provided for upload'); + return res.status(400).send({ sucsess: false, message: 'No file provided' }); } const fileName = req.params.name; const fileNamePattern = /^[a-zA-Z0-9_-]+$/; if (!fileNamePattern.test(fileName)) { - return res.status(400).json({ error: "Invalid file name" }); + return res.status(400).json({ error: 'Invalid file name' }); } - const filePath = join(__dirname, "../", "files", fileName); + const filePath = join(__dirname, '../', 'files', fileName); if (existsSync(filePath)) { errorMessage(`File ${fileName} already exists`); - return res - .status(400) - .json({ sucsess: false, message: `File ${fileName} already exists` }); + return res.status(400).json({ sucsess: false, message: `File ${fileName} already exists` }); } await file.mv(filePath); @@ -47,9 +41,7 @@ export default (app: Application) => { }); } catch (err) { errorMessage(err as string); - return res - .status(500) - .json({ sucsess: false, message: "Internal server error" }); + return res.status(500).json({ sucsess: false, message: 'Internal server error' }); } }); }; diff --git a/src/helper.ts b/src/helper.ts index 1321e87..9691164 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -1,7 +1,7 @@ -import { otherMessage, errorMessage } from "./logger"; -import { readdirSync, statSync } from "fs"; -import { Application } from "express"; -import { basename, join } from "path"; +import { otherMessage, errorMessage } from './logger'; +import { readdirSync, statSync } from 'fs'; +import { Application } from 'express'; +import { basename, join } from 'path'; export const loadEndpoints = (directory: string, app: Application) => { try { @@ -19,8 +19,8 @@ export const loadEndpoints = (directory: string, app: Application) => { skipped += result.skipped; loaded += result.loaded; } - } else if (item.toLowerCase().endsWith(".ts")) { - if (item.toLowerCase().includes("disabled")) { + } else if (item.toLowerCase().endsWith('.ts')) { + if (item.toLowerCase().includes('disabled')) { skipped++; continue; } @@ -28,7 +28,7 @@ export const loadEndpoints = (directory: string, app: Application) => { loaded++; const route = await import(itemPath); route(app); - otherMessage(`Loaded ${basename(itemPath).split(".ts")[0]} endpoint`); + otherMessage(`Loaded ${basename(itemPath).split('.ts')[0]} endpoint`); })(); } } diff --git a/src/logger.ts b/src/logger.ts index 15bf789..4ec77aa 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -1,106 +1,106 @@ const customLevels = { api: 0, error: 1, warn: 2, other: 3, max: 4 }; -import { createLogger, format, transports } from "winston"; +import { createLogger, format, transports } from 'winston'; const timezone = () => { - return new Date().toLocaleString("en-US", { - year: "numeric", - month: "numeric", - day: "numeric", - hour: "numeric", - minute: "numeric", - second: "numeric", + return new Date().toLocaleString('en-US', { + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', hour12: false, }); }; const apiTransport = new transports.File({ - level: "api", - filename: "./logs/api.log", + level: 'api', + filename: './logs/api.log', }); const errorTransport = new transports.File({ - level: "error", - filename: "./logs/error.log", + level: 'error', + filename: './logs/error.log', }); const warnTransport = new transports.File({ - level: "warn", - filename: "./logs/warn.log", + level: 'warn', + filename: './logs/warn.log', }); const otherTransport = new transports.File({ - level: "other", - filename: "./logs/other.log", + level: 'other', + filename: './logs/other.log', }); const combinedTransport = new transports.File({ - level: "max", - filename: "./logs/combined.log", + level: 'max', + filename: './logs/combined.log', }); const consoleTransport = new transports.Console({ - level: "max", + level: 'max', }); const apiLogger = createLogger({ - level: "api", + level: 'api', levels: customLevels, format: format.combine( format.timestamp({ format: timezone }), format.printf(({ timestamp, level, message }) => { return `[${timestamp}] ${level.toUpperCase()} > ${message}`; - }), + }) ), transports: [apiTransport, combinedTransport, consoleTransport], }); const errorLogger = createLogger({ - level: "error", + level: 'error', levels: customLevels, format: format.combine( format.timestamp({ format: timezone }), format.printf(({ timestamp, level, message }) => { return `[${timestamp}] ${level.toUpperCase()} > ${message}`; - }), + }) ), transports: [errorTransport, combinedTransport, consoleTransport], }); const warnLogger = createLogger({ - level: "warn", + level: 'warn', levels: customLevels, format: format.combine( format.timestamp({ format: timezone }), format.printf(({ timestamp, level, message }) => { return `[${timestamp}] ${level.toUpperCase()} > ${message}`; - }), + }) ), transports: [warnTransport, combinedTransport, consoleTransport], }); const otherLogger = createLogger({ - level: "other", + level: 'other', levels: customLevels, format: format.combine( format.timestamp({ format: timezone }), format.printf(({ timestamp, level, message }) => { return `[${timestamp}] ${level.toUpperCase()} > ${message}`; - }), + }) ), transports: [otherTransport, combinedTransport, consoleTransport], }); const logger = { api: (endPoint: string, message: string) => { - apiLogger.log("api", `${endPoint} | ${message}`); + apiLogger.log('api', `${endPoint} | ${message}`); }, error: (message: string) => { - errorLogger.log("error", message); + errorLogger.log('error', message); }, warn: (message: string) => { - warnLogger.log("warn", message); + warnLogger.log('warn', message); }, other: (message: string) => { - otherLogger.log("other", message); + otherLogger.log('other', message); }, };