jellyfin-web/.eslintrc.js

201 lines
6.9 KiB
JavaScript
Raw Normal View History

2020-08-24 18:12:35 -07:00
const restrictedGlobals = require('confusing-browser-globals');
2020-04-25 05:06:56 -07:00
module.exports = {
root: true,
plugins: [
2020-07-31 01:01:51 -07:00
'@babel',
2020-04-25 05:06:56 -07:00
'promise',
'import',
'eslint-comments'
],
env: {
node: true,
es6: true,
es2017: true,
es2020: true
},
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
ecmaFeatures: {
impliedStrict: true
}
},
extends: [
'eslint:recommended',
// 'plugin:promise/recommended',
'plugin:import/errors',
'plugin:eslint-comments/recommended',
'plugin:compat/recommended'
],
rules: {
2020-05-30 14:15:06 -07:00
'block-spacing': ['error'],
2020-08-01 04:50:37 -07:00
'brace-style': ['error', '1tbs', { 'allowSingleLine': true }],
2020-05-30 14:15:06 -07:00
'comma-dangle': ['error', 'never'],
'comma-spacing': ['error'],
'eol-last': ['error'],
'indent': ['error', 4, { 'SwitchCase': 1 }],
'keyword-spacing': ['error'],
'max-statements-per-line': ['error'],
'no-floating-decimal': ['error'],
'no-multi-spaces': ['error'],
'no-multiple-empty-lines': ['error', { 'max': 1 }],
2020-08-24 18:12:35 -07:00
'no-restricted-globals': ['error'].concat(restrictedGlobals),
2020-05-30 14:15:06 -07:00
'no-trailing-spaces': ['error'],
2020-07-31 19:07:00 -07:00
'@babel/no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }],
2020-05-30 14:15:06 -07:00
'one-var': ['error', 'never'],
2020-07-26 23:06:46 -07:00
'padded-blocks': ['error', 'never'],
2020-09-11 13:44:06 -07:00
'prefer-const': ['error', {'destructuring': 'all'}],
2020-05-30 14:15:06 -07:00
'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }],
2020-07-31 19:07:00 -07:00
'@babel/semi': ['error'],
2020-10-07 08:47:23 -07:00
'no-var': ['error'],
2020-05-30 14:15:06 -07:00
'space-before-blocks': ['error'],
2020-07-30 07:05:34 -07:00
'space-infix-ops': 'error',
'yoda': 'error'
2020-04-25 05:06:56 -07:00
},
overrides: [
{
files: [
'./src/**/*.js'
],
2020-07-31 01:01:51 -07:00
parser: '@babel/eslint-parser',
2020-04-25 05:06:56 -07:00
env: {
node: false,
amd: true,
browser: true,
es6: true,
es2017: true,
es2020: true
},
globals: {
// Browser globals
'MediaMetadata': 'readonly',
// Tizen globals
'tizen': 'readonly',
'webapis': 'readonly',
// WebOS globals
'webOS': 'readonly',
// Dependency globals
'$': 'readonly',
'jQuery': 'readonly',
'requirejs': 'readonly',
// Jellyfin globals
'ApiClient': 'writable',
'chrome': 'writable',
'DlnaProfilePage': 'writable',
'DashboardPage': 'writable',
'Emby': 'readonly',
'getParameterByName': 'writable',
'getWindowLocationSearch': 'writable',
'Globalize': 'writable',
'Hls': 'writable',
'dfnshelper': 'writable',
'LibraryMenu': 'writable',
'LinkParser': 'writable',
'LiveTvHelpers': 'writable',
'MetadataEditor': 'writable',
'pageClassOn': 'writable',
'pageIdOn': 'writable',
'PlaylistViewer': 'writable',
'UserParentalControlPage': 'writable',
'Windows': 'readonly'
},
rules: {
// TODO: Fix warnings and remove these rules
2020-07-19 07:15:11 -07:00
'no-redeclare': ['off'],
'no-useless-escape': ['off'],
2020-07-31 19:07:00 -07:00
'no-unused-vars': ['off'],
2020-04-25 05:06:56 -07:00
// TODO: Remove after ES6 migration is complete
2020-05-30 14:15:06 -07:00
'import/no-unresolved': ['off']
2020-04-25 05:06:56 -07:00
},
settings: {
polyfills: [
// Native Promises Only
'Promise',
// whatwg-fetch
'fetch',
// document-register-element
'document.registerElement',
// resize-observer-polyfill
'ResizeObserver',
// fast-text-encoding
'TextEncoder',
// intersection-observer
'IntersectionObserver',
// Core-js
'Object.assign',
'Object.is',
'Object.setPrototypeOf',
'Object.toString',
'Object.freeze',
'Object.seal',
'Object.preventExtensions',
'Object.isFrozen',
'Object.isSealed',
'Object.isExtensible',
'Object.getOwnPropertyDescriptor',
'Object.getPrototypeOf',
'Object.keys',
2020-05-28 14:06:36 -07:00
'Object.entries',
2020-04-25 05:06:56 -07:00
'Object.getOwnPropertyNames',
'Function.name',
'Function.hasInstance',
'Array.from',
'Array.arrayOf',
'Array.copyWithin',
'Array.fill',
'Array.find',
'Array.findIndex',
'Array.iterator',
'String.fromCodePoint',
'String.raw',
'String.iterator',
'String.codePointAt',
'String.endsWith',
'String.includes',
'String.repeat',
'String.startsWith',
'String.trim',
'String.anchor',
'String.big',
'String.blink',
'String.bold',
'String.fixed',
'String.fontcolor',
'String.fontsize',
'String.italics',
'String.link',
'String.small',
'String.strike',
'String.sub',
'String.sup',
'RegExp',
'Number',
'Math',
'Date',
'async',
'Symbol',
'Map',
'Set',
'WeakMap',
'WeakSet',
'ArrayBuffer',
'DataView',
'Int8Array',
'Uint8Array',
'Uint8ClampedArray',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array',
2020-05-07 08:21:26 -07:00
'Reflect',
// Temporary while eslint-compat-plugin is buggy
'document.querySelector'
2020-04-25 05:06:56 -07:00
]
}
}
]
2020-06-28 00:38:06 -07:00
};