From a982ae83a914dff993a5653cc783dfa1842a8674 Mon Sep 17 00:00:00 2001 From: Liviu Burcusel Date: Sat, 25 Oct 2025 12:31:38 +0200 Subject: [PATCH] Added linter for json files and fixed newly created linting errors. --- eslint.config.js | 5 ++ package-lock.json | 155 +++++++++++++++++++++++++++++++++++++++++++ package.json | 5 +- tsconfig.app.json | 4 +- tsconfig.json | 6 +- tsconfig.vitest.json | 4 +- 6 files changed, 170 insertions(+), 9 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 09c0e72..06e45d1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,6 +1,7 @@ import eslint from "@eslint/js"; import eslintConfigPrettier from "eslint-config-prettier"; import eslintPluginVue from "eslint-plugin-vue"; +import jsonc from "eslint-plugin-jsonc"; import globals from "globals"; import typescriptEslint from "typescript-eslint"; @@ -26,5 +27,9 @@ export default typescriptEslint.config( "@typescript-eslint/no-require-imports": "off", }, }, + { + files: ["**/*.json"], + extends: [...jsonc.configs["flat/recommended-with-json"]], + }, eslintConfigPrettier ); diff --git a/package-lock.json b/package-lock.json index 7637708..6f168eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "@vue/tsconfig": "^0.7.0", "eslint": "^9.38.0", "eslint-config-prettier": "^10.1.8", + "eslint-plugin-jsonc": "^2.21.0", "eslint-plugin-vue": "^10.5.1", "globals": "^16.4.0", "happy-dom": "^20.0.5", @@ -1824,6 +1825,19 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", @@ -3568,6 +3582,16 @@ "node": ">=0.10" } }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3764,6 +3788,22 @@ } } }, + "node_modules/eslint-compat-utils": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", + "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-config-prettier": { "version": "10.1.8", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", @@ -3780,6 +3820,55 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-json-compat-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", + "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esquery": "^1.6.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": "*", + "jsonc-eslint-parser": "^2.4.0" + }, + "peerDependenciesMeta": { + "@eslint/json": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsonc": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.21.0.tgz", + "integrity": "sha512-HttlxdNG5ly3YjP1cFMP62R4qKLxJURfBZo2gnMY+yQojZxkLyOpY1H1KRTKBmvQeSG9pIpSGEhDjE17vvYosg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.5.1", + "diff-sequences": "^27.5.1", + "eslint-compat-utils": "^0.6.4", + "eslint-json-compat-utils": "^0.2.1", + "espree": "^9.6.1 || ^10.3.0", + "graphemer": "^1.4.0", + "jsonc-eslint-parser": "^2.4.0", + "natural-compare": "^1.4.0", + "synckit": "^0.6.2 || ^0.7.3 || ^0.11.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-plugin-vue": { "version": "10.5.1", "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.5.1.tgz", @@ -4848,6 +4937,56 @@ "node": ">=6" } }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.1.tgz", + "integrity": "sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -6439,6 +6578,22 @@ "node": ">=16.0.0" } }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/test-exclude": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", diff --git a/package.json b/package.json index ddb4a8a..1f38e6d 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "coverage": "vitest run --coverage", "build-only": "vite build", "type-check": "vue-tsc --build", - "lint": "eslint \"**/*.{vue,ts}\"", - "lint-files": "eslint --ext .js,.ts,.vue" + "lint": "eslint \"**/*.{js,json,ts,vue}\"", + "lint-files": "eslint --ext .js,.json,.ts,.vue" }, "dependencies": { "@mdi/font": "^7.4.47", @@ -34,6 +34,7 @@ "@vue/tsconfig": "^0.7.0", "eslint": "^9.38.0", "eslint-config-prettier": "^10.1.8", + "eslint-plugin-jsonc": "^2.21.0", "eslint-plugin-vue": "^10.5.1", "globals": "^16.4.0", "happy-dom": "^20.0.5", diff --git a/tsconfig.app.json b/tsconfig.app.json index e4f2f8b..51c3534 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -24,7 +24,7 @@ "paths": { "~/*": ["./src/*"], - "@/*": ["./src/*"], + "@/*": ["./src/*"] } - }, + } } diff --git a/tsconfig.json b/tsconfig.json index 44a284c..f134a9b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,7 @@ "compilerOptions": { "paths": { "~/*": ["./src/*"], - "@/*": ["./src/*"], - }, - }, + "@/*": ["./src/*"] + } + } } diff --git a/tsconfig.vitest.json b/tsconfig.vitest.json index eebfdb0..5c5ba21 100644 --- a/tsconfig.vitest.json +++ b/tsconfig.vitest.json @@ -5,6 +5,6 @@ "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.vitest.tsbuildinfo", - "types": ["node", "happy-dom"], - }, + "types": ["node", "happy-dom"] + } }