From d7cb444e94d1274efcd02cd4e8ed3dc0b39bcddd Mon Sep 17 00:00:00 2001 From: Skwaer17 Date: Mon, 27 Jan 2025 17:51:50 +0100 Subject: [PATCH 1/6] Oh god, finally. No error Linit --- .eslintrc.json | 19 ++++++++++++++++ eslint | 0 eslint.config.js | 12 ++++++++++ learn-cicd-typescript-starter@1.0.0 | 0 package-lock.json | 34 +++++++++++++++-------------- package.json | 6 +++-- src/.eslintrc | 8 +++++++ 7 files changed, 61 insertions(+), 18 deletions(-) create mode 100644 .eslintrc.json create mode 100644 eslint create mode 100644 eslint.config.js create mode 100644 learn-cicd-typescript-starter@1.0.0 create mode 100644 src/.eslintrc diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..6ec57629 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,19 @@ +{ + "env": { + "node": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "ignorePatterns": ["**/dist/*", "**/coverage/*", "node_modules"] +} diff --git a/eslint b/eslint new file mode 100644 index 00000000..e69de29b diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..e64ccc5a --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,12 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + {files: ["**/*.{js,mjs,cjs,ts}"]}, + {languageOptions: { globals: globals.browser }}, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, +]; \ No newline at end of file diff --git a/learn-cicd-typescript-starter@1.0.0 b/learn-cicd-typescript-starter@1.0.0 new file mode 100644 index 00000000..e69de29b diff --git a/package-lock.json b/package-lock.json index bc78eb1b..72e9ec7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,13 +16,15 @@ "uuid": "^11.0.3" }, "devDependencies": { - "@eslint/js": "^9.18.0", + "@eslint/js": "^9.19.0", "@types/cors": "^2.8.17", "@types/express": "^5.0.0", "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^8.21.0", + "@typescript-eslint/parser": "^8.21.0", "@vitest/coverage-v8": "^2.1.8", "drizzle-kit": "^0.28.1", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "globals": "^15.14.0", "prettier": "3.4.2", "tsx": "^4.19.2", @@ -1109,9 +1111,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, "license": "MIT", "engines": { @@ -3014,9 +3016,9 @@ } }, "node_modules/eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, "license": "MIT", "dependencies": { @@ -3025,7 +3027,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", + "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -7014,9 +7016,9 @@ } }, "@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true }, "@eslint/object-schema": { @@ -8198,9 +8200,9 @@ "dev": true }, "eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -8208,7 +8210,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", + "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", diff --git a/package.json b/package.json index fdbd8dfe..bc51c3b0 100644 --- a/package.json +++ b/package.json @@ -16,13 +16,15 @@ "dev": "npx tsc && node dist/main.js" }, "devDependencies": { - "@eslint/js": "^9.18.0", + "@eslint/js": "^9.19.0", "@types/cors": "^2.8.17", "@types/express": "^5.0.0", "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^8.21.0", + "@typescript-eslint/parser": "^8.21.0", "@vitest/coverage-v8": "^2.1.8", "drizzle-kit": "^0.28.1", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "globals": "^15.14.0", "prettier": "3.4.2", "tsx": "^4.19.2", diff --git a/src/.eslintrc b/src/.eslintrc new file mode 100644 index 00000000..9fdf2536 --- /dev/null +++ b/src/.eslintrc @@ -0,0 +1,8 @@ +{ + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ] +} From 96a4f46a87a69624924138aea7ada7fd8669007f Mon Sep 17 00:00:00 2001 From: Skwaer17 Date: Tue, 28 Jan 2025 16:26:56 +0100 Subject: [PATCH 2/6] Check linting warnings --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a81c496..cc8cb1a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,3 +45,5 @@ jobs: - name: Lint check run: npm run lint + - name: Check linting + run: npm run lint -- --max-warnings=0 From 9d23d11db664fcc82eb9d799ffb35c0271b69473 Mon Sep 17 00:00:00 2001 From: Skwaer17 Date: Tue, 28 Jan 2025 16:36:53 +0100 Subject: [PATCH 3/6] Check linting warnings 2th try --- .github/workflows/eslint.config.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eslint.config.js b/.github/workflows/eslint.config.js index 6986896c..f9b2b8d6 100644 --- a/.github/workflows/eslint.config.js +++ b/.github/workflows/eslint.config.js @@ -1,6 +1,7 @@ import globals from "globals"; import pluginJs from "@eslint/js"; import tseslint from "@typescript-eslint/eslint-plugin"; +import pluginSecurity from "eslint-plugin-security"; /** @type {import('eslint').Linter.Config} */ export default { @@ -10,8 +11,8 @@ export default { }, extends: [ pluginJs.configs.recommended, - tseslint.configs.recommended, // Ensure @typescript-eslint is installed -and configured + ...tseslint.configs.recommended, + pluginSecurity.configs.recommended, ], }; From e36e8a1bd8a1d6f9dbea3afcd91dbbbced7af4d8 Mon Sep 17 00:00:00 2001 From: Skwaer17 Date: Tue, 28 Jan 2025 16:58:03 +0100 Subject: [PATCH 4/6] Correct Lint warning = 0 --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc8cb1a3..eb133aea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,8 +42,5 @@ jobs: - name: Run formatting check run: npm run format:check - - name: Lint check - run: npm run lint - - name: Check linting run: npm run lint -- --max-warnings=0 From 7850588a96f665553db58988c78a45f57ad2e6f2 Mon Sep 17 00:00:00 2001 From: Skwaer17 Date: Tue, 28 Jan 2025 17:09:16 +0100 Subject: [PATCH 5/6] Try again --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eb133aea..b40ec2c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,7 @@ on: pull_request: branches: [ main ] + jobs: tests: name: Tests From 72d7ce1264bfd39123cb23d5827de9a078cdc2f2 Mon Sep 17 00:00:00 2001 From: Skwaer17 Date: Tue, 28 Jan 2025 17:17:02 +0100 Subject: [PATCH 6/6] Have to work now --- package-lock.json | 102 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 + 2 files changed, 104 insertions(+) diff --git a/package-lock.json b/package-lock.json index 72e9ec7d..4c2eb03a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "devDependencies": { "@eslint/js": "^9.19.0", "@types/cors": "^2.8.17", + "@types/eslint-plugin-security": "^3.0.0", "@types/express": "^5.0.0", "@types/node": "^22.9.0", "@typescript-eslint/eslint-plugin": "^8.21.0", @@ -25,6 +26,7 @@ "@vitest/coverage-v8": "^2.1.8", "drizzle-kit": "^0.28.1", "eslint": "^9.19.0", + "eslint-plugin-security": "^3.0.1", "globals": "^15.14.0", "prettier": "3.4.2", "tsx": "^4.19.2", @@ -1771,6 +1773,27 @@ "@types/node": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-plugin-security": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-plugin-security/-/eslint-plugin-security-3.0.0.tgz", + "integrity": "sha512-CpJ7dhqhfURdYHAlaQM4vfl75lDYnGl5+EZKoO/fW0hEREZa9+EBn1g10XLDM6n5yJSuTAPn5afkM4vNzhlyFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -3075,6 +3098,22 @@ } } }, + "node_modules/eslint-plugin-security": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz", + "integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-regex": "^2.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", @@ -4564,6 +4603,16 @@ "node": ">= 0.8" } }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4676,6 +4725,16 @@ } ] }, + "node_modules/safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "regexp-tree": "~0.1.1" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -7418,6 +7477,25 @@ "@types/node": "*" } }, + "@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-plugin-security": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-plugin-security/-/eslint-plugin-security-3.0.0.tgz", + "integrity": "sha512-CpJ7dhqhfURdYHAlaQM4vfl75lDYnGl5+EZKoO/fW0hEREZa9+EBn1g10XLDM6n5yJSuTAPn5afkM4vNzhlyFQ==", + "dev": true, + "requires": { + "@types/eslint": "*" + } + }, "@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -8277,6 +8355,15 @@ } } }, + "eslint-plugin-security": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz", + "integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==", + "dev": true, + "requires": { + "safe-regex": "^2.1.1" + } + }, "eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", @@ -9220,6 +9307,12 @@ "unpipe": "1.0.0" } }, + "regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -9281,6 +9374,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, + "requires": { + "regexp-tree": "~0.1.1" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", diff --git a/package.json b/package.json index bc51c3b0..9c25e05c 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "devDependencies": { "@eslint/js": "^9.19.0", "@types/cors": "^2.8.17", + "@types/eslint-plugin-security": "^3.0.0", "@types/express": "^5.0.0", "@types/node": "^22.9.0", "@typescript-eslint/eslint-plugin": "^8.21.0", @@ -25,6 +26,7 @@ "@vitest/coverage-v8": "^2.1.8", "drizzle-kit": "^0.28.1", "eslint": "^9.19.0", + "eslint-plugin-security": "^3.0.1", "globals": "^15.14.0", "prettier": "3.4.2", "tsx": "^4.19.2",