keepassxc-browser/eslint.config.mjs
2026-02-16 18:07:49 +02:00

216 lines
7.9 KiB
JavaScript

import { defineConfig, globalIgnores } from "eslint/config";
import globals from "globals";
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
export default defineConfig([globalIgnores(["**/*.min.js"]), {
extends: compat.extends("eslint:recommended"),
languageOptions: {
globals: {
...globals.browser,
...globals.jquery,
...globals.webextensions,
_called: "readonly",
acceptedOTPFields: "readonly",
assertInputFields: "readonly",
assertPasswordChangeFields: "readonly",
assertRegex: "readonly",
assertSearchField: "readonly",
assertSearchForm: "readonly",
assertTOTPField: "readonly",
AssociatedAction: "readonly",
AuthenticatorAssertionResponse: "readonly",
AuthenticatorAttestationResponse: "readonly",
Autocomplete: "readonly",
BannerPosition: "readonly",
BLUE_BUTTON: "readonly",
bootstrap: "readonly",
browser: "readonly",
browserAction: "readonly",
CHECK_UPDATE_NEVER: "readonly",
CHECK_UPDATE_ONE_MONTH: "readonly",
CHECK_UPDATE_ONE_WEEK: "readonly",
CHECK_UPDATE_THREE_DAYS: "readonly",
cloneInto: "readonly",
compareVersion: "readonly",
createResult: "readonly",
createStylesheet: "readonly",
DatabaseState: "readonly",
debugLogMessage: "readonly",
DEFINED_CUSTOM_FIELDS: "readonly",
elementsOverlap: "readonly",
EXTENSION_NAME: "readonly",
getCurrentTab: "readonly",
getIconClass: "readonly",
getLoginData: "readonly",
getTopLevelDomainFromUrl: "readonly",
GRAY_BUTTON_CLASS: "readonly",
GREEN_BUTTON: "readonly",
httpAuth: "readonly",
Icon: "readonly",
IGNORE_AUTOSUBMIT: "readonly",
IGNORE_FULL: "readonly",
IGNORE_NORMAL: "readonly",
IGNORE_NOTHING: "readonly",
IGNORE_PASSKEYS: "readonly",
importScripts: "readonly",
IMPROVED_DETECTION_PREDEFINED_SITELIST: "readonly",
initColorTheme: "readonly",
isEdge: "readonly",
isElementInside: "readonly",
isFirefox: "readonly",
isIframeAllowed: "readonly",
isSafari: "readonly",
keepass: "readonly",
keepassClient: "readonly",
kpActions: "readonly",
kpErrors: "readonly",
kpxc: "readonly",
kpxcAssert: "readonly",
kpxcBanner: "readonly",
kpxcCustomLoginFieldsBanner: "readonly",
kpxcEvent: "readonly",
kpxcFields: "readonly",
kpxcFill: "readonly",
kpxcForm: "readonly",
kpxcIcons: "readonly",
kpxcObserverHelper: "readonly",
kpxcPasswordGenerator: "readonly",
kpxcPasswordIcons: "readonly",
kpxcSites: "readonly",
kpxcTOTPAutocomplete: "readonly",
kpxcTOTPIcons: "readonly",
kpxcUI: "readonly",
kpxcUserAutocomplete: "readonly",
kpxcUsernameIcons: "readonly",
logDebug: "readonly",
logError: "readonly",
kpxcPasskeysUtils: "readonly",
ManualFill: "readonly",
matchesWithNodeName: "readonly",
MAX_AUTOCOMPLETE_NAME_LEN: "readonly",
MAX_OPACITY: "readonly",
MAX_TOTP_INPUT_LENGTH: "readonly",
menuContexts: "readonly",
MIN_INPUT_FIELD_OFFSET_WIDTH: "readonly",
MIN_INPUT_FIELD_WIDTH_PX: "readonly",
MIN_OPACITY: "readonly",
MIN_TOTP_INPUT_LENGTH: "readonly",
module: "readonly",
nacl: "readonly",
OBSERVER_OPTIONS: "readonly",
ORANGE_BUTTON: "readonly",
page: "readonly",
Pixels: "readonly",
PublicKeyCredential: "readonly",
PREDEFINED_SITELIST: "readonly",
RED_BUTTON: "readonly",
retrieveColorScheme: "readonly",
sendMessage: "readonly",
showNotification: "readonly",
siteMatch: "readonly",
SitePreferences: "readonly",
slashNeededForUrl: "readonly",
SORT_BY_GROUP_AND_TITLE: "readonly",
SORT_BY_GROUP_AND_USERNAME: "readonly",
SORT_BY_MATCHING_CREDENTIALS_SETTING: "readonly",
SORT_BY_RELEVANT_ENTRY: "readonly",
SORT_BY_TITLE: "readonly",
SORT_BY_USERNAME: "readonly",
statusResponse: "readonly",
Tests: "readonly",
tr: "readonly",
trimURL: "readonly",
updateDefaultPasswordManager: "readonly",
},
ecmaVersion: 13,
sourceType: "script",
},
rules: {
"array-bracket-spacing": ["error", "always"],
"arrow-body-style": "warn",
"arrow-parens": "off",
"arrow-spacing": "warn",
"block-scoped-var": "off",
"brace-style": ["warn", "1tbs"],
"camelcase": "warn",
"class-methods-use-this": "off",
"comma-dangle": "off",
"computed-property-spacing": ["error", "never"],
"consistent-return": "off",
"dot-notation": "off",
"eqeqeq": "error",
"func-names": "off",
"function-paren-newline": "off",
"guard-for-in": "off",
"implicit-arrow-linebreak": "off",
"indent": ["error", 4],
"linebreak-style": ["error", "unix"],
"lines-around-comment": "off",
"max-len": "off",
"no-alert": "error",
"no-await-in-loop": "off",
"no-bitwise": "off",
"no-console": "off",
"no-continue": "off",
"no-control-regex": "off",
"no-else-return": "off",
"no-empty-function": ["error", {
"allow": ["arrowFunctions", "methods", "asyncMethods"],
}],
"no-extend-native": "off",
"no-global-assign": "off",
"no-lonely-if": "off",
"no-loop-func": "off",
"no-mixed-operators": "off",
"no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
"no-multi-spaces": "warn",
"no-param-reassign": "off",
"no-plusplus": "off",
"no-prototype-builtins": "off",
"no-redeclare": "off",
"no-restricted-globals": "off",
"no-restricted-syntax": "off",
"no-return-await": "off",
"no-tabs": "warn",
"no-underscore-dangle": "off",
"no-unused-vars": ["warn", {
"args": "none",
"caughtErrorsIgnorePattern": "^_",
"varsIgnorePattern": "[A-Z_]+|tr|[$]",
}],
"no-use-before-define": "off",
"no-useless-escape": "off",
"no-useless-return": "off",
"no-var": "error",
"object-curly-spacing": ["warn", "always"],
"object-shorthand": "off",
"operator-linebreak": "off",
"prefer-arrow-callback": "off",
"prefer-const": "warn",
"prefer-destructuring": "off",
"prefer-template": "off",
"quote-props": "off",
"quotes": ["error", "single", {
"avoidEscape": true,
}],
"semi": ["error", "always"],
"space-before-blocks": "warn",
"space-before-function-paren": "off",
"space-in-parens": ["error", "never"],
"space-unary-ops": "off",
"spaced-comment": "off",
"strict": "off",
"vars-on-top": "off",
},
}]);