Vue 3 + Vite + TypeScript (strict) app with shadcn-vue, Konva.js canvas, and Pinia. 4-step wizard: upload JPG/HEIC, view EXIF, place datum measurements (rectangles/lines with presets), run deskew (placeholder). Dark mode, mobile-responsive with bottom sheet for datum panel. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import pluginVue from "eslint-plugin-vue";
|
|
import tsPlugin from "@typescript-eslint/eslint-plugin";
|
|
import tsParser from "@typescript-eslint/parser";
|
|
import vueParser from "vue-eslint-parser";
|
|
import prettierConfig from "eslint-config-prettier";
|
|
import type { Linter } from "eslint";
|
|
|
|
const config: Linter.Config[] = [
|
|
{
|
|
ignores: ["dist/**", "node_modules/**"],
|
|
},
|
|
{
|
|
files: ["**/*.ts"],
|
|
languageOptions: {
|
|
parser: tsParser,
|
|
parserOptions: {
|
|
ecmaVersion: "latest",
|
|
sourceType: "module",
|
|
},
|
|
},
|
|
plugins: {
|
|
"@typescript-eslint": tsPlugin as Record<string, unknown>,
|
|
},
|
|
rules: {
|
|
...tsPlugin.configs?.["recommended"]?.rules,
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{ argsIgnorePattern: "^_" },
|
|
],
|
|
"@typescript-eslint/explicit-function-return-type": "off",
|
|
},
|
|
},
|
|
{
|
|
files: ["**/*.vue"],
|
|
languageOptions: {
|
|
parser: vueParser,
|
|
parserOptions: {
|
|
parser: tsParser,
|
|
ecmaVersion: "latest",
|
|
sourceType: "module",
|
|
extraFileExtensions: [".vue"],
|
|
},
|
|
},
|
|
plugins: {
|
|
vue: pluginVue as unknown as Record<string, unknown>,
|
|
"@typescript-eslint": tsPlugin as Record<string, unknown>,
|
|
},
|
|
rules: {
|
|
...pluginVue.configs?.["flat/recommended"]?.reduce(
|
|
(acc: Record<string, unknown>, cfg: Linter.Config) => ({
|
|
...acc,
|
|
...cfg.rules,
|
|
}),
|
|
{},
|
|
),
|
|
"vue/multi-word-component-names": "off",
|
|
},
|
|
},
|
|
prettierConfig as Linter.Config,
|
|
];
|
|
|
|
export default config;
|