module.exports = {
	extends: "eslint:recommended",
	parserOptions: {
		ecmaVersion: 11,
		sourceType: "module",
	},
	env: {
		browser: true,
		node: true,
		es6: true,
	},
	plugins: [],
	rules: {
		"accessor-pairs": 1,
		"arrow-body-style": [2, "as-needed"],
		"arrow-spacing": 2,
		"block-spacing": 2,
		"brace-style": [2, "allman", { allowSingleLine: true }],
		"camelcase": 1,
		"capitalized-comments": 0,
		"comma-spacing": 2,
		"comma-style": 2,
		"consistent-return": 1,
		"consistent-this": 2,
		"curly": 2,
		"default-case": 2,
		"dot-location": [2, "property"],
		"dot-notation": 1,
		"eol-last": 2,
		"eqeqeq": [2, "always"],
		"func-call-spacing": 2,
		"func-style": [2, "declaration", { allowArrowFunctions: true }],
		"generator-star-spacing": 2,
		"global-require": 2,
		"handle-callback-err": [2, "^(err|error)$"],
		"indent": ["error", "tab", { "SwitchCase": 1 }],
		"key-spacing": 2,
		"keyword-spacing": 2,
		"line-comment-position": 2,
		"max-len": 0,
		"new-cap": [2, { capIsNew: false }],
		"new-parens": 2,
		"no-array-constructor": 2,
		"no-buffer-constructor": 2,
		"no-caller": 2,
		"no-confusing-arrow": [2, { allowParens: true }],
		"no-console": 1,
		"no-div-regex": 2,
		"no-duplicate-imports": 2,
		"no-else-return": 1,
		"no-eval": 2,
		"no-extend-native": 2,
		"no-extra-bind": 2,
		"no-extra-label": 2,
		"no-extra-parens": [2, "functions"],
		"no-floating-decimal": 2,
		"no-implied-eval": 2,
		"no-inline-comments": 2,
		"no-invalid-this": 2,
		"no-iterator": 2,
		"no-label-var": 2,
		"no-labels": 2,
		"no-lone-blocks": 2,
		"no-mixed-operators": 2,
		"no-mixed-requires": 2,
		"no-multi-spaces": 2,
		"no-multi-str": 2,
		"no-multiple-empty-lines": [1, { max: 2, maxEOF: 0 }],
		"no-new": 2,
		"no-new-func": 2,
		"no-new-object": 2,
		"no-new-require": 2,
		"no-new-wrappers": 2,
		"no-octal-escape": 2,
		"no-param-reassign": 1,
		"no-path-concat": 2,
		"no-plusplus": 0,
		"no-proto": 2,
		"no-restricted-properties": 2,
		"no-return-assign": [2, "except-parens"],
		"no-return-await": 2,
		"no-self-compare": 2,
		"no-sequences": 2,
		"no-shadow": 2,
		"no-shadow-restricted-names": 2,
		"no-tabs": [1, { allowIndentationTabs: true }],
		"no-template-curly-in-string": 2,
		"no-throw-literal": 0,
		"no-trailing-spaces": 2,
		"no-undef-init": 2,
		// https://eslint.org/docs/rules/no-underscore-dangle#disallow-dangling-underscores-in-identifiers-no-underscore-dangle
		"no-underscore-dangle": 0,
		"no-unmodified-loop-condition": 2,
		"no-unneeded-ternary": 2,
		"no-unused-expressions": 1,
		"no-unused-vars": 1,
		"no-use-before-define": [2, { functions: false }],
		"no-useless-call": 2,
		"no-useless-computed-key": 2,
		"no-useless-constructor": 2,
		"no-useless-rename": 2,
		"no-useless-return": 2,
		"no-var": 2,
		"no-void": 2,
		"no-whitespace-before-property": 2,
		"no-with": 2,
		"object-property-newline": [2, { allowMultiplePropertiesPerLine: true }],
		"one-var": [2, "never"],
		"one-var-declaration-per-line": 2,
		"operator-linebreak": [1, "before"],
		"padded-blocks": [2, "never"],
		"padding-line-between-statements": 2,
		"prefer-const": 2,
		"prefer-promise-reject-errors": 2,
		"prefer-rest-params": 1,
		"prefer-template": 2,
		"quote-props": [2, "consistent-as-needed"],
		"quotes": [2, "double"],
		"radix": 2,
		"require-await": 2,
		"rest-spread-spacing": 2,
		"space-before-blocks": 2,
		"space-in-parens": 2,
		"space-infix-ops": 2,
		"space-unary-ops": 2,
		"spaced-comment": 2,
		"symbol-description": 2,
		"template-curly-spacing": 2,
		"template-tag-spacing": 2,
		"unicode-bom": 2,
		"valid-jsdoc": 2,
		"wrap-iife": [2, "any", { functionPrototypeMethods: true }],
		"yield-star-spacing": [2, "both"],
		"yoda": 2,
	},
};
