diff --git a/eslint.config.js b/eslint.config.js index 052448c..9627bf0 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,5 +1,6 @@ import { includeIgnoreFile } from "@eslint/compat"; import js from "@eslint/js"; +import vitest from "@vitest/eslint-plugin"; import prettier from "eslint-config-prettier"; import svelte from "eslint-plugin-svelte"; import { defineConfig } from "eslint/config"; @@ -26,6 +27,14 @@ export default defineConfig( "no-undef": "off", "no-unused-vars": "off", "no-console": ["error", { allow: ["warn", "error"] }], + "@typescript-eslint/no-magic-numbers": [ + "error", + { + enforceConst: true, + ignoreDefaultValues: true, + ignore: [0, 1, 2], + }, + ], "@typescript-eslint/no-unused-vars": [ "error", { @@ -47,4 +56,45 @@ export default defineConfig( }, }, }, + { + files: ["**/constants.ts", "**/constants/*.ts"], + rules: { + "no-magic-numbers": "off", + "@typescript-eslint/no-magic-numbers": "off", + }, + }, + { + files: ["**/constants.ts", "**/constants/*.ts"], + rules: { + "no-magic-numbers": "off", + "@typescript-eslint/no-magic-numbers": "off", + }, + }, + { + files: ["scripts/**"], + rules: { + "no-magic-numbers": "off", + "@typescript-eslint/no-magic-numbers": "off", + "no-console": "off", + }, + }, + { + files: ["**/*.test.ts", "**/*.spec.ts", "tests/**/*"], + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + + "vitest/no-focused-tests": "error", + "vitest/no-disabled-tests": "warn", + "vitest/expect-expect": "error", + "vitest/no-conditional-expect": "error", + "vitest/require-hook": "warn", + "vitest/consistent-test-it": ["error", { fn: "it", withinDescribe: "it" }], + "vitest/require-top-level-describe": "error", + "vitest/no-identical-title": "error", + + "no-magic-numbers": "off", + "@typescript-eslint/no-magic-numbers": "off", + }, + }, ); diff --git a/package-lock.json b/package-lock.json index ee1a9e6..0daff94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "@types/file-saver": "^2.0.7", "@types/node": "^20", "@vitest/coverage-istanbul": "^4.0.18", + "@vitest/eslint-plugin": "^1.6.9", "@vitest/ui": "^4.0.18", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", @@ -2632,6 +2633,33 @@ "vitest": "4.0.18" } }, + "node_modules/@vitest/eslint-plugin": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.9.tgz", + "integrity": "sha512-9WfPx1OwJ19QLCSRLkqVO7//1WcWnK3fE/3fJhKMAmDe8+9G4rB47xCNIIeCq3FdEzkIoLTfDlwDlPBaUTMhow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "^8.55.0", + "@typescript-eslint/utils": "^8.55.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8.57.0", + "typescript": ">=5.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, "node_modules/@vitest/expect": { "version": "4.0.18", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", diff --git a/package.json b/package.json index b545312..0903ddd 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@types/file-saver": "^2.0.7", "@types/node": "^20", "@vitest/coverage-istanbul": "^4.0.18", + "@vitest/eslint-plugin": "^1.6.9", "@vitest/ui": "^4.0.18", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", diff --git a/src/components/panel/Preview.svelte b/src/components/panel/Preview.svelte index f3a3308..5584ef2 100644 --- a/src/components/panel/Preview.svelte +++ b/src/components/panel/Preview.svelte @@ -1,6 +1,6 @@ - + - + - + @@ -24,10 +30,20 @@ - + - + diff --git a/src/components/ui/ColorPicker.svelte b/src/components/ui/ColorPicker.svelte index ad9e731..eb8b869 100644 --- a/src/components/ui/ColorPicker.svelte +++ b/src/components/ui/ColorPicker.svelte @@ -8,7 +8,7 @@ let { value = $bindable() }: Props = $props(); - + {value}