andy-stack_vaultkeeper-ai/eslint.config.js

87 lines
2.9 KiB
JavaScript
Raw Permalink Normal View History

// eslint.config.js
import { defineConfig } from "eslint/config";
import js from "@eslint/js";
import tseslint from "typescript-eslint";
import obsidianmd from "eslint-plugin-obsidianmd";
import eslintComments from "@eslint-community/eslint-plugin-eslint-comments";
import globals from "globals";
export default defineConfig([
{
ignores: [
"node_modules/**",
"main.js",
"eslint.config.js",
"**/__tests__/**",
"**/*.test.ts",
"esbuild.config.mjs",
"version-bump.mjs",
"vitest.config.ts",
],
},
js.configs.recommended,
{
files: ["**/*.ts"],
extends: [
tseslint.configs.recommendedTypeChecked,
obsidianmd.configs.recommended,
],
plugins: {
"@eslint-community/eslint-comments": eslintComments,
},
languageOptions: {
parser: tseslint.parser,
parserOptions: {
projectService: true,
sourceType: "module",
},
globals: {
...globals.browser,
...globals.node,
createEl: "readonly",
Fuzzysort: "readonly",
AsyncGenerator: "readonly",
},
},
rules: {
"@typescript-eslint/require-await": "error",
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/switch-exhaustiveness-check": "error",
"@typescript-eslint/no-explicit-any": "error",
"@eslint-community/eslint-comments/require-description": "error",
"@eslint-community/eslint-comments/no-unused-disable": "error",
"@eslint-community/eslint-comments/no-restricted-disable": [
"error",
"@typescript-eslint/no-explicit-any",
"no-restricted-globals",
],
"no-console": ["error", { allow: ["warn", "error", "debug"] }],
"no-restricted-globals": [
"error",
{ name: "app", message: "Avoid using the global app object. Instead use the reference provided by your plugin instance." },
{ name: "localStorage", message: "Prefer `App#saveLocalStorage` / `App#loadLocalStorage` functions to write / read localStorage data that's unique to a vault." },
],
"no-restricted-imports": [
"error",
{ name: "axios", message: "Use the built-in `requestUrl` function instead of `axios`." },
{ name: "superagent", message: "Use the built-in `requestUrl` function instead of `superagent`." },
{ name: "got", message: "Use the built-in `requestUrl` function instead of `got`." },
{ name: "node-fetch", message: "Use the built-in `requestUrl` function instead of `node-fetch`." },
{ name: "moment", message: "The 'moment' package is bundled with Obsidian. Please import it from 'obsidian' instead." },
],
},
},
{
files: ["**/*.js", "**/*.mjs", "**/*.cjs"],
extends: [tseslint.configs.disableTypeChecked],
},
]);