diff --git a/.eslintrc.js b/.eslintrc.js index cd5dc01457..8b9a7dea13 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -42,7 +42,8 @@ module.exports = { 'one-var': ["error", "never"], 'quotes': ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }], 'semi': ["error"], - 'space-before-blocks': ["error"] + 'space-before-blocks': ["error"], + "space-infix-ops": "error" }, overrides: [ { @@ -183,7 +184,9 @@ module.exports = { 'Uint32Array', 'Float32Array', 'Float64Array', - 'Reflect' + 'Reflect', + // Temporary while eslint-compat-plugin is buggy + 'document.querySelector' ] } } diff --git a/.gitignore b/.gitignore index 4adf9558bf..9bccd32fb8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,7 @@ node_modules # ide .idea -.vscode \ No newline at end of file +.vscode + +#log +yarn-error.log diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index a08012fb00..a6fd74e3b3 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -36,6 +36,7 @@ - [MrTimscampi](https://github.com/MrTimscampi) - [ConfusedPolarBear](https://github.com/ConfusedPolarBear) - [Sarab Singh](https://github.com/sarab97) + - [Andrei Oanca](https://github.com/OancaAndrei) # Emby Contributors diff --git a/README.md b/README.md index e2aac6b155..f06e461320 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Jellyfin Web is the frontend used for most of the clients available for end user ### Dependencies -- Yarn +- [Yarn 1.22.4](https://classic.yarnpkg.com/en/docs/install) - Gulp-cli ### Getting Started @@ -78,4 +78,4 @@ Jellyfin Web is the frontend used for most of the clients available for end user ```sh yarn build:standalone - ``` \ No newline at end of file + ``` diff --git a/babel.config.json b/babel.config.json deleted file mode 100644 index 1320b9a327..0000000000 --- a/babel.config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-env"] -} diff --git a/gulpfile.js b/gulpfile.js index 6c33167386..538497d4d0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -45,7 +45,7 @@ const options = { query: ['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'] }, copy: { - query: ['src/**/*.json', 'src/**/*.ico'] + query: ['src/**/*.json', 'src/**/*.ico', 'src/**/*.mp3'] }, injectBundle: { query: 'src/index.html' diff --git a/package.json b/package.json index 1720a94554..749c62d39c 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,10 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.9.6", - "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.8.6", - "autoprefixer": "^9.7.6", + "autoprefixer": "^9.8.0", "babel-loader": "^8.0.6", "browser-sync": "^2.26.7", "clean-webpack-plugin": "^3.0.0", @@ -25,7 +25,7 @@ "file-loader": "^6.0.0", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", - "gulp-cli": "^2.2.0", + "gulp-cli": "^2.2.1", "gulp-concat": "^2.6.1", "gulp-htmlmin": "^5.0.1", "gulp-if": "^3.0.0", @@ -42,42 +42,43 @@ "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", "style-loader": "^1.1.3", - "stylelint": "^13.1.0", + "stylelint": "^13.5.0", "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.0.0", "webpack": "^4.41.5", "webpack-cli": "^3.3.10", "webpack-concat-plugin": "^3.0.0", - "webpack-dev-server": "^3.10.3", + "webpack-dev-server": "^3.11.0", "webpack-merge": "^4.2.2", "webpack-stream": "^5.2.1" }, "dependencies": { "alameda": "^1.4.0", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", - "core-js": "^3.6.4", - "date-fns": "^2.12.0", + "core-js": "^3.6.5", + "date-fns": "^2.14.0", "document-register-element": "^1.14.3", "fast-text-encoding": "^1.0.1", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", "hls.js": "^0.13.1", - "howler": "^2.1.3", + "howler": "^2.2.0", "intersection-observer": "^0.10.0", + "jellyfin-apiclient": "^1.2.0", "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", - "jquery": "^3.5.0", + "jquery": "^3.5.1", "jstree": "^3.3.7", - "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-cordova", + "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", "page": "^1.11.6", "query-string": "^6.11.1", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", - "shaka-player": "^2.5.10", + "shaka-player": "^2.5.11", "sortablejs": "^1.10.2", - "swiper": "^5.3.7", + "swiper": "^5.4.1", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.0.0" }, @@ -90,18 +91,29 @@ "test": [ "src/components/autoFocuser.js", "src/components/cardbuilder/cardBuilder.js", - "src/scripts/dom.js", - "src/components/filedownloader.js", - "src/scripts/filesystem.js", - "src/scripts/keyboardnavigation.js", + "src/scripts/fileDownloader.js", + "src/components/images/imageLoader.js", + "src/components/lazyLoader/lazyLoaderIntersectionObserver.js", + "src/components/playback/mediasession.js", "src/components/sanatizefilename.js", "src/components/scrollManager.js", + "src/components/syncplay/playbackPermissionManager.js", + "src/components/syncplay/groupSelectionMenu.js", + "src/components/syncplay/timeSyncManager.js", + "src/components/syncplay/syncPlayManager.js", + "src/scripts/dfnshelper.js", + "src/scripts/dom.js", + "src/scripts/filesystem.js", + "src/scripts/imagehelper.js", + "src/scripts/inputManager.js", + "src/scripts/deleteHelper.js", + "src/components/actionSheet/actionSheet.js", + "src/components/playmenu.js", + "src/components/indicators/indicators.js", + "src/scripts/keyboardNavigation.js", "src/scripts/settings/appSettings.js", "src/scripts/settings/userSettings.js", - "src/scripts/settings/webSettings.js", - "src/scripts/dfnshelper.js", - "src/scripts/imagehelper.js", - "src/scripts/inputManager.js" + "src/scripts/settings/webSettings.js" ], "plugins": [ "@babel/plugin-transform-modules-amd" diff --git a/postcss.config.js b/postcss.config.js index 9ce2e16af6..bd1651fa19 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,11 +1,14 @@ +const packageConfig = require('./package.json'); const postcssPresetEnv = require('postcss-preset-env'); const autoprefixer = require('autoprefixer'); const cssnano = require('cssnano'); const config = () => ({ plugins: [ - postcssPresetEnv(), - autoprefixer(), + // Explicitly specify browserslist to override ones from node_modules + // For example, Swiper has it in its package.json + postcssPresetEnv({browsers: packageConfig.browserslist}), + autoprefixer({overrideBrowserslist: packageConfig.browserslist}), cssnano() ] }); diff --git a/scripts/scdup.py b/scripts/scdup.py index 468e31f14a..9b9ddf6466 100644 --- a/scripts/scdup.py +++ b/scripts/scdup.py @@ -15,6 +15,8 @@ print(langlst) input('press enter to continue') keysus = [] +missing = [] + with open(langdir + '/' + 'en-us.json') as en: langus = json.load(en) for key in langus: @@ -32,10 +34,19 @@ for lang in langlst: for key in langjson: if key in keysus: langjnew[key] = langjson[key] + elif key not in missing: + missing.append(key) f.seek(0) f.write(json.dumps(langjnew, indent=inde, sort_keys=False, ensure_ascii=False)) f.write('\n') f.truncate() f.close() +print(missing) +print('LENGTH: ' + str(len(missing))) +with open('missing.txt', 'w') as out: + for item in missing: + out.write(item + '\n') + out.close() + print('DONE') diff --git a/scripts/scgen.py b/scripts/scgen.py index 0d831426e6..12af27320a 100644 --- a/scripts/scgen.py +++ b/scripts/scgen.py @@ -34,7 +34,7 @@ for lang in langlst: print(dep) print('LENGTH: ' + str(len(dep))) -with open('scout.txt', 'w') as out: +with open('unused.txt', 'w') as out: for item in dep: out.write(item + '\n') out.close() diff --git a/src/addplugin.html b/src/addplugin.html index 30e42a2c5c..81c671d5bb 100644 --- a/src/addplugin.html +++ b/src/addplugin.html @@ -5,7 +5,7 @@