add eslint and prettier
This commit is contained in:
1
backend/.husky/pre-commit
Normal file
1
backend/.husky/pre-commit
Normal file
@@ -0,0 +1 @@
|
|||||||
|
npx lint-staged
|
||||||
2
backend/.prettierignore
Normal file
2
backend/.prettierignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
node_modules
|
||||||
|
dist
|
||||||
7
backend/.prettierrc
Normal file
7
backend/.prettierrc
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"printWidth": 80,
|
||||||
|
"tabWidth": 2
|
||||||
|
}
|
||||||
24
backend/eslint.config.js
Normal file
24
backend/eslint.config.js
Normal 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
1481
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
Reference in New Issue
Block a user