import globals from "globals"; import pluginJs from "@eslint/js"; import stylistic from "@stylistic/eslint-plugin"; export default [ // Tell eslint to ignore files that I don't mind being formatted slightly differently { ignores: [ `scripts/`, `*.dist/` ] }, { languageOptions: { globals: globals.browser, }, }, pluginJs.configs.recommended, // MARK: Foundry Globals { languageOptions: { globals: { CONFIG: `writable`, CONST: `readonly`, game: `readonly`, Handlebars: `readonly`, Hooks: `readonly`, ui: `readonly`, Actor: `readonly`, Item: `readonly`, foundry: `readonly`, ChatMessage: `readonly`, ActiveEffect: `readonly`, Dialog: `readonly`, renderTemplate: `readonly`, TextEditor: `readonly`, fromUuid: `readonly`, Combat: `readonly`, Combatant: `readonly`, canvas: `readonly`, Token: `readonly`, Tour: `readonly`, }, }, }, // MARK: Project Specific { plugins: { "@stylistic": stylistic, }, languageOptions: { globals: { __TITLE__: `readonly`, __ID__: `readonly`, __VERSION__: `readonly`, }, }, rules: { "curly": `error`, "func-names": [`warn`, `as-needed`], "grouped-accessor-pairs": `error`, "no-alert": `error`, "no-empty": [`error`, { allowEmptyCatch: true }], "no-implied-eval": `error`, "no-invalid-this": `error`, "no-lonely-if": `error`, "no-unneeded-ternary": `error`, "no-nested-ternary": `error`, "no-var": `error`, "no-unused-vars": [ `error`, { "vars": `local`, "args": `after-used`, "varsIgnorePattern": `^_`, "argsIgnorePattern": `^_`, }, ], "sort-imports": [`warn`, { "ignoreCase": true, "allowSeparatedGroups": true }], "@stylistic/semi": [`warn`, `always`, { "omitLastInOneLineBlock": true }], "@stylistic/no-trailing-spaces": `warn`, "@stylistic/space-before-blocks": [`warn`, `always`], "@stylistic/space-infix-ops": `warn`, "@stylistic/eol-last": `warn`, "@stylistic/operator-linebreak": [`warn`, `before`], "@stylistic/indent": [`warn`, `tab`], "@stylistic/brace-style": [`warn`, `1tbs`, { "allowSingleLine": true }], "@stylistic/quotes": [`warn`, `backtick`, { "avoidEscape": true }], "@stylistic/comma-dangle": [`warn`, { arrays: `always-multiline`, objects: `always-multiline`, imports: `always-multiline`, exports: `always-multiline`, functions: `always-multiline` }], "@stylistic/comma-style": [`warn`, `last`], "@stylistic/dot-location": [`error`, `property`], "@stylistic/no-confusing-arrow": `error`, "@stylistic/no-whitespace-before-property": `error`, "@stylistic/nonblock-statement-body-position": [ `error`, `beside`, { "overrides": { "while": `below` } }, ], }, }, ];