2018-11-08 06:48:01 +00:00
module . exports = {
2018-11-16 07:15:17 +00:00
extends : [
2018-11-08 06:48:01 +00:00
"ash-nazg/sauron-node" ,
"plugin:qunit/recommended" , "plugin:testcafe/recommended"
] ,
2018-11-16 07:15:17 +00:00
parserOptions : {
sourceType : "module"
2018-11-08 06:48:01 +00:00
} ,
// Need to make explicit here for processing by jsdoc/check-examples
2018-11-16 07:15:17 +00:00
plugins : [ "qunit" ] ,
env : {
browser : true
2018-11-08 06:48:01 +00:00
} ,
2018-11-16 07:15:17 +00:00
settings : {
polyfills : [ "url" , "promises" , "fetch" , "queryselector" ] ,
jsdoc : {
additionalTagNames : {
2018-11-08 06:48:01 +00:00
// In case we need to extend
2018-11-16 07:15:17 +00:00
customTags : [ ]
2018-11-08 06:48:01 +00:00
} ,
2018-11-16 07:15:17 +00:00
tagNamePreference : {
arg : "param" ,
return : "returns"
2018-11-08 06:48:01 +00:00
} ,
2018-11-16 07:15:17 +00:00
allowOverrideWithoutParam : true ,
allowImplementsWithoutParam : true ,
allowAugmentsExtendsWithoutParam : true ,
2018-11-08 06:48:01 +00:00
// For `jsdoc/check-examples` in `ash-nazg`
2018-11-16 07:15:17 +00:00
matchingFileName : "dummy.md" ,
rejectExampleCodeRegex : "^`" ,
2018-11-08 06:48:01 +00:00
}
} ,
2018-11-16 07:15:17 +00:00
overrides : [
2018-11-08 06:48:01 +00:00
// 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
{
2018-11-16 07:15:17 +00:00
files : [
2018-11-08 06:48:01 +00:00
"test/utilities_test.js" , "editor/svg-editor.js" , "editor/svgcanvas.js" ,
"editor/coords.js" ,
"editor/extensions/ext-eyedropper.js" , "editor/extensions/ext-webappfind.js"
] ,
2018-11-16 07:15:17 +00:00
rules : {
2018-11-08 06:48:01 +00:00
"jsdoc/valid-types" : "off" ,
"valid-jsdoc" : "off"
}
} ,
// Locales have no need for importing outside of SVG-Edit
{
2018-11-16 07:15:17 +00:00
files : [
2018-11-08 06:48:01 +00:00
"editor/locale/lang.*.js" , "editor/extensions/ext-locale/**" ,
"docs/tutorials/ExtensionDocs.md"
] ,
2018-11-16 07:15:17 +00:00
rules : {
2018-11-08 06:48:01 +00:00
"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
{
2018-11-16 07:15:17 +00:00
files : [ "editor/extensions/**/ext-*.js" ] ,
rules : {
2018-11-08 06:48:01 +00:00
"consistent-this" : [ "error" , "svgEditor" ] ,
"import/no-anonymous-default-export" : [ "off" ]
}
} ,
// These browser files don't do importing or requiring
{
2018-11-16 07:15:17 +00:00
files : [
2018-11-08 06:48:01 +00:00
"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"
] ,
2018-11-16 07:15:17 +00:00
rules : {
2018-11-08 06:48:01 +00:00
"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`)
{
2018-11-16 07:15:17 +00:00
files : [ "**/*.md" ] ,
rules : {
2018-11-08 06:48:01 +00:00
"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
{
2018-11-16 07:15:17 +00:00
files : [ "editor/**" , "test/**" ] ,
rules : {
2018-11-08 06:48:01 +00:00
"node/no-unsupported-features/node-builtins" : [ "off" ]
}
} ,
// We want console in tests!
{
2018-11-16 07:15:17 +00:00
files : [ "test/**" ] ,
rules : {
2018-11-08 06:48:01 +00:00
"no-console" : [ "off" ]
}
} ,
{
// Node files
2018-11-16 07:15:17 +00:00
files : [
2018-11-08 06:48:01 +00:00
"docs/jsdoc-config.js" ,
"build-html.js" , "jsdoc-check-overly-generic-types.js" ,
"rollup.config.js" , "rollup-config.config.js"
] ,
2018-11-16 07:15:17 +00:00
env : {
node : true ,
2018-11-08 06:48:01 +00:00
} ,
2018-11-16 07:15:17 +00:00
rules : {
2018-11-08 06:48:01 +00:00
"node/no-unpublished-import" : [ "off" ] ,
"node/no-unsupported-features/es-syntax" : [ "off" ]
}
} ,
{
// As consumed by jsdoc, cannot be expressed as ESM
2018-11-16 07:15:17 +00:00
files : [ "docs/jsdoc-config.js" ] ,
parserOptions : {
sourceType : "script"
2018-11-08 06:48:01 +00:00
} ,
2018-11-16 07:15:17 +00:00
rules : {
2018-11-08 06:48:01 +00:00
"import/no-commonjs" : "off"
}
}
] ,
2018-11-16 07:15:17 +00:00
rules : {
2018-11-08 06:48:01 +00:00
// Override these `ash-nazg/sauron` rules which are difficult for us
// to apply at this time
"default-case" : [ "off" ] ,
"require-unicode-regexp" : [ "off" ] ,
"max-len" : [ "off" , {
2018-11-16 07:15:17 +00:00
ignoreUrls : true ,
ignoreRegExpLiterals : true
2018-11-08 06:48:01 +00:00
} ]
}
} ;