add eslint and prettier

This commit is contained in:
2025-09-11 20:41:25 +02:00
parent 14ddaa3932
commit e5b5e01ae4
8 changed files with 1536 additions and 9 deletions

View File

@@ -0,0 +1 @@
npx lint-staged

2
backend/.prettierignore Normal file
View File

@@ -0,0 +1,2 @@
node_modules
dist

7
backend/.prettierrc Normal file
View File

@@ -0,0 +1,7 @@
{
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"printWidth": 80,
"tabWidth": 2
}

24
backend/eslint.config.js Normal file
View File

@@ -0,0 +1,24 @@
import js from "@eslint/js";
import globals from "globals";
import { defineConfig } from "eslint/config";
export default defineConfig([
{
files: ["**/*.{js,mjs,cjs}"],
plugins: { js },
extends: ["js/recommended"],
languageOptions: {
globals: globals.node
},
rules: {
"no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
]
}
},
]);

1481
backend/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,8 @@
"type": "module", "type": "module",
"main": "src/index.js", "main": "src/index.js",
"scripts": { "scripts": {
"start": "nodemon --watch src/ node src/init.js" "start": "nodemon --watch src/ node src/init.js",
"prepare": "husky"
}, },
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
@@ -20,6 +21,19 @@
"swagger-ui-express": "^5.0.1" "swagger-ui-express": "^5.0.1"
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^3.1.10" "@eslint/js": "^9.35.0",
"eslint": "^9.35.0",
"globals": "^16.4.0",
"husky": "^9.1.7",
"lint-staged": "^16.1.6",
"nodemon": "^3.1.10",
"prettier": "^3.6.2"
},
"lint-staged": {
"*.js": [
"prettier --write",
"eslint --fix",
"git add"
]
} }
} }

View File

@@ -234,7 +234,7 @@ router.post("/games", asyncHandler(async (req, res) => {
await conn.commit(); await conn.commit();
res.status(201).json({ game: gameRow[0], players }); res.status(201).json({ game: gameRow[0], players });
} catch (err) { } catch (_err) {
await conn.rollback(); await conn.rollback();
throw new ApiError(500, "Failed to create game"); throw new ApiError(500, "Failed to create game");
} finally { } finally {
@@ -299,7 +299,7 @@ router.post("/games/:id/players", asyncHandler(async (req, res) => {
await conn.commit(); await conn.commit();
res.status(201).json({ game: gameId, players }); res.status(201).json({ game: gameId, players });
} catch (err) { } catch (_err) {
await conn.rollback(); await conn.rollback();
throw new ApiError(500, "Failed to add player"); throw new ApiError(500, "Failed to add player");
} finally { } finally {
@@ -371,7 +371,7 @@ router.patch("/games/:id/lock", asyncHandler(async (req, res) => {
await conn.commit(); await conn.commit();
res.json({ message: "Game locked", turnOrder }); res.json({ message: "Game locked", turnOrder });
} catch (err) { } catch (_err) {
await conn.rollback(); await conn.rollback();
throw new ApiError(500, "Failed to lock game"); throw new ApiError(500, "Failed to lock game");
} finally { } finally {
@@ -483,7 +483,7 @@ router.post("/games/:id/turns", asyncHandler(async (req, res) => {
await conn.commit(); await conn.commit();
res.status(201).json({ turnId: result.insertId, nextPlayer }); res.status(201).json({ turnId: result.insertId, nextPlayer });
} catch (err) { } catch (_err) {
await conn.rollback(); await conn.rollback();
throw new ApiError(500, "Failed to record turn"); throw new ApiError(500, "Failed to record turn");
} finally { } finally {

View File

@@ -48,13 +48,13 @@ app.use("/api/docs", swaggerUi.serve, swaggerUi.setup(specs));
app.use("/api", apiRouter); app.use("/api", apiRouter);
// has to be last // has to be last
app.use((err, _req, res, _next) => { app.use((err, _req, res) => {
if (err instanceof ApiError) { if (err instanceof ApiError) {
return res.status(err.status).json({ status: "error", error: err.message }); return res.status(err.status).json({ status: "error", error: err.message });
} }
console.error(err); console.error(err);
res.status(500).json({ status: "error", error: "Internal server error" }) res.status(500).json({ status: "error", error: "Internal server error" });
}) })
const server = https.createServer({ const server = https.createServer({