jellyfin-web/.eslintrc.js

193 lines
6.5 KiB
JavaScript
Raw Normal View History

2020-08-25 01:12:35 +00:00
const restrictedGlobals = require('confusing-browser-globals');
2020-04-25 12:06:56 +00:00
module.exports = {
root: true,
plugins: [
2020-07-31 08:01:51 +00:00
'@babel',
2020-04-25 12:06:56 +00: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: {
'array-callback-return': ['error'],
2020-05-30 21:15:06 +00:00
'block-spacing': ['error'],
2020-08-01 11:50:37 +00:00
'brace-style': ['error', '1tbs', { 'allowSingleLine': true }],
2020-05-30 21:15:06 +00: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-25 01:12:35 +00:00
'no-restricted-globals': ['error'].concat(restrictedGlobals),
2020-05-30 21:15:06 +00:00
'no-trailing-spaces': ['error'],
2020-08-01 02:07:00 +00:00
'@babel/no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }],
2020-05-30 21:15:06 +00:00
'one-var': ['error', 'never'],
2020-07-27 06:06:46 +00:00
'padded-blocks': ['error', 'never'],
2020-09-11 20:44:06 +00:00
'prefer-const': ['error', {'destructuring': 'all'}],
2020-05-30 21:15:06 +00:00
'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }],
2020-08-01 02:07:00 +00:00
'@babel/semi': ['error'],
2020-10-07 15:47:23 +00:00
'no-var': ['error'],
2020-05-30 21:15:06 +00:00
'space-before-blocks': ['error'],
2020-07-30 14:05:34 +00:00
'space-infix-ops': 'error',
'yoda': 'error'
2020-04-25 12:06:56 +00:00
},
overrides: [
{
files: [
'./src/**/*.js'
],
2020-07-31 08:01:51 +00:00
parser: '@babel/eslint-parser',
2020-04-25 12:06:56 +00: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',
// 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',
'PlaylistViewer': 'writable',
'UserParentalControlPage': 'writable',
'Windows': 'readonly'
},
rules: {
},
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 21:06:36 +00:00
'Object.entries',
2020-04-25 12:06:56 +00: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 15:21:26 +00:00
'Reflect',
// Temporary while eslint-compat-plugin is buggy
'document.querySelector'
2020-04-25 12:06:56 +00:00
]
}
}
]
2020-06-28 07:38:06 +00:00
};