mirror of
https://github.com/andy-stack/vaultkeeper-ai.git
synced 2026-07-22 06:42:03 +00:00
Add eslint to project to help address Obsidian eslint issues.
This commit is contained in:
parent
b7404ff154
commit
d8c7672211
6 changed files with 2675 additions and 105 deletions
|
|
@ -1,3 +0,0 @@
|
|||
node_modules/
|
||||
|
||||
main.js
|
||||
23
.eslintrc
23
.eslintrc
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"root": true,
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"env": { "node": true },
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": ["error", { "args": "none" }],
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"@typescript-eslint/no-empty-function": "off"
|
||||
}
|
||||
}
|
||||
137
eslint.config.js
Normal file
137
eslint.config.js
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
// eslint.config.js
|
||||
import js from "@eslint/js";
|
||||
import tseslint from "typescript-eslint";
|
||||
import obsidianmd from "eslint-plugin-obsidianmd";
|
||||
import sdl from "@microsoft/eslint-plugin-sdl";
|
||||
import importPlugin from "eslint-plugin-import";
|
||||
|
||||
export default [
|
||||
// Ignore patterns
|
||||
{
|
||||
ignores: ["node_modules/**", "main.js"]
|
||||
},
|
||||
|
||||
// Base ESLint recommended rules
|
||||
js.configs.recommended,
|
||||
|
||||
// TypeScript configuration for .ts files
|
||||
{
|
||||
files: ["**/*.ts"],
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint.plugin,
|
||||
"obsidianmd": obsidianmd,
|
||||
"@microsoft/sdl": sdl,
|
||||
"import": importPlugin,
|
||||
},
|
||||
languageOptions: {
|
||||
parser: tseslint.parser,
|
||||
parserOptions: {
|
||||
project: true,
|
||||
sourceType: "module"
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
// Base rules
|
||||
"no-unused-vars": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"no-self-compare": "warn",
|
||||
"no-eval": "error",
|
||||
"no-implied-eval": "error",
|
||||
"prefer-const": "off",
|
||||
"no-implicit-globals": "error",
|
||||
"no-console": ["error", { allow: ["warn", "error", "debug"] }],
|
||||
|
||||
// Restricted globals (with fetch removed for streaming)
|
||||
"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."
|
||||
}
|
||||
],
|
||||
|
||||
// Restricted imports
|
||||
"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.",
|
||||
},
|
||||
],
|
||||
|
||||
"no-alert": "error",
|
||||
"no-undef": "error",
|
||||
|
||||
// TypeScript rules
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/no-deprecated": "error",
|
||||
"@typescript-eslint/no-unused-vars": ["warn", { args: "none" }],
|
||||
"@typescript-eslint/require-await": "off",
|
||||
"@typescript-eslint/no-explicit-any": ["error", { fixToUnknown: true }],
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
|
||||
// Security rules
|
||||
"@microsoft/sdl/no-document-write": "error",
|
||||
"@microsoft/sdl/no-inner-html": "error",
|
||||
|
||||
// Import rules
|
||||
"import/no-nodejs-modules": "error",
|
||||
"import/no-extraneous-dependencies": "error",
|
||||
|
||||
// Obsidian plugin rules - Commands
|
||||
"obsidianmd/commands/no-command-in-command-id": "error",
|
||||
"obsidianmd/commands/no-command-in-command-name": "error",
|
||||
"obsidianmd/commands/no-default-hotkeys": "error",
|
||||
"obsidianmd/commands/no-plugin-id-in-command-id": "error",
|
||||
"obsidianmd/commands/no-plugin-name-in-command-name": "error",
|
||||
|
||||
// Obsidian plugin rules - Settings Tab
|
||||
"obsidianmd/settings-tab/no-manual-html-headings": "error",
|
||||
"obsidianmd/settings-tab/no-problematic-settings-headings": "error",
|
||||
|
||||
// Obsidian plugin rules - Vault
|
||||
"obsidianmd/vault/iterate": "error",
|
||||
|
||||
// Obsidian plugin rules - General
|
||||
"obsidianmd/detach-leaves": "error",
|
||||
"obsidianmd/hardcoded-config-path": "error",
|
||||
"obsidianmd/no-forbidden-elements": "error",
|
||||
"obsidianmd/no-plugin-as-component": "error",
|
||||
"obsidianmd/no-sample-code": "error",
|
||||
"obsidianmd/no-tfile-tfolder-cast": "error",
|
||||
"obsidianmd/no-view-references-in-plugin": "error",
|
||||
"obsidianmd/no-static-styles-assignment": "error",
|
||||
"obsidianmd/object-assign": "error",
|
||||
"obsidianmd/platform": "error",
|
||||
"obsidianmd/prefer-file-manager-trash-file": "warn",
|
||||
"obsidianmd/prefer-abstract-input-suggest": "error",
|
||||
"obsidianmd/regex-lookbehind": "error",
|
||||
"obsidianmd/sample-names": "error",
|
||||
"obsidianmd/validate-manifest": "error",
|
||||
"obsidianmd/validate-license": "error",
|
||||
|
||||
// Obsidian plugin rules - UI
|
||||
"obsidianmd/ui/sentence-case": ["error", { enforceCamelCaseLower: true }],
|
||||
}
|
||||
}
|
||||
];
|
||||
2610
package-lock.json
generated
2610
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -3,11 +3,14 @@
|
|||
"version": "1.0.0",
|
||||
"description": "AI powered agent assistant.",
|
||||
"main": "main.js",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "node esbuild.config.mjs",
|
||||
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
|
||||
"version": "node version-bump.mjs && git add manifest.json versions.json",
|
||||
"svelte-check": "svelte-check --tsconfig tsconfig.json",
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "eslint . --fix",
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest",
|
||||
"test:ui": "vitest --ui",
|
||||
|
|
@ -27,6 +30,8 @@
|
|||
"builtin-modules": "5.0.0",
|
||||
"esbuild": "^0.27.0",
|
||||
"esbuild-svelte": "^0.9.3",
|
||||
"eslint": "^9.39.1",
|
||||
"eslint-plugin-obsidianmd": "^0.1.8",
|
||||
"happy-dom": "^20.0.10",
|
||||
"obsidian": "latest",
|
||||
"svelte": "^5.43.5",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { defineConfig } from "vitest/config";
|
||||
import * as path from "path-browserify";
|
||||
import * as path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
|
|
|
|||
Loading…
Reference in a new issue