haperone_local-image-compress/eslint.obsidian.config.mjs

57 lines
1.7 KiB
JavaScript

// Blocking mirror of the current Obsidian community-plugin submission scanner.
import fs from "node:fs";
import path from "node:path";
import json from "@eslint/json";
import tsParser from "@typescript-eslint/parser";
import tseslint from "typescript-eslint";
import obsidianmd from "eslint-plugin-obsidianmd";
const isDevLayout = path.basename(import.meta.dirname) === "source-recovery"
&& fs.existsSync(path.join(import.meta.dirname, "src-ts"))
&& fs.existsSync(path.join(import.meta.dirname, "..", "manifest.json"));
const sourcePrefix = isDevLayout ? "source-recovery/" : "";
const sourceFiles = [`${sourcePrefix}src-ts/**/*.ts`];
const disabledObsidianJsonRules = Object.fromEntries(
Object.keys(obsidianmd.rules).map((ruleName) => [`obsidianmd/${ruleName}`, "off"])
);
export default [
{
ignores: [
`${sourcePrefix}node_modules/**`,
`${sourcePrefix}dist/**`,
`${sourcePrefix}dist-ts/**`,
`${sourcePrefix}qa-backups/**`,
`${sourcePrefix}qa-screenshots/**`,
"**/.claude/**",
"**/.supergoal/**",
"*.mjs"
]
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
...config,
files: sourceFiles
})),
...obsidianmd.configs.recommendedWithLocalesEn,
{
files: sourceFiles,
languageOptions: {
parser: tsParser,
parserOptions: {
project: "./tsconfig.json",
tsconfigRootDir: import.meta.dirname,
sourceType: "module"
}
}
},
{
files: [`${sourcePrefix}src-ts/locales/en.json`],
plugins: { json },
language: "json/json",
rules: {
...disabledObsidianJsonRules,
"no-irregular-whitespace": "off",
"obsidianmd/ui/sentence-case-json": "error"
}
}
];