module.exports = { extends: [ "ash-nazg/sauron-node", "plugin:qunit/recommended", "plugin:testcafe/recommended" ], parserOptions: { sourceType: "module" }, // Need to make explicit here for processing by jsdoc/check-examples plugins: ["qunit"], env: { browser: true }, settings: { polyfills: ["url", "promises", "fetch", "queryselector"], jsdoc: { additionalTagNames: { // In case we need to extend customTags: [] }, tagNamePreference: { arg: "param", return: "returns" }, allowOverrideWithoutParam: true, allowImplementsWithoutParam: true, allowAugmentsExtendsWithoutParam: true, // For `jsdoc/check-examples` in `ash-nazg` matchingFileName: "dummy.md", rejectExampleCodeRegex: "^`", } }, overrides: [ // These would otherwise currently break because of these issues: // 1. `event:` https://github.com/eslint/doctrine/issues/221 and https://github.com/Kuniwak/jsdoctypeparser/pull/49 with https://github.com/Kuniwak/jsdoctypeparser/issues/47 // 1. `@implements`/`@augments`/`@extends`/`@override`: https://github.com/eslint/doctrine/issues/222 { files: [ "test/utilities_test.js", "editor/svg-editor.js", "editor/svgcanvas.js", "editor/coords.js", "editor/extensions/ext-eyedropper.js", "editor/extensions/ext-webappfind.js" ], rules: { "jsdoc/valid-types": "off", "valid-jsdoc": "off" } }, // Locales have no need for importing outside of SVG-Edit { files: [ "editor/locale/lang.*.js", "editor/extensions/ext-locale/**", "docs/tutorials/ExtensionDocs.md" ], rules: { "import/no-anonymous-default-export": ["off"] } }, // For extensions, `this` is generally assigned to be the more // descriptive `svgEditor`; they also have no need for importing outside // of SVG-Edit { files: ["editor/extensions/**/ext-*.js"], rules: { "consistent-this": ["error", "svgEditor"], "import/no-anonymous-default-export": ["off"] } }, // These browser files don't do importing or requiring { files: [ "editor/svgpathseg.js", "editor/touch.js", "editor/typedefs.js", "editor/redirect-on-no-module-support.js", "editor/extensions/imagelib/index.js", "editor/external/dom-polyfill/dom-polyfill.js", "test/all_tests.js", "screencasts/svgopen2010/script.js", "opera-widget/handlers.js", "firefox-extension/handlers.js", "firefox-extension/content/svg-edit-overlay.js" ], rules: { "import/unambiguous": ["off"] } }, // Our Markdown rules (and used for JSDoc examples as well, by way of // our use of `matchingFileName` in conjunction with // `jsdoc/check-examples` within `ash-nazg`) { files: ["**/*.md"], rules: { "eol-last": ["off"], "no-console": ["off"], "no-undef": ["off"], "no-unused-vars": ["warn"], "padded-blocks": ["off"], "import/unambiguous": ["off"], "import/no-unresolved": ["off"], "node/no-missing-import": ["off"] } }, // Dis-apply Node rules mistakenly giving errors with browser files { files: ["editor/**", "test/**"], rules: { "node/no-unsupported-features/node-builtins": ["off"] } }, // We want console in tests! { files: ["test/**"], rules: { "no-console": ["off"] } }, { // Node files files: [ "docs/jsdoc-config.js", "build-html.js", "jsdoc-check-overly-generic-types.js", "rollup.config.js", "rollup-config.config.js" ], env: { node: true, }, rules: { "node/no-unpublished-import": ["off"], "node/no-unsupported-features/es-syntax": ["off"] } }, { // As consumed by jsdoc, cannot be expressed as ESM files: ["docs/jsdoc-config.js"], parserOptions: { sourceType: "script" }, rules: { "import/no-commonjs": "off" } } ], rules: { // Override these `ash-nazg/sauron` rules which are difficult for us // to apply at this time "capitalized-comments": ["off"], complexity: ["off"], "default-case": ["off"], "require-unicode-regexp": ["off"], "no-magic-numbers": ["off"], "no-warning-comments": ["off"], "max-len": ["off", { ignoreUrls: true, ignoreRegExpLiterals: true }] } };