diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index e6889afb1f..48f042d729 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -7,41 +7,70 @@ trigger: tags: include: - '*' +pr: + branches: + include: + - '*' jobs: - - job: main_build - displayName: 'Main Build' - - dependsOn: lint - condition: succeeded() + - job: build + displayName: 'Build' pool: vmImage: 'ubuntu-latest' + strategy: + matrix: + Development: + BuildConfiguration: development + Production: + BuildConfiguration: production + Standalone: + BuildConfiguration: standalone + maxParallel: 3 + steps: - task: NodeTool@0 - displayName: 'Install Node.js' + displayName: 'Install Node' inputs: versionSpec: '10.x' - - script: | - yarn install - displayName: 'Install dependencies' + - task: Cache@2 + displayName: 'Check Cache' + inputs: + key: 'yarn | yarn.lock' + path: 'node_modules' + cacheHitVar: CACHE_RESTORED - - script: | - test -d dist - displayName: 'Check dist directory' + - script: 'yarn install --frozen-lockfile' + displayName: 'Install Dependencies' + condition: ne(variables.CACHE_RESTORED, 'true') - - script: | - yarn pack --filename jellyfin-web.tgz - displayName: 'Build package' + - script: 'yarn build:development' + displayName: 'Build Development' + condition: eq(variables['BuildConfiguration'], 'development') + + - script: 'yarn build:production' + displayName: 'Build Bundle' + condition: eq(variables['BuildConfiguration'], 'production') + + - script: 'yarn build:standalone' + displayName: 'Build Standalone' + condition: eq(variables['BuildConfiguration'], 'standalone') + + - script: 'test -d dist' + displayName: 'Check Build' + + - script: 'mv dist jellyfin-web' + displayName: 'Rename Directory' + condition: succeeded() - task: PublishPipelineArtifact@1 - displayName: 'Publish package' + displayName: 'Publish Release' condition: succeeded() inputs: - targetPath: '$(Build.SourcesDirectory)/jellyfin-web.tgz' - artifactName: 'jellyfin-web' + targetPath: '$(Build.SourcesDirectory)/jellyfin-web' + artifactName: 'jellyfin-web-$(BuildConfiguration)' - job: lint displayName: 'Lint' @@ -51,14 +80,23 @@ jobs: steps: - task: NodeTool@0 - displayName: 'Install Node.js' + displayName: 'Install Node' inputs: versionSpec: '10.x' - - script: | - yarn install - displayName: 'Install dependencies' + - task: Cache@2 + displayName: 'Check Cache' + inputs: + key: 'yarn | yarn.lock' + path: 'node_modules' + cacheHitVar: CACHE_RESTORED - - script: | - yarn run lint + - script: 'yarn install --frozen-lockfile' + displayName: 'Install Dependencies' + condition: ne(variables.CACHE_RESTORED, 'true') + + - script: 'yarn run lint' displayName: 'Run ESLint' + + - script: 'yarn run stylelint' + displayName: 'Run Stylelint' diff --git a/.eslintrc.yml b/.eslintrc.yml index b215e15800..4bc22fc1d4 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,25 +3,69 @@ env: browser: true amd: true +globals: + # New browser globals + DataView: readonly + MediaMetadata: readonly + Promise: readonly + # Deprecated browser globals + DocumentTouch: readonly + # Tizen globals + tizen: readonly + webapis: readonly + # WebOS globals + webOS: readonly + # Dependency globals + $: readonly + jQuery: readonly + queryString: readonly + requirejs: readonly + # Jellyfin globals + ApiClient: writable + AppInfo: writable + chrome: writable + ConnectionManager: writable + DlnaProfilePage: writable + Dashboard: writable + DashboardPage: writable + Emby: readonly + Events: writable + getParameterByName: writable + getWindowLocationSearch: writable + Globalize: writable + Hls: writable + humaneDate: writable + humaneElapsed: writable + LibraryMenu: writable + LinkParser: writable + LiveTvHelpers: writable + MetadataEditor: writable + pageClassOn: writable + pageIdOn: writable + PlaylistViewer: writable + UserParentalControlPage: writable + Windows: readonly + +extends: + - eslint:recommended + rules: block-spacing: ["error"] brace-style: ["error"] comma-dangle: ["error", "never"] comma-spacing: ["error"] - eol-last: ["off"] + eol-last: ["error"] indent: ["error", 4, { "SwitchCase": 1 }] keyword-spacing: ["error"] - line-comment-position: ["off"] max-statements-per-line: ["error"] - no-empty: ["error"] - no-extra-semi: ["error"] no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] no-trailing-spaces: ["error"] - no-void: ["off"] one-var: ["error", "never"] - padding-line-between-statements: ["off"] - semi: ["off"] + semi: ["warn"] space-before-blocks: ["error"] - yoda: ["off"] + # TODO: Fix warnings and remove these rules + no-redeclare: ["warn"] + no-unused-vars: ["warn"] + no-useless-escape: ["warn"] diff --git a/.gitignore b/.gitignore index 2e12adf220..10b2d24f42 100644 --- a/.gitignore +++ b/.gitignore @@ -575,4 +575,4 @@ healthchecksdb # End of https://www.gitignore.io/api/node,rider,macos,linux,windows,visualstudio,visualstudiocode # dist for webpack output -dist \ No newline at end of file +dist diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000000..a13acf428d --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,143 @@ +{ + "plugins": [ + "stylelint-no-browser-hacks/lib", + ], + "rules": { + "at-rule-empty-line-before": [ "always", { + except: [ + "blockless-after-same-name-blockless", + "first-nested", + ], + ignore: ["after-comment"], + } ], + "at-rule-name-case": "lower", + "at-rule-name-space-after": "always-single-line", + "at-rule-no-unknown": true, + "at-rule-semicolon-newline-after": "always", + "block-closing-brace-empty-line-before": "never", + "block-closing-brace-newline-after": "always", + "block-closing-brace-newline-before": "always-multi-line", + "block-closing-brace-space-before": "always-single-line", + "block-no-empty": true, + "block-opening-brace-newline-after": "always-multi-line", + "block-opening-brace-space-after": "always-single-line", + "block-opening-brace-space-before": "always", + "color-hex-case": "lower", + "color-hex-length": "short", + "color-no-invalid-hex": true, + "comment-empty-line-before": [ "always", { + except: ["first-nested"], + ignore: ["stylelint-commands"], + } ], + "comment-no-empty": true, + "comment-whitespace-inside": "always", + "custom-property-empty-line-before": [ "always", { + except: [ + "after-custom-property", + "first-nested", + ], + ignore: [ + "after-comment", + "inside-single-line-block", + ], + } ], + "declaration-bang-space-after": "never", + "declaration-bang-space-before": "always", + "declaration-block-no-duplicate-properties": [ + true, + { + ignore: ["consecutive-duplicates-with-different-values"] + } + ], + "declaration-block-no-shorthand-property-overrides": true, + "declaration-block-semicolon-newline-after": "always-multi-line", + "declaration-block-semicolon-space-after": "always-single-line", + "declaration-block-semicolon-space-before": "never", + "declaration-block-single-line-max-declarations": 1, + "declaration-block-trailing-semicolon": "always", + "declaration-colon-newline-after": "always-multi-line", + "declaration-colon-space-after": "always-single-line", + "declaration-colon-space-before": "never", + "font-family-no-duplicate-names": true, + "function-calc-no-invalid": true, + "function-calc-no-unspaced-operator": true, + "function-comma-newline-after": "always-multi-line", + "function-comma-space-after": "always-single-line", + "function-comma-space-before": "never", + "function-linear-gradient-no-nonstandard-direction": true, + "function-max-empty-lines": 0, + "function-name-case": "lower", + "function-parentheses-newline-inside": "always-multi-line", + "function-parentheses-space-inside": "never-single-line", + "function-whitespace-after": "always", + "indentation": 4, + "keyframe-declaration-no-important": true, + "length-zero-no-unit": true, + "max-empty-lines": 1, + "media-feature-colon-space-after": "always", + "media-feature-colon-space-before": "never", + "media-feature-name-case": "lower", + "media-feature-name-no-unknown": true, + "media-feature-parentheses-space-inside": "never", + "media-feature-range-operator-space-after": "always", + "media-feature-range-operator-space-before": "always", + "media-query-list-comma-newline-after": "always-multi-line", + "media-query-list-comma-space-after": "always-single-line", + "media-query-list-comma-space-before": "never", + "no-descending-specificity": true, + "no-duplicate-at-import-rules": true, + "no-duplicate-selectors": true, + "no-empty-source": true, + "no-eol-whitespace": true, + "no-extra-semicolons": true, + "no-invalid-double-slash-comments": true, + "no-missing-end-of-source-newline": true, + "number-leading-zero": "always", + "number-no-trailing-zeros": true, + "plugin/no-browser-hacks": true, + "property-case": "lower", + "property-no-unknown": [ + true, + { + "ignoreProperties": [ + "user-drag" + ] + } + ], + "rule-empty-line-before": [ "always-multi-line", { + except: ["first-nested"], + ignore: ["after-comment"], + } ], + "selector-attribute-brackets-space-inside": "never", + "selector-attribute-operator-space-after": "never", + "selector-attribute-operator-space-before": "never", + "selector-combinator-space-after": "always", + "selector-combinator-space-before": "always", + "selector-descendant-combinator-no-non-space": true, + "selector-list-comma-newline-after": "always", + "selector-list-comma-space-before": "never", + "selector-max-empty-lines": 0, + "selector-pseudo-class-case": "lower", + "selector-pseudo-class-no-unknown": true, + "selector-pseudo-class-parentheses-space-inside": "never", + "selector-pseudo-element-case": "lower", + "selector-pseudo-element-colon-notation": "double", + "selector-pseudo-element-no-unknown": [ + true, + { + "ignorePseudoElements": [ + "cue" + ] + } + ], + "selector-type-case": "lower", + "selector-type-no-unknown": true, + "string-no-newline": true, + "unit-case": "lower", + "unit-no-unknown": true, + "value-list-comma-newline-after": "always-multi-line", + "value-list-comma-space-after": "always-single-line", + "value-list-comma-space-before": "never", + "value-list-max-empty-lines": 0, + } +} diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index e0855c1e09..aa3ec707e3 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -32,6 +32,8 @@ - [bilde2910](https://github.com/bilde2910) - [Daniel Hartung](https://github.com/dhartung) - [Ryan Hartzell](https://github.com/ryan-hartzell) + - [Thibault Nocchi](https://github.com/ThibaultNocchi) + - [MrTimscampi](https://github.com/MrTimscampi) # Emby Contributors diff --git a/README.md b/README.md index 6a80b0b09c..e2aac6b155 100644 --- a/README.md +++ b/README.md @@ -45,20 +45,37 @@ Jellyfin Web is the frontend used for most of the clients available for end user ### Dependencies - Yarn +- Gulp-cli ### Getting Started 1. Clone or download this repository. + ```sh git clone https://github.com/jellyfin/jellyfin-web.git cd jellyfin-web ``` + 2. Install build dependencies in the project directory. + ```sh yarn install ``` 3. Run the web client with webpack for local development. + ```sh yarn serve ``` + +4. Build the client with sourcemaps. + + ```sh + yarn build:development + ``` + + You can build a nginx compatible version as well. + + ```sh + yarn build:standalone + ``` \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000000..ca6cf36dd2 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,123 @@ +'use strict'; + +const { src, dest, series, parallel, watch } = require('gulp'); +const browserSync = require('browser-sync').create(); +const del = require('del'); +const babel = require('gulp-babel'); +const concat = require('gulp-concat'); +const terser = require('gulp-terser'); +const htmlmin = require('gulp-htmlmin'); +const imagemin = require('gulp-imagemin'); +const sourcemaps = require('gulp-sourcemaps'); +const mode = require('gulp-mode')({ + modes: ["development", "production"], + default: "development", + verbose: false +}); +const stream = require('webpack-stream'); +const inject = require('gulp-inject'); +const postcss = require('gulp-postcss'); +const sass = require('gulp-sass'); + +sass.compiler = require('node-sass') + + +if (mode.production()) { + var config = require('./webpack.prod.js'); +} else { + var config = require('./webpack.dev.js'); +} + +function serve() { + browserSync.init({ + server: { + baseDir: "./dist" + }, + port: 8080 + }); + + watch(['src/**/*.js', '!src/bundle.js'], javascript); + watch('src/bundle.js', webpack); + watch('src/**/*.css', css); + watch(['src/**/*.html', '!src/index.html'], html); + watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); + watch(['src/**/*.json', 'src/**/*.ico'], copy); + watch('src/index.html', injectBundle); + watch(['src/standalone.js', 'src/scripts/apploader.js'], standalone); +} + +function standalone() { + return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' }) + .pipe(concat('scripts/apploader.js')) + .pipe(dest('dist/')); +} + +function clean() { + return del(['dist/']); +} + +function javascript() { + return src(['src/**/*.js', '!src/bundle.js'], { base: './src/' }) + .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) + .pipe(babel({ + presets: [ + ['@babel/preset-env'] + ] + })) + .pipe(terser({ + keep_fnames: true, + mangle: false + })) + .pipe(mode.development(sourcemaps.write('.'))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function webpack() { + return stream(config) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function css() { + return src(['src/**/*.css', 'src/**/*.scss'], { base: './src/' }) + .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) + .pipe(sass().on('error', sass.logError)) + .pipe(postcss()) + .pipe(mode.development(sourcemaps.write('.'))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function html() { + return src(['src/**/*.html', '!src/index.html'], { base: './src/' }) + .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function images() { + return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], { base: './src/' }) + .pipe(mode.production(imagemin())) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function copy() { + return src(['src/**/*.json', 'src/**/*.ico'], { base: './src/' }) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function injectBundle() { + return src('src/index.html', { base: './src/' }) + .pipe(inject( + src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { relative: true } + )) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) +exports.standalone = series(exports.default, standalone) +exports.serve = series(exports.standalone, serve) diff --git a/package.json b/package.json index fbf1163d34..6d07f9a6fa 100644 --- a/package.json +++ b/package.json @@ -5,38 +5,74 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { - "autoprefixer": "^9.7.3", + "@babel/core": "^7.8.6", + "@babel/polyfill": "^7.8.7", + "@babel/preset-env": "^7.8.6", + "autoprefixer": "^9.7.4", + "babel-loader": "^8.0.6", + "browser-sync": "^2.26.7", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^2.1.0", - "eslint": "^5.16.0", - "file-loader": "^3.0.1", + "css-loader": "^3.4.2", + "cssnano": "^4.1.10", + "del": "^5.1.0", + "eslint": "^6.8.0", + "file-loader": "^5.0.2", + "gulp": "^4.0.2", + "gulp-babel": "^8.0.0", + "gulp-cli": "^2.2.0", + "gulp-concat": "^2.6.1", + "gulp-htmlmin": "^5.0.1", + "gulp-imagemin": "^7.1.0", + "gulp-inject": "^5.0.5", + "gulp-mode": "^1.0.2", + "gulp-postcss": "^8.0.0", + "gulp-sass": "^4.0.2", + "gulp-sourcemaps": "^2.6.5", + "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", + "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", - "style-loader": "^0.23.1", - "webpack": "^4.41.0", - "webpack-cli": "^3.3.9", + "postcss-preset-env": "^6.7.0", + "style-loader": "^1.1.3", + "stylelint": "^13.1.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.8.1", - "webpack-merge": "^4.2.2" + "webpack-dev-server": "^3.10.3", + "webpack-merge": "^4.2.2", + "webpack-stream": "^5.2.1" }, "dependencies": { - "alameda": "^1.3.0", - "document-register-element": "^0.5.4", + "alameda": "^1.4.0", + "core-js": "^3.6.4", + "document-register-element": "^1.14.3", "flv.js": "^1.5.0", - "hls.js": "^0.12.4", - "howler": "^2.1.2", + "hls.js": "^0.13.1", + "howler": "^2.1.3", + "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.4.1", "jstree": "^3.3.7", + "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus", "libjass": "^0.11.0", + "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", - "requirejs": "^2.3.5", + "page": "^1.11.5", + "query-string": "^6.11.1", "resize-observer-polyfill": "^1.5.1", - "shaka-player": "^2.5.5", - "sortablejs": "^1.9.0", - "swiper": "^3.4.2", + "shaka-player": "^2.5.9", + "sortablejs": "^1.10.2", + "swiper": "^5.3.1", "webcomponents.js": "^0.7.24", - "whatwg-fetch": "^1.1.1" + "whatwg-fetch": "^3.0.0" + }, + "babel": { + "presets": [ + "@babel/preset-env" + ] }, "browserslist": [ "last 2 Firefox versions", @@ -45,18 +81,21 @@ "last 2 Safari versions", "last 2 iOS versions", "last 2 Edge versions", + "Chrome 27", "Chrome 38", "Chrome 47", "Chrome 53", "Chrome 56", "Chrome 63", - "Explorer 11", "Firefox ESR" ], "scripts": { - "serve": "webpack-dev-server --config webpack.dev.js --open", - "build": "webpack --config webpack.prod.js", + "serve": "gulp serve", + "prepare": "gulp --production", + "build:development": "gulp --development", + "build:production": "gulp --production", + "build:standalone": "gulp standalone --development", "lint": "eslint \"src\"", - "prepare": "webpack --config webpack.prod.js" + "stylelint": "stylelint \"src/**/*.css\"" } } diff --git a/postcss.config.js b/postcss.config.js index a26de7e9f1..23159fd295 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,5 +1,11 @@ -module.exports = { - plugins: [ - require('autoprefixer') - ] -} +const postcssPresetEnv = require('postcss-preset-env'); +const cssnano = require('cssnano'); + +const config = () => ({ + plugins: [ + postcssPresetEnv(), + cssnano() + ] +}); + +module.exports = config diff --git a/scripts/scdup.py b/scripts/scdup.py new file mode 100644 index 0000000000..468e31f14a --- /dev/null +++ b/scripts/scdup.py @@ -0,0 +1,41 @@ +import sys +import os +import json + +# load every key in the source language +# check the keys in all translations +# remove keys that only exist in translations + +cwd = os.getcwd() +langdir = cwd + '/../src/strings' +langlst = os.listdir(langdir) + +langlst.remove('en-us.json') +print(langlst) +input('press enter to continue') + +keysus = [] +with open(langdir + '/' + 'en-us.json') as en: + langus = json.load(en) + for key in langus: + keysus.append(key) + +for lang in langlst: + with open(langdir + '/' + lang, 'r') as f: + inde = 2 + if '\n \"' in f.read(): + inde = 4 + f.close() + with open(langdir + '/' + lang, 'r+') as f: + langjson = json.load(f) + langjnew = {} + for key in langjson: + if key in keysus: + langjnew[key] = langjson[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('DONE') diff --git a/scripts/scgen.py b/scripts/scgen.py new file mode 100644 index 0000000000..0d831426e6 --- /dev/null +++ b/scripts/scgen.py @@ -0,0 +1,40 @@ +import os +import subprocess +import json + +# load all keys in the source language +# check entire codebase for usages +# print unused keys to a text file +# TODO: dynamic string usages cause false positives + +cwd = os.getcwd() +langdir = cwd + '/../src/strings' +langlst = [] +langlst.append('en-us.json') + +# unused keys +dep = [] + +def grep(key): + command = 'grep -r -E "(\(\\\"|\(\'|\{)%s(\\\"|\'|\})" --include=\*.{js,html} --exclude-dir=../src/strings ../src' % key + p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + output = p.stdout.readlines() + if output: + print('DONE: ' + key) + return True + print('UNUSED: ' + key) + dep.append(key) + return False + +for lang in langlst: + with open(langdir + '/' + lang) as f: + langjson = json.load(f) + for key in langjson: + grep(key) + +print(dep) +print('LENGTH: ' + str(len(dep))) +with open('scout.txt', 'w') as out: + for item in dep: + out.write(item + '\n') + out.close() diff --git a/scripts/scrm.py b/scripts/scrm.py new file mode 100644 index 0000000000..9bd5bc2a48 --- /dev/null +++ b/scripts/scrm.py @@ -0,0 +1,34 @@ +import sys +import os +import json + +# load text file containing unused keys +# remove the keys from all string files + +cwd = os.getcwd() +langdir = cwd + '/../src/strings' +langlst = os.listdir(langdir) + +keys = [] + +with open('scout.txt', 'r') as f: + for line in f: + keys.append(line.strip('\n')) + +for lang in langlst: + with open(langdir + '/' + lang, 'r') as f: + inde = 2 + if '\n \"' in f.read(): + inde = 4 + f.close() + with open(langdir + '/' + lang, 'r+') as f: + langjson = json.load(f) + for key in keys: + langjson.pop(key, None) + f.seek(0) + f.write(json.dumps(langjson, indent=inde, sort_keys=False, ensure_ascii=False)) + f.write('\n') + f.truncate() + f.close() + +print('DONE') diff --git a/src/addplugin.html b/src/addplugin.html index 309f0f96c4..83640033bb 100644 --- a/src/addplugin.html +++ b/src/addplugin.html @@ -1,10 +1,7 @@
-
-
-

@@ -13,9 +10,7 @@

-

-
@@ -27,12 +22,12 @@
-

+

${ServerRestartNeededAfterPluginInstall}
-

+

diff --git a/src/apikeys.html b/src/apikeys.html index 43cfae5b13..6f766ae6c9 100644 --- a/src/apikeys.html +++ b/src/apikeys.html @@ -2,11 +2,9 @@
-

- ${HeaderApiKeys} -

+

${HeaderApiKeys}

${HeaderApiKeysHelp}

@@ -24,4 +22,4 @@
-
\ No newline at end of file +
diff --git a/src/css/clearbutton.css b/src/assets/css/clearbutton.css similarity index 99% rename from src/css/clearbutton.css rename to src/assets/css/clearbutton.css index 2d3f8d6800..9e6c105258 100644 --- a/src/css/clearbutton.css +++ b/src/assets/css/clearbutton.css @@ -9,4 +9,4 @@ vertical-align: middle; font-family: inherit; font-size: inherit; -} \ No newline at end of file +} diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css new file mode 100644 index 0000000000..8c8a9ca7f1 --- /dev/null +++ b/src/assets/css/dashboard.css @@ -0,0 +1,462 @@ +.dashboardColumn, +.dashboardSections { + flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} + +.dashboardFooter { + margin-top: 3.5em; + text-align: center; +} + +.dashboardFooter a { + margin: 0 0.7em; +} + +progress { + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + margin: 0; + background: #ccc !important; +} + +progress[role]::after { + background-image: none; +} + +progress::-webkit-progress-bar { + background: #ccc; +} + +progress::-moz-progress-bar { + background-color: #00a4dc; +} + +progress::-webkit-progress-value { + background-color: #00a4dc; +} + +progress[aria-valuenow]::before { + border-radius: 0.4em; + background-color: #00a4dc; +} + +.localnav { + margin-bottom: 2.2em !important; +} + +@media all and (min-width: 50em) { + .type-interior > div[data-role=content], + .type-interior > .ui-panel-content-wrap > div[data-role=content] { + padding-right: 0; + padding-left: 0; + padding-top: 0; + overflow: hidden; + } +} + +.dashboardDocument .dashboardEntryHeaderButton, +.dashboardDocument .lnkManageServer { + display: none !important; +} + +.adminDrawerLogo { + padding: 1.5em 1em 1.2em; + border-bottom: 1px solid #e0e0e0; + margin-bottom: 1em; + display: block; +} + +.adminDrawerLogo img { + height: 4em; +} + +a[data-role=button] { + background: #292929 !important; + background-clip: padding-box; + -webkit-font-smoothing: antialiased; + -webkit-user-select: none; + -webkit-background-clip: padding-box; + cursor: pointer !important; + font-family: inherit !important; + font-weight: 500 !important; + margin: 0 0.25em !important; + display: inline-block; + padding: 0.8em 1em; + text-align: center; + text-decoration: none !important; +} + +div[data-role=controlgroup] a[data-role=button] { + display: inline-block !important; + margin: 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + -webkit-border-radius: 0; + border-radius: 0; +} + +div[data-role=controlgroup] a[data-role=button]:first-child { + -webkit-border-bottom-left-radius: 0.3125em; + border-bottom-left-radius: 0.3125em; + -webkit-border-top-left-radius: 0.3125em; + border-top-left-radius: 0.3125em; +} + +div[data-role=controlgroup] a[data-role=button]:last-child { + -webkit-border-bottom-right-radius: 0.3125em; + border-bottom-right-radius: 0.3125em; + -webkit-border-top-right-radius: 0.3125em; + border-top-right-radius: 0.3125em; +} + +div[data-role=controlgroup] a[data-role=button] + a[data-role=button] { + border-left-width: 0 !important; + margin: 0 0 0 -0.4em !important; +} + +div[data-role=controlgroup] a.ui-btn-active { + background: #00a4dc !important; + color: #292929 !important; +} + +.sessionAppInfo img { + max-width: 40px; + max-height: 40px; + margin-right: 8px; +} + +.appLinks img { + height: 36px; +} + +.wizardContent h2 img { + height: 2.5em; + vertical-align: middle; + margin-right: 0.5em; + position: relative; + top: -0.3em; +} + +.header .imageLink { + display: inline-block; +} + +.header .imageLink img { + height: 2.1em; + vertical-align: middle; +} + +.content-primary { + padding-top: 6em; + padding-right: 1em; + padding-left: 1em; +} + +.withTabs .content-primary { + padding-top: 9em !important; +} + +@media all and (min-width: 40em) { + .content-primary { + padding-top: 7em; + } + + .withTabs .content-primary { + padding-top: 10em !important; + } +} + +@media all and (min-width: 84em) { + .withTabs .content-primary { + padding-top: 7em !important; + } +} + +.content-primary ul:first-child { + margin-top: 0; +} + +.dashboardSections { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: column; + flex-direction: column; +} + +.dashboardColumn { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-flex-shrink: 0; + flex-shrink: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; +} + +.sessionNowPlayingContent { + -webkit-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + background-position: center center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.activeSession:not(.playingSession) .sessionNowPlayingContent { + display: none; +} + +.dashboardSection { + -webkit-flex-shrink: 0; + flex-shrink: 0; + margin: 0 0 2em; +} + +.dashboardSection h3 { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.activeRecordingItems > .card { + width: 50%; +} + +@media all and (min-width: 70em) { + .dashboardSections { + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + flex-direction: row; + } + + .dashboardColumn-2-60 { + width: 46%; + } + + .dashboardColumn-2-40 { + width: 27%; + } + + .dashboardSection { + padding: 0 1.5em; + } + + .activeRecordingItems > .card { + width: 25%; + } +} + +.wizardContent { + max-width: 62em; + padding: 0.5em 2em 1em; + margin: 0 auto; + background: #fff; +} + +.wizardNavigation { + text-align: right; +} + +.wizardContent form { + max-width: 100%; +} + +.scheduledTaskPaperIconItem { + outline: 0 !important; +} + +.activeSession { + width: 100% !important; +} + +.activitylogUserPhoto { + height: 1.71em; + width: 1.71em; + border-radius: 100%; + margin-right: 0.5em; + background-size: cover; + background-repeat: no-repeat; + background-position: center; +} + +@media all and (min-width: 40em) { + .activeSession { + width: 100% !important; + } +} + +@media all and (min-width: 50em) { + .activeSession { + width: 50% !important; + } +} + +.sessionCardFooter { + padding-top: 0.5em !important; + padding-bottom: 1em !important; + border-top: 1px solid #eee; + text-align: center; + position: relative; +} + +.sessionAppInfo { + padding: 0.5em; + overflow: hidden; +} + +.sessionCardButtons { + min-height: 2.7em; +} + +.sessionCardButton { + margin: 0; +} + +.sessionNowPlayingInnerContent { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + font-weight: 400; +} + +.sessionNowPlayingContent-withbackground + .sessionNowPlayingInnerContent { + color: #fff !important; + background: rgba(0, 0, 0, 0.7); +} + +.sessionAppName { + vertical-align: top; + max-width: 200px; +} + +.sessionNowPlayingDetails { + display: flex; + position: absolute; + bottom: 0; + width: 100%; +} + +.sessionNowPlayingInfo { + flex-grow: 1; + text-overflow: ellipsis; + padding: 0.8em 0.5em; +} + +.sessionNowPlayingTime { + flex-shrink: 0; + align-self: flex-end; + text-overflow: ellipsis; + padding: 0.8em 0.5em; +} + +.sessionNowPlayingStreamInfo { + white-space: nowrap; +} + +.playbackProgress, +.transcodingProgress { + margin: 0; + width: 100%; + background: transparent !important; +} + +.activeSession .playbackProgress, +.activeSession .transcodingProgress { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 6px; + width: 100%; +} + +.playbackProgress > div { + z-index: 1000; + background-color: #00a4dc; +} + +.transcodingProgress > div { + background-color: #dd4919; +} + +@media all and (max-width: 34.375em) { + .sessionAppName { + max-width: 160px; + } +} + +@media all and (max-width: 31.25em) { + .sessionAppName { + max-width: 150px; + } +} + +.disabledUser { + -webkit-filter: grayscale(100%); + filter: grayscale(100%); +} + +.disabledUserBanner { + margin: 0 0 2em; +} + +.appLinks a { + text-decoration: none !important; +} + +.appLinks a + a { + margin-left: 5px; +} + +@-webkit-keyframes rotating { + from { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes rotating { + from { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.rotatingCircle { + -webkit-animation: rotating 2s linear infinite; + animation: rotating 2s linear infinite; +} + +.pluginPreviewImg { + -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); + box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); +} + +.ui-bar-a { + text-align: center; + padding: 0 20px; +} diff --git a/src/css/detailtable.css b/src/assets/css/detailtable.css similarity index 79% rename from src/css/detailtable.css rename to src/assets/css/detailtable.css index 33f0608365..4e2e16511c 100644 --- a/src/css/detailtable.css +++ b/src/assets/css/detailtable.css @@ -1,7 +1,7 @@ .detailTableBodyCell, .detailTableHeaderCell { border-spacing: 0; - padding: .4em + padding: 0.4em; } .detailTable { @@ -9,11 +9,11 @@ border-spacing: 0; text-align: left; width: 100%; - margin: 0 auto + margin: 0 auto; } .detailTableHeaderCell { font-weight: 700; text-align: left; - vertical-align: top -} \ No newline at end of file + vertical-align: top; +} diff --git a/src/css/flexstyles.css b/src/assets/css/flexstyles.css similarity index 99% rename from src/css/flexstyles.css rename to src/assets/css/flexstyles.css index b35e25d57b..a5a479f2f5 100644 --- a/src/css/flexstyles.css +++ b/src/assets/css/flexstyles.css @@ -44,4 +44,4 @@ .align-self-flex-end { align-self: flex-end; -} \ No newline at end of file +} diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css new file mode 100644 index 0000000000..cb0da0f80f --- /dev/null +++ b/src/assets/css/fonts.css @@ -0,0 +1,37 @@ +html { + font-family: "Noto Sans", sans-serif; + font-size: 93%; + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +h1, +h2, +h3 { + font-family: "Noto Sans", sans-serif; +} + +h1 { + font-weight: 400; + font-size: 1.8em; +} + +h2 { + font-weight: 400; + font-size: 1.5em; +} + +h3 { + font-weight: 400; + font-size: 1.17em; +} + +.layout-tv { + font-size: 130%; +} + +.layout-mobile { + font-size: 90%; +} diff --git a/src/css/fonts.sized.css b/src/assets/css/fonts.sized.css similarity index 86% rename from src/css/fonts.sized.css rename to src/assets/css/fonts.sized.css index 9cdd666109..f60a94f236 100644 --- a/src/css/fonts.sized.css +++ b/src/assets/css/fonts.sized.css @@ -1,5 +1,5 @@ h1 { - font-weight: 500; + font-weight: 400; font-size: 1.8em; } @@ -8,12 +8,12 @@ h1 { } h2 { - font-weight: 500; + font-weight: 400; font-size: 1.5em; } h3 { - font-weight: 500; + font-weight: 400; font-size: 1.17em; } diff --git a/src/assets/css/ios.css b/src/assets/css/ios.css new file mode 100644 index 0000000000..57de0c5fdd --- /dev/null +++ b/src/assets/css/ios.css @@ -0,0 +1,8 @@ +html { + font-size: 82% !important; +} + +.formDialogFooter { + position: static !important; + margin: 0 -1em !important; +} diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css new file mode 100644 index 0000000000..67afef2376 --- /dev/null +++ b/src/assets/css/librarybrowser.css @@ -0,0 +1,1124 @@ +.headerUserImage, +.navMenuOption, +.pageTitle { + vertical-align: middle; +} + +.detailButton, +.itemLinks, +.listPaging, +.sectionTabs, +.viewSettings { + text-align: center; +} + +.headerSelectedPlayer, +.itemMiscInfo, +.navMenuOptionText { + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; +} + +.libraryPage { + padding-top: 7em !important; +} + +.itemDetailPage { + padding-top: 0 !important; +} + +.standalonePage { + padding-top: 4.5em !important; +} + +.wizardPage { + padding-top: 7em !important; +} + +.libraryPage:not(.noSecondaryNavPage) { + padding-top: 7.5em !important; +} + +.absolutePageTabContent { + position: absolute; + left: 0; + right: 0; + bottom: 0; + z-index: 1; + margin: 0 !important; + top: 6.9em !important; + -webkit-transition: -webkit-transform 0.2s ease-out; + -o-transition: transform 0.2s ease-out; + transition: transform 0.2s ease-out; +} + +.pageTabContent:not(.is-active) { + display: none !important; +} + +.headerUserImage { + -webkit-background-size: contain; + background-size: contain; + background-repeat: no-repeat; + background-position: center center; + -webkit-border-radius: 100em; + border-radius: 100em; + display: inline-block; +} + +.headerUserButtonRound div { + -webkit-border-radius: 100em; + border-radius: 100em; + background-size: cover; + background-repeat: no-repeat; + background-position: center center; +} + +.headerButton { + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.hideMainDrawer .mainDrawerButton { + display: none; +} + +.headerLeft { + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; + overflow: hidden; + justify-content: flex-start; +} + +.headerRight { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; +} + +.noHeaderRight .headerRight, +.noHomeButtonHeader .headerHomeButton { + display: none !important; +} + +.pageTitle { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: inline-flex; + margin: 0.3em 0 0 0.5em; + height: 1.7em; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-flex-shrink: 1; + flex-shrink: 1; +} + +.pageTitleWithDefaultLogo { + margin-top: 0; +} + +.headerLeft, +.skinHeader { + display: -webkit-box; + display: -webkit-flex; +} + +.detailButton, +.skinHeader { + flex-direction: column; + -webkit-flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} + +.pageTitleWithLogo { + background-position: left center; + -webkit-background-size: contain; + background-size: contain; + background-repeat: no-repeat; + width: 13.2em; +} + +.skinHeader { + position: fixed; + right: 0; + left: 0; + z-index: 999; + top: 0; + border: 0; + display: flex; + flex-direction: column; + contain: layout style paint; +} + +.hiddenViewMenuBar .skinHeader { + display: none; +} + +.headerTop { + padding: 0.54em 0; +} + +.sectionTabs { + width: 100%; +} + +.selectedMediaFolder { + background-color: #f2f2f2 !important; +} + +.navMenuOption { + display: -webkit-box !important; + display: -webkit-flex !important; + display: flex !important; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + text-decoration: none; + color: inherit; + padding: 0.9em 0 0.9em 2.4em !important; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; + font-weight: 400 !important; + margin: 0 !important; + -webkit-border-radius: 0 !important; + border-radius: 0 !important; +} + +.navMenuOptionIcon { + margin-right: 1.2em; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.navMenuOptionText { + white-space: nowrap; + margin-top: 0.25em; +} + +.sidebarHeader { + padding-left: 1.2em; + margin: 1em 0 0.5em; +} + +.dashboardDocument .skinBody { + -webkit-transition: left ease-in-out 0.3s, padding ease-in-out 0.3s; + -o-transition: left ease-in-out 0.3s, padding ease-in-out 0.3s; + transition: left ease-in-out 0.3s, padding ease-in-out 0.3s; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.centerMessage { + margin: auto; + width: 30%; + padding: 5em 0; + text-align: center; +} + +.layout-desktop .searchTabButton, +.layout-mobile .searchTabButton, +.layout-tv .headerSearchButton { + display: none !important; +} + +.mainDrawer-scrollContainer { + padding-bottom: 10vh; +} + +@media all and (min-width: 40em) { + .dashboardDocument .adminDrawerLogo, + .dashboardDocument .mainDrawerButton { + display: none !important; + } + + .dashboardDocument .mainDrawer { + z-index: inherit !important; + left: 0 !important; + top: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + width: 20.205em !important; + font-size: 94%; + } + + .dashboardDocument .mainDrawer-scrollContainer { + margin-top: 5em !important; + } + + .dashboardDocument .skinBody { + left: 20em; + } +} + +@media all and (max-width: 60em) { + .libraryDocument .mainDrawerButton { + display: none; + } +} + +@media all and (max-width: 84em) { + .withSectionTabs .headerTop { + padding-bottom: 0.55em; + } + + .sectionTabs { + font-size: 83.5%; + } +} + +@media all and (min-width: 84em) { + .headerTop { + padding: 0.8em 0.8em; + } + + .headerTabs { + -webkit-align-self: center; + align-self: center; + width: auto; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + margin-top: -4.3em; + } + + .libraryPage:not(.noSecondaryNavPage) { + padding-top: 4.6em !important; + } + + .pageWithAbsoluteTabs:not(.noSecondaryNavPage) { + padding-top: 6.7em !important; + } + + .absolutePageTabContent { + top: 5.7em !important; + } + + .dashboardDocument .mainDrawer-scrollContainer { + margin-top: 6em !important; + } +} + +.headerSelectedPlayer { + max-width: 10em; + white-space: nowrap; +} + +@media all and (max-width: 37.5em) { + .headerSelectedPlayer { + display: none; + } +} + +.hidingAnimatedTab { + visibility: hidden; +} + +.headerArrowImage { + height: 20px; + margin-left: 0.5em; +} + +.backdropContainer { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; +} + +.libraryPage .header { + padding-bottom: 0; +} + +.flexPageTabContent.is-active { + display: -webkit-box !important; + display: -webkit-flex !important; + display: flex !important; +} + +.viewSettings { + margin: 0 0 0.25em; +} + +.listTopPaging, +.viewControls { + display: inline-block; +} + +.viewControls + .listTopPaging { + margin-left: 0.5em !important; +} + +.criticReview { + margin: 1.5em 0; + background: #222; + padding: 0.8em 0.8em 0.8em 3em; + -webkit-border-radius: 0.3em; + border-radius: 0.3em; + position: relative; +} + +.detailLogo, +.itemBackdrop { + background-repeat: no-repeat; + background-position: center center; +} + +.criticReview:first-child { + margin-top: 0.5em; +} + +.criticReview img { + width: 2.4em; +} + +.criticRatingScore { + margin-bottom: 0.5em; +} + +.itemTag { + display: inline-block; + margin-right: 1em; +} + +.itemOverview { + white-space: pre-wrap; +} + +.itemLinks { + padding: 0; +} + +.itemLinks p { + margin: 0.5em 0; +} + +.reviewLink, +.reviewerName { + margin-top: 0.5em; +} + +.reviewerName { + color: #ccc; +} + +.reviewDate { + margin-left: 1em; +} + +.reviewScore { + position: absolute; + left: 0.8em; +} + +.itemBackdrop { + -webkit-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + background-attachment: fixed; + height: 50vh; + position: relative; +} + +.layout-mobile .itemBackdrop { + background-attachment: scroll; +} + +.layout-desktop .itemBackdrop::after, +.layout-tv .itemBackdrop::after { + content: ""; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.65); + display: block; +} + +.layout-desktop .noBackdrop .itemBackdrop, +.layout-tv .noBackdrop .itemBackdrop { + display: none; +} + +.detailPageContent { + display: flex; + flex-direction: column; + padding-left: 2%; + padding-right: 2%; +} + +.layout-desktop .noBackdrop .detailPageContent, +.layout-tv .noBackdrop .detailPageContent { + margin-top: 2.5em; +} + +.layout-desktop .noBackdrop .detailImageContainer img, +.layout-tv .noBackdrop .detailImageContainer img { + margin-top: 0; +} + +.personBackdrop { + background-size: contain; +} + +.itemBackdropProgressBar { + position: absolute !important; + bottom: 0; + left: 0; + right: 0; +} + +.desktopMiscInfoContainer { + position: absolute; + bottom: 0.75em; +} + +.parentName { + display: block; + margin-bottom: 0.5em; +} + +.mainDetailButtons { + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + margin: 1em 0; +} + +.detailButton, +.mainDetailButtons { + display: flex; + display: -webkit-box; + display: -webkit-flex; +} + +.itemName { + margin: 0.5em 0; +} + +.itemMiscInfo { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} + +.layout-mobile .parentName, +.layout-mobile .itemName, +.layout-mobile .itemMiscInfo, +.layout-mobile .mainDetailButtons { + display: flex; + align-items: center; + justify-content: center; + text-align: center; +} + +.detailPagePrimaryContainer { + display: flex; + align-items: center; + align-content: center; + z-index: 2; +} + +.layout-mobile .detailPagePrimaryContainer { + display: block; + position: relative; + top: 0; +} + +.layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, +.layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer { + position: relative; + top: 0; + padding-left: 32.45vw; +} + +.layout-desktop .detailSticky, +.layout-tv .detailSticky { + margin-top: -7.2em; +} + +.layout-desktop .noBackdrop .detailSticky, +.layout-tv .noBackdrop .detailSticky { + margin-top: 0; +} + +.infoWrapper { + flex: 1 0 0; +} + +.infoText { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-align: left; +} + +.layout-mobile .infoText { + white-space: normal; +} + +.detailPageSecondaryContainer { + margin: 1.25em 0; +} + +.detailImageContainer { + position: relative; + margin-top: -25vh; + float: left; + width: 25vw; + z-index: 3; +} + +.layout-desktop .noBackdrop .detailImageContainer, +.layout-tv .noBackdrop .detailImageContainer { + margin-top: 0; +} + +.detailPagePrimaryContent { + position: relative; +} + +.detailLogo { + width: 67.25vw; + height: 14.5vh; + position: absolute; + top: 15vh; + right: 0; + -webkit-background-size: contain; + background-size: contain; +} + +.noBackdrop .detailLogo { + display: none; +} + +@media all and (max-width: 87.5em) { + .detailLogo { + right: 5%; + } +} + +@media all and (max-width: 75em) { + .detailLogo { + right: 2%; + } +} + +@media all and (max-width: 68.75em) { + .detailLogo { + width: 14.91em; + height: 3.5em; + right: 5%; + bottom: 5%; + top: auto; + background-position: center right; + display: none; + } +} + +.itemDetailImage { + width: 100% !important; + -webkit-box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.75); + box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.75); +} + +div.itemDetailGalleryLink.defaultCardBackground { + text-align: center; +} + +.itemDetailGalleryLink.defaultCardBackground { + height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ +} + +.btnSyncComplete i { + -webkit-border-radius: 100em; + border-radius: 100em; +} + +.itemDetailGalleryLink.defaultCardBackground > i { + font-size: 15vw; + margin-top: 50%; + transform: translateY(-50%); +} + +@media all and (max-width: 62.5em) { + .detailPageWrapperContainer { + position: relative; + } + + .layout-desktop .detailPageWrapperContainer, + .layout-tv .detailPageWrapperContainer { + margin-top: 7.2em; + } + + .layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, + .layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer { + padding-left: 3.3%; + } + + .btnPlaySimple { + display: none !important; + } +} + +@media all and (max-width: 75em) { + .lnkSibling { + display: none !important; + } +} + +.btnSyncComplete { + background: #673ab7 !important; +} + +.emby-button.detailFloatingButton { + position: absolute; + background-color: rgba(0, 0, 0, 0.5) !important; + z-index: 1; + top: 50%; + left: 50%; + margin: -2.2em 0 0 -2.2em; + padding: 0.4em !important; + color: rgba(255, 255, 255, 0.76); +} + +.emby-button.detailFloatingButton i { + font-size: 3.5em; +} + +@media all and (max-width: 62.5em) { + .parentName { + margin-bottom: 1em; + } + + .itemDetailPage { + padding-top: 0 !important; + } + + .detailimg-hidemobile { + display: none; + } +} + +@media all and (min-width: 31.25em) { + .mobileDetails { + display: none; + } +} + +@media all and (max-width: 31.25em) { + .desktopDetails { + display: none !important; + } +} + +.empty { + margin: 0; +} + +.detailCollapsibleSection:not(.hide) + .detailCollapsibleSection { + margin-top: -2em; +} + +.detailPageCollabsible { + margin-top: 0; +} + +.recordingFields button { + margin-left: 0; + margin-right: 0.5em; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.mainDetailButtons.hide + .recordingFields { + margin-top: 1.5em !important; +} + +.detailButton { + display: flex; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + margin: 0 !important; + padding: 0.5em 0.7em !important; +} + +@media all and (min-width: 29em) { + .detailButton { + padding-left: 0.75em !important; + padding-right: 0.75em !important; + } +} + +@media all and (min-width: 32em) { + .detailButton { + padding-left: 0.8em !important; + padding-right: 0.8em !important; + } +} + +@media all and (min-width: 35em) { + .detailButton { + padding-left: 0.85em !important; + padding-right: 0.85em !important; + } +} + +.detailButton-content { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} + +.detailButton-icon { + font-size: 1.6em !important; + width: 1em; + height: 1em; +} + +.detailImageProgressContainer { + position: absolute; + bottom: 0; + width: 22.786458333333332vw; +} + +.detailButton-text { + margin-top: 0.7em; + font-size: 80%; + font-weight: 400; +} + +@media all and (max-width: 62.5em) { + .mainDetailButtons { + margin-left: -0.5em; + } + + .detailButtonHideonMobile { + display: none !important; + } +} + +@media all and (min-width: 62.5em) { + .headerTop { + padding-left: 0.8em; + padding-right: 0.8em; + } + + .headerTabs { + align-self: center; + width: auto; + align-items: center; + justify-content: center; + margin-top: -4.2em; + position: relative; + } + + .detailFloatingButton { + display: none !important; + } + + .personBackdrop { + display: none !important; + } + + .mainDetailButtons { + font-size: 108%; + margin: 1.25em 0; + } +} + +@media all and (max-width: 50em) { + .editorMenuLink { + display: none; + } +} + +@media all and (max-width: 31.25em) { + .mobileDetails .itemMiscInfo { + text-align: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + } + + .itemMiscInfo .endsAt { + display: none; + } +} + +.layout-tv .detailVerticalSection { + margin-bottom: 3.4em !important; +} + +.detailPageWrapperContainer { + border-spacing: 0; + border-collapse: collapse; +} + +.layout-desktop .noBackdrop .detailPageWrapperContainer, +.layout-tv .noBackdrop .detailPageWrapperContainer { + margin-top: 3.8em; +} + +.mediaInfoStream { + margin: 0 3em 0 0; + display: inline-block; + vertical-align: top; +} + +.mediaInfoStreamType { + display: block; + margin: 1em 0; +} + +.mediaInfoAttribute, +.mediaInfoLabel { + display: inline-block; +} + +.mediaInfoLabel { + margin-right: 1em; + font-weight: 600; +} + +.recordingProgressBar::-moz-progress-bar { + background-color: #c33; +} + +.recordingProgressBar::-webkit-progress-value { + background-color: #c33; +} + +.recordingProgressBar[aria-valuenow]::before { + background-color: #c33; +} + +.timelineHeader { + margin-bottom: 0.25em; + line-height: 1.25em; + line-height: initial; +} + +.itemsContainer { + margin: 0 auto; +} + +@media all and (max-height: 31.25em) { + .itemBackdrop { + height: 52vh; + } +} + +.listViewUserDataButtons { + display: flex; + align-items: center; +} + +.bulletSeparator { + margin: 0 0.35em; +} + +.mediaInfoIcons { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + margin: 1em 0; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; +} + +.verticalSection-extrabottompadding { + margin-bottom: 2.7em; +} + +.sectionTitleButton, +.sectionTitleIconButton { + margin-right: 0 !important; + display: inline-block; + vertical-align: middle; +} + +.sectionTitleContainer { + margin: 1.25em 0; +} + +.sectionTitleContainer > .sectionTitle { + margin: 0; + display: inline-block; + vertical-align: middle; +} + +/* these next two rules are for the scroller element headers */ +.sectionTitleContainer-cards { + margin: 0; + padding-top: 1.25em; +} + +div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { + margin: 0; + padding-top: 1.25em; +} + +.sectionTitleButton { + margin-left: 1.5em !important; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.sectionTitleButton + .sectionTitleButton { + margin-left: 0.5em !important; +} + +.sectionTitleIconButton { + margin-left: 1.5em !important; + -webkit-flex-shrink: 0; + flex-shrink: 0; + font-size: 84% !important; + padding: 0.5em !important; +} + +.horizontalItemsContainer { + display: -webkit-box; + display: -webkit-flex; + display: flex; +} + +.sectionTitleTextButton { + margin: 0 !important; + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: inline-flex !important; + color: inherit !important; +} + +.sectionTitleTextButton:not(.padded-left) { + padding: 0 !important; +} + +.sectionTitleTextButton.padded-left { + padding-bottom: 0 !important; + padding-right: 0 !important; + padding-top: 0 !important; +} + +.sectionTitleTextButton > .sectionTitle { + margin-bottom: 0.35em; + margin-top: 0; +} + +.padded-left { + padding-left: 3.3%; +} + +.padded-right { + padding-right: 3.3%; +} + +.padded-top { + padding-top: 1em; +} + +.padded-bottom { + padding-bottom: 1em; +} + +.layout-tv .padded-top-focusscale { + padding-top: 1em; + margin-top: -1em; +} + +.layout-tv .padded-bottom-focusscale { + padding-bottom: 1em; + margin-bottom: -1em; +} + +@media all and (min-height: 31.25em) { + .padded-right-withalphapicker { + padding-right: 7.5%; + } +} + +.searchfields-icon { + color: #aaa; +} + +.button-accent-flat { + color: #00a4dc !important; +} + +.clearLink { + text-decoration: none; + font-weight: inherit !important; + vertical-align: middle; + color: inherit !important; +} + +.itemsViewSettingsContainer { + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +@media all and (min-width: 40em) { + .listIconButton-autohide { + display: none !important; + } +} + +@media all and (max-width: 40em) { + .listTextButton-autohide { + display: none !important; + } +} + +.itemsViewSettingsContainer > .button-flat { + margin: 0; +} diff --git a/src/assets/css/livetv.css b/src/assets/css/livetv.css new file mode 100644 index 0000000000..695adff8c5 --- /dev/null +++ b/src/assets/css/livetv.css @@ -0,0 +1,9 @@ +.guideVerticalScroller { + padding-bottom: 15em; +} + +@media all and (min-width: 62.5em) { + #guideTab { + padding-left: 0.5em; + } +} diff --git a/src/css/metadataeditor.css b/src/assets/css/metadataeditor.css similarity index 57% rename from src/css/metadataeditor.css rename to src/assets/css/metadataeditor.css index c5de6f3efe..190f53187f 100644 --- a/src/css/metadataeditor.css +++ b/src/assets/css/metadataeditor.css @@ -1,53 +1,57 @@ .editPageSidebar { - display: block + display: block; } .editPageSidebar-withcontent { - display: none + display: none; } .libraryTree { - margin-left: .25em + margin-left: 0.25em; } .offlineEditorNode { - color: #c33 + color: #c33; } .editorNode img { height: 18px; - margin: 0 .35em; + margin: 0 0.35em; vertical-align: middle; position: relative; - top: -2px + top: -2px; } .jstree-anchor { - font-weight: 400 !important + font-weight: 400 !important; } .jstree-wholerow-hovered { background: #38c !important; + -webkit-border-radius: 0 !important; border-radius: 0 !important; - box-shadow: none !important + -webkit-box-shadow: none !important; + box-shadow: none !important; } .jstree-default .jstree-hovered { background: 0 0 !important; + -webkit-border-radius: 0 !important; border-radius: 0 !important; + -webkit-box-shadow: none !important; box-shadow: none !important; - color: #fff !important + color: #fff !important; } .jstree-default .jstree-wholerow-clicked { - background: #00a4dc !important + background: #00a4dc !important; } .metadataSidebarIcon { - margin-right: .4em + margin-right: 0.4em; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .editPageSidebar { position: fixed; top: 5.2em; @@ -55,21 +59,21 @@ left: 0; width: 30%; border-right: 1px solid #555; - display: block + display: block; } .editPageInnerContent { float: right; - width: 68.5% + width: 68.5%; } } -@media all and (min-width:112.5em) { +@media all and (min-width: 112.5em) { .editPageSidebar { - width: 25% + width: 25%; } .editPageInnerContent { - width: 73.5% + width: 73.5%; } } diff --git a/src/assets/css/scrollstyles.css b/src/assets/css/scrollstyles.css new file mode 100644 index 0000000000..1cb3207e06 --- /dev/null +++ b/src/assets/css/scrollstyles.css @@ -0,0 +1,58 @@ +.scrollX { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + overflow-y: hidden; + white-space: nowrap; +} + +.smoothScrollX { + scroll-behavior: smooth; +} + +.hiddenScrollX, +.layout-tv .scrollX { + -ms-overflow-style: none; +} + +.hiddenScrollX-forced { + overflow: -moz-scrollbars-none; +} + +.hiddenScrollX::-webkit-scrollbar, +.layout-tv .scrollX::-webkit-scrollbar { + height: 0 !important; + display: none; +} + +.scrollY { + overflow-y: auto; + -webkit-overflow-scrolling: touch; + overflow-x: hidden; +} + +.smoothScrollY { + overflow-y: auto; + -webkit-overflow-scrolling: touch; + overflow-x: hidden; + scroll-behavior: smooth; +} + +.hiddenScrollY, +.layout-tv .smoothScrollY { + -ms-overflow-style: none; + + /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ + + /* overflow: -moz-scrollbars-none; */ +} + +.hiddenScrollY-forced { + overflow: -moz-scrollbars-none; +} + +.hiddenScrollY::-webkit-scrollbar, +.layout-tv .smoothScrollY::-webkit-scrollbar, +.layout-tv .scrollY::-webkit-scrollbar { + width: 0 !important; + display: none; +} diff --git a/src/assets/css/site.css b/src/assets/css/site.css new file mode 100644 index 0000000000..67416663e7 --- /dev/null +++ b/src/assets/css/site.css @@ -0,0 +1,98 @@ +body, +html { + margin: 0; + padding: 0; + height: 100%; +} + +.material-icons { + /* Fix font ligatures on older WebOS versions */ + -webkit-font-feature-settings: "liga"; +} + +.backgroundContainer { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + contain: strict; +} + +html { + line-height: 1.35; +} + +.layout-mobile, +.layout-tv { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +body { + overflow-x: hidden; + background-color: transparent !important; + -webkit-font-smoothing: antialiased; +} + +.mainAnimatedPage { + contain: style size !important; +} + +.pageContainer { + overflow-x: visible !important; +} + +.bodyWithPopupOpen { + overflow-y: hidden !important; +} + +div[data-role=page] { + outline: 0; +} + +.pageTitle { + margin-top: 0; + font-family: inherit; +} + +.fieldDescription { + padding-left: 0.15em; + font-weight: 400; + white-space: normal !important; +} + +.fieldDescription + .fieldDescription { + margin-top: 0.3em; +} + +.content-primary, +.padded-bottom-page, +.page, +.pageWithAbsoluteTabs .pageTabContent { + /* provides room for the music controls */ + padding-bottom: 5em !important; +} + +@media all and (min-width: 50em) { + .readOnlyContent, + form { + max-width: 54em; + } +} + +.headerHelpButton { + margin-left: 1.25em !important; + padding-bottom: 0.4em !important; + padding-top: 0.4em !important; +} + +.mediaInfoContent { + margin-left: auto; + margin-right: auto; + width: 85%; +} diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css new file mode 100644 index 0000000000..f4f198325b --- /dev/null +++ b/src/assets/css/videoosd.css @@ -0,0 +1,289 @@ +.chapterThumbTextContainer, +.videoOsdBottom { + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.osdPoster img, +.pageContainer, +.videoOsdBottom { + bottom: 0; + left: 0; + right: 0; +} + +.osdHeader { + -webkit-transition: opacity 0.3s ease-out; + -o-transition: opacity 0.3s ease-out; + transition: opacity 0.3s ease-out; + position: relative; + z-index: 1; + background: rgba(0, 0, 0, 0.7) !important; + -webkit-backdrop-filter: none !important; + backdrop-filter: none !important; + color: #eee !important; +} + +.osdHeader-hidden { + opacity: 0; +} + +.osdHeader .headerButton:not(.headerBackButton):not(.headerCastButton) { + display: none; +} + +.chapterThumbContainer { + -webkit-box-shadow: 0 0 1.9vh #000; + box-shadow: 0 0 1.9vh #000; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; + position: relative; +} + +.chapterThumb { + background-position: center center; + -webkit-background-size: contain; + background-size: contain; + background-repeat: no-repeat; + border: 0; + height: 20vh; + min-width: 20vh; +} + +@media all and (orientation: portrait) { + .chapterThumb { + height: 30vw; + min-width: 30vw; + } +} + +@media all and (max-height: 50em) and (orientation: landscape) { + .chapterThumb { + height: 30vh; + min-width: 30vh; + } +} + +.chapterThumbTextContainer { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.7); + padding: 0.25em 0.5em; + user-select: none; +} + +.chapterThumbText { + padding: 0.25em 0; + margin: 0; + opacity: 1; +} + +.chapterThumbText-dim { + opacity: 0.6; +} + +.videoOsdBottom { + position: fixed; + background-color: rgba(0, 0, 0, 0.7); + padding: 1%; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + flex-direction: row; + will-change: opacity; + -webkit-transition: opacity 0.3s ease-out; + -o-transition: opacity 0.3s ease-out; + transition: opacity 0.3s ease-out; + color: #fff; + user-select: none; + -webkit-touch-callout: none; +} + +.videoOsdBottom-hidden { + opacity: 0; +} + +.osdControls { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; +} + +.videoOsdBottom .buttons { + padding: 0.25em 0 0; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} + +.osdVolumeSliderContainer { + width: 9em; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; +} + +.osdMediaInfo, +.volumeButtons { + display: flex; + display: -webkit-box; + display: -webkit-flex; + align-items: center; + -webkit-box-align: center; +} + +.volumeButtons { + margin: 0 0.5em 0 auto; + display: flex; + -webkit-align-items: center; + align-items: center; +} + +.osdTimeText { + margin-left: 1em; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.osdPoster { + width: 10%; + position: relative; + margin-right: 0.5em; +} + +.osdPoster img { + position: absolute; + height: auto; + width: 100%; + -webkit-box-shadow: 0 0 1.9vh #000; + box-shadow: 0 0 1.9vh #000; + border: 0.08em solid #222; + user-drag: none; + user-select: none; + -moz-user-select: none; + -webkit-user-drag: none; + -webkit-user-select: none; + -ms-user-select: none; +} + +.osdTitle, +.osdTitleSmall { + margin: 0 1em 0 0; +} + +.osdMediaInfo { + display: flex; + -webkit-align-items: center; + align-items: center; +} + +.osdSecondaryMediaInfo { + padding-left: 0.6em !important; +} + +.osdTextContainer { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + margin-bottom: 0.7em; + padding-left: 0.5em; +} + +.osdMainTextContainer { + -webkit-box-align: baseline; + -webkit-align-items: baseline; + align-items: baseline; +} + +.osdMediaStatus { + margin-left: auto; +} + +@-moz-keyframes spin { + 100% { + -moz-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@-webkit-keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.osdMediaStatus .animate { + -webkit-animation: spin 4s linear infinite; + -moz-animation: spin 4s linear infinite; + animation: spin 4s linear infinite; +} + +.pageContainer { + top: 0; + position: fixed; +} + +@media all and (max-width: 30em) { + .btnFastForward, + .btnRewind, + .osdMediaInfo, + .osdPoster { + display: none !important; + } +} + +@media all and (max-width: 33.75em) { + .videoOsdBottom .paper-icon-button-light { + margin: 0; + } +} + +@media all and (max-width: 43em) { + .videoOsdBottom .volumeButtons, + .osdMediaStatus span { + display: none !important; + } +} + +@media all and (max-width: 50em) { + .videoOsdBottom .btnFastForward, + .videoOsdBottom .btnRewind { + display: none !important; + } +} + +@media all and (max-width: 75em) { + .videoOsdBottom .endsAtText { + display: none !important; + } +} diff --git a/src/img/logindefault.png b/src/assets/img/avatar.png similarity index 100% rename from src/img/logindefault.png rename to src/assets/img/avatar.png diff --git a/src/components/themes/logodark.png b/src/assets/img/banner-dark.png similarity index 100% rename from src/components/themes/logodark.png rename to src/assets/img/banner-dark.png diff --git a/src/components/logoscreensaver/logowhite.png b/src/assets/img/banner-light.png similarity index 100% rename from src/components/logoscreensaver/logowhite.png rename to src/assets/img/banner-light.png diff --git a/src/assets/img/devices/android.svg b/src/assets/img/devices/android.svg new file mode 100644 index 0000000000..24edc8bbf9 --- /dev/null +++ b/src/assets/img/devices/android.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/devices/chrome.svg b/src/assets/img/devices/chrome.svg similarity index 100% rename from src/img/devices/chrome.svg rename to src/assets/img/devices/chrome.svg diff --git a/src/img/devices/edge.svg b/src/assets/img/devices/edge.svg similarity index 100% rename from src/img/devices/edge.svg rename to src/assets/img/devices/edge.svg diff --git a/src/img/devices/firefox.svg b/src/assets/img/devices/firefox.svg similarity index 100% rename from src/img/devices/firefox.svg rename to src/assets/img/devices/firefox.svg diff --git a/src/img/devices/html5.svg b/src/assets/img/devices/html5.svg similarity index 100% rename from src/img/devices/html5.svg rename to src/assets/img/devices/html5.svg diff --git a/src/assets/img/devices/kodi.svg b/src/assets/img/devices/kodi.svg new file mode 100644 index 0000000000..3618149b1f --- /dev/null +++ b/src/assets/img/devices/kodi.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/devices/msie.svg b/src/assets/img/devices/msie.svg similarity index 100% rename from src/img/devices/msie.svg rename to src/assets/img/devices/msie.svg diff --git a/src/img/devices/opera.svg b/src/assets/img/devices/opera.svg similarity index 100% rename from src/img/devices/opera.svg rename to src/assets/img/devices/opera.svg diff --git a/src/img/devices/other.svg b/src/assets/img/devices/other.svg similarity index 100% rename from src/img/devices/other.svg rename to src/assets/img/devices/other.svg diff --git a/src/img/devices/playstation.svg b/src/assets/img/devices/playstation.svg similarity index 100% rename from src/img/devices/playstation.svg rename to src/assets/img/devices/playstation.svg diff --git a/src/img/devices/safari.svg b/src/assets/img/devices/safari.svg similarity index 100% rename from src/img/devices/safari.svg rename to src/assets/img/devices/safari.svg diff --git a/src/img/devices/samsungtv.svg b/src/assets/img/devices/samsungtv.svg similarity index 100% rename from src/img/devices/samsungtv.svg rename to src/assets/img/devices/samsungtv.svg diff --git a/src/img/devices/windows.svg b/src/assets/img/devices/windows.svg similarity index 100% rename from src/img/devices/windows.svg rename to src/assets/img/devices/windows.svg diff --git a/src/img/devices/xbox.svg b/src/assets/img/devices/xbox.svg similarity index 100% rename from src/img/devices/xbox.svg rename to src/assets/img/devices/xbox.svg diff --git a/src/img/equalizer.gif b/src/assets/img/equalizer.gif similarity index 100% rename from src/img/equalizer.gif rename to src/assets/img/equalizer.gif diff --git a/src/assets/img/fresh.svg b/src/assets/img/fresh.svg new file mode 100644 index 0000000000..0602ab2481 --- /dev/null +++ b/src/assets/img/fresh.svg @@ -0,0 +1,20 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/logo.png b/src/assets/img/icon-transparent.png similarity index 100% rename from src/img/logo.png rename to src/assets/img/icon-transparent.png diff --git a/src/assets/img/rotten.svg b/src/assets/img/rotten.svg new file mode 100644 index 0000000000..04bef05bc1 --- /dev/null +++ b/src/assets/img/rotten.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/splashscreens/ipad_splash.png b/src/assets/splash/ipad_splash.png similarity index 100% rename from src/splashscreens/ipad_splash.png rename to src/assets/splash/ipad_splash.png diff --git a/src/splashscreens/ipad_splash_l.png b/src/assets/splash/ipad_splash_l.png similarity index 100% rename from src/splashscreens/ipad_splash_l.png rename to src/assets/splash/ipad_splash_l.png diff --git a/src/splashscreens/ipadpro1_splash.png b/src/assets/splash/ipadpro1_splash.png similarity index 100% rename from src/splashscreens/ipadpro1_splash.png rename to src/assets/splash/ipadpro1_splash.png diff --git a/src/splashscreens/ipadpro1_splash_l.png b/src/assets/splash/ipadpro1_splash_l.png similarity index 100% rename from src/splashscreens/ipadpro1_splash_l.png rename to src/assets/splash/ipadpro1_splash_l.png diff --git a/src/splashscreens/ipadpro2_splash.png b/src/assets/splash/ipadpro2_splash.png similarity index 100% rename from src/splashscreens/ipadpro2_splash.png rename to src/assets/splash/ipadpro2_splash.png diff --git a/src/splashscreens/ipadpro2_splash_l.png b/src/assets/splash/ipadpro2_splash_l.png similarity index 100% rename from src/splashscreens/ipadpro2_splash_l.png rename to src/assets/splash/ipadpro2_splash_l.png diff --git a/src/splashscreens/ipadpro3_splash.png b/src/assets/splash/ipadpro3_splash.png similarity index 100% rename from src/splashscreens/ipadpro3_splash.png rename to src/assets/splash/ipadpro3_splash.png diff --git a/src/splashscreens/ipadpro3_splash_l.png b/src/assets/splash/ipadpro3_splash_l.png similarity index 100% rename from src/splashscreens/ipadpro3_splash_l.png rename to src/assets/splash/ipadpro3_splash_l.png diff --git a/src/splashscreens/iphone5_splash.png b/src/assets/splash/iphone5_splash.png similarity index 100% rename from src/splashscreens/iphone5_splash.png rename to src/assets/splash/iphone5_splash.png diff --git a/src/splashscreens/iphone5_splash_l.png b/src/assets/splash/iphone5_splash_l.png similarity index 100% rename from src/splashscreens/iphone5_splash_l.png rename to src/assets/splash/iphone5_splash_l.png diff --git a/src/splashscreens/iphone6_splash.png b/src/assets/splash/iphone6_splash.png similarity index 100% rename from src/splashscreens/iphone6_splash.png rename to src/assets/splash/iphone6_splash.png diff --git a/src/splashscreens/iphone6_splash_l.png b/src/assets/splash/iphone6_splash_l.png similarity index 100% rename from src/splashscreens/iphone6_splash_l.png rename to src/assets/splash/iphone6_splash_l.png diff --git a/src/splashscreens/iphoneplus_splash.png b/src/assets/splash/iphoneplus_splash.png similarity index 100% rename from src/splashscreens/iphoneplus_splash.png rename to src/assets/splash/iphoneplus_splash.png diff --git a/src/splashscreens/iphoneplus_splash_l.png b/src/assets/splash/iphoneplus_splash_l.png similarity index 100% rename from src/splashscreens/iphoneplus_splash_l.png rename to src/assets/splash/iphoneplus_splash_l.png diff --git a/src/splashscreens/iphonex_splash.png b/src/assets/splash/iphonex_splash.png similarity index 100% rename from src/splashscreens/iphonex_splash.png rename to src/assets/splash/iphonex_splash.png diff --git a/src/splashscreens/iphonex_splash_l.png b/src/assets/splash/iphonex_splash_l.png similarity index 100% rename from src/splashscreens/iphonex_splash_l.png rename to src/assets/splash/iphonex_splash_l.png diff --git a/src/splashscreens/iphonexr_splash.png b/src/assets/splash/iphonexr_splash.png similarity index 100% rename from src/splashscreens/iphonexr_splash.png rename to src/assets/splash/iphonexr_splash.png diff --git a/src/splashscreens/iphonexr_splash_l.png b/src/assets/splash/iphonexr_splash_l.png similarity index 100% rename from src/splashscreens/iphonexr_splash_l.png rename to src/assets/splash/iphonexr_splash_l.png diff --git a/src/splashscreens/iphonexsmax_splash.png b/src/assets/splash/iphonexsmax_splash.png similarity index 100% rename from src/splashscreens/iphonexsmax_splash.png rename to src/assets/splash/iphonexsmax_splash.png diff --git a/src/splashscreens/iphonexsmax_splash_l.png b/src/assets/splash/iphonexsmax_splash_l.png similarity index 100% rename from src/splashscreens/iphonexsmax_splash_l.png rename to src/assets/splash/iphonexsmax_splash_l.png diff --git a/src/availableplugins.html b/src/availableplugins.html index ea1147fbfd..6c9b89c26d 100644 --- a/src/availableplugins.html +++ b/src/availableplugins.html @@ -5,4 +5,4 @@
- \ No newline at end of file + diff --git a/src/bundle.js b/src/bundle.js index 4748c6d281..c5c5e1bcaf 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -16,8 +16,14 @@ _define("fetch", function() { return fetch }); +// query-string +var query = require("query-string"); +_define("queryString", function() { + return query; +}); + // flvjs -var flvjs = require("flv.js").default; +var flvjs = require("flv.js/dist/flv").default; _define("flvjs", function() { return flvjs; }); @@ -47,12 +53,6 @@ _define("howler", function() { return howler; }); -// native-promise-only -var nativePromise = require("native-promise-only"); -_define("native-promise-only", function() { - return nativePromise; -}); - // resize-observer-polyfill var resize = require("resize-observer-polyfill").default; _define("resize-observer-polyfill", function() { @@ -66,8 +66,8 @@ _define("shaka", function() { }); // swiper -var swiper = require("swiper"); -require("swiper/dist/css/swiper.min.css"); +var swiper = require("swiper/js/swiper"); +require("swiper/css/swiper.min.css"); _define("swiper", function() { return swiper; }); @@ -81,7 +81,7 @@ _define("sortable", function() { // webcomponents var webcomponents = require("webcomponents.js/webcomponents-lite"); _define("webcomponents", function() { - return webcomponents + return webcomponents; }); // libjass @@ -90,3 +90,32 @@ require("libjass/libjass.css"); _define("libjass", function() { return libjass; }); + +// libass-wasm +var libass_wasm = require("libass-wasm"); +_define("JavascriptSubtitlesOctopus", function() { + return libass_wasm; +}); + +// material-icons +var material_icons = require("material-design-icons-iconfont/dist/material-design-icons.css"); +_define("material-icons", function() { + return material_icons; +}); + +// noto font +var noto = require("jellyfin-noto"); +_define("jellyfin-noto", function () { + return noto; +}); + +// page.js +var page = require("page"); +_define("page", function() { + return page; +}); + +var polyfill = require("@babel/polyfill/dist/polyfill"); +_define("polyfill", function () { + return polyfill; +}); diff --git a/src/components/accessschedule/accessschedule.template.html b/src/components/accessschedule/accessschedule.template.html index 50d172ae49..02f11942ed 100644 --- a/src/components/accessschedule/accessschedule.template.html +++ b/src/components/accessschedule/accessschedule.template.html @@ -1,6 +1,6 @@

${HeaderAccessSchedule} diff --git a/src/components/actionsheet/actionsheet.css b/src/components/actionsheet/actionsheet.css index 8e5084038a..87d6e9466c 100644 --- a/src/components/actionsheet/actionsheet.css +++ b/src/components/actionsheet/actionsheet.css @@ -4,7 +4,7 @@ padding: 0; border: none; max-height: 84%; - border-radius: .1em !important; + border-radius: 0.1em !important; } .actionsheet-not-fullscreen { @@ -24,7 +24,7 @@ .actionSheetContent { margin: 0 !important; - padding: .4em 0 !important; + padding: 0.4em 0 !important; flex-direction: column; display: flex; justify-content: center; @@ -45,7 +45,7 @@ } .actionsheetListItemBody { - padding: .4em 1em .4em .6em !important; + padding: 0.4em 1em 0.4em 0.6em !important; } .actionSheetItemText { @@ -59,13 +59,13 @@ } .actionSheetItemAsideText { - opacity: .7; + opacity: 0.7; font-size: 90%; display: flex; justify-content: flex-end; flex-shrink: 0; margin-left: 5em; - margin-right: .5em; + margin-right: 0.5em; } .actionSheetScroller { @@ -83,14 +83,14 @@ } .actionsheetDivider { - height: .07em; - margin: .25em 0; + height: 0.07em; + margin: 0.25em 0; flex-shrink: 0; } .actionSheetTitle { - margin: .6em 0 .7em !important; - padding: 0 .9em; + margin: 0.6em 0 0.7em !important; + padding: 0 0.9em; flex-grow: 0; } @@ -100,7 +100,7 @@ } .actionsheetMenuItemIcon { - margin: 0 .85em 0 .45em !important; + margin: 0 0.85em 0 0.45em !important; padding: 0 !important; } @@ -110,6 +110,6 @@ .btnCloseActionSheet { position: fixed; - top: .75em; - left: .5em; + top: 0.75em; + left: 0.5em; } diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index d4e6b61c8a..926d63b637 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -158,7 +158,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu } if (layoutManager.tv) { - html += ''; + html += ''; } // If any items have an icon, give them all an icon just to make sure they're all lined up evenly @@ -226,9 +226,9 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu if (itemIcon) { - html += '' + itemIcon + ''; + html += '' + itemIcon + ''; } else if (renderIcon && !center) { - html += ''; + html += ''; } html += '
'; diff --git a/src/components/activitylog.js b/src/components/activitylog.js index e02fb0c868..05971f01b8 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -13,12 +13,12 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific } if (entry.UserId && entry.UserPrimaryImageTag) { - html += 'dvr" } else { - html += '' + icon + ''; + html += '' + icon + ''; } html += '
'; @@ -35,7 +35,7 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific html += "
"; if (entry.Overview) { - html += ''; + html += ''; } return html += "
"; diff --git a/src/components/alert.js b/src/components/alert.js index 8a4dc11c20..8a37ac1845 100644 --- a/src/components/alert.js +++ b/src/components/alert.js @@ -42,4 +42,4 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize) return Promise.resolve(); }; -}); \ No newline at end of file +}); diff --git a/src/components/alphanumericshortcuts/alphanumericshortcuts.js b/src/components/alphanumericshortcuts/alphanumericshortcuts.js index 03d0118cbe..2bcf3712bb 100644 --- a/src/components/alphanumericshortcuts/alphanumericshortcuts.js +++ b/src/components/alphanumericshortcuts/alphanumericshortcuts.js @@ -10,7 +10,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) { if (e.ctrlKey) { return; } - if (!!e.shiftKey) { + if (e.shiftKey) { return; } if (e.altKey) { @@ -127,4 +127,4 @@ define(['dom', 'focusManager'], function (dom, focusManager) { }; return AlphaNumericShortcuts; -}); \ No newline at end of file +}); diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index b9d31be5dd..455a43b46d 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -67,7 +67,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += '
'; if (options.mode === 'keyboard') { - html += ''; + html += ''; } else { letters = ['#']; html += mapLetters(letters, vertical).join(''); @@ -77,7 +77,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += mapLetters(letters, vertical).join(''); if (options.mode === 'keyboard') { - html += ''; + html += ''; html += '
'; letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; @@ -241,7 +241,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b try { btn = element.querySelector('.alphaPickerButton[data-value=\'' + value + '\']'); } catch (err) { - console.log('Error in querySelector: ' + err); + console.error('error in querySelector: ' + err); } if (btn && btn !== selected) { diff --git a/src/components/alphapicker/style.css b/src/components/alphapicker/style.css index 29543421eb..4e94c0f754 100644 --- a/src/components/alphapicker/style.css +++ b/src/components/alphapicker/style.css @@ -35,16 +35,15 @@ font-size: inherit; min-width: initial; margin: 0; - padding: .1em .4em; + padding: 0.1em 0.4em; width: auto; - border-radius: .1em; + border-radius: 0.1em; font-weight: normal; flex-shrink: 0; flex-grow: 1; } @media all and (max-height: 50em) { - .alphaPicker-fixed { bottom: 5em; } @@ -56,14 +55,12 @@ } @media all and (max-height: 49em) { - .alphaPicker-vertical { font-size: 94%; } } @media all and (max-height: 44em) { - .alphaPicker-vertical { font-size: 90%; } @@ -75,14 +72,12 @@ } @media all and (max-height: 37em) { - .alphaPicker-vertical { font-size: 82%; } } @media all and (max-height: 32em) { - .alphaPicker-vertical { font-size: 74%; } @@ -112,27 +107,17 @@ bottom: 1%; } -.alphaPicker-fixed-left { - left: .4em; -} - .alphaPicker-fixed-right { - right: .4em; + right: 0.4em; } @media all and (min-width: 62.5em) { - - .alphaPicker-fixed-left { - left: 1em; - } - .alphaPicker-fixed-right { right: 1em; } } @media all and (max-height: 31.25em) { - .alphaPicker-fixed { display: none !important; } diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 8643e3f47f..efb58a089f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -14,6 +14,9 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM }, showSettings: function () { show('/settings/settings.html'); + }, + showNowPlaying: function () { + show("/nowplaying.html"); } }; @@ -367,7 +370,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } function enableNativeHistory() { - return page.enableNativeHistory(); + return false; } function authenticate(ctx, route, callback) { @@ -387,13 +390,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM var apiClient = connectionManager.currentApiClient(); var pathname = ctx.pathname.toLowerCase(); - console.log('appRouter - processing path request ' + pathname); + console.debug('appRouter - processing path request ' + pathname); var isCurrentRouteStartup = currentRouteInfo ? currentRouteInfo.route.startup : true; var shouldExitApp = ctx.isBack && route.isDefaultRoute && isCurrentRouteStartup; if (!shouldExitApp && (!apiClient || !apiClient.isLoggedIn()) && !route.anonymous) { - console.log('appRouter - route does not allow anonymous access, redirecting to login'); + console.debug('appRouter - route does not allow anonymous access, redirecting to login'); beginConnectionWizard(); return; } @@ -408,10 +411,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM if (apiClient && apiClient.isLoggedIn()) { - console.log('appRouter - user is authenticated'); + console.debug('appRouter - user is authenticated'); if (route.isDefaultRoute) { - console.log('appRouter - loading skin home page'); + console.debug('appRouter - loading skin home page'); loadUserSkinWithOptions(ctx); return; } else if (route.roles) { @@ -425,7 +428,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } } - console.log('appRouter - proceeding to ' + pathname); + console.debug('appRouter - proceeding to ' + pathname); callback(); } @@ -545,16 +548,24 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM page.back(); } + /** + * Pages of "no return" (when "Go back" should behave differently, probably quitting the application). + */ + var startPages = ['home', 'login', 'selectserver']; + function canGoBack() { var curr = current(); if (!curr) { return false; } - if (curr.type === 'home') { + if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) { return false; } - return page.canGoBack(); + if (enableHistory()) { + return history.length > 1; + } + return (page.len || 0) > 0; } function showDirect(path) { @@ -658,7 +669,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM function pushState(state, title, url) { state.navigate = false; - page.pushState(state, title, url); + history.pushState(state, title, url); + } function setBaseRoute() { @@ -667,7 +679,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM baseRoute = baseRoute.substring(0, baseRoute.length - 1); } - console.log('Setting page base to ' + baseRoute); + console.debug('setting page base to ' + baseRoute); page.base(baseRoute); } @@ -708,7 +720,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM appRouter.getRoutes = getRoutes; appRouter.pushState = pushState; appRouter.enableNativeHistory = enableNativeHistory; - appRouter.handleAnchorClick = page.handleAnchorClick; + appRouter.handleAnchorClick = page.clickHandler; appRouter.TransparencyLevel = { None: 0, Backdrop: 1, diff --git a/src/components/appfooter/appfooter.css b/src/components/appfooter/appfooter.css index 789bc1db20..6dc00b00c2 100644 --- a/src/components/appfooter/appfooter.css +++ b/src/components/appfooter/appfooter.css @@ -2,12 +2,12 @@ position: fixed; left: 0; right: 0; - z-index: 1; + z-index: 10; bottom: 0; transition: transform 180ms linear; contain: layout style; } - .appfooter.headroom--unpinned { - transform: translateY(100%)!important; - } \ No newline at end of file +.appfooter.headroom--unpinned { + transform: translateY(100%) !important; +} diff --git a/src/components/appfooter/appfooter.js b/src/components/appfooter/appfooter.js index 61bb62ec29..07d7701ff2 100644 --- a/src/components/appfooter/appfooter.js +++ b/src/components/appfooter/appfooter.js @@ -2,24 +2,18 @@ define(['browser', 'css!./appfooter'], function (browser) { 'use strict'; function render(options) { - var elem = document.createElement('div'); - elem.classList.add('appfooter'); - elem.classList.add('appfooter-blurred'); - document.body.appendChild(elem); return elem; } function appFooter(options) { - var self = this; self.element = render(options); - self.add = function (elem) { self.element.appendChild(elem); }; diff --git a/src/components/apphost.js b/src/components/apphost.js index b1b1c30dc9..f3e89ed29e 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -104,7 +104,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function getDeviceName() { var deviceName; - deviceName = browser.tizen ? "Samsung Smart TV" : browser.web0s ? "LG Smart TV" : browser.operaTv ? "Opera TV" : browser.xboxOne ? "Xbox One" : browser.ps4 ? "Sony PS4" : browser.chrome ? "Chrome" : browser.edge ? "Edge" : browser.firefox ? "Firefox" : browser.msie ? "Internet Explorer" : browser.opera ? "Opera" : "Web Browser"; + deviceName = browser.tizen ? "Samsung Smart TV" : browser.web0s ? "LG Smart TV" : browser.operaTv ? "Opera TV" : browser.xboxOne ? "Xbox One" : browser.ps4 ? "Sony PS4" : browser.chrome ? "Chrome" : browser.edge ? "Edge" : browser.firefox ? "Firefox" : browser.msie ? "Internet Explorer" : browser.opera ? "Opera" : browser.safari ? "Safari" : "Web Browser"; if (browser.ipad) { deviceName += " iPad"; @@ -168,23 +168,25 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return false; } - var savedResult = appSettings.get(htmlMediaAutoplayAppStorageKey); - return "true" === savedResult || "false" !== savedResult && null; + return true; } - function cueSupported() { + function supportsCue() { try { var video = document.createElement("video"); var style = document.createElement("style"); + style.textContent = "video::cue {background: inherit}"; document.body.appendChild(style); document.body.appendChild(video); + var cue = window.getComputedStyle(video, "::cue").background; document.body.removeChild(style); document.body.removeChild(video); + return !!cue.length; } catch (err) { - console.log("Error detecting cue support:" + err); + console.error("error detecting cue support: " + err); return false; } } @@ -192,7 +194,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function onAppVisible() { if (isHidden) { isHidden = false; - console.log("triggering app resume event"); + console.debug("triggering app resume event"); events.trigger(appHost, "resume"); } } @@ -200,12 +202,10 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function onAppHidden() { if (!isHidden) { isHidden = true; - console.log("app is hidden"); + console.debug("app is hidden"); } } - var htmlMediaAutoplayAppStorageKey = "supportshtmlmediaautoplay0"; - var supportedFeatures = function () { var features = []; @@ -280,7 +280,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet //features.push("multiserver"); features.push("screensaver"); - if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || cueSupported())) { + if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { features.push("subtitleappearancesettings"); } @@ -299,14 +299,48 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return features; }(); - if (supportedFeatures.indexOf("htmlvideoautoplay") === -1 && supportsHtmlMediaAutoplay() !== false) { - require(["autoPlayDetect"], function (autoPlayDetect) { - autoPlayDetect.supportsHtmlMediaAutoplay().then(function () { - appSettings.set(htmlMediaAutoplayAppStorageKey, "true"); - supportedFeatures.push("htmlvideoautoplay"); - supportedFeatures.push("htmlaudioautoplay"); - }, function () { - appSettings.set(htmlMediaAutoplayAppStorageKey, "false"); + /** + * Do exit according to platform + */ + function doExit() { + try { + if (window.NativeShell) { + window.NativeShell.AppHost.exit(); + } else if (browser.tizen) { + tizen.application.getCurrentApplication().exit(); + } else if (browser.web0s) { + webOS.platformBack(); + } else { + window.close(); + } + } catch (err) { + console.error("error closing application: " + err); + } + } + + var exitPromise; + + /** + * Ask user for exit + */ + function askForExit() { + if (exitPromise) { + return; + } + + require(["actionsheet"], function (actionsheet) { + exitPromise = actionsheet.show({ + title: Globalize.translate("MessageConfirmAppExit"), + items: [ + {id: "yes", name: Globalize.translate("Yes")}, + {id: "no", name: Globalize.translate("No")} + ] + }).then(function (value) { + if (value === "yes") { + doExit(); + } + }).finally(function () { + exitPromise = null; }); }); } @@ -326,16 +360,10 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet alert("setWindowState is not supported and should not be called"); }, exit: function () { - if (window.NativeShell) { - window.NativeShell.AppHost.exit(); - } else if (browser.tizen) { - try { - tizen.application.getCurrentApplication().exit(); - } catch (err) { - console.log("error closing application: " + err); - } + if (!!window.appMode && browser.tizen) { + askForExit(); } else { - window.close(); + doExit(); } }, supports: function (command) { @@ -346,7 +374,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return -1 !== supportedFeatures.indexOf(command.toLowerCase()); }, preferVisualCards: browser.android || browser.chrome, - moreIcon: browser.android ? "dots-vert" : "dots-horiz", + moreIcon: browser.android ? "more_vert" : "more_horiz", getSyncProfile: getSyncProfile, getDefaultLayout: function () { if (window.NativeShell) { @@ -395,7 +423,9 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet } } }; + var doc = self.document; + var isHidden = false; if (doc) { if (void 0 !== doc.visibilityState) { @@ -419,8 +449,6 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet } } - var isHidden = false; - if (doc) { doc.addEventListener(visibilityChange, function () { if (document[visibilityState]) { diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 09ded814f2..6d99009e67 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -25,7 +25,7 @@ define(["focusManager", "layoutManager"], function (focusManager, layoutManager) activeElement = e.target; }); - console.log("AutoFocuser enabled"); + console.debug("AutoFocuser enabled"); } /** diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js index ae07ac3abc..ec5b411853 100644 --- a/src/components/backdrop/backdrop.js +++ b/src/components/backdrop/backdrop.js @@ -1,4 +1,4 @@ -define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./backdrop'], function (browser, connectionManager, playbackManager, dom) { +define(['browser', 'connectionManager', 'playbackManager', 'dom', "userSettings", 'css!./backdrop'], function (browser, connectionManager, playbackManager, dom, userSettings) { 'use strict'; function enableAnimation(elem) { @@ -182,6 +182,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./backdro return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, { type: "Backdrop", tag: imgTag, + maxWidth: dom.getScreenWidth(), index: index })); }); @@ -192,6 +193,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./backdro return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, { type: "Backdrop", tag: imgTag, + maxWidth: dom.getScreenWidth(), index: index })); }); @@ -236,16 +238,22 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./backdro return true; } + function enabled() { + return userSettings.enableBackdrops(); + } + var rotationInterval; var currentRotatingImages = []; var currentRotationIndex = -1; function setBackdrops(items, imageOptions, enableImageRotation) { - var images = getImageUrls(items, imageOptions); + if (enabled()) { + var images = getImageUrls(items, imageOptions); - if (images.length) { - startRotation(images, enableImageRotation); - } else { - clearBackdrop(); + if (images.length) { + startRotation(images, enableImageRotation); + } else { + clearBackdrop(); + } } } @@ -310,4 +318,4 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./backdro clear: clearBackdrop, externalBackdrop: externalBackdrop }; -}); \ No newline at end of file +}); diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 5520ce2c7e..3cd038cd09 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -1,23 +1,24 @@ +button { + -webkit-border-fit: border !important; +} + button::-moz-focus-inner { padding: 0; border: 0; } -button { - -webkit-border-fit: border !important; -} - .card { border: 0; font-size: inherit !important; font-family: inherit !important; text-transform: none; - background-color: transparent !important; background: none !important; + background-color: transparent !important; margin: 0; padding: 0; display: block; color: inherit !important; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; cursor: pointer; contain: layout style; @@ -54,17 +55,27 @@ button { contain: layout style; } -.cardPadder-backdrop, .cardPadder-mixedBackdrop, .cardPadder-smallBackdrop, .cardPadder-overflowBackdrop, .cardPadder-overflowSmallBackdrop { +.cardPadder-backdrop, +.cardPadder-mixedBackdrop, +.cardPadder-smallBackdrop, +.cardPadder-overflowBackdrop, +.cardPadder-overflowSmallBackdrop { padding-bottom: 56.25%; contain: strict; } -.cardPadder-square, .cardPadder-mixedSquare, .cardPadder-overflowSquare, .overflowSquareCard-textCardPadder { +.cardPadder-square, +.cardPadder-mixedSquare, +.cardPadder-overflowSquare, +.overflowSquareCard-textCardPadder { padding-bottom: 100%; contain: strict; } -.cardPadder-portrait, .cardPadder-mixedPortrait, .cardPadder-overflowPortrait, .overflowPortraitCard-textCardPadder { +.cardPadder-portrait, +.cardPadder-mixedPortrait, +.cardPadder-overflowPortrait, +.overflowPortraitCard-textCardPadder { padding-bottom: 150%; contain: strict; } @@ -79,23 +90,26 @@ button { margin: 0.6em; transition: none; border: 0 solid transparent; + + /* These both are needed in case cardBox is a button */ + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; contain: layout; contain: style; } +.card.show-animation .cardBox { + will-change: transform; + transition: transform 200ms ease-out; +} + .card.show-focus:not(.show-animation) .cardBox { - margin: .4em; + margin: 0.4em; } .card.show-focus:not(.show-animation) .cardBox.visualCardBox, .card.show-focus:not(.show-animation) .cardBox:not(.visualCardBox) .cardScalable { - border: .5em solid transparent; -} - -.card.show-animation .cardBox { - will-change: transform; - transition: transform 200ms ease-out; + border: 0.5em solid transparent; } .card.show-animation:focus > .cardBox { @@ -120,7 +134,7 @@ button { .btnCardOptions { position: absolute; - bottom: .25em; + bottom: 0.25em; right: 0; margin: 0 !important; z-index: 1; @@ -131,8 +145,8 @@ button { position: absolute; align-items: center; justify-content: center; - top: .3em; - left: .3em; + top: 0.3em; + left: 0.3em; text-align: center; vertical-align: middle; width: 1.6em; @@ -146,12 +160,14 @@ button { background-size: cover; background-repeat: no-repeat; background-position: center center; + display: -webkit-flex; display: flex; align-items: center; justify-content: center; position: relative; background-clip: content-box !important; color: inherit; + /* This is only needed for scalable cards */ height: 100%; contain: strict; @@ -173,12 +189,16 @@ button { left: 0; right: 0; bottom: 0; + /* Needed in case this is a button */ display: block; + /* Needed in case this is a button */ margin: 0 !important; + /* Needed in safari */ height: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; contain: strict; } @@ -207,10 +227,6 @@ button { box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } -.cardImageContainer { - display: flex; -} - .cardImage { position: absolute; top: 0; @@ -226,6 +242,7 @@ button { .cardImage-img { max-height: 100%; max-width: 100%; + /* This is simply for lazy image purposes, to ensure the image is visible sooner when scrolling */ min-height: 70%; min-width: 70%; @@ -252,17 +269,17 @@ button { } .cardFooter { - padding: .3em .3em .5em .3em; + padding: 0.3em 0.3em 0.5em 0.3em; position: relative; } .visualCardBox { box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); - border-radius: .145em; + border-radius: 0.145em; } .innerCardFooter { - background: rgba(0,0,0,.7); + background: rgba(0, 0, 0, 0.7); position: absolute; bottom: 0; left: 0; @@ -282,7 +299,7 @@ button { } .cardText { - padding: .06em .5em; + padding: 0.06em 0.5em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -294,7 +311,24 @@ button { } .cardText-first { - padding-top: .24em; + padding-top: 0.24em; +} + +.textActionButton { + border: 0 !important; + background: transparent; + padding: 0 !important; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + outline: none !important; + color: inherit; + vertical-align: middle; + font-family: inherit; + font-size: inherit; +} + +.textActionButton:hover { + text-decoration: underline; } .cardText > .textActionButton { @@ -304,7 +338,7 @@ button { } .innerCardFooter > .cardText { - padding: .3em .5em; + padding: 0.3em 0.5em; } .cardFooter-withlogo { @@ -336,36 +370,19 @@ button { text-align: center; } -.textActionButton { - border: 0 !important; - background: transparent; - border: 0 !important; - padding: 0 !important; - cursor: pointer; - outline: none !important; - color: inherit; - vertical-align: middle; - font-family: inherit; - font-size: inherit; -} - -.textActionButton:hover { - text-decoration: underline; -} - -.cardImageIcon { +.cardImageContainer .cardImageIcon { font-size: 5em; color: inherit; } .cardImageIcon-small { - font-size: 3em; - margin-bottom: .1em; + font-size: 3em !important; + margin-bottom: 0.1em; } .cardIndicators { - right: .225em; - top: .225em; + right: 0.225em; + top: 0.225em; position: absolute; display: flex; align-items: center; @@ -382,16 +399,16 @@ button { } .programAttributeIndicator { - padding: .18em .5em; + padding: 0.18em 0.5em; color: #fff; font-weight: 500; } .cardOverlayButton { - color: rgba(255, 255, 255, .76); + color: rgba(255, 255, 255, 0.76); margin: 0; z-index: 1; - padding: .75em; + padding: 0.75em; font-size: 88%; } @@ -402,7 +419,7 @@ button { } .cardOverlayButtonIcon { - background-color: rgba(0,0,0,.7) !important; + background-color: rgba(0, 0, 0, 0.7) !important; border-radius: 100em; width: 1.5em !important; height: 1.5em !important; @@ -412,6 +429,12 @@ button { font-size: 1.66956521739130434em !important; } +.cardOverlayButtonIcon.material-icons { + /* material-icons override display, so we need to + make a better matching selector to set it to flex */ + display: flex; +} + .cardOverlayButton-centered { bottom: initial; right: initial; @@ -424,10 +447,10 @@ button { height: 2.6em; top: 50%; left: 50%; - background-color: rgba(0,0,0,.5) !important; - border: .06em solid rgba(255,255,255,.6); - padding: .38em !important; - color: rgba(255, 255, 255, .76); + background-color: rgba(0, 0, 0, 0.5) !important; + border: 0.06em solid rgba(255, 255, 255, 0.6); + padding: 0.38em !important; + color: rgba(255, 255, 255, 0.76); transition: transform 200ms ease-out; } @@ -474,13 +497,15 @@ button { width: 33.333333333333333333333333333333%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 33.333333333333333333333333333333%; } } @media (min-width: 43.75em) { - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 25%; } } @@ -496,7 +521,8 @@ button { width: 50%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 20%; } @@ -516,7 +542,8 @@ button { width: 25%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 16.666666666666666666666666666667%; } @@ -529,9 +556,9 @@ button { } } - @media (min-width: 87.5em) { - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 14.285714285714285714285714285714%; } @@ -549,13 +576,15 @@ button { width: 20%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 12.5%; } } @media (min-width: 120em) { - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 11.111111111111111111111111111111%; } } @@ -565,7 +594,8 @@ button { width: 25%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 10%; } } @@ -596,7 +626,8 @@ button { width: 72vw; } -.overflowSquareCard, .overflowPortraitCard { +.overflowSquareCard, +.overflowPortraitCard { width: 40vw; } @@ -621,29 +652,34 @@ button { } @media (min-width: 43.75em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 23.1vw; } } @media (min-width: 48.125em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 30vw; } } @media (orientation: landscape) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 30vw; } - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 23.1vw; } } @media (orientation: landscape) and (min-width: 48.125em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 23.1vw; } } @@ -655,55 +691,60 @@ button { } @media (min-width: 50em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 18.5vw; } } @media (min-width: 75em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 23.1vw; } - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 15.5vw; } } @media (min-width: 87.5em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 13.3vw; } } @media (min-width: 100em) { - - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 18.7vw; } - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 11.6vw; } } @media (min-width: 120em) { - - .overflowSquareCard, .overflowPortraitCard { - width: 10.3vw; + .overflowSquareCard, + .overflowPortraitCard { + width: 10.41vw; } } @media (min-width: 131.25em) { - - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 9.3vw; } } @media (min-width: 156.25em) { - - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 15.6vw; } } @@ -720,7 +761,8 @@ button { padding-bottom: 87.75%; } -.itemsContainer-tv > .overflowSquareCard, .itemsContainer-tv > .overflowPortraitCard { +.itemsContainer-tv > .overflowSquareCard, +.itemsContainer-tv > .overflowPortraitCard { width: 15.6vw; } @@ -729,9 +771,9 @@ button { } .cardOverlayContainer { - background: rgba(0,0,0,0.5); + background: rgba(0, 0, 0, 0.5); opacity: 0; - transition: opacity .2s; + transition: opacity 0.2s; position: absolute; top: 0; left: 0; @@ -748,7 +790,7 @@ button { opacity: 0; transition: 0.2s; background: transparent; - padding: 0.5em; + padding: 0.25em; } .cardOverlayButtonIcon-hover { @@ -760,7 +802,7 @@ button { } .cardOverlayFab-primary { - background-color: rgba(0,0,0,0.7); + background-color: rgba(0, 0, 0, 0.7); font-size: 130%; padding: 0; width: 3em; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 44c5b3b079..7f562f1fd0 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -2,7 +2,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function (datetime, imageLoader, connectionManager, itemHelper, focusManager, indicators, globalize, layoutManager, appHost, dom, browser, playbackManager, itemShortcuts, imageHelper) { 'use strict'; - var devicePixelRatio = window.devicePixelRatio || 1; var enableFocusTransform = !browser.slow && !browser.edge; function getCardsHtml(items, options) { @@ -140,7 +139,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; case 'overflowPortrait': if (layoutManager.tv) { @@ -166,7 +164,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowSquare': if (layoutManager.tv) { return 100 / 15.5; @@ -191,7 +188,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowBackdrop': if (layoutManager.tv) { return 100 / 23.3; @@ -216,7 +212,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; default: return 4; } @@ -237,9 +232,9 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function getImageWidth(shape, screenWidth, isOrientationLandscape) { var imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); - var shapeWidth = screenWidth / imagesPerRow; + var shapeWidth = Math.round(screenWidth / imagesPerRow) * 2; - return Math.round(shapeWidth); + return shapeWidth; } function setCardData(items, options) { @@ -342,7 +337,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana try { newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); } catch (err) { - console.log('error parsing timestamp for premiere date'); + console.error('error parsing timestamp for premiere date'); } } } else if (options.indexBy === 'ProductionYear') { @@ -467,6 +462,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: width, tag: item.ImageTags.Thumb }); @@ -474,6 +470,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Banner", + maxWidth: width, tag: item.ImageTags.Banner }); @@ -481,6 +478,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Disc", + maxWidth: width, tag: item.ImageTags.Disc }); @@ -488,6 +486,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Logo", + maxWidth: width, tag: item.ImageTags.Logo }); @@ -495,6 +494,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, { type: "Logo", + maxWidth: width, tag: item.ParentLogoImageTag }); @@ -502,6 +502,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Thumb", + maxWidth: width, tag: item.SeriesThumbImageTag }); @@ -509,6 +510,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, { type: "Thumb", + maxWidth: width, tag: item.ParentThumbImageTag }); @@ -516,6 +518,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: width, tag: item.BackdropImageTags[0] }); @@ -525,6 +528,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", + maxWidth: width, tag: item.ParentBackdropImageTags[0] }); @@ -534,6 +538,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Primary", + maxHeight: height, + maxWidth: width, tag: item.ImageTags.Primary }); @@ -554,6 +560,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.PrimaryImageItemId || item.Id || item.ItemId, { type: "Primary", + maxHeight: height, + maxWidth: width, tag: item.PrimaryImageTag }); @@ -571,20 +579,24 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { type: "Primary", + maxWidth: width, tag: item.ParentPrimaryImageTag }); } else if (item.SeriesPrimaryImageTag) { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Primary", + maxWidth: width, tag: item.SeriesPrimaryImageTag }); } else if (item.AlbumId && item.AlbumPrimaryImageTag) { - width = primaryImageAspectRatio ? Math.round(height * primaryImageAspectRatio) : null; + height = width && primaryImageAspectRatio ? Math.round(width / primaryImageAspectRatio) : null; imgUrl = apiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", + maxHeight: height, + maxWidth: width, tag: item.AlbumPrimaryImageTag }); @@ -598,6 +610,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: width, tag: item.ImageTags.Thumb }); @@ -605,6 +618,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: width, tag: item.BackdropImageTags[0] }); @@ -612,6 +626,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: width, tag: item.ImageTags.Thumb }); @@ -619,6 +634,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Thumb", + maxWidth: width, tag: item.SeriesThumbImageTag }); @@ -626,6 +642,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, { type: "Thumb", + maxWidth: width, tag: item.ParentThumbImageTag }); @@ -633,6 +650,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", + maxWidth: width, tag: item.ParentBackdropImageTags[0] }); @@ -738,7 +756,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana airTimeText += ' - ' + datetime.getDisplayTime(date); } } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -758,7 +776,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (isOuterFooter && options.cardLayout && layoutManager.mobile) { if (options.cardFooterAside !== 'none') { - html += ''; + html += ''; } } @@ -870,9 +888,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (item.PremiereDate) { try { - - lines.push(getPremiereDateText(item)); - + lines.push(datetime.toLocaleDateString( + datetime.parseISO8601Date(item.PremiereDate), + { weekday: 'long', month: 'long', day: 'numeric' } + )); } catch (err) { lines.push(''); @@ -1018,7 +1037,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return text; } - var html = ''; @@ -1316,15 +1335,15 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { - overlayButtons += ''; + overlayButtons += ''; } if (overlayPlayButton && !item.IsPlaceHolder && (item.LocationType !== 'Virtual' || !item.MediaType || item.Type === 'Program') && item.Type !== 'Person') { - overlayButtons += ''; + overlayButtons += ''; } if (options.overlayMoreButton) { - overlayButtons += ''; + overlayButtons += ''; } } @@ -1383,7 +1402,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } if (item.Type === 'CollectionFolder' || item.CollectionType) { - var refreshClass = item.RefreshProgress || (item.RefreshStatus && virtualFolder.item !== 'Idle') ? '' : ' class="hide"'; + var refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; requireRefreshIndicator(); } @@ -1397,7 +1416,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana //} if (!imgUrl) { - cardImageContainerOpen += getCardDefaultText(item, options); + cardImageContainerOpen += getDefaultText(item, options); } var tagName = (layoutManager.tv) && !overlayButtons ? 'button' : 'div'; @@ -1457,16 +1476,16 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { - html += ''; + html += ''; } - html += '
'; + html += '
'; var userData = item.UserData || {}; if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); - html += ''; + html += ''; } if (itemHelper.canRate(item)) { @@ -1474,10 +1493,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); - html += ''; + html += ''; } - html += ''; + html += ''; html += '
'; html += '
'; @@ -1485,18 +1504,29 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return html; } - function getCardDefaultText(item, options) { + function getDefaultText(item, options) { if (item.CollectionType) { - return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' + return '' } - if (item.Type === 'MusicAlbum') { - return 'album'; + + switch (item.Type) { + case 'MusicAlbum': + return 'album'; + case 'MusicArtist': + case 'Person': + return 'person'; + case 'Movie': + return 'movie'; + case 'Series': + return 'tv'; + case 'Book': + return 'book'; + case 'Folder': + return 'folder'; } - if (item.Type === 'MusicArtist' || item.Type === 'Person') { - return 'person'; - } - if (options.defaultCardImageIcon) { - return '' + options.defaultCardImageIcon + ''; + + if (options && options.defaultCardImageIcon) { + return '' + options.defaultCardImageIcon + ''; } var defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); @@ -1585,7 +1615,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana indicatorsElem = ensureIndicators(card, indicatorsElem); indicatorsElem.appendChild(playedIndicator); } - playedIndicator.innerHTML = 'check'; + playedIndicator.innerHTML = 'check'; } else { playedIndicator = card.querySelector('.playedIndicator'); @@ -1666,7 +1696,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var icon = cell.querySelector('.timerIndicator'); if (!icon) { var indicatorsElem = ensureIndicators(cell); - indicatorsElem.insertAdjacentHTML('beforeend', 'fiber_manual_record'); + indicatorsElem.insertAdjacentHTML('beforeend', ''); } cell.setAttribute('data-timerid', newTimerId); } @@ -1702,6 +1732,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return { getCardsHtml: getCardsHtml, + getDefaultBackgroundClass: getDefaultBackgroundClass, + getDefaultText: getDefaultText, buildCards: buildCards, onUserDataChanged: onUserDataChanged, onTimerCreated: onTimerCreated, diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 0f42e14584..16326b6c59 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -68,7 +68,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse return apiClient.getScaledImageUrl(item.Id, { - maxWidth: maxWidth, + maxWidth: maxWidth * 2, tag: chapter.ImageTag, type: "Chapter", index: index @@ -90,7 +90,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse var cardImageContainer = imgUrl ? ('
') : ('
'); if (!imgUrl) { - cardImageContainer += 'local_movies'; + cardImageContainer += ''; } var nameHtml = ''; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 0247f79a55..1b536f440b 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -71,7 +71,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee function getTunerChannelHtml(channel, providerName) { var html = ""; html += '
'; - html += 'dvr'; + html += 'dvr'; html += '
'; html += '

'; html += channel.Name; @@ -84,7 +84,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee html += "

"; html += "
"; - html += ''; + html += ''; return html += "
"; } @@ -127,7 +127,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee var html = ""; var title = globalize.translate("MapChannels"); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += "

"; diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 9d6f811cb1..2fef0c68b3 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -131,8 +131,9 @@ define(['events'], function (events) { var links = []; var match; + // eslint-disable-next-line no-cond-assign while (match = linkRegExp.exec(text)) { - // console.log(matches); + console.debug(match); var txt = match[0]; var pos = match.index; var len = txt.length; @@ -189,7 +190,7 @@ define(['events'], function (events) { return apiClient.getPublicSystemInfo().then(function (info) { var localAddress = info.LocalAddress if (!localAddress) { - console.log("No valid local address returned, defaulting to external one") + console.debug("No valid local address returned, defaulting to external one") localAddress = serverAddress; } addToCache(serverAddress, localAddress); @@ -230,4 +231,4 @@ define(['events'], function (events) { return { getServerAddress: getServerAddress }; -}); \ No newline at end of file +}); diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 7302b74124..18103e433f 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -105,7 +105,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' this.sessionListener.bind(this), this.receiverListener.bind(this)); - console.log('chromecast.initialize'); + console.debug('chromecast.initialize'); chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.errorHandler); }; @@ -114,14 +114,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onInitSuccess = function () { this.isInitialized = true; - console.log("chromecast init success"); + console.debug("chromecast init success"); }; /** * Generic error callback function */ CastPlayer.prototype.onError = function () { - console.log("chromecast error"); + console.debug("chromecast error"); }; /** @@ -177,10 +177,10 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.receiverListener = function (e) { if (e === 'available') { - console.log("chromecast receiver found"); + console.debug("chromecast receiver found"); this.hasReceivers = true; } else { - console.log("chromecast receiver list empty"); + console.debug("chromecast receiver list empty"); this.hasReceivers = false; } }; @@ -190,7 +190,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.sessionUpdateListener = function (isAlive) { if (isAlive) { - console.log('sessionUpdateListener: already alive'); + console.debug('sessionUpdateListener: already alive'); } else { this.session = null; this.deviceState = DEVICE_STATE.IDLE; @@ -198,7 +198,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); - console.log('sessionUpdateListener: setting currentMediaSession to null'); + console.debug('sessionUpdateListener: setting currentMediaSession to null'); this.currentMediaSession = null; sendConnectionResult(false); @@ -211,7 +211,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * session request in opt_sessionRequest. */ CastPlayer.prototype.launchApp = function () { - console.log("chromecast launching app..."); + console.debug("chromecast launching app..."); chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this), this.onLaunchError.bind(this)); }; @@ -220,7 +220,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {Object} e A chrome.cast.Session object */ CastPlayer.prototype.onRequestSessionSuccess = function (e) { - console.log("chromecast session success: " + e.sessionId); + console.debug("chromecast session success: " + e.sessionId); this.onSessionConnected(e); }; @@ -262,7 +262,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for launch error */ CastPlayer.prototype.onLaunchError = function () { - console.log("chromecast launch error"); + console.debug("chromecast launch error"); this.deviceState = DEVICE_STATE.ERROR; sendConnectionResult(false); }; @@ -280,7 +280,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for stop app success */ CastPlayer.prototype.onStopAppSuccess = function (message) { - console.log(message); + console.debug(message); this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; @@ -296,7 +296,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.loadMedia = function (options, command) { if (!this.session) { - console.log("no session"); + console.debug("no session"); return Promise.reject(); } @@ -377,7 +377,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; CastPlayer.prototype.onPlayCommandSuccess = function () { - //console.log('Message was sent to receiver ok.'); + console.debug('Message was sent to receiver ok.'); }; /** @@ -386,7 +386,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onMediaDiscovered = function (how, mediaSession) { - //console.log("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); + console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); this.currentMediaSession = mediaSession; if (how === 'loadMedia') { @@ -405,7 +405,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {!Boolean} e true/false */ CastPlayer.prototype.onMediaStatusUpdate = function (e) { - //console.log("chromecast updating media: " + e); + console.debug("chromecast updating media: " + e); if (e === false) { this.castPlayerState = PLAYER_STATE.IDLE; } @@ -417,7 +417,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.setReceiverVolume = function (mute, vol) { if (!this.currentMediaSession) { - //console.log('this.currentMediaSession is null'); + console.debug('this.currentMediaSession is null'); return; } @@ -443,7 +443,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for media command success */ CastPlayer.prototype.mediaCommandSuccessCallback = function (info, e) { - //console.log(info); + console.debug(info); }; function normalizeImages(state) { @@ -493,7 +493,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, eventName, function (e, data) { - //console.log('cc: ' + eventName); + console.debug('cc: ' + eventName); var state = instance.getPlayerStateInternal(data); events.trigger(instance, eventName, [state]); @@ -520,14 +520,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' playbackManager.setActivePlayer(PlayerName, instance.getCurrentTargetInfo()); } - console.log('cc: connect'); + console.debug('cc: connect'); // Reset this so that statechange will fire instance.lastPlayerData = null; }); events.on(instance._castPlayer, "playbackstart", function (e, data) { - console.log('cc: playbackstart'); + console.debug('cc: playbackstart'); instance._castPlayer.initializeCastPlayer(); @@ -537,7 +537,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackstop", function (e, data) { - console.log('cc: playbackstop'); + console.debug('cc: playbackstop'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "playbackstop", [state]); @@ -555,7 +555,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackprogress", function (e, data) { - //console.log('cc: positionchange'); + console.debug('cc: positionchange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "timeupdate", [state]); @@ -569,7 +569,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playstatechange", function (e, data) { - //console.log('cc: playstatechange'); + console.debug('cc: playstatechange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "pause", [state]); @@ -664,7 +664,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' normalizeImages(data); - //console.log(JSON.stringify(data)); + console.debug(JSON.stringify(data)); if (triggerStateChange) { events.trigger(this, "statechange", [data]); @@ -686,6 +686,13 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }); } + if (options.items.length > 1 && options && options.ids) { + // Use the original request id array for sorting the result in the proper order + options.items.sort(function (a, b) { + return options.ids.indexOf(a.Id) - options.ids.indexOf(b.Id); + }); + } + return this._castPlayer.loadMedia(options, command); }; diff --git a/src/components/collectioneditor/collectioneditor.js b/src/components/collectioneditor/collectioneditor.js index a91594556e..79220ac335 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -243,13 +243,13 @@ define(['dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManage var title = items.length ? globalize.translate('HeaderAddToCollection') : globalize.translate('NewCollection'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; if (appHost.supports('externallinks')) { - html += 'info' + globalize.translate('Help') + ''; + html += 'info' + globalize.translate('Help') + ''; } html += '
'; diff --git a/src/components/confirm/nativeconfirm.js b/src/components/confirm/nativeconfirm.js index fd586ad1d5..7d72bc5eaf 100644 --- a/src/components/confirm/nativeconfirm.js +++ b/src/components/confirm/nativeconfirm.js @@ -24,4 +24,4 @@ define([], function () { return Promise.reject(); } }; -}); \ No newline at end of file +}); diff --git a/src/components/dialog/dialog.template.html b/src/components/dialog/dialog.template.html index eae210d14e..bee0ef7f73 100644 --- a/src/components/dialog/dialog.template.html +++ b/src/components/dialog/dialog.template.html @@ -12,4 +12,4 @@
-
\ No newline at end of file +
diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index bddd839760..d8ddc13c0a 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -32,7 +32,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', try { parentNode.removeChild(elem); } catch (err) { - console.log('Error removing dialog element: ' + err); + console.error('error removing dialog element: ' + err); } } } @@ -242,9 +242,15 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', var onAnimationFinish = function () { focusManager.pushScope(dlg); + if (dlg.getAttribute('data-autofocus') === 'true') { focusManager.autoFocus(dlg); } + + if (document.activeElement && !dlg.contains(document.activeElement)) { + // Blur foreign element to prevent triggering of an action from the previous scope + document.activeElement.blur(); + } }; if (enableAnimation()) { @@ -481,4 +487,4 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', globalOnOpenCallback = val; } }; -}); \ No newline at end of file +}); diff --git a/src/components/dialogHelper/dialoghelper.css b/src/components/dialogHelper/dialoghelper.css index aa4145e016..df2adf075f 100644 --- a/src/components/dialogHelper/dialoghelper.css +++ b/src/components/dialogHelper/dialoghelper.css @@ -15,10 +15,12 @@ .dialog { margin: 0; - border-radius: .2em; + border-radius: 0.2em; + -webkit-font-smoothing: antialiased; border: 0; padding: 0; will-change: transform, opacity; + /* Strict does not work well with actionsheet */ contain: style paint; box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.4); @@ -50,13 +52,13 @@ to { opacity: 0; - transform: scale(.5); + transform: scale(0.5); } } @keyframes scaleup { from { - transform: scale(.5); + transform: scale(0.5); opacity: 0; } @@ -77,7 +79,6 @@ } @keyframes fadeout { - from { opacity: 1; } @@ -100,7 +101,6 @@ } @keyframes slidedown { - from { opacity: 1; transform: none; @@ -113,8 +113,8 @@ } @media all and (max-width: 80em), all and (max-height: 45em) { - - .dialog-fixedSize, .dialog-fullscreen-lowres { + .dialog-fixedSize, + .dialog-fullscreen-lowres { position: fixed !important; top: 0 !important; bottom: 0 !important; @@ -126,7 +126,6 @@ } @media all and (min-width: 80em) and (min-height: 45em) { - .dialog-medium { width: 80%; height: 80%; @@ -168,5 +167,5 @@ } .dialogBackdropOpened { - opacity: .5; + opacity: 0.5; } diff --git a/src/components/directorybrowser/directorybrowser.css b/src/components/directorybrowser/directorybrowser.css index 0f3f22f073..ef6d58934f 100644 --- a/src/components/directorybrowser/directorybrowser.css +++ b/src/components/directorybrowser/directorybrowser.css @@ -1,8 +1,8 @@ #ulDirectoryPickerList a { - padding-top: .4em; - padding-bottom: .4em + padding-top: 0.4em; + padding-bottom: 0.4em; } .lblDirectoryPickerPath { - white-space: nowrap -} \ No newline at end of file + white-space: nowrap; +} diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 344d4bb593..b71f7bbb05 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -76,7 +76,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += name; html += "

"; html += ""; - html += 'arrow_forward'; + html += ''; html += ""; return html; } @@ -116,7 +116,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += ''; html += ""; if (!readOnlyAttribute) { - html += ''; + html += ''; } html += ""; if (!readOnlyAttribute) { @@ -265,7 +265,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += options.header || Globalize.translate("HeaderSelectPath"); html += "

"; diff --git a/src/components/displaysettings/displaysettings.js b/src/components/displaysettings/displaysettings.js index fea7d9bd3e..da407c11f1 100644 --- a/src/components/displaysettings/displaysettings.js +++ b/src/components/displaysettings/displaysettings.js @@ -180,6 +180,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', ' context.querySelector('#chkThemeSong').checked = userSettings.enableThemeSongs(); context.querySelector('#chkThemeVideo').checked = userSettings.enableThemeVideos(); + context.querySelector('#chkFadein').checked = userSettings.enableFastFadein(); context.querySelector('#chkBackdrops').checked = userSettings.enableBackdrops(); context.querySelector('#selectLanguage').value = userSettings.language() || ''; @@ -216,6 +217,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', ' userSettingsInstance.skin(context.querySelector('.selectSkin').value); + userSettingsInstance.enableFastFadein(context.querySelector('#chkFadein').checked); userSettingsInstance.enableBackdrops(context.querySelector('#chkBackdrops').checked); if (user.Id === apiClient.getCurrentUserId()) { diff --git a/src/components/displaysettings/displaysettings.template.html b/src/components/displaysettings/displaysettings.template.html index f469d8d5ce..16bbf0dd8a 100644 --- a/src/components/displaysettings/displaysettings.template.html +++ b/src/components/displaysettings/displaysettings.template.html @@ -3,6 +3,7 @@

${Display}

+
+
@@ -141,6 +143,14 @@
+
+ +
${EnableFastImageFadeInHelp}
+
+
${EnableBackdropsHelp}
+
${EnableThemeSongsHelp}
+
- \ No newline at end of file + diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 56ff324e23..1da58d75c8 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -43,7 +43,7 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { preventScroll: scrollManager.isEnabled() }); } catch (err) { - console.log('Error in focusManager.autoFocus: ' + err); + console.error('Error in focusManager.autoFocus: ' + err); } } diff --git a/src/components/formdialog.css b/src/components/formdialog.css index b976d8130e..788331da94 100644 --- a/src/components/formdialog.css +++ b/src/components/formdialog.css @@ -5,14 +5,15 @@ } .formDialogHeader { - padding: 1em .5em; + padding: 1em 0.5em; display: flex; align-items: center; flex-shrink: 0; } .formDialogHeaderTitle { - margin-left: .25em; + margin-left: 0.25em; + /* In case of h1, h2, h3 */ margin-top: 0; margin-bottom: 0; @@ -23,7 +24,7 @@ } .dialogContentInner { - padding: .5em 1em 20em 1em; + padding: 0.5em 1em 20em 1em; } .dialogContentInner-mini { @@ -46,6 +47,7 @@ display: flex; position: absolute; padding: 1.25em 1em; + /* Without this emby-checkbox is able to appear on top */ z-index: 1; align-items: center; @@ -62,11 +64,11 @@ padding-bottom: 1.5em; flex-direction: column; width: 80% !important; - padding-top: .5em; + padding-top: 0.5em; } .formDialogFooterItem { - margin: .5em !important; + margin: 0.5em !important; flex-grow: 1; text-align: center; flex-basis: 0; @@ -91,7 +93,6 @@ } @media all and (min-width: 50em) { - .formDialogFooterItem { max-width: 80%; } @@ -103,7 +104,6 @@ } @media all and (min-width: 80em) { - .formDialogFooterItem { max-width: 70%; } diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 9ee43be9f1..7409a7e943 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -89,20 +89,6 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } } - function onSortByChange() { - var newValue = this.value; - if (this.checked) { - var changed = options.query.SortBy !== newValue; - - options.query.SortBy = newValue.replace('_', ','); - options.query.StartIndex = 0; - - if (options.callback && changed) { - options.callback(); - } - } - } - function showEditor(options) { return new Promise(function (resolve, reject) { @@ -171,4 +157,4 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/guide/guide-settings.template.html b/src/components/guide/guide-settings.template.html index d85b4a71b9..02701db3d2 100644 --- a/src/components/guide/guide-settings.template.html +++ b/src/components/guide/guide-settings.template.html @@ -1,5 +1,5 @@
- +

${Settings}

diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 7dd0594149..3b776e6dde 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -14,12 +14,12 @@ } .layout-desktop .tvGuideHeader { - margin-bottom: .5em; + margin-bottom: 0.5em; } .guideHeaderDateSelection { font-size: 86%; - padding: .4em 0; + padding: 0.4em 0; } .guide-headerTimeslots { @@ -39,10 +39,10 @@ .guideProgramIndicator { text-transform: uppercase; - border-radius: .25em; - margin-right: .5em; + border-radius: 0.25em; + margin-right: 0.5em; font-size: 82%; - padding: .2em .25em; + padding: 0.2em 0.25em; display: inline-flex; align-items: center; justify-content: center; @@ -51,6 +51,8 @@ } .guide-channelTimeslotHeader { + border: 0 !important; + border-right-color: transparent; flex-shrink: 0; justify-content: center; } @@ -69,9 +71,14 @@ } .channelPrograms { + height: 4.42em; + contain: strict; + display: flex; + flex-direction: column; + border-style: solid; + border-width: 1px 0 1px 0; white-space: nowrap; position: relative; - contain: strict; box-sizing: border-box; } @@ -80,31 +87,32 @@ } .guideSpacer { - width: .3em; + width: 0.3em; flex-shrink: 0; } -.channelPrograms, .timeslotHeadersInner { +.channelPrograms, +.timeslotHeadersInner { width: 1800vw; } @media all and (min-width: 37.5em) { - - .channelPrograms, .timeslotHeadersInner { + .channelPrograms, + .timeslotHeadersInner { width: 1400vw; } } @media all and (min-width: 50em) { - - .channelPrograms, .timeslotHeadersInner { + .channelPrograms, + .timeslotHeadersInner { width: 1200vw; } } @media all and (min-width: 80em) { - - .channelPrograms, .timeslotHeadersInner { + .channelPrograms, + .timeslotHeadersInner { width: 810vw; } } @@ -112,11 +120,17 @@ .timeslotHeader { display: inline-flex; align-items: center; - text-indent: .25em; + text-indent: 0.25em; width: 2.0833333333333333333333333333333%; } -.guide-channelHeaderCell, .guide-channelTimeslotHeader { +.programCell, +.guide-channelHeaderCell { + outline: none !important; +} + +.guide-channelHeaderCell, +.guide-channelTimeslotHeader { padding: 0 !important; cursor: pointer; outline: none !important; @@ -130,11 +144,12 @@ display: flex; align-items: center; text-decoration: none; + /* Needed in firefox */ text-align: left; contain: strict; flex-shrink: 0; - border-radius: .12em; + border-radius: 0.12em; color: inherit; } @@ -148,37 +163,38 @@ background: transparent; } -.guide-channelTimeslotHeader { - border: 0 !important; -} - /* Important - have to put the fixed width on channelsContainer, not the individual channelHeaderCell This was causing channelsContainer to extend beyond the fixed width on ps4, tizen, lg and opera tv. */ -.channelsContainer, .guide-channelTimeslotHeader { +.channelsContainer, +.guide-channelTimeslotHeader { width: 24vw; } -@media all and (min-width:31.25em) { - .channelsContainer, .guide-channelTimeslotHeader { +@media all and (min-width: 31.25em) { + .channelsContainer, + .guide-channelTimeslotHeader { width: 16vw; } } -@media all and (min-width:37.5em) { - .channelsContainer, .guide-channelTimeslotHeader { +@media all and (min-width: 37.5em) { + .channelsContainer, + .guide-channelTimeslotHeader { width: 16vw; } } -@media all and (min-width:50em) { - .channelsContainer, .guide-channelTimeslotHeader { +@media all and (min-width: 50em) { + .channelsContainer, + .guide-channelTimeslotHeader { width: 14vw; } } -@media all and (min-width:80em) { - .channelsContainer, .guide-channelTimeslotHeader { +@media all and (min-width: 80em) { + .channelsContainer, + .guide-channelTimeslotHeader { width: 12vw; } } @@ -197,34 +213,26 @@ } @media all and (max-width: 50em) { - - .newTvProgram, .liveTvProgram, .premiereTvProgram, .guideHdIcon { + .newTvProgram, + .liveTvProgram, + .premiereTvProgram, + .guideHdIcon { display: none; } } -.channelPrograms { - height: 4.42em; - contain: strict; - display: flex; - flex-direction: column; - border-style: solid; - border-width: 1px 0 1px 0; +.channelPrograms + .channelPrograms, +.guide-channelHeaderCell + .guide-channelHeaderCell { + margin-top: -1px; } - .channelPrograms + .channelPrograms, .guide-channelHeaderCell + .guide-channelHeaderCell { - margin-top: -1px; - } - -.channelPrograms-tv, .guide-channelHeaderCell-tv { +.channelPrograms-tv, +.guide-channelHeaderCell-tv { height: 3em; } -.guide-channelTimeslotHeader { - border-right-color: transparent; -} - -.guide-channelTimeslotHeader, .timeslotHeader { +.guide-channelTimeslotHeader, +.timeslotHeader { background: transparent !important; height: 2.8em; } @@ -253,6 +261,7 @@ text-decoration: none; overflow: hidden; align-items: center; + /* Needed for Firefox */ text-align: left; contain: strict; @@ -261,7 +270,7 @@ } .guideProgramName { - padding: 0 .7em 0; + padding: 0 0.7em 0; overflow: hidden; text-overflow: ellipsis; align-items: center; @@ -269,7 +278,8 @@ position: relative; flex-grow: 1; contain: layout style paint; - /*transition: transform 60ms ease-out;*/ + + /* transition: transform 60ms ease-out; */ } .guide-programNameCaret { @@ -289,11 +299,11 @@ .guideProgramSecondaryInfo { display: flex; align-items: center; - margin-top: .1em; + margin-top: 0.1em; } .programIcon { - margin-left: .5em; + margin-left: 0.5em; height: 1em; width: 1em; font-size: 1.6em; @@ -304,16 +314,16 @@ .guide-programTextIcon { font-weight: bold; - font-size: .9em; - padding: .16em .3em; - border-radius: .25em; - margin-right: .35em; + font-size: 0.9em; + padding: 0.16em 0.3em; + border-radius: 0.25em; + margin-right: 0.35em; width: auto; height: auto; } .guide-programTextIcon-tv { - font-size: .74em; + font-size: 0.74em; } .guideChannelNumber { @@ -345,14 +355,12 @@ } @media all and (min-width: 62.5em) { - .guideChannelName { max-width: 40%; } } @media all and (max-width: 62.5em) { - .guideChannelNumber { display: none; } @@ -368,21 +376,19 @@ flex-direction: column; } -.channelsContainer, .programGrid { +.channelsContainer, +.programGrid { contain: layout style paint; } -.programCell, .guide-channelHeaderCell { - outline: none !important; -} - -.timerIcon, .seriesTimerIcon { - color: #cc3333 !important; +.timerIcon, +.seriesTimerIcon { + color: #c33 !important; } .seriesTimerIcon-inactive { color: inherit !important; - opacity: .7; + opacity: 0.7; } .guideOptions { @@ -392,7 +398,6 @@ } @media all and (max-width: 50em), all and (max-height: 37.5em) { - .tvGuideHeader { padding-left: 0; } @@ -415,16 +420,16 @@ } .guide-date-tab-button { - padding: .3em .7em !important; - margin: 0 .3em !important; + padding: 0.3em 0.7em !important; + margin: 0 0.3em !important; font-weight: normal; } - .guide-date-tab-button.emby-tab-button-active { - border-color: transparent !important; - } +.guide-date-tab-button.emby-tab-button-active { + border-color: transparent !important; +} - .guide-date-tab-button.show-focus:focus { - border-radius: .15em !important; - transform: none !important; - } +.guide-date-tab-button.show-focus:focus { + border-radius: 0.15em !important; + transform: none !important; +} diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index c8ed31df0f..a00baaa6f0 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -29,7 +29,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var offset = newPct - left; var pctOfWidth = (offset / width) * 100; - //console.log(pctOfWidth); var guideProgramName = cell.guideProgramName; if (!guideProgramName) { guideProgramName = cell.querySelector('.guideProgramName'); @@ -396,7 +395,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', try { program.StartDateLocal = datetime.parseISO8601Date(program.StartDate, { toLocal: true }); } catch (err) { - console.log('error parsing timestamp for start date'); + console.error('error parsing timestamp for start date'); } } @@ -404,7 +403,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', try { program.EndDateLocal = datetime.parseISO8601Date(program.EndDate, { toLocal: true }); } catch (err) { - console.log('error parsing timestamp for end date'); + console.error('error parsing timestamp for end date'); } } @@ -416,7 +415,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -430,13 +429,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { @@ -550,7 +549,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; - html += '
keyboard_arrow_left
'; + html += '
'; html += '
' + program.Name; @@ -578,7 +577,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; if (program.IsHD && options.showHdIcon) { - //html += 'hd'; + //html += 'hd'; if (layoutManager.tv) { html += '
HD
'; } else { @@ -1106,7 +1105,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var icon = cell.querySelector('.timerIcon'); if (!icon) { - cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', 'fiber_manual_record'); + cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', ''); } if (newTimerId) { diff --git a/src/components/guide/programs.css b/src/components/guide/programs.css index 7a559e173f..34976e81ec 100644 --- a/src/components/guide/programs.css +++ b/src/components/guide/programs.css @@ -1,15 +1,15 @@ .newTvProgram { - background: #3388cc; + background: #38c; color: #fff; } .liveTvProgram { - background: #cc3333; + background: #c33; color: #fff; } .premiereTvProgram { - background: #EF6C00; + background: #ef6c00; color: #fff; } diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 7edffec6d1..ef3c4b58ca 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -10,7 +10,7 @@
@@ -30,9 +30,9 @@
diff --git a/src/components/headroom/headroom.css b/src/components/headroom/headroom.css index caac40a1b6..df985892ff 100644 --- a/src/components/headroom/headroom.css +++ b/src/components/headroom/headroom.css @@ -8,4 +8,4 @@ .headroom--unpinned:not(.headroomDisabled) { transform: translateY(-100%); -} \ No newline at end of file +} diff --git a/src/components/headroom/headroom.js b/src/components/headroom/headroom.js index 9c058a8e82..3c0ada3ce9 100644 --- a/src/components/headroom/headroom.js +++ b/src/components/headroom/headroom.js @@ -340,4 +340,4 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay }; return Headroom; -}); \ No newline at end of file +}); diff --git a/src/components/homescreensettings/homescreensettings.js b/src/components/homescreensettings/homescreensettings.js index 5b966327eb..ccc6fa75f4 100644 --- a/src/components/homescreensettings/homescreensettings.js +++ b/src/components/homescreensettings/homescreensettings.js @@ -149,7 +149,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += 'folder_open'; + currentHtml += ''; currentHtml += '
'; @@ -159,8 +159,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += ''; - currentHtml += ''; + currentHtml += ''; + currentHtml += ''; currentHtml += '
'; diff --git a/src/components/homescreensettings/homescreensettings.template.html b/src/components/homescreensettings/homescreensettings.template.html index 1ed2ec1b9c..d5bae685b8 100644 --- a/src/components/homescreensettings/homescreensettings.template.html +++ b/src/components/homescreensettings/homescreensettings.template.html @@ -129,4 +129,4 @@ - \ No newline at end of file + diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 5df2440f82..2a119c0981 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -1,23 +1,24 @@ .homeLibraryButton { min-width: 18%; - margin: .5em !important; + margin: 0.5em !important; } @media all and (max-width: 50em) { - .homeLibraryButton { width: 46% !important; } } .homeLibraryIcon { - margin-left: .5em; - margin-right: .5em; - flex-shrink: 0 + margin-left: 0.5em; + margin-right: 0.5em; + -webkit-flex-shrink: 0; + flex-shrink: 0; } .homeLibraryText { white-space: nowrap; + -o-text-overflow: ellipsis; text-overflow: ellipsis; - overflow: hidden + overflow: hidden; } diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 3f86e16796..b024528549 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -40,26 +40,48 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la return getUserViews(apiClient, user.Id).then(function (userViews) { var html = ''; - var sectionCount = 7; - for (var i = 0; i < sectionCount; i++) { - html += '
'; - } + if (userViews.length) { + var sectionCount = 7; + for (var i = 0; i < sectionCount; i++) { + html += '
'; + } - elem.innerHTML = html; - elem.classList.add('homeSectionsContainer'); + elem.innerHTML = html; + elem.classList.add('homeSectionsContainer'); - var promises = []; - var sections = getAllSectionsToShow(userSettings, sectionCount); - for (var i = 0; i < sections.length; i++) { - promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); - } + var promises = []; + var sections = getAllSectionsToShow(userSettings, sectionCount); + for (var i = 0; i < sections.length; i++) { + promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); + } - return Promise.all(promises).then(function () { - return resume(elem, { - refresh: true, - returnPromise: false + return Promise.all(promises).then(function () { + return resume(elem, { + refresh: true, + returnPromise: false + }); }); - }); + } else { + var noLibDescription; + if (user['Policy'] && user['Policy']['IsAdministrator']) { + noLibDescription = Globalize.translate("NoCreatedLibraries", '', '') + } else { + noLibDescription = Globalize.translate("AskAdminToCreateLibrary"); + } + + html += '
'; + html += '

' + Globalize.translate("MessageNothingHere") + '

'; + html += '

' + noLibDescription + '

' + html += '
'; + elem.innerHTML = html; + + var createNowLink = elem.querySelector("#button-createLibrary") + if (createNowLink) { + createNowLink.addEventListener("click", function () { + Dashboard.navigate("library.html"); + }); + } + } }); } @@ -161,7 +183,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; var icon = imageHelper.getLibraryIcon(item.CollectionType); - html += '' + icon + '' + item.Name + ''; + html += '' + item.Name + ''; } html += '
'; @@ -260,7 +282,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('LatestFromLibrary', parent.Name); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { html += '

' + globalize.translate('LatestFromLibrary', parent.Name) + '

'; @@ -268,7 +290,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -321,7 +343,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (userViews.length) { html += '

' + globalize.translate('HeaderMyMedia') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -401,7 +423,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -474,7 +496,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -560,7 +582,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -608,7 +630,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderOnNow'); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { @@ -617,7 +639,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; @@ -683,7 +705,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderNextUp'); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { html += '

' + globalize.translate('HeaderNextUp') + '

'; @@ -691,7 +713,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; @@ -763,7 +785,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 86f05dabfa..338b8e6fef 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -114,12 +114,12 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve if (!recoverDecodingErrorDate || (now - recoverDecodingErrorDate) > 3000) { recoverDecodingErrorDate = now; - console.log('try to recover media Error ...'); + console.debug('try to recover media Error ...'); hlsPlayer.recoverMediaError(); } else { if (!recoverSwapAudioCodecDate || (now - recoverSwapAudioCodecDate) > 3000) { recoverSwapAudioCodecDate = now; - console.log('try to swap Audio Codec and recover media Error ...'); + console.debug('try to swap Audio Codec and recover media Error ...'); hlsPlayer.swapAudioCodec(); hlsPlayer.recoverMediaError(); } else { @@ -233,7 +233,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve return Promise.resolve(); } } catch (err) { - console.log('error calling video.play: ' + err); + console.error('error calling video.play: ' + err); return Promise.reject(); } } @@ -245,7 +245,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.unload(); } catch (err) { - console.log(err); + console.error(err); } instance._castPlayer = null; @@ -258,7 +258,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._shakaPlayer = null; @@ -271,7 +271,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._hlsPlayer = null; @@ -286,7 +286,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve player.detachMediaElement(); player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._flvPlayer = null; @@ -307,14 +307,14 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve hls.on(Hls.Events.ERROR, function (event, data) { - console.log('HLS Error: Type: ' + data.type + ' Details: ' + (data.details || '') + ' Fatal: ' + (data.fatal || false)); + console.error('HLS Error: Type: ' + data.type + ' Details: ' + (data.details || '') + ' Fatal: ' + (data.fatal || false)); switch (data.type) { case Hls.ErrorTypes.NETWORK_ERROR: // try to recover network error if (data.response && data.response.code && data.response.code >= 400) { - console.log('hls.js response error code: ' + data.response.code); + console.debug('hls.js response error code: ' + data.response.code); // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -343,7 +343,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve // This could be a CORS error related to access control response headers - console.log('hls.js response error code: ' + data.response.code); + console.debug('hls.js response error code: ' + data.response.code); // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -355,20 +355,20 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve onErrorInternal(instance, 'network'); } } else { - console.log("fatal network error encountered, try to recover"); + console.debug("fatal network error encountered, try to recover"); hls.startLoad(); } break; case Hls.ErrorTypes.MEDIA_ERROR: - console.log("fatal media error encountered, try to recover"); + console.debug("fatal media error encountered, try to recover"); var currentReject = reject; reject = null; handleHlsJsMediaError(instance, currentReject); break; default: - console.log('Cannot recover from hls error - destroy and trigger error'); + console.debug('Cannot recover from hls error - destroy and trigger error'); // cannot recover // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -463,4 +463,4 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve getCrossOriginValue: getCrossOriginValue, getBufferedRanges: getBufferedRanges }; -}); \ No newline at end of file +}); diff --git a/src/components/htmlaudioplayer/plugin.js b/src/components/htmlaudioplayer/plugin.js index ef64bad046..8cae76bbee 100644 --- a/src/components/htmlaudioplayer/plugin.js +++ b/src/components/htmlaudioplayer/plugin.js @@ -16,7 +16,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp // Need to record the starting volume on each pass rather than querying elem.volume // This is due to iOS safari not allowing volume changes and always returning the system volume value var newVolume = Math.max(0, startingVolume - 0.15); - console.log('fading volume to ' + newVolume); + console.debug('fading volume to ' + newVolume); elem.volume = newVolume; if (newVolume <= 0) { @@ -113,7 +113,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp bindEvents(elem); var val = options.url; - console.log('playing url: ' + val); + console.debug('playing url: ' + val); // Convert to seconds var seconds = (options.playerStartPositionTicks || 0) / 10000000; @@ -298,7 +298,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index ac4e8cf6a5..d19187c9ed 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1,5 +1,6 @@ -define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager) { +define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager, globalize) { "use strict"; + /* globals cast */ var mediaManager; @@ -11,7 +12,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa try { parentNode.removeChild(elem); } catch (err) { - console.log('Error removing dialog element: ' + err); + console.error('error removing dialog element: ' + err); } } } @@ -27,6 +28,14 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return _supportsTextTracks; } + function supportsCanvas() { + return !!document.createElement('canvas').getContext; + } + + function supportsWebWorkers() { + return !!window.Worker; + } + function enableNativeTrackSupport(currentSrc, track) { if (track) { @@ -87,23 +96,19 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function getMediaStreamAudioTracks(mediaSource) { - return mediaSource.MediaStreams.filter(function (s) { return s.Type === 'Audio'; }); } function getMediaStreamTextTracks(mediaSource) { - return mediaSource.MediaStreams.filter(function (s) { return s.Type === 'Subtitle'; }); } function zoomIn(elem) { - return new Promise(function (resolve, reject) { - var duration = 240; elem.style.animation = 'htmlvideoplayer-zoomin ' + duration + 'ms ease-in normal'; dom.addEventListener(elem, dom.whichAnimationEvent(), resolve, { @@ -185,6 +190,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var lastCustomTrackMs = 0; var currentClock; + var currentSubtitlesOctopus; var currentAssRenderer; var customTrackIndex = -1; @@ -237,7 +243,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa loading.show(); - console.log('prefetching hls playlist: ' + hlsPlaylistUrl); + console.debug('prefetching hls playlist: ' + hlsPlaylistUrl); return connectionManager.getApiClient(item.ServerId).ajax({ @@ -246,7 +252,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }).then(function () { - console.log('completed prefetching hls playlist: ' + hlsPlaylistUrl); + console.debug('completed prefetching hls playlist: ' + hlsPlaylistUrl); loading.hide(); streamInfo.url = hlsPlaylistUrl; @@ -255,7 +261,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }, function () { - console.log('error prefetching hls playlist: ' + hlsPlaylistUrl); + console.error('error prefetching hls playlist: ' + hlsPlaylistUrl); loading.hide(); return Promise.resolve(); @@ -352,6 +358,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return new Promise(function (resolve, reject) { require(['shaka'], function () { + /* globals shaka */ var player = new shaka.Player(elem); @@ -403,7 +410,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lrd.media.streamType = cast.receiver.media.StreamType.OTHER; lrd.media.customData = options; - console.log('loading media url into mediaManager'); + console.debug('loading media url into media manager'); try { mediaManager.load(lrd); @@ -413,7 +420,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return Promise.resolve(); } catch (err) { - console.log('mediaManager error: ' + err); + console.debug('media manager error: ' + err); return Promise.reject(); } } @@ -455,11 +462,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa protocol = cast.player.api.CreateSmoothStreamingProtocol(host); } - console.log('loading playback url: ' + url); - console.log('contentType: ' + contentType); + console.debug('loading playback url: ' + url); + console.debug('content type: ' + contentType); host.onError = function (errorCode) { - console.log("Fatal Error - " + errorCode); + console.error("fatal Error - " + errorCode); }; mediaElement.autoplay = false; @@ -494,7 +501,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa elem.removeEventListener('error', onError); var val = options.url; - console.log('playing url: ' + val); + console.debug('playing url: ' + val); // Convert to seconds var seconds = (options.playerStartPositionTicks || 0) / 10000000; @@ -575,6 +582,19 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return showTrackOffset; } + function getTextTrack() { + var videoElement = self._mediaElement; + if (videoElement) { + return Array.from(videoElement.textTracks) + .find(function(trackElement) { + // get showing .vtt textTack + return trackElement.mode === 'showing'; + }); + } else { + return null; + } + } + self.setSubtitleOffset = function(offset) { var offsetValue = parseFloat(offset); @@ -583,28 +603,15 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (currentAssRenderer) { updateCurrentTrackOffset(offsetValue); } else { - var videoElement = self._mediaElement; - var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource); - - Array.from(videoElement.textTracks) - .filter(function(trackElement) { - // get showing .vtt textTacks - return trackElement.mode === 'showing'; - }) - .forEach(function(trackElement) { - - var track = customTrackIndex === -1 ? null : mediaStreamTextTracks.filter(function (t) { - return t.Index === customTrackIndex; - })[0]; - - if (track) { - offsetValue = updateCurrentTrackOffset(offsetValue); - setVttSubtitleOffset(trackElement, offsetValue); - } else { - console.log("No available track, cannot apply offset : " + offsetValue); - } - - }); + var trackElement = getTextTrack(); + // if .vtt currently rendering + if (trackElement) { + setTextTrackSubtitleOffset(trackElement, offsetValue); + } else if (currentTrackEvents) { + setTrackEventsSubtitleOffset(currentTrackEvents, offsetValue); + } else { + console.debug("No available track, cannot apply offset: ", offsetValue); + } } }; @@ -620,16 +627,27 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return relativeOffset; } - function setVttSubtitleOffset(currentTrack, offsetValue) { + function setTextTrackSubtitleOffset(currentTrack, offsetValue) { if (currentTrack.cues) { + offsetValue = updateCurrentTrackOffset(offsetValue); Array.from(currentTrack.cues) .forEach(function(cue) { cue.startTime -= offsetValue; cue.endTime -= offsetValue; }); } + } + function setTrackEventsSubtitleOffset(trackEvents, offsetValue) { + + if (Array.isArray(trackEvents)) { + offsetValue = updateCurrentTrackOffset(offsetValue); + trackEvents.forEach(function(trackEvent) { + trackEvent.StartPositionTicks -= offsetValue; + trackEvent.EndPositionTicks -= offsetValue; + }); + } } self.getSubtitleOffset = function() { @@ -711,22 +729,18 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa // https://msdn.microsoft.com/en-us/library/hh772507(v=vs.85).aspx var elemAudioTracks = elem.audioTracks || []; - console.log('found ' + elemAudioTracks.length + ' audio tracks'); + console.debug('found ' + elemAudioTracks.length + ' audio tracks'); for (i = 0, length = elemAudioTracks.length; i < length; i++) { if (audioIndex === i) { - console.log('setting audio track ' + i + ' to enabled'); + console.debug('setting audio track ' + i + ' to enabled'); elemAudioTracks[i].enabled = true; } else { - console.log('setting audio track ' + i + ' to disabled'); + console.debug('setting audio track ' + i + ' to disabled'); elemAudioTracks[i].enabled = false; } } - - setTimeout(function () { - elem.currentTime = elem.currentTime; - }, 100); }; self.stop = function (destroyPlayer) { @@ -895,7 +909,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function onError() { var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; @@ -962,6 +976,12 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa currentClock = null; self._currentAspectRatio = null; + var octopus = currentSubtitlesOctopus; + if (octopus) { + octopus.dispose(); + } + currentSubtitlesOctopus = null; + var renderer = currentAssRenderer; if (renderer) { renderer.setEnabled(false); @@ -1018,6 +1038,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return; } + self.resetSubtitleOffset(); var item = self._currentPlayOptions.item; destroyCustomTrack(videoElement); @@ -1026,6 +1047,25 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lastCustomTrackMs = 0; } + function renderWithSubtitlesOctopus(videoElement, track, item) { + var attachments = self._currentPlayOptions.mediaSource.MediaAttachments || []; + var options = { + video: videoElement, + subUrl: getTextTrackUrl(track, item), + fonts: attachments.map(function (i) { + return i.DeliveryUrl; + }), + workerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker.js", + legacyWorkerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker-legacy.js", + onError: function() { + htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); + } + }; + require(['JavascriptSubtitlesOctopus'], function(SubtitlesOctopus) { + currentSubtitlesOctopus = new SubtitlesOctopus(options); + }); + } + function renderWithLibjass(videoElement, track, item) { var rendererSettings = {}; @@ -1072,6 +1112,16 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }); } + function renderSsaAss(videoElement, track, item) { + if (supportsCanvas() && supportsWebWorkers()) { + console.debug('rendering subtitles with SubtitlesOctopus'); + renderWithSubtitlesOctopus(videoElement, track, item); + } else { + console.debug('rendering subtitles with libjass'); + renderWithLibjass(videoElement, track, item); + } + } + function onVideoResize() { if (browser.iOS) { // the new sizes will be delayed for about 500ms with wkwebview @@ -1087,7 +1137,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var videoElement = self._mediaElement; var width = videoElement.offsetWidth; var height = videoElement.offsetHeight; - console.log('videoElement resized: ' + width + 'x' + height); + console.debug('videoElement resized: ' + width + 'x' + height); renderer.resize(width, height, 0, 0); } } @@ -1182,7 +1232,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { // libjass is needed here - renderWithLibjass(videoElement, track, item); + renderSsaAss(videoElement, track, item); return; } @@ -1204,7 +1254,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa trackElement.removeCue(trackElement.cues[0]); } } catch (e) { - console.log('Error removing cue from textTrack'); + console.error('error removing cue from textTrack'); } trackElement.mode = 'disabled'; @@ -1218,7 +1268,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa fetchSubtitles(track, item).then(function (data) { // show in ui - console.log('downloaded ' + data.TrackEvents.length + ' track events'); + console.debug('downloaded ' + data.TrackEvents.length + ' track events'); // add some cues to show the text // in safari, the cues need to be added before setting the track mode to showing data.TrackEvents.forEach(function (trackEvent) { @@ -1244,7 +1294,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa try { clock.seek(timeMs / 1000); } catch (err) { - console.log('Error in libjass: ' + err); + console.error('error in libjass: ' + err); } return; } @@ -1277,7 +1327,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function setCurrentTrackElement(streamIndex) { - console.log('Setting new text track index to: ' + streamIndex); + console.debug('setting new text track index to: ' + streamIndex); var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource); @@ -1298,38 +1348,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } - function updateTextStreamUrls(startPositionTicks) { - - if (!supportsTextTracks()) { - return; - } - - var allTracks = self._mediaElement.textTracks; // get list of tracks - var i; - var track; - - for (i = 0; i < allTracks.length; i++) { - - track = allTracks[i]; - - // This throws an error in IE, but is fine in chrome - // In IE it's not necessary anyway because changing the src seems to be enough - try { - while (track.cues.length) { - track.removeCue(track.cues[0]); - } - } catch (e) { - console.log('Error removing cue from textTrack'); - } - } - - var tracks = self._mediaElement.querySelectorAll('track'); - for (i = 0; i < tracks.length; i++) { - track = tracks[i]; - track.src = replaceQueryString(track.src, 'startPositionTicks', startPositionTicks); - } - } - function createMediaElement(options) { if (browser.tv || browser.iOS || browser.mobile) { @@ -1353,7 +1371,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa dlg.classList.add('videoPlayerContainer'); if (options.backdropUrl) { - dlg.classList.add('videoPlayerContainer-withBackdrop'); dlg.style.backgroundImage = "url('" + options.backdropUrl + "')"; } @@ -1362,11 +1379,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa dlg.classList.add('videoPlayerContainer-onTop'); } - // playsinline new for iOS 10 - // https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_0.html - var html = ''; - var cssClass = 'htmlvideoplayer'; if (!browser.chromecast) { @@ -1377,7 +1390,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (!appHost.supports('htmlvideoautoplay')) { html += '
-
\ No newline at end of file +
diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index d91a5377ba..1e485a80ed 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -10,7 +10,7 @@ display: block; align-items: center; text-align: left; - padding: .25em .25em .25em .5em; + padding: 0.25em 0.25em 0.25em 0.5em; cursor: pointer; overflow: hidden; } @@ -35,6 +35,8 @@ } .listItem-indexnumberleft { + min-width: 2%; + text-align: center; margin-right: 1em; } @@ -48,14 +50,18 @@ } .listItem-border.show-focus:focus { - transform: scale(1.0) !important; + transform: scale(1) !important; } -.listItemImage, .listItemIcon, .listItemAside { +.listItemImage, +.listItemIcon, +.listItemAside { flex-shrink: 0; } -.listItemBody, .listItemImage, .listItemIcon { +.listItemBody, +.listItemImage, +.listItemIcon { display: inline-block; vertical-align: middle; } @@ -69,13 +75,13 @@ } .listViewDragHandle { - margin-left: -.25em !important; + margin-left: -0.25em !important; touch-action: none; } .listItemBody { flex-grow: 1; - padding: .85em .75em; + padding: 0.85em 0.75em; overflow: hidden; text-overflow: ellipsis; flex-direction: column; @@ -83,8 +89,15 @@ justify-content: center; } +.listItem, +.listItemBody, +.listItemMediaInfo { + display: flex; + contain: layout style; +} + .layout-tv .listItemBody { - padding: .35em .75em; + padding: 0.35em 0.75em; } .listItemBody-noleftpadding { @@ -93,11 +106,15 @@ .listItemBodyText { margin: 0; - padding: .1em 0; + padding: 0.1em 0; overflow: hidden; text-overflow: ellipsis; } +.layout-desktop .listItemBodyText { + margin: 0.25em 0 0 0; +} + .listItemBodyText-nowrap { white-space: nowrap; } @@ -119,27 +136,27 @@ width: 19.5vw; height: 13vw; background-position: center center; - margin-right: .75em; + margin-right: 0.75em; } .listItemImageButton { align-self: center; justify-self: center; margin: auto; - color: rgba(255, 255, 255, .6); + color: rgba(255, 255, 255, 0.6); + background: rgba(0, 0, 0, 0.4); font-size: 1.6em; - background: transparent; - transition: transform 200ms ease-out; + transition: 200ms ease-out; display: flex; } .listItemImageButton:hover { + color: #00a4dc; + background: rgba(0, 164, 220, 0.2); transform: scale(1.2, 1.2); } .listItemImageButton-icon { - background: rgba(0,0,0,.4); - border: 0.1em solid currentColor; border-radius: 100em; display: flex; justify-content: center; @@ -149,23 +166,24 @@ @media all and (max-width: 64em) { .listItemImage-large { - width: 33.75vw; - height: 22.5vw; + width: 22vw; + height: 16vw; margin-right: 0 !important; } + .listItemIndicators, .listItemImageButton { - font-size: 1em !important; + font-size: 0.6em !important; } .listItemBody { - padding-left: .75em; + padding-left: 0.75em; } } @media all and (max-width: 50em) { .listItemBody { - padding-right: .5em; + padding-right: 0.5em; } } @@ -178,15 +196,15 @@ width: 1em !important; height: 1em !important; font-size: 143%; - padding: 0 .25em 0 0; + padding: 0 0.25em 0 0; } .listItemIcon:not(.listItemIcon-transparent) { background-color: #00a4dc; color: #fff; - padding: .5em; + padding: 0.5em; border-radius: 100em; - margin: 0 .2em 0 .4em; + margin: 0 0.2em 0 0.4em; } .listItemProgressBar { @@ -197,7 +215,7 @@ } .listItem:focus { - border-radius: .2em; + border-radius: 0.2em; } .listItem:focus .secondary { @@ -205,7 +223,7 @@ } .listItem-focusscale { - transition: transform .2s ease-out; + transition: transform 0.2s ease-out; } .listItem-focusscale:focus { @@ -213,45 +231,35 @@ } .paperList { - margin: .5em auto; + margin: 0.5em auto; } .paperList-clear { background-color: transparent !important; } -.listItemMediaInfo { - /* Don't display if flex not supported */ - display: none; - align-items: center; - margin-right: 1em; -} - .listGroupHeader-first { margin-top: 0; } .listItemIndicators { - right: .324em; - top: .324em; + right: 0.324em; + top: 0.324em; position: absolute; display: flex; align-items: center; } -.listItem, .listItemBody, .listItemMediaInfo { - display: flex; - contain: layout style; -} - .listItem-bottomoverview { font-size: 88%; margin-bottom: 1em; - margin-top: .2em; + margin-top: 0.2em; } @media all and (max-width: 50em) { - .listItem .endsAt, .listItem .criticRating, .listItem-overview { + .listItem .endsAt, + .listItem .criticRating, + .listItem-overview { display: none !important; } } @@ -264,4 +272,4 @@ .listItemCheckboxContainer { width: auto !important; -} \ No newline at end of file +} diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 94535deb6f..532ba094a8 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -72,7 +72,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var apiClient = connectionManager.getApiClient(item.ServerId); var options = { - width: width, + maxWidth: width * 2, type: "Primary" }; @@ -105,7 +105,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var apiClient = connectionManager.getApiClient(item.ServerId); var options = { - width: width, + maxWidth: width * 2, type: "Primary" }; @@ -160,7 +160,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var button = options.rightButtons[i]; - html += ''; + html += ''; } return html; @@ -262,14 +262,13 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (!clickEntireItem && options.dragHandle) { - //html += ''; + //html += ''; // Firefox and Edge are not allowing the button to be draggable - html += 'drag_handle'; + html += ''; } if (options.image !== false) { var imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth); - console.log(imgUrl); var imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; if (isLargeStyle && layoutManager.tv) { @@ -298,7 +297,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (playOnImageClick) { - html += ''; + html += ''; } var progressHtml = indicators.getProgressBarHtml(item, { @@ -427,7 +426,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += '
'; - var moreIcon = 'more_horiz'; + var moreIcon = ''; html += getTextLinesHtml(textlines, isLargeStyle); @@ -471,18 +470,20 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += indicators.getTimerIndicator(item).replace('indicatorIcon', 'indicatorIcon listItemAside'); } + html += '
'; + if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.moreButton !== false) { - html += ''; + html += ''; } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { @@ -491,22 +492,19 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (options.enableUserDataButtons !== false) { - html += ''; - var userData = item.UserData || {}; var likes = userData.Likes == null ? '' : userData.Likes; if (itemHelper.canMarkPlayed(item)) { - html += ''; + html += ''; } if (itemHelper.canRate(item)) { - html += ''; + html += ''; } - - html += ''; } } + html += '
'; if (enableContentWrapper) { html += '
'; diff --git a/src/components/loading/loading.css b/src/components/loading/loading.css index e3f10c0e2e..dae33aa9b8 100644 --- a/src/components/loading/loading.css +++ b/src/components/loading/loading.css @@ -7,11 +7,20 @@ .mdlSpinnerActive { display: inline-block; + -webkit-animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; } +@-webkit-keyframes mdl-spinner__container-rotate { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + @keyframes mdl-spinner__container-rotate { to { + -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @@ -24,67 +33,121 @@ } .mdl-spinner__layer-1 { - border-color: rgb(66,165,245); + border-color: rgb(66, 165, 245); } .mdl-spinner__layer-1-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .mdl-spinner__layer-2 { - border-color: rgb(244,67,54); + border-color: rgb(244, 67, 54); } .mdl-spinner__layer-2-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .mdl-spinner__layer-3 { - border-color: rgb(253,216,53); + border-color: rgb(253, 216, 53); } .mdl-spinner__layer-3-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .mdl-spinner__layer-4 { - border-color: rgb(76,175,80); + border-color: rgb(76, 175, 80); } .mdl-spinner__layer-4-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } -@keyframes mdl-spinner__fill-unfill-rotate { +@-webkit-keyframes mdl-spinner__fill-unfill-rotate { 12.5% { + -webkit-transform: rotate(135deg); transform: rotate(135deg); } 25% { + -webkit-transform: rotate(270deg); transform: rotate(270deg); } 37.5% { + -webkit-transform: rotate(405deg); transform: rotate(405deg); } 50% { + -webkit-transform: rotate(540deg); transform: rotate(540deg); } 62.5% { + -webkit-transform: rotate(675deg); transform: rotate(675deg); } 75% { + -webkit-transform: rotate(810deg); transform: rotate(810deg); } 87.5% { + -webkit-transform: rotate(945deg); transform: rotate(945deg); } to { + -webkit-transform: rotate(1080deg); + transform: rotate(1080deg); + } +} + +@keyframes mdl-spinner__fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); + } + + 25% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + + 37.5% { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); + } + + 50% { + -webkit-transform: rotate(540deg); + transform: rotate(540deg); + } + + 62.5% { + -webkit-transform: rotate(675deg); + transform: rotate(675deg); + } + + 75% { + -webkit-transform: rotate(810deg); + transform: rotate(810deg); + } + + 87.5% { + -webkit-transform: rotate(945deg); + transform: rotate(945deg); + } + + to { + -webkit-transform: rotate(1080deg); transform: rotate(1080deg); } } @@ -98,6 +161,32 @@ * - https://github.com/Polymer/paper-spinner/issues/9 * - https://code.google.com/p/chromium/issues/detail?id=436255 */ +@-webkit-keyframes mdl-spinner__layer-1-fade-in-out { + from { + opacity: 0.99; + } + + 25% { + opacity: 0.99; + } + + 26% { + opacity: 0; + } + + 89% { + opacity: 0; + } + + 90% { + opacity: 0.99; + } + + 100% { + opacity: 0.99; + } +} + @keyframes mdl-spinner__layer-1-fade-in-out { from { opacity: 0.99; @@ -124,6 +213,28 @@ } } +@-webkit-keyframes mdl-spinner__layer-2-fade-in-out { + from { + opacity: 0; + } + + 15% { + opacity: 0; + } + + 25% { + opacity: 0.99; + } + + 50% { + opacity: 0.99; + } + + 51% { + opacity: 0; + } +} + @keyframes mdl-spinner__layer-2-fade-in-out { from { opacity: 0; @@ -146,6 +257,28 @@ } } +@-webkit-keyframes mdl-spinner__layer-3-fade-in-out { + from { + opacity: 0; + } + + 40% { + opacity: 0; + } + + 50% { + opacity: 0.99; + } + + 75% { + opacity: 0.99; + } + + 76% { + opacity: 0; + } +} + @keyframes mdl-spinner__layer-3-fade-in-out { from { opacity: 0; @@ -168,6 +301,28 @@ } } +@-webkit-keyframes mdl-spinner__layer-4-fade-in-out { + from { + opacity: 0; + } + + 65% { + opacity: 0; + } + + 75% { + opacity: 0.99; + } + + 90% { + opacity: 0.99; + } + + 100% { + opacity: 0; + } +} + @keyframes mdl-spinner__layer-4-fade-in-out { from { opacity: 0; @@ -190,6 +345,23 @@ } } +.mdl-spinner__circle { + box-sizing: border-box; + height: 100%; + border-width: 0.21em; + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + .mdl-spinner__circle-clipper { display: inline-block; position: relative; @@ -199,69 +371,97 @@ border-color: inherit; } - .mdl-spinner__circle-clipper .mdl-spinner__circle { - width: 200%; - } - -.mdl-spinner__circle { - box-sizing: border-box; - height: 100%; - border-width: .21em; - border-style: solid; - border-color: inherit; - border-bottom-color: transparent !important; - border-radius: 50%; - animation: none; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; +.mdl-spinner__circle-clipper .mdl-spinner__circle { + width: 200%; } .mdl-spinner__circleLeft { border-right-color: transparent !important; + -webkit-transform: rotate(129deg); transform: rotate(129deg); } .mdl-spinner__circleLeft-active { + -webkit-animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .mdl-spinner__circleRight { left: -100%; border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); transform: rotate(-129deg); } .mdl-spinner__circleRight-active { + -webkit-animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } -@keyframes mdl-spinner__left-spin { +@-webkit-keyframes mdl-spinner__left-spin { from { + -webkit-transform: rotate(130deg); transform: rotate(130deg); } 50% { + -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } to { + -webkit-transform: rotate(130deg); transform: rotate(130deg); } } +@keyframes mdl-spinner__left-spin { + from { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } + + 50% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); + } + + to { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } +} + +@-webkit-keyframes mdl-spinner__right-spin { + from { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } + + 50% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); + } + + to { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } +} + @keyframes mdl-spinner__right-spin { from { + -webkit-transform: rotate(-130deg); transform: rotate(-130deg); } 50% { + -webkit-transform: rotate(5deg); transform: rotate(5deg); } to { + -webkit-transform: rotate(-130deg); transform: rotate(-130deg); } } diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index 510f311217..d6c00347c7 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -81,4 +81,4 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio } } }; -}); \ No newline at end of file +}); diff --git a/src/components/logoscreensaver/plugin.js b/src/components/logoscreensaver/plugin.js index 521afd2690..7716bbf6e5 100644 --- a/src/components/logoscreensaver/plugin.js +++ b/src/components/logoscreensaver/plugin.js @@ -160,7 +160,7 @@ define(["pluginManager"], function (pluginManager) { elem.classList.add("logoScreenSaver"); document.body.appendChild(elem); - elem.innerHTML = ''; + elem.innerHTML = ''; } stopInterval(); diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 64e25b4870..2571470015 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -264,4 +264,4 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, getTabsElement: getTabsElement, selectedTabIndex: selectedTabIndex }; -}); \ No newline at end of file +}); diff --git a/src/components/mediainfo/fresh.png b/src/components/mediainfo/fresh.png deleted file mode 100644 index 701ef6a8c0..0000000000 Binary files a/src/components/mediainfo/fresh.png and /dev/null differ diff --git a/src/components/mediainfo/mediainfo.css b/src/components/mediainfo/mediainfo.css index 2203ba6676..1883b78726 100644 --- a/src/components/mediainfo/mediainfo.css +++ b/src/components/mediainfo/mediainfo.css @@ -4,13 +4,13 @@ } .mediaInfoText { - padding: .22em .5em; - border-radius: .25em; + padding: 0.22em 0.5em; + border-radius: 0.25em; font-size: 92%; display: flex; align-items: center; white-space: nowrap; - margin: 0 .5em 0 0; + margin: 0 0.5em 0 0; } .mediaInfoText-upper { @@ -21,7 +21,7 @@ width: auto; height: auto; font-size: 1.6em; - margin-right: .6em; + margin-right: 0.6em; } .mediaInfoItem:last-child { @@ -54,17 +54,17 @@ } .mediaInfoCriticRatingFresh { - background-image: url(fresh.png); + background-image: url(../../assets/img/fresh.svg); } .mediaInfoCriticRatingRotten { - background-image: url(rotten.png); + background-image: url(../../assets/img/rotten.svg); } .mediaInfoProgramAttribute { text-transform: uppercase; - padding: .16em .6em; - border-radius: .15em; + padding: 0.16em 0.6em; + border-radius: 0.15em; font-size: 80%; } @@ -73,13 +73,13 @@ } .mediaInfoOfficialRating { - border: .09em solid currentColor; - padding: 0 .6em; + border: 0.09em solid currentColor; + padding: 0 0.6em; height: 1.3em; line-height: 1.8em; display: flex; align-items: center; justify-content: center; - border-radius: .1em; + border-radius: 0.1em; font-size: 96%; } diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 04df34685d..188ea9a07c 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -6,7 +6,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -20,13 +20,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getProgramInfoHtml(item, options) { @@ -57,7 +57,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -143,7 +143,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.toLocaleDateString(date); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } } @@ -176,7 +176,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -200,7 +200,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } } catch (e) { - console.log("Error parsing date: " + item.EndDate); + console.error("error parsing date: " + item.EndDate); } } @@ -248,7 +248,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } else if (item.ProductionYear) { miscInfo.push(item.ProductionYear); @@ -267,7 +267,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } } @@ -385,16 +385,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } function getStarIconsHtml(item) { - var html = ''; - var rating = item.CommunityRating; - - if (rating) { + if (item.CommunityRating) { html += '
'; - html += 'star'; - html += rating; + html += 'star'; + html += item.CommunityRating.toFixed(1); html += '
'; } diff --git a/src/components/mediainfo/rotten.png b/src/components/mediainfo/rotten.png deleted file mode 100644 index 8f81822a9d..0000000000 Binary files a/src/components/mediainfo/rotten.png and /dev/null differ diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 183e22551f..0a8741387f 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -1,37 +1,44 @@ -define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function(loading, dialogHelper, dom, $, libraryoptionseditor) { +define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function (loading, dialogHelper, dom, $, libraryoptionseditor) { "use strict"; function onAddLibrary() { - if (isCreating) return false; + if (isCreating) { + return false; + } if (pathInfos.length == 0) { - require(["alert"], function(alert) { + require(["alert"], function (alert) { alert({ text: Globalize.translate("PleaseAddAtLeastOneFolder"), type: "error" - }) + }); }); + return false; } isCreating = true; loading.show(); - var dlg = dom.parentWithClass(this, "dlg-librarycreator"); var name = $("#txtValue", dlg).val(); var type = $("#selectCollectionType", dlg).val(); - if (type == "mixed") type = null; + + if (type == "mixed") { + type = null; + } + var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); libraryOptions.PathInfos = pathInfos; - ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() { + ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function () { hasChanges = true; isCreating = false; loading.hide(); dialogHelper.close(dlg); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); }); + isCreating = false; loading.hide(); }); @@ -39,16 +46,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function getCollectionTypeOptionsHtml(collectionTypeOptions) { - return collectionTypeOptions.map(function(i) { + return collectionTypeOptions.map(function (i) { return '"; }).join(""); } function initEditor(page, collectionTypeOptions) { - $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function() { + $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function () { var value = this.value; var dlg = $(this).parents(".dialog")[0]; libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value); + if (value) { dlg.querySelector(".libraryOptions").classList.remove("hide"); } else { @@ -57,17 +65,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed if (value != "mixed") { var index = this.selectedIndex; + if (index != -1) { var name = this.options[index].innerHTML.replace("*", "").replace("&", "&"); $("#txtValue", dlg).val(name); - var folderOption = collectionTypeOptions.filter(function(i) { - return i.value == value + var folderOption = collectionTypeOptions.filter(function (i) { + return i.value == value; })[0]; - $(".collectionTypeFieldDescription", dlg).html(folderOption.message || "") + $(".collectionTypeFieldDescription", dlg).html(folderOption.message || ""); } } }); - page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); page.querySelector(".btnSubmit").addEventListener("click", onAddLibrary); page.querySelector(".folderList").addEventListener("click", onRemoveClick); @@ -81,40 +89,65 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function onAddButtonClick() { var page = dom.parentWithClass(this, "dlg-librarycreator"); - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ enableNetworkSharePath: true, - callback: function(path, networkSharePath) { - path && addMediaLocation(page, path, networkSharePath); + callback: function (path, networkSharePath) { + if (path) { + addMediaLocation(page, path, networkSharePath); + } + picker.close(); } - }) - }) + }); + }); } function getFolderHtml(pathInfo, index) { var html = ""; - return html += '
', html += '
', html += '
' + pathInfo.Path + "
", pathInfo.NetworkPath && (html += '
' + pathInfo.NetworkPath + "
"), html += "
", html += '', html += "
" + html += '
'; + html += '
'; + html += '
' + pathInfo.Path + "
"; + + if (pathInfo.NetworkPath) { + html += '
' + pathInfo.NetworkPath + "
"; + } + + html += "
"; + html += ''; + html += "
"; + return html; } function renderPaths(page) { var foldersHtml = pathInfos.map(getFolderHtml).join(""); var folderList = page.querySelector(".folderList"); folderList.innerHTML = foldersHtml; - foldersHtml ? folderList.classList.remove("hide") : folderList.classList.add("hide"); + + if (foldersHtml) { + folderList.classList.remove("hide"); + } else { + folderList.classList.add("hide"); + } } function addMediaLocation(page, path, networkSharePath) { var pathLower = path.toLowerCase(); - var pathFilter = pathInfos.filter(function(p) { + var pathFilter = pathInfos.filter(function (p) { return p.Path.toLowerCase() == pathLower; }); + if (!pathFilter.length) { var pathInfo = { Path: path }; - networkSharePath && (pathInfo.NetworkPath = networkSharePath); + + if (networkSharePath) { + pathInfo.NetworkPath = networkSharePath; + } + pathInfos.push(pathInfo); renderPaths(page); } @@ -125,7 +158,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed var index = parseInt(button.getAttribute("data-index")); var location = pathInfos[index].Path; var locationLower = location.toLowerCase(); - pathInfos = pathInfos.filter(function(p) { + pathInfos = pathInfos.filter(function (p) { return p.Path.toLowerCase() != locationLower; }); renderPaths(dom.parentWithClass(button, "dlg-librarycreator")); @@ -136,21 +169,22 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function initLibraryOptions(dlg) { - libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function() { + libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function () { $("#selectCollectionType", dlg).trigger("change"); onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); - }) + }); } function editor() { - this.show = function(options) { - return new Promise(function(resolve, reject) { + this.show = function (options) { + return new Promise(function (resolve, reject) { currentOptions = options; currentResolve = resolve; hasChanges = false; - var xhr = new XMLHttpRequest; + var xhr = new XMLHttpRequest(); xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true); - xhr.onload = function(e) { + + xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ size: "medium-tall", @@ -166,24 +200,23 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed initEditor(dlg, options.collectionTypeOptions); dlg.addEventListener("close", onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function() { - dialogHelper.close(dlg) + dlg.querySelector(".btnCancel").addEventListener("click", function () { + dialogHelper.close(dlg); }); pathInfos = []; renderPaths(dlg); initLibraryOptions(dlg); }; + xhr.send(); }); - } + }; } var pathInfos = []; var currentResolve; var currentOptions; - var hasChanges = false; var isCreating = false; - - return editor + return editor; }); diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index c7073bc9f2..32c6b254b7 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

@@ -26,7 +26,7 @@

${HeadersFolders}

diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index a1ee53f72b..7c5c8d4080 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -1,22 +1,22 @@ -define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function(jQuery, loading, dialogHelper, dom, libraryoptionseditor) { +define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor) { "use strict"; function onEditLibrary() { - if (isCreating) return false; + if (isCreating) { + return false; + } isCreating = true; loading.show(); - var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions); - - ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function() { + ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function () { hasChanges = true; isCreating = false; loading.hide(); dialogHelper.close(dlg); - }, function() { + }, function () { isCreating = false; loading.hide(); }); @@ -26,11 +26,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function addMediaLocation(page, path, networkSharePath) { var virtualFolder = currentOptions.library; var refreshAfterChange = currentOptions.refresh; - ApiClient.addMediaPath(virtualFolder.Name, path, networkSharePath, refreshAfterChange).then(function() { + ApiClient.addMediaPath(virtualFolder.Name, path, networkSharePath, refreshAfterChange).then(function () { hasChanges = true; refreshLibraryFromServer(page); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); }); }); @@ -41,11 +41,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed ApiClient.updateMediaPath(virtualFolder.Name, { Path: path, NetworkPath: networkSharePath - }).then(function() { + }).then(function () { hasChanges = true; refreshLibraryFromServer(page); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); }); }); @@ -54,19 +54,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function onRemoveClick(btnRemovePath, location) { var button = btnRemovePath; var virtualFolder = currentOptions.library; - require(["confirm"], function(confirm) { + + require(["confirm"], function (confirm) { confirm({ title: Globalize.translate("HeaderRemoveMediaLocation"), text: Globalize.translate("MessageConfirmRemoveMediaLocation"), confirmText: Globalize.translate("ButtonDelete"), primary: "delete" - }).then(function() { + }).then(function () { var refreshAfterChange = currentOptions.refresh; - ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function() { + ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function () { hasChanges = true; refreshLibraryFromServer(dom.parentWithClass(button, "dlg-libraryeditor")); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("DefaultErrorMessage")); }); }); @@ -76,13 +77,19 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function onListItemClick(e) { var listItem = dom.parentWithClass(e.target, "listItem"); + if (listItem) { var index = parseInt(listItem.getAttribute("data-index")); var pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || []; var pathInfo = null == index ? {} : pathInfos[index] || {}; var originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]); var btnRemovePath = dom.parentWithClass(e.target, "btnRemovePath"); - if (btnRemovePath) return void onRemoveClick(btnRemovePath, originalPath); + + if (btnRemovePath) { + onRemoveClick(btnRemovePath, originalPath); + return; + } + showDirectoryBrowser(dom.parentWithClass(listItem, "dlg-libraryeditor"), originalPath, pathInfo.NetworkPath); } } @@ -94,20 +101,23 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed html += '

'; html += pathInfo.Path; html += "

"; + if (pathInfo.NetworkPath) { html += '
' + pathInfo.NetworkPath + "
"; } + html += "
"; - html += ''; + html += ''; html += "
"; return html; } function refreshLibraryFromServer(page) { - ApiClient.getVirtualFolders().then(function(result) { - var library = result.filter(function(f) { - return f.Name === currentOptions.library.Name + ApiClient.getVirtualFolders().then(function (result) { + var library = result.filter(function (f) { + return f.Name === currentOptions.library.Name; })[0]; + if (library) { currentOptions.library = library; renderLibrary(page, currentOptions); @@ -117,16 +127,21 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function renderLibrary(page, options) { var pathInfos = (options.library.LibraryOptions || {}).PathInfos || []; - pathInfos.length || (pathInfos = options.library.Locations.map(function(p) { - return { - Path: p - } - })); + + if (!pathInfos.length) { + pathInfos = options.library.Locations.map(function (p) { + return { + Path: p + }; + }); + } + if (options.library.CollectionType === 'boxsets') { page.querySelector(".folders").classList.add("hide"); } else { page.querySelector(".folders").classList.remove("hide"); } + page.querySelector(".folderList").innerHTML = pathInfos.map(getFolderHtml).join(""); } @@ -135,24 +150,31 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function showDirectoryBrowser(context, originalPath, networkPath) { - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ - enableNetworkSharePath: !0, + enableNetworkSharePath: true, pathReadOnly: null != originalPath, path: originalPath, networkSharePath: networkPath, - callback: function(path, networkSharePath) { - path && (originalPath ? updateMediaLocation(context, originalPath, networkSharePath) : addMediaLocation(context, path, networkSharePath)); + callback: function (path, networkSharePath) { + if (path) { + if (originalPath) { + updateMediaLocation(context, originalPath, networkSharePath); + } else { + addMediaLocation(context, path, networkSharePath); + } + } + picker.close(); } - }) - }) + }); + }); } function onToggleAdvancedChange() { var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); - libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked) + libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked); } function initEditor(dlg, options) { @@ -161,7 +183,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed dlg.querySelector(".folderList").addEventListener("click", onListItemClick); dlg.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); dlg.querySelector(".btnSubmit").addEventListener("click", onEditLibrary); - libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function() { + libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function () { onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); }); } @@ -171,14 +193,15 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function editor() { - this.show = function(options) { + this.show = function (options) { var deferred = jQuery.Deferred(); currentOptions = options; currentDeferred = deferred; hasChanges = false; - var xhr = new XMLHttpRequest; + var xhr = new XMLHttpRequest(); xhr.open("GET", "components/medialibraryeditor/medialibraryeditor.template.html", true); - xhr.onload = function(e) { + + xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ size: "medium-tall", @@ -195,21 +218,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed initEditor(dlg, options); dlg.addEventListener("close", onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function() { + dlg.querySelector(".btnCancel").addEventListener("click", function () { dialogHelper.close(dlg); }); refreshLibraryFromServer(dlg); }; + xhr.send(); return deferred.promise(); - } + }; } var currentDeferred; var currentOptions; - var hasChanges = false; var isCreating = false; - return editor; }); diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index dd13df4ca5..172c535fa1 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@
- +

@@ -20,7 +20,7 @@

${HeadersFolders}

diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 8843dc159c..e8736258fa 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -477,7 +477,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; if (formatString) { - html += ''; + html += ''; } html += '
'; @@ -917,7 +917,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi for (var i = 0; i < items.length; i++) { html += '
'; - html += 'live_tv'; + html += ''; html += '
'; @@ -927,7 +927,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += ''; + html += ''; html += '
'; } @@ -948,7 +948,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += 'person'; + html += 'person'; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index d44136c6b6..8e36a824b7 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -1,15 +1,15 @@
- +

${Edit}

@@ -184,7 +184,7 @@ ${Genres}
@@ -193,7 +193,7 @@ ${People}
@@ -203,7 +203,7 @@ ${Studios}
@@ -212,7 +212,7 @@ ${Tags}
diff --git a/src/components/metadataeditor/personeditor.js b/src/components/metadataeditor/personeditor.js index 7883cfca1b..9fb6fdec6f 100644 --- a/src/components/metadataeditor/personeditor.js +++ b/src/components/metadataeditor/personeditor.js @@ -96,4 +96,4 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-but return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/metadataeditor/personeditor.template.html b/src/components/metadataeditor/personeditor.template.html index 75b011aa73..ec76f58c70 100644 --- a/src/components/metadataeditor/personeditor.template.html +++ b/src/components/metadataeditor/personeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

diff --git a/src/components/multidownload.js b/src/components/multidownload.js index a1881b8db9..d11e52de14 100644 --- a/src/components/multidownload.js +++ b/src/components/multidownload.js @@ -63,4 +63,4 @@ define(['browser'], function (browser) { download(url); }); }; -}); \ No newline at end of file +}); diff --git a/src/components/multiselect/multiselect.css b/src/components/multiselect/multiselect.css index 9c2a58cd20..e9c66c57a4 100644 --- a/src/components/multiselect/multiselect.css +++ b/src/components/multiselect/multiselect.css @@ -4,7 +4,7 @@ left: 0; right: 0; top: 0; - background-color: rgba(0, 0, 0, .3); + background-color: rgba(0, 0, 0, 0.3); z-index: 99998; } @@ -13,7 +13,7 @@ top: 0; left: 0; right: 0; - padding: 1em .5em; + padding: 1em 0.5em; display: flex; align-items: center; z-index: 99999; diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index 6b2906cb0a..b4fa87c8a0 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -126,11 +126,11 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo var html = ""; - html += ''; + html += ''; html += '

'; - var moreIcon = "more_horiz"; - html += ''; + var moreIcon = ""; + html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index 5d63e150d1..6d5d098de2 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -3,40 +3,50 @@ position: fixed; top: 0; bottom: 0; - contain: strict + contain: strict; } .touch-menu-la { - background-color: #FFF; + background-color: #fff; will-change: transform; + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-transition: -webkit-transform ease-out 40ms, left ease-out 260ms; + -o-transition: transform ease-out 40ms, left ease-out 260ms; transition: transform ease-out 40ms, left ease-out 260ms; - z-index: 1099 + z-index: 1099; } .touch-menu-la.transition { - transition: transform ease-out 240ms, left ease-out 260ms + -webkit-transition: -webkit-transform ease-out 240ms, left ease-out 260ms; + -o-transition: transform ease-out 240ms, left ease-out 260ms; + transition: transform ease-out 240ms, left ease-out 260ms; } .drawer-open { - box-shadow: 2px 0 12px rgba(0, 0, 0, .4) + -webkit-box-shadow: 2px 0 12px rgba(0, 0, 0, 0.4); + box-shadow: 2px 0 12px rgba(0, 0, 0, 0.4); } .scrollContainer { - flex-grow: 1 + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; } .tmla-mask { left: 0; right: 0; - background-color: #000; opacity: 0; z-index: 1098; - transition: opacity ease-in-out .38s, visibility ease-in-out .38s; + -webkit-transition: opacity ease-in-out 0.38s, visibility ease-in-out 0.38s; + -o-transition: opacity ease-in-out 0.38s, visibility ease-in-out 0.38s; + transition: opacity ease-in-out 0.38s, visibility ease-in-out 0.38s; will-change: opacity; - background-color: rgba(0, 0, 0, .3) + background-color: rgba(0, 0, 0, 0.3); } .tmla-mask.backdrop { - opacity: 1 -} \ No newline at end of file + opacity: 1; +} diff --git a/src/components/navdrawer/navdrawer.js b/src/components/navdrawer/navdrawer.js index 69adbd1f5a..9c15fbc184 100644 --- a/src/components/navdrawer/navdrawer.js +++ b/src/components/navdrawer/navdrawer.js @@ -1,6 +1,7 @@ -define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, dom) { +define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dom) { "use strict"; - return function(options) { + + return function (options) { function getTouches(e) { return e.changedTouches || e.targetTouches || e.touches; } @@ -9,14 +10,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, options.target.classList.remove("transition"); var touches = getTouches(e); var touch = touches[0] || {}; - menuTouchStartX = touch.clientX; menuTouchStartY = touch.clientY; - menuTouchStartTime = (new Date).getTime(); + menuTouchStartTime = new Date().getTime(); } function setVelocity(deltaX) { - var time = (new Date).getTime() - (menuTouchStartTime || 0); + var time = new Date().getTime() - (menuTouchStartTime || 0); velocity = Math.abs(deltaX) / time; } @@ -28,21 +28,36 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var endY = touch.clientY || 0; var deltaX = endX - (menuTouchStartX || 0); var deltaY = endY - (menuTouchStartY || 0); - setVelocity(deltaX), isOpen && 1 !== dragMode && deltaX > 0 && (dragMode = 2), 0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5 ? (dragMode = 1, scrollContainer.addEventListener("scroll", disableEvent), self.showMask()) : 0 === dragMode && Math.abs(deltaY) >= 5 && (dragMode = 2), 1 === dragMode && (newPos = currentPos + deltaX, self.changeMenuPos()) + setVelocity(deltaX); + + if (isOpen && 1 !== dragMode && deltaX > 0) { + dragMode = 2; + } + + if (0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) { + dragMode = 1; + scrollContainer.addEventListener("scroll", disableEvent); + self.showMask(); + } else if (0 === dragMode && Math.abs(deltaY) >= 5) { + dragMode = 2; + } + + if (1 === dragMode) { + newPos = currentPos + deltaX; + self.changeMenuPos(); + } } function onMenuTouchEnd(e) { options.target.classList.add("transition"); scrollContainer.removeEventListener("scroll", disableEvent); dragMode = 0; - var touches = getTouches(e); var touch = touches[0] || {}; var endX = touch.clientX || 0; var endY = touch.clientY || 0; var deltaX = endX - (menuTouchStartX || 0); var deltaY = endY - (menuTouchStartY || 0); - currentPos = deltaX; self.checkMenuState(deltaX, deltaY); } @@ -53,10 +68,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, } else { if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) { isPeeking = true; + if (e.type === "touchstart") { dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); } + onMenuTouchStart(e); } } @@ -65,38 +82,52 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, function onEdgeTouchMove(e) { e.preventDefault(); e.stopPropagation(); - onEdgeTouchStart(e); } function onEdgeTouchEnd(e) { - isPeeking && (isPeeking = !1, dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}), onMenuTouchEnd(e)) + if (isPeeking) { + isPeeking = false; + dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); + onMenuTouchEnd(e); + } } function disableEvent(e) { - e.preventDefault(), e.stopPropagation() + e.preventDefault(); + e.stopPropagation(); } function onBackgroundTouchStart(e) { var touches = getTouches(e); var touch = touches[0] || {}; - backgroundTouchStartX = touch.clientX, backgroundTouchStartTime = (new Date).getTime() + backgroundTouchStartX = touch.clientX; + backgroundTouchStartTime = new Date().getTime(); } function onBackgroundTouchMove(e) { var touches = getTouches(e); var touch = touches[0] || {}; var endX = touch.clientX || 0; + if (endX <= options.width && self.isVisible) { countStart++; var deltaX = endX - (backgroundTouchStartX || 0); - if (1 === countStart && (startPoint = deltaX), deltaX < 0 && 2 !== dragMode) { - dragMode = 1, newPos = deltaX - startPoint + options.width, self.changeMenuPos(); - var time = (new Date).getTime() - (backgroundTouchStartTime || 0); - velocity = Math.abs(deltaX) / time + + if (countStart == 1) { + startPoint = deltaX; + } + if (deltaX < 0 && dragMode !== 2) { + dragMode = 1; + newPos = deltaX - startPoint + options.width; + self.changeMenuPos(); + var time = new Date().getTime() - (backgroundTouchStartTime || 0); + velocity = Math.abs(deltaX) / time; } } - e.preventDefault(), e.stopPropagation() + + e.preventDefault(); + e.stopPropagation(); } function onBackgroundTouchEnd(e) { @@ -104,13 +135,18 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var touch = touches[0] || {}; var endX = touch.clientX || 0; var deltaX = endX - (backgroundTouchStartX || 0); - self.checkMenuState(deltaX), countStart = 0 + self.checkMenuState(deltaX); + countStart = 0; } function onMaskTransitionEnd() { var classList = mask.classList; - classList.contains("backdrop") || classList.add("hide") + + if (!classList.contains("backdrop")) { + classList.add("hide"); + } } + var self; var defaults; var mask; @@ -123,83 +159,195 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var dragMode = 0; var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer"); scrollContainer.classList.add("scrollY"); - var TouchMenuLA = function() { - self = this, defaults = { + + var TouchMenuLA = function () { + self = this; + defaults = { width: 260, handleSize: 10, - disableMask: !1, + disableMask: false, maxMaskOpacity: 0.5 - }, this.isVisible = !1, this.initialize() + }; + this.isVisible = false; + this.initialize(); }; - TouchMenuLA.prototype.initElements = function() { - options.target.classList.add("touch-menu-la"), options.target.style.width = options.width + "px", options.target.style.left = -options.width + "px", options.disableMask || (mask = document.createElement("div"), mask.className = "tmla-mask hide", document.body.appendChild(mask), dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, { - passive: !0 - })) + + TouchMenuLA.prototype.initElements = function () { + options.target.classList.add("touch-menu-la"); + options.target.style.width = options.width + "px"; + options.target.style.left = -options.width + "px"; + + if (!options.disableMask) { + mask = document.createElement("div"); + mask.className = "tmla-mask hide"; + document.body.appendChild(mask); + dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, { + passive: true + }); + } }; + var menuTouchStartX; var menuTouchStartY; var menuTouchStartTime; var edgeContainer = document.querySelector(".mainDrawerHandle"); var isPeeking = false; - TouchMenuLA.prototype.animateToPosition = function(pos) { - requestAnimationFrame(function() { - options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none" - }) - }, TouchMenuLA.prototype.changeMenuPos = function() { - newPos <= options.width && this.animateToPosition(newPos) - }, TouchMenuLA.prototype.clickMaskClose = function() { - mask.addEventListener("click", function() { - self.close() - }) - }, TouchMenuLA.prototype.checkMenuState = function(deltaX, deltaY) { - velocity >= 0.4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close() - }, TouchMenuLA.prototype.open = function() { - this.animateToPosition(options.width), currentPos = options.width, this.isVisible = !0, options.target.classList.add("drawer-open"), self.showMask(), self.invoke(options.onChange) - }, TouchMenuLA.prototype.close = function() { - this.animateToPosition(0), currentPos = 0, self.isVisible = !1, options.target.classList.remove("drawer-open"), self.hideMask(), self.invoke(options.onChange) - }, TouchMenuLA.prototype.toggle = function() { - self.isVisible ? self.close() : self.open() + + TouchMenuLA.prototype.animateToPosition = function (pos) { + requestAnimationFrame(function () { + options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none"; + }); }; + + TouchMenuLA.prototype.changeMenuPos = function () { + if (newPos <= options.width) { + this.animateToPosition(newPos); + } + }; + + TouchMenuLA.prototype.clickMaskClose = function () { + mask.addEventListener("click", function () { + self.close(); + }); + }; + + TouchMenuLA.prototype.checkMenuState = function (deltaX, deltaY) { + if (velocity >= 0.4) { + if (deltaX >= 0 || Math.abs(deltaY || 0) >= 70) { + self.open(); + } else { + self.close(); + } + } else { + if (newPos >= 100) { + self.open(); + } else { + if (newPos) { + self.close(); + } + } + } + }; + + TouchMenuLA.prototype.open = function () { + this.animateToPosition(options.width); + currentPos = options.width; + this.isVisible = true; + options.target.classList.add("drawer-open"); + self.showMask(); + self.invoke(options.onChange); + }; + + TouchMenuLA.prototype.close = function () { + this.animateToPosition(0); + currentPos = 0; + self.isVisible = false; + options.target.classList.remove("drawer-open"); + self.hideMask(); + self.invoke(options.onChange); + }; + + TouchMenuLA.prototype.toggle = function () { + if (self.isVisible) { + self.close(); + } else { + self.open(); + } + }; + var backgroundTouchStartX; var backgroundTouchStartTime; - TouchMenuLA.prototype.showMask = function() { - mask.classList.remove("hide"), mask.offsetWidth, mask.classList.add("backdrop") - }, TouchMenuLA.prototype.hideMask = function() { - mask.classList.remove("backdrop") - }, TouchMenuLA.prototype.invoke = function(fn) { - fn && fn.apply(self) + + TouchMenuLA.prototype.showMask = function () { + mask.classList.remove("hide"); + mask.offsetWidth; + mask.classList.add("backdrop"); }; + + TouchMenuLA.prototype.hideMask = function () { + mask.classList.add("hide"); + mask.classList.remove("backdrop"); + }; + + TouchMenuLA.prototype.invoke = function (fn) { + if (fn) { + fn.apply(self); + } + }; + var _edgeSwipeEnabled; - return TouchMenuLA.prototype.setEdgeSwipeEnabled = function(enabled) { - options.disableEdgeSwipe || browser.touch && (enabled ? _edgeSwipeEnabled || (_edgeSwipeEnabled = !0, dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { - passive: !0 - }), dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { - passive: !0 - }), dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { - passive: !0 - })) : _edgeSwipeEnabled && (_edgeSwipeEnabled = !1, dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { - passive: !0 - }), dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { - passive: !0 - }), dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { - passive: !0 - }))) - }, TouchMenuLA.prototype.initialize = function() { - options = Object.assign(defaults, options || {}), browser.edge && (options.disableEdgeSwipe = !0), self.initElements(), browser.touch && (dom.addEventListener(options.target, "touchstart", onMenuTouchStart, { - passive: !0 - }), dom.addEventListener(options.target, "touchmove", onMenuTouchMove, { - passive: !0 - }), dom.addEventListener(options.target, "touchend", onMenuTouchEnd, { - passive: !0 - }), dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, { - passive: !0 - }), dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, { - passive: !0 - }), dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {}), dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, { - passive: !0 - }), dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, { - passive: !0 - })), self.clickMaskClose() - }, new TouchMenuLA - } -}); \ No newline at end of file + + TouchMenuLA.prototype.setEdgeSwipeEnabled = function (enabled) { + if (!options.disableEdgeSwipe) { + if (browser.touch) { + if (enabled) { + if (!_edgeSwipeEnabled) { + _edgeSwipeEnabled = true; + dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { + passive: true + }); + dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { + passive: true + }); + dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { + passive: true + }); + } + } else { + if (_edgeSwipeEnabled) { + _edgeSwipeEnabled = false; + dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { + passive: true + }); + dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { + passive: true + }); + dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { + passive: true + }); + } + } + } + } + }; + + TouchMenuLA.prototype.initialize = function () { + options = Object.assign(defaults, options || {}); + + if (browser.edge) { + options.disableEdgeSwipe = true; + } + + self.initElements(); + + if (browser.touch) { + dom.addEventListener(options.target, "touchstart", onMenuTouchStart, { + passive: true + }); + dom.addEventListener(options.target, "touchmove", onMenuTouchMove, { + passive: true + }); + dom.addEventListener(options.target, "touchend", onMenuTouchEnd, { + passive: true + }); + dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, { + passive: true + }); + dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, { + passive: true + }); + dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {}); + dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, { + passive: true + }); + dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, { + passive: true + }); + } + + self.clickMaskClose(); + }; + + return new TouchMenuLA(); + }; +}); diff --git a/src/components/nowplayingbar/nowplayingbar.css b/src/components/nowplayingbar/nowplayingbar.css index 120a0508a0..b1e77715ff 100644 --- a/src/components/nowplayingbar/nowplayingbar.css +++ b/src/components/nowplayingbar/nowplayingbar.css @@ -16,7 +16,7 @@ } .nowPlayingBar-hidden { - transform: translate3d(0,100%,0); + transform: translate3d(0, 100%, 0); } .nowPlayingBarTop { @@ -28,7 +28,8 @@ justify-content: center; } -.mediaButton, .nowPlayingBarUserDataButtons .btnUserItemRating { +.mediaButton, +.nowPlayingBarUserDataButtons .btnUserItemRating { vertical-align: middle; margin: 0; text-align: center; @@ -62,6 +63,7 @@ .nowPlayingBarCenter { vertical-align: middle; text-align: center; + /* Need this to make sure it's on top of nowPlayingBarPositionContainer so that buttons are fully clickable */ z-index: 2; flex-grow: 1; @@ -74,7 +76,7 @@ .nowPlayingBarPositionContainer { position: absolute !important; left: 0; - top: -.56em; + top: -0.56em; right: 0; z-index: 1; } @@ -89,7 +91,8 @@ .nowPlayingBarRight { position: relative; - margin: 0 .5em 0 auto; + margin: 0 0.5em 0 auto; + /* Need this to make sure it's on top of nowPlayingBarPositionContainer so that buttons are fully clickable */ z-index: 2; display: flex; @@ -121,7 +124,6 @@ } @media all and (max-width: 70em) { - .nowPlayingBarRight .nowPlayingBarUserDataButtons { display: none; } @@ -155,13 +157,15 @@ .nowPlayingBarRight .nowPlayingBarVolumeSliderContainer { display: none !important; } + .nowPlayingBarInfoContainer { width: 70%; } } @media all and (max-width: 24em) { - .nowPlayingBar .muteButton, .nowPlayingBar .unmuteButton { + .nowPlayingBar .muteButton, + .nowPlayingBar .unmuteButton { display: none; } } diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 37a1a32f56..8da9b9c053 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -31,7 +31,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; @@ -42,31 +42,31 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', // The onclicks are needed due to the return false above html += '
'; - html += ''; + html += ''; - html += ''; + html += ''; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; html += '
'; @@ -187,14 +187,29 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', volumeSliderContainer.classList.remove('hide'); } + var volumeSliderTimer; + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + if (currentPlayer) { currentPlayer.setVolume(this.value); } } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + volumeSlider.addEventListener('change', setVolume); - volumeSlider.addEventListener('mousemove', setVolume); - volumeSlider.addEventListener('touchmove', setVolume); + volumeSlider.addEventListener('mousemove', setVolumeDelayed); + volumeSlider.addEventListener('touchmove', setVolumeDelayed); positionSlider = elem.querySelector('.nowPlayingBarPositionSlider'); positionSlider.addEventListener('change', function () { @@ -289,7 +304,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (isPaused) { for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('i').innerHTML = 'play_arrow'; + playPauseButtons[i].querySelector('i').innerHTML = ''; } } else { @@ -393,20 +408,15 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var showMuteButton = true; var showVolumeSlider = true; - var progressElement = volumeSliderContainer.querySelector('.mdl-slider-background-lower'); if (supportedCommands.indexOf('ToggleMute') === -1) { showMuteButton = false; } if (isMuted) { - muteButton.querySelector('i').innerHTML = 'volume_off'; + muteButton.querySelector('i').innerHTML = ''; } else { - muteButton.querySelector('i').innerHTML = 'volume_up'; - } - - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; + muteButton.querySelector('i').innerHTML = ''; } if (supportedCommands.indexOf('SetVolume') === -1) { @@ -571,7 +581,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var userData = item.UserData || {}; var likes = userData.Likes == null ? '' : userData.Likes; - nowPlayingUserData.innerHTML = ''; + nowPlayingUserData.innerHTML = ''; }); } @@ -581,8 +591,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } function onPlaybackStart(e, state) { - - //console.log('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; @@ -627,7 +636,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStopped(e, state) { - //console.log('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; if (player.isLocalPlayer) { @@ -653,7 +662,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - //console.log('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + event.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { diff --git a/src/components/packagemanager.js b/src/components/packagemanager.js index 03ed1006c1..46f4704522 100644 --- a/src/components/packagemanager.js +++ b/src/components/packagemanager.js @@ -149,4 +149,4 @@ define(['appSettings', 'pluginManager'], function (appSettings, pluginManager) { }; return new PackageManager(); -}); \ No newline at end of file +}); diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 6629fbfb0f..4ebdbbd6d2 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -43,4 +43,4 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; return PhotoPlayer; -}); \ No newline at end of file +}); diff --git a/src/components/playback/autoplaydetect.js b/src/components/playback/autoplaydetect.js deleted file mode 100644 index 3610eef2ab..0000000000 --- a/src/components/playback/autoplaydetect.js +++ /dev/null @@ -1,61 +0,0 @@ -define([], function () { - 'use strict'; - - function supportsHtmlMediaAutoplay() { - - return new Promise(function (resolve, reject) { - - var timeout; - var elem = document.createElement('video'); - var elemStyle = elem.style; - //skip the test if video itself, or the autoplay - //element on it isn't supported - if (!('autoplay' in elem)) { - reject(); - return; - } - elemStyle.position = 'absolute'; - elemStyle.height = 0; - elemStyle.width = 0; - - elem.setAttribute('autoplay', 'autoplay'); - elem.style.display = 'none'; - document.body.appendChild(elem); - - var testAutoplay = function (arg) { - clearTimeout(timeout); - elem.removeEventListener('playing', testAutoplay); - elem.removeEventListener('play', testAutoplay); - var supported = (arg && arg.type === 'playing') || (arg && arg.type === 'play') || elem.currentTime !== 0; - elem.parentNode.removeChild(elem); - - if (supported) { - resolve(); - } else { - reject(); - } - }; - - // play needed for firefox - elem.addEventListener('play', testAutoplay); - elem.addEventListener('playing', testAutoplay); - - try { - elem.src = 'data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU'; - var promise = elem.play(); - if (promise && promise.catch) { - promise.catch(reject); - } - - timeout = setTimeout(testAutoplay, 500); - } catch (e) { - reject(); - return; - } - }); - } - - return { - supportsHtmlMediaAutoplay: supportsHtmlMediaAutoplay - }; -}); \ No newline at end of file diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index b2bf9d4106..e73fc39689 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'brightness_high'; + html += ''; html += '
'; @@ -98,15 +98,22 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia } } + function setIcon(iconElement, icon) { + iconElement.classList.remove('brightness_high'); + iconElement.classList.remove('brightness_medium'); + iconElement.classList.remove('brightness_low'); + iconElement.classList.add(icon); + } + function updateElementsFromPlayer(brightness) { if (iconElement) { if (brightness >= 80) { - iconElement.innerHTML = 'brightness_high'; + setIcon(iconElement, 'brightness_high'); } else if (brightness >= 20) { - iconElement.innerHTML = 'brightness_medium'; + setIcon(iconElement, 'brightness_medium'); } else { - iconElement.innerHTML = 'brightness_low'; + setIcon(iconElement, 'brightness_low'); } } if (progressElement) { diff --git a/src/components/playback/experimentalwarnings.js b/src/components/playback/experimentalwarnings.js index 17b1af0257..2d1ef53c19 100644 --- a/src/components/playback/experimentalwarnings.js +++ b/src/components/playback/experimentalwarnings.js @@ -94,4 +94,4 @@ define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function ( }; return ExpirementalPlaybackWarnings; -}); \ No newline at end of file +}); diff --git a/src/components/playback/iconosd.css b/src/components/playback/iconosd.css index b2c4fca91a..8f197a179e 100644 --- a/src/components/playback/iconosd.css +++ b/src/components/playback/iconosd.css @@ -4,11 +4,11 @@ right: 3%; z-index: 100000; background: #222; - background: rgba(0, 0, 0, .8); + background: rgba(0, 0, 0, 0.8); padding: 1em; color: #fff; backdrop-filter: blur(5px); - border-radius: .25em; + border-radius: 0.25em; transition: opacity 200ms ease-out; } @@ -19,22 +19,22 @@ .iconOsdIcon { font-size: 320%; display: block; - margin: .25em .7em; + margin: 0.25em 0.7em; } .iconOsdProgressOuter { - margin: 1.5em .25em 1em; - height: .35em; + margin: 1.5em 0.25em 1em; + height: 0.35em; background: #222; - border-radius: .25em; + border-radius: 0.25em; } .iconOsdProgressInner { background: #00a4dc; height: 100%; - border-radius: .25em; + border-radius: 0.25em; } .brightnessOsdProgressInner { - background: #FF9800; -} \ No newline at end of file + background: #ff9800; +} diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 7f4b9f519e..c03420c85a 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -97,6 +97,12 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } function updatePlayerState(player, state, eventName) { + // Don't go crazy reporting position changes + if (eventName == 'timeupdate') { + // Only report if this item hasn't been reported yet, or if there's an actual playback change. + // Don't report on simple time updates + return; + } var item = state.NowPlayingItem; @@ -118,19 +124,9 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } var playState = state.PlayState || {}; - var parts = nowPlayingHelper.getNowPlayingNames(item); - - var artist = parts.length === 1 ? '' : parts[0].text; - var title = parts[parts.length - 1].text; - - // Switch these two around for video - if (isVideo && parts.length > 1) { - var temp = artist; - artist = title; - title = temp; - } - + var artist = parts[parts.length - 1].text; + var title = parts.length === 1 ? '' : parts[0].text; var albumArtist; if (item.AlbumArtists && item.AlbumArtists[0]) { @@ -147,17 +143,6 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f var isPaused = playState.IsPaused || false; var canSeek = playState.CanSeek || false; - var now = new Date().getTime(); - - // Don't go crazy reporting position changes - if (eventName == 'timeupdate' && (now - lastUpdateTime) < 5000) { - // Only report if this item hasn't been reported yet, or if there's an actual playback change. - // Don't report on simple time updates - return; - } - - lastUpdateTime = now; - if (navigator.mediaSession) { navigator.mediaSession.metadata = new MediaMetadata({ title: title, diff --git a/src/components/playback/playaccessvalidation.js b/src/components/playback/playaccessvalidation.js index 35d8314fc1..46a6f7546c 100644 --- a/src/components/playback/playaccessvalidation.js +++ b/src/components/playback/playaccessvalidation.js @@ -47,4 +47,4 @@ define(['connectionManager', 'globalize'], function (connectionManager, globaliz }; return PlayAccessValidation; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 23f0d4572e..3a3bddd989 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -57,7 +57,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); } - //console.log(method + '-' + JSON.stringify(info)); + console.debug(method + '-' + JSON.stringify(info)); var apiClient = connectionManager.getApiClient(serverId); apiClient[method](info); } @@ -1024,7 +1024,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla currentTargetInfo = targetInfo; if (targetInfo) { - console.log('Active player: ' + JSON.stringify(targetInfo)); + console.debug('Active player: ' + JSON.stringify(targetInfo)); } if (player && player.isLocalPlayer) { @@ -1540,6 +1540,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.togglePictureInPicture(); }; + self.toggleAirPlay = function (player) { + player = player || self._currentPlayer; + return player.toggleAirPlay(); + }; + self.getSubtitleStreamIndex = function (player) { player = player || self._currentPlayer; @@ -2823,7 +2828,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (newItemInfo) { - console.log('playing next track'); + console.debug('playing next track'); var newItemPlayOptions = newItemInfo.item.playOptions || getDefaultPlayOptions(); @@ -3113,7 +3118,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // medianotsupported var errorType = error.type; - console.log('playbackmanager playback error type: ' + (errorType || '')); + console.debug('playbackmanager playback error type: ' + (errorType || '')); var streamInfo = error.streamInfo || getPlayerData(player).streamInfo; @@ -3396,7 +3401,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function getLiveStreamMediaInfo(player, streamInfo, mediaSource, liveStreamId, serverId) { - console.log('getLiveStreamMediaInfo'); + console.debug('getLiveStreamMediaInfo'); streamInfo.lastMediaInfoQuery = new Date().getTime(); @@ -3854,6 +3859,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (player.supports('PictureInPicture')) { list.push('PictureInPicture'); } + if (player.supports('AirPlay')) { + list.push('AirPlay'); + } if (player.supports('SetBrightness')) { list.push('SetBrightness'); } @@ -3953,7 +3961,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; PlaybackManager.prototype.sendCommand = function (cmd, player) { - console.log('MediaController received command: ' + cmd.Name); + console.debug('MediaController received command: ' + cmd.Name); switch (cmd.Name) { case 'SetRepeatMode': this.setRepeatMode(cmd.Arguments.RepeatMode, player); diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 3253d8acdf..5b178dbf08 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -9,7 +9,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager function onOrientationChangeError(err) { orientationLocked = false; - console.log('error locking orientation: ' + err); + console.error('error locking orientation: ' + err); } events.on(playbackManager, 'playbackstart', function (e, player, state) { @@ -46,10 +46,10 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager try { unlockOrientation(); } catch (err) { - console.log('error unlocking orientation: ' + err); + console.error('error unlocking orientation: ' + err); } orientationLocked = false; } } }); -}); \ No newline at end of file +}); diff --git a/src/components/playback/playmethodhelper.js b/src/components/playback/playmethodhelper.js index 4e85f87093..75af04035c 100644 --- a/src/components/playback/playmethodhelper.js +++ b/src/components/playback/playmethodhelper.js @@ -21,4 +21,4 @@ define([], function () { return { getDisplayPlayMethod: getDisplayPlayMethod }; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playqueuemanager.js b/src/components/playback/playqueuemanager.js index ed2076a814..429c4027f1 100644 --- a/src/components/playback/playqueuemanager.js +++ b/src/components/playback/playqueuemanager.js @@ -230,4 +230,4 @@ define([], function () { }; return PlayQueueManager; -}); \ No newline at end of file +}); diff --git a/src/components/playback/remotecontrolautoplay.js b/src/components/playback/remotecontrolautoplay.js index d8316b87ef..90a872cc6e 100644 --- a/src/components/playback/remotecontrolautoplay.js +++ b/src/components/playback/remotecontrolautoplay.js @@ -32,16 +32,16 @@ define(['events', 'playbackManager'], function (events, playbackManager) { } if (!oldPlayer.isLocalPlayer) { - console.log('Skipping remote control autoplay because oldPlayer is not a local player'); + console.debug('Skipping remote control autoplay because oldPlayer is not a local player'); return; } if (newPlayer.isLocalPlayer) { - console.log('Skipping remote control autoplay because newPlayer is a local player'); + console.debug('Skipping remote control autoplay because newPlayer is a local player'); return; } transferPlayback(oldPlayer, newPlayer); }); -}); \ No newline at end of file +}); diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index b622cc18b1..5d2c90ddb7 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'volume_up'; + html += ''; html += '
'; @@ -101,7 +101,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function updatePlayerVolumeState(isMuted, volume) { if (iconElement) { - iconElement.innerHTML = isMuted ? 'volume_off' : 'volume_up'; + iconElement.innerHTML = isMuted ? '' : ''; } if (progressElement) { progressElement.style.width = (volume || 0) + '%'; diff --git a/src/components/playbacksettings/playbacksettings.js b/src/components/playbacksettings/playbacksettings.js index 69915b18bf..d249b5b989 100644 --- a/src/components/playbacksettings/playbacksettings.js +++ b/src/components/playbacksettings/playbacksettings.js @@ -342,4 +342,4 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality }; return PlaybackSettings; -}); \ No newline at end of file +}); diff --git a/src/components/playbacksettings/playbacksettings.template.html b/src/components/playbacksettings/playbacksettings.template.html index 06cfe3f3d6..0c8b726a40 100644 --- a/src/components/playbacksettings/playbacksettings.template.html +++ b/src/components/playbacksettings/playbacksettings.template.html @@ -86,4 +86,4 @@ - \ No newline at end of file + diff --git a/src/components/playerstats/playerstats.css b/src/components/playerstats/playerstats.css index b9d6355bd2..dfdf75a2e0 100644 --- a/src/components/playerstats/playerstats.css +++ b/src/components/playerstats/playerstats.css @@ -1,11 +1,10 @@ .playerStats { - background: rgba(28,28,28,0.8); - border-radius: .3em; + background: rgba(28, 28, 28, 0.8); + border-radius: 0.3em; color: #fff; left: 1.5em; position: absolute; top: 5em; - color: #fff; } .playerStats-tv { @@ -23,8 +22,8 @@ .playerStats-closeButton { position: absolute; - top: .25em; - right: .25em; + top: 0.25em; + right: 0.25em; color: #ccc; z-index: 1; } @@ -44,7 +43,7 @@ .playerStats-stat-label { font-weight: 500; - margin: 0 .5em 0 0; + margin: 0 0.5em 0 0; } .playerStats-stat-header { diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 4179192dd2..89adf22624 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -18,7 +18,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (layoutManager.tv) { button = ''; } else { - button = ''; + button = ''; } var contentClass = layoutManager.tv ? 'playerStats-content playerStats-content-tv' : 'playerStats-content'; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 4738211a5e..c274b40799 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -258,7 +258,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', var title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/playmenu.js b/src/components/playmenu.js index 7225ff94e1..a410da6985 100644 --- a/src/components/playmenu.js +++ b/src/components/playmenu.js @@ -72,4 +72,4 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings' return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index ec65e63e65..2126d73b3c 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -27,7 +27,7 @@ define(['events'], function (events) { PluginManager.prototype.loadPlugin = function (url) { - console.log('Loading plugin: ' + url); + console.debug('Loading plugin: ' + url); var instance = this; return new Promise(function (resolve, reject) { @@ -146,4 +146,4 @@ define(['events'], function (events) { }; return new PluginManager(); -}); \ No newline at end of file +}); diff --git a/src/components/polyfills/focusPreventScroll.js b/src/components/polyfills/focusPreventScroll.js index 6511c0426c..6df9e9928c 100644 --- a/src/components/polyfills/focusPreventScroll.js +++ b/src/components/polyfills/focusPreventScroll.js @@ -12,6 +12,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { }, true); var opts = Object.defineProperty({}, "preventScroll", { + // eslint-disable-next-line getter-return get: function () { supportsPreventScrollOption = true; } @@ -19,7 +20,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { focusElem.focus(opts); } catch (e) { - console.log("error checking preventScroll support"); + console.error("error checking preventScroll support"); } if (!supportsPreventScrollOption) { diff --git a/src/components/polyfills/objectassign.js b/src/components/polyfills/objectassign.js index bf8d7118a5..85f55aa144 100644 --- a/src/components/polyfills/objectassign.js +++ b/src/components/polyfills/objectassign.js @@ -11,6 +11,7 @@ if (typeof Object.assign != 'function') { var source = arguments[index]; if (source !== undefined && source !== null) { for (var nextKey in source) { + // eslint-disable-next-line no-prototype-builtins if (source.hasOwnProperty(nextKey)) { output[nextKey] = source[nextKey]; } diff --git a/src/components/prompt/nativeprompt.js b/src/components/prompt/nativeprompt.js index b0634bd428..ba7f1a9a49 100644 --- a/src/components/prompt/nativeprompt.js +++ b/src/components/prompt/nativeprompt.js @@ -25,4 +25,4 @@ define([], function () { return Promise.reject(result); } }; -}); \ No newline at end of file +}); diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 6e8e019c83..8f4f839eaa 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -101,4 +101,4 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're }); }); }; -}); \ No newline at end of file +}); diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index b1e7f580f0..23b918a1f2 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

diff --git a/src/components/qualityoptions.js b/src/components/qualityoptions.js index e46a690e8a..5ad69cb790 100644 --- a/src/components/qualityoptions.js +++ b/src/components/qualityoptions.js @@ -160,4 +160,4 @@ define(['globalize'], function (globalize) { getVideoQualityOptions: getVideoQualityOptions, getAudioQualityOptions: getAudioQualityOptions }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index a32803e107..e9c174bfd6 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -21,16 +21,25 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' } } + function setButtonIcon(button, icon) { + var inner = button.querySelector('i'); + inner.classList.remove('fiber_smart_record'); + inner.classList.remove('fiber_manual_record'); + inner.classList.add(icon); + } + function RecordingButton(options) { this.options = options; + var button = options.button; + + setButtonIcon(button, 'fiber_manual_record'); + if (options.item) { this.refreshItem(options.item); } else if (options.itemId && options.serverId) { this.refresh(options.itemId, options.serverId); } - var button = options.button; - button.querySelector('i').innerHTML = 'fiber_manual_record'; var clickFn = onRecordingButtonClick.bind(this); this.clickFn = clickFn; @@ -80,7 +89,7 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' var options = this.options; var button = options.button; this.item = item; - button.querySelector('i').innerHTML = getIndicatorIcon(item); + setButtonIcon(button, getIndicatorIcon(item)); if (item.TimerId && (item.Status || 'Cancelled') !== 'Cancelled') { button.classList.add('recordingIcon-active'); diff --git a/src/components/recordingcreator/recordingcreator.css b/src/components/recordingcreator/recordingcreator.css index dc1ba9b31a..031d04b860 100644 --- a/src/components/recordingcreator/recordingcreator.css +++ b/src/components/recordingcreator/recordingcreator.css @@ -9,7 +9,7 @@ } .recordingDialog-itemName { - margin-top: .7em; + margin-top: 0.7em; } .recordingDetailsContainer { diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index 614d483b21..a51fac4305 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -202,4 +202,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index 2a2840aecc..b99ead300a 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 3a1d4ba943..86c731ad26 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -159,4 +159,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index 6b853704f3..48256da0a2 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

diff --git a/src/components/recordingcreator/recordingfields.css b/src/components/recordingcreator/recordingfields.css index c8492f5298..db0c7e0692 100644 --- a/src/components/recordingcreator/recordingfields.css +++ b/src/components/recordingcreator/recordingfields.css @@ -4,9 +4,9 @@ } .recordingIcon-active { - color: #cc3333; + color: #c33; } .recordSeriesContainer { - margin-bottom: .8em; -} \ No newline at end of file + margin-bottom: 0.8em; +} diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index 622b0d62e7..ce35960716 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 4bfd316c73..a071cb2032 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -214,4 +214,4 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi cancelTimerWithConfirmation: cancelTimerWithConfirmation, cancelSeriesTimerWithConfirmation: cancelSeriesTimerWithConfirmation }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index 73a98cf5e7..62accd5b63 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -267,4 +267,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c show: showEditor, embed: embed }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index c2e8ebd0ed..fa9f16561b 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 30074b4d0b..b5730e592a 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -123,7 +123,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager' var title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 76d4f834e2..83a1c48e5f 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -1,49 +1,89 @@ .nowPlayingInfoContainer { + display: -webkit-box; + display: -webkit-flex; display: flex; - flex-direction: row + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + flex-direction: row; } .navigationSection { - text-align: center + text-align: center; +} + +.btnArrowUp { + border-radius: 40% 40% 10% 10%; +} + +.btnArrowLeft { + border-radius: 40% 10% 10% 40%; +} + +.btnArrowRight { + border-radius: 10% 40% 40% 10%; +} + +.btnArrowDown { + border-radius: 10% 10% 40% 40%; +} + +.btnOk { + border-radius: 10%; } .nowPlayingPageTitle { - margin: 0 0 .5em .5em + margin: 0 0 0.5em 0.5em; } .nowPlayingPositionSliderContainer { - margin: .7em 0 .7em 1em + margin: 0.7em 0 0.7em 1em; } .nowPlayingInfoButtons { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; - flex-wrap: wrap + -webkit-flex-wrap: wrap; + flex-wrap: wrap; } .nowPlayingInfoControls, .nowPlayingTime { display: flex; + display: -webkit-box; + display: -webkit-flex; } .nowPlayingPageImageContainer { width: 20%; - margin-right: .25em; + margin-right: 0.25em; position: relative; - flex-shrink: 0 + -webkit-flex-shrink: 0; + flex-shrink: 0; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .nowPlayingPageImageContainer { - width: 16% + width: 16%; } } .nowPlayingInfoControls { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; flex-direction: column; - justify-content: center + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; } .nowPlayingPageImage { @@ -51,118 +91,149 @@ left: 0; right: 0; width: 100%; + -webkit-box-shadow: 0 0 1.9vh #000; box-shadow: 0 0 1.9vh #000; - border: .1em solid #222; + border: 0.1em solid #222; user-drag: none; user-select: none; + -moz-user-select: none; + -webkit-user-drag: none; + -webkit-user-select: none; + -ms-user-select: none; } -@media all and (orientation:portrait) and (max-width:50em) { +@media all and (orientation: portrait) and (max-width: 50em) { .nowPlayingInfoContainer { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; flex-direction: column !important; - align-items: center + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; } .nowPlayingPageTitle { text-align: center; - margin: .5em 0 .75em + margin: 0.5em 0 0.75em; } .nowPlayingPositionSliderContainer { - margin: .7em 1em + margin: 0.7em 1em; } .nowPlayingInfoButtons { - justify-content: center + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; } .nowPlayingPageImageContainer { width: auto; - margin-right: 0 + margin-right: 0; } .nowPlayingInfoControls { margin-top: 1em; - max-width: 100% + max-width: 100%; } .nowPlayingPageImage { width: auto; - height: 36vh + height: 36vh; } } -@media all and (orientation:portrait) and (max-width:40em) { +@media all and (orientation: portrait) and (max-width: 40em) { .nowPlayingPageImage { - height: 30vh + height: 30vh; } } .nowPlayingTime { display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; - margin: 0 1em + margin: 0 1em; } .nowPlayingSecondaryButtons { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-flex-wrap: wrap; flex-wrap: wrap; - justify-content: center + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .nowPlayingSecondaryButtons { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; - justify-content: flex-end + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; } } -@media all and (min-width:80em) { +@media all and (min-width: 80em) { .nowPlayingPageImageContainer { - margin-right: .75em + margin-right: 0.75em; } } .nowPlayingNavButtonContainer { - width: 30em + width: 30em; } -.smallBackdropPosterItem .cardOverlayInner>div { +.smallBackdropPosterItem .cardOverlayInner > div { white-space: nowrap; + -o-text-overflow: ellipsis; text-overflow: ellipsis; - overflow: hidden + overflow: hidden; } .playlistIndexIndicatorImage { + -webkit-background-size: initial initial !important; background-size: initial !important; - background-image: url(../../img/equalizer.gif) !important; + background-image: url(../../assets/img/equalizer.gif) !important; } .hideVideoButtons .videoButton { - display: none + display: none; } .nowPlayingVolumeSliderContainer { - width: 9em + width: 9em; } -@media all and (max-width:50em) { +@media all and (max-width: 50em) { .nowPlayingInfoButtons .nowPlayingPageUserDataButtons { - display: none !important + display: none !important; + } + + .navigationSection .collapseContent i { + font-size: 4em; } } -@media all and (max-width:47em) { +@media all and (max-width: 47em) { .nowPlayingInfoButtons .repeatToggleButton { - display: none !important + display: none !important; } } -@media all and (max-width:34em) { +@media all and (max-width: 34em) { .nowPlayingInfoButtons .btnNowPlayingFastForward, .nowPlayingInfoButtons .btnNowPlayingRewind, .nowPlayingInfoButtons .playlist .listItemMediaInfo { - display: none !important + display: none !important; } } diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 3a48c2dbef..7b620d536a 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -1,4 +1,4 @@ -define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize) { +define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "layoutManager", "userSettings", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings) { "use strict"; function showAudioMenu(context, player, button, item) { @@ -122,12 +122,12 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } var url = item ? seriesImageUrl(item, { - maxHeight: 300 + maxHeight: 300 * 2 }) || imageUrl(item, { - maxHeight: 300 + maxHeight: 300 * 2 }) : null; - console.log("updateNowPlayingInfo"); + console.debug("updateNowPlayingInfo"); setImageUrl(context, url); if (item) { backdrop.setBackdrops([item]); @@ -135,7 +135,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { var userData = fullItem.UserData || {}; var likes = null == userData.Likes ? "" : userData.Likes; - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; }); } else { backdrop.clear(); @@ -215,23 +215,12 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL context.querySelector(".sendTextSection").classList.add("hide"); } - if (!currentPlayer.isLocalPlayer) { + if (-1 != supportedCommands.indexOf("Select") && !currentPlayer.isLocalPlayer) { context.querySelector(".navigationSection").classList.remove("hide"); } else { context.querySelector(".navigationSection").classList.add("hide"); } - buttonVisible(context.querySelector(".btnArrowUp"), -1 != supportedCommands.indexOf("MoveUp")); - buttonVisible(context.querySelector(".btnArrowLeft"), -1 != supportedCommands.indexOf("MoveDown")); - buttonVisible(context.querySelector(".btnArrowRight"), -1 != supportedCommands.indexOf("MoveRight")); - buttonVisible(context.querySelector(".btnArrowDown"), -1 != supportedCommands.indexOf("MoveLeft")); - buttonVisible(context.querySelector(".btnOk"), -1 != supportedCommands.indexOf("Select")); - buttonVisible(context.querySelector(".btnBack"), -1 != supportedCommands.indexOf("Back")); - buttonVisible(context.querySelector(".btnContextMenu"), -1 != supportedCommands.indexOf("ToggleContextMenu")); - buttonVisible(context.querySelector(".btnShowSearch"), -1 != supportedCommands.indexOf("GoToSearch")); - buttonVisible(context.querySelector(".bthShowSettings"), -1 != supportedCommands.indexOf("GoToSettings")); - buttonVisible(context.querySelector(".btnGoHome"), -1 != supportedCommands.indexOf("GoHome")); - buttonVisible(context.querySelector(".btnStop"), null != item); buttonVisible(context.querySelector(".btnNextTrack"), null != item); buttonVisible(context.querySelector(".btnPreviousTrack"), null != item); @@ -239,6 +228,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL buttonVisible(context.querySelector(".btnFastForward"), null != item); var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + if (positionSlider && item && item.RunTimeTicks) { + positionSlider.setKeyboardSteps(userSettings.skipBackLength() * 1000000 / item.RunTimeTicks, + userSettings.skipForwardLength() * 1000000 / item.RunTimeTicks); + } + if (positionSlider && !positionSlider.dragging) { positionSlider.disabled = !playState.CanSeek; var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; @@ -274,13 +268,13 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var toggleRepeatButton = context.querySelector(".repeatToggleButton"); if ("RepeatAll" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat"; + toggleRepeatButton.innerHTML = "repeat"; toggleRepeatButton.classList.add("repeatButton-active"); } else if ("RepeatOne" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat_one"; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else { - toggleRepeatButton.innerHTML = "repeat"; + toggleRepeatButton.innerHTML = "repeat"; toggleRepeatButton.classList.remove("repeatButton-active"); } } @@ -290,8 +284,6 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var supportedCommands = currentPlayerSupportedCommands; var showMuteButton = true; var showVolumeSlider = true; - var volumeSlider = view.querySelector('.nowPlayingVolumeSliderContainer'); - var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); if (-1 === supportedCommands.indexOf("Mute")) { showMuteButton = false; @@ -308,14 +300,10 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")); - view.querySelector(".buttonMute i").innerHTML = "volume_off"; + view.querySelector(".buttonMute i").innerHTML = ""; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute i").innerHTML = "volume_up"; - } - - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; + view.querySelector(".buttonMute i").innerHTML = ""; } if (showMuteButton) { @@ -343,7 +331,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updatePlayPauseState(isPaused, isActive) { var context = dlg; var btnPlayPause = context.querySelector(".btnPlayPause"); - btnPlayPause.querySelector("i").innerHTML = isPaused ? "play_arrow" : "pause"; + btnPlayPause.querySelector("i").innerHTML = isPaused ? "" : "pause"; buttonVisible(btnPlayPause, isActive); } @@ -378,7 +366,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL action: "setplaylistindex", enableUserDataButtons: false, rightButtons: [{ - icon: "remove_circle_outline", + icon: "", title: globalize.translate("ButtonRemove"), id: "remove" }], @@ -409,7 +397,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStart(e, state) { - console.log("remotecontrol event: " + e.type); + console.debug("remotecontrol event: " + e.type); var player = this; onStateChanged.call(player, e, state); } @@ -437,7 +425,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStopped(e, state) { - console.log("remotecontrol event: " + e.type); + console.debug("remotecontrol event: " + e.type); var player = this; if (!state.NextMediaType) { @@ -626,15 +614,27 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL return datetime.getDisplayRunningTime(ticks); }; - context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", function () { + var volumeSliderTimer; + + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + playbackManager.setVolume(this.value, currentPlayer); - }); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", function () { - playbackManager.setVolume(this.value, currentPlayer); - }); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", function () { - playbackManager.setVolume(this.value, currentPlayer); - }); + } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + + context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", setVolume); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", setVolumeDelayed); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", setVolumeDelayed); context.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); @@ -698,6 +698,12 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL context.querySelector(".sendMessageForm").addEventListener("submit", onMessageSubmit); context.querySelector(".typeTextForm").addEventListener("submit", onSendStringSubmit); events.on(playbackManager, "playerchange", onPlayerChange); + + if (layoutManager.tv) { + var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + positionSlider.classList.add("focusable"); + positionSlider.enableKeyboardDragging(); + } } function onDialogClosed(e) { diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index d422a95533..f53ce613f6 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -4,6 +4,7 @@ define([], function () { 'use strict'; var illegalRe = /[\/\?<>\\:\*\|":]/g; + // eslint-disable-next-line no-control-regex var controlRe = /[\x00-\x1f\x80-\x9f]/g; var reservedRe = /^\.+$/; var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; @@ -92,4 +93,4 @@ define([], function () { return truncate(sanitized, 255); } }; -}); \ No newline at end of file +}); diff --git a/src/components/screensavermanager.js b/src/components/screensavermanager.js index 5b7613c98d..b9d7082850 100644 --- a/src/components/screensavermanager.js +++ b/src/components/screensavermanager.js @@ -53,7 +53,7 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectio throw new Error("An existing screensaver is already active."); } - console.log("Showing screensaver " + screensaver.name); + console.debug("Showing screensaver " + screensaver.name); screensaver.show(); activeScreenSaver = screensaver; @@ -71,7 +71,7 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectio function hide() { if (activeScreenSaver) { - console.log("Hiding screensaver"); + console.debug("Hiding screensaver"); activeScreenSaver.hide(); activeScreenSaver = null; } diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 9f7035d528..5fc3729bac 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -33,6 +33,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage var elem = document.createElement("div"); var opts = Object.defineProperty({}, "behavior", { + // eslint-disable-next-line getter-return get: function () { supportsScrollToOptions = true; } @@ -40,7 +41,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage elem.scrollTo(opts); } catch (e) { - console.log("error checking ScrollToOptions support"); + console.error("error checking ScrollToOptions support"); } /** @@ -158,11 +159,22 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage */ function getScrollableParent(element, vertical) { if (element) { + var nameScroll = "scrollWidth"; + var nameClient = "clientWidth"; + var nameClass = "scrollX"; + + if (vertical) { + nameScroll = "scrollHeight"; + nameClient = "clientHeight"; + nameClass = "scrollY"; + } + var parent = element.parentElement; while (parent) { - if ((!vertical && parent.scrollWidth > parent.clientWidth && parent.classList.contains("scrollX")) || - (vertical && parent.scrollHeight > parent.clientHeight && parent.classList.contains("scrollY"))) { + // Skip 'emby-scroller' because it scrolls by itself + if (!parent.classList.contains("emby-scroller") && + parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } @@ -392,20 +404,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage * Returns true if scroll manager is enabled. */ var isEnabled = function() { - - if (!layoutManager.tv) { - return false; - } - - if (browser.tizen) { - return true; - } - - if (browser.web0s) { - return true; - } - - return false; + return layoutManager.tv; }; /** diff --git a/src/components/scroller.js b/src/components/scroller.js index 65f33b8e8d..8c67127eb3 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -392,7 +392,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var currentStart = self._pos.cur; var currentEnd = currentStart + frameSize; - //console.log('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); + console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); var isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { @@ -574,8 +574,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Int} */ function normalizeWheelDelta(event) { - // wheelDelta needed only for IE8- - scrolling.curDelta = ((o.horizontal ? event.deltaY || event.deltaX : event.deltaY) || -event.wheelDelta); + // JELLYFIN MOD: Only use deltaX for horizontal scroll and remove IE8 support + scrolling.curDelta = o.horizontal ? event.deltaX : event.deltaY; + // END JELLYFIN MOD if (transform) { scrolling.curDelta /= event.deltaMode === 1 ? 3 : 100; @@ -928,4 +929,4 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; return scrollerFactory; -}); \ No newline at end of file +}); diff --git a/src/components/scrollhelper.js b/src/components/scrollhelper.js index 6280dc5062..1a36594026 100644 --- a/src/components/scrollhelper.js +++ b/src/components/scrollhelper.js @@ -134,4 +134,4 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) { toCenter: toCenter, toStart: toStart }; -}); \ No newline at end of file +}); diff --git a/src/components/search/searchfields.css b/src/components/search/searchfields.css index 01981ed998..08d8515c86 100644 --- a/src/components/search/searchfields.css +++ b/src/components/search/searchfields.css @@ -4,8 +4,8 @@ } .searchfields-icon { - margin-bottom: .1em; - margin-right: .25em; + margin-bottom: 0.1em; + margin-right: 0.25em; font-size: 2em; align-self: flex-end; } diff --git a/src/components/search/searchfields.js b/src/components/search/searchfields.js index 912acfc41c..53ab187a81 100644 --- a/src/components/search/searchfields.js +++ b/src/components/search/searchfields.js @@ -121,4 +121,4 @@ define(['layoutManager', 'globalize', 'require', 'events', 'browser', 'alphaPick }; return SearchFields; -}); \ No newline at end of file +}); diff --git a/src/components/search/searchfields.template.html b/src/components/search/searchfields.template.html index bad808cb7e..c1e9c64347 100644 --- a/src/components/search/searchfields.template.html +++ b/src/components/search/searchfields.template.html @@ -1,5 +1,5 @@
- search + search
diff --git a/src/components/search/searchresults.template.html b/src/components/search/searchresults.template.html index a9fa232fbc..1deecaca6c 100644 --- a/src/components/search/searchresults.template.html +++ b/src/components/search/searchresults.template.html @@ -11,7 +11,7 @@

${Movies}

-
+
@@ -19,7 +19,7 @@

${Shows}

-
+
@@ -27,7 +27,7 @@

${Episodes}

-
+
@@ -35,7 +35,7 @@

${Sports}

-
+
@@ -43,7 +43,7 @@

${Kids}

-
+
@@ -51,7 +51,7 @@

${News}

-
+
@@ -59,7 +59,7 @@

${Programs}

-
+
@@ -67,7 +67,7 @@

${Videos}

-
+
@@ -75,7 +75,7 @@

${Playlists}

-
+
@@ -83,7 +83,7 @@

${Artists}

-
+
@@ -91,7 +91,7 @@

${Albums}

-
+
@@ -99,7 +99,7 @@

${Songs}

-
+
@@ -107,7 +107,7 @@

${HeaderPhotoAlbums}

-
+
@@ -115,7 +115,7 @@

${Photos}

-
+
@@ -123,7 +123,7 @@

${HeaderAudioBooks}

-
+
@@ -131,7 +131,7 @@

${Books}

-
+
@@ -139,7 +139,7 @@

${People}

-
+
-
\ No newline at end of file +
diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications.js similarity index 90% rename from src/components/serverNotifications/serverNotifications.js rename to src/components/serverNotifications.js index ff571b1e1a..5554925272 100644 --- a/src/components/serverNotifications/serverNotifications.js +++ b/src/components/serverNotifications.js @@ -4,20 +4,15 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus var serverNotifications = {}; function notifyApp() { - inputManager.notify(); } function displayMessage(cmd) { - var args = cmd.Arguments; - if (args.TimeoutMs) { - require(['toast'], function (toast) { toast({ title: args.Header, text: args.Text }); }); - } else { require(['alert'], function (alert) { alert({ title: args.Header, text: args.Text }); @@ -38,7 +33,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus } function processGeneralCommand(cmd, apiClient) { - console.log('Received command: ' + cmd.Name); + console.debug('Received command: ' + cmd.Name); switch (cmd.Name) { case 'Select': inputManager.trigger('select'); @@ -138,7 +133,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus focusManager.sendText(cmd.Arguments.String); break; default: - console.log('processGeneralCommand does not recognize: ' + cmd.Name); + console.debug('processGeneralCommand does not recognize: ' + cmd.Name); break; } @@ -146,14 +141,10 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus } function onMessageReceived(e, msg) { - var apiClient = this; - if (msg.MessageType === "Play") { - notifyApp(); var serverId = apiClient.serverInfo().Id; - if (msg.Data.PlayCommand === "PlayNext") { playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId }); } else if (msg.Data.PlayCommand === "PlayLast") { @@ -169,9 +160,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus serverId: serverId }); } - } else if (msg.MessageType === "Playstate") { - if (msg.Data.Command === 'Stop') { inputManager.trigger('stop'); } else if (msg.Data.Command === 'Pause') { @@ -193,51 +182,23 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus var cmd = msg.Data; processGeneralCommand(cmd, apiClient); } else if (msg.MessageType === "UserDataChanged") { - if (msg.Data.UserId === apiClient.getCurrentUserId()) { - for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) { events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); } } } else { - events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); } - } - function bindEvents(apiClient) { - events.off(apiClient, "message", onMessageReceived); events.on(apiClient, "message", onMessageReceived); } - function enableNativeGamepadKeyMapping() { - if (window.navigator && "string" == typeof window.navigator.gamepadInputEmulation) { - window.navigator.gamepadInputEmulation = "keyboard"; - return true; - } - - return false; - } - - function isGamepadSupported() { - return "ongamepadconnected" in window || navigator.getGamepads || navigator.webkitGetGamepads; - } - connectionManager.getApiClients().forEach(bindEvents); - events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { - bindEvents(newApiClient); }); - - if (!enableNativeGamepadKeyMapping() && isGamepadSupported()) { - require(["components/serverNotifications/gamepadtokey"]); - } - - require(["components/serverNotifications/mouseManager"]); - return serverNotifications; }); diff --git a/src/components/serverRestartDialog.js b/src/components/serverRestartDialog.js index 4c20183b2a..ef012fe44a 100644 --- a/src/components/serverRestartDialog.js +++ b/src/components/serverRestartDialog.js @@ -155,4 +155,4 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp }; return ServerRestartDialog; -}); \ No newline at end of file +}); diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 9c5be840bf..33f54bb64d 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -1,3 +1,4 @@ +/* eslint-env serviceworker */ (function () { 'use strict'; @@ -41,4 +42,4 @@ event.waitUntil(executeAction(action, data, serverId)); }, false); -})(); \ No newline at end of file +})(); diff --git a/src/components/sessionplayer.js b/src/components/sessionplayer.js index adcaab2674..bbb22a9654 100644 --- a/src/components/sessionplayer.js +++ b/src/components/sessionplayer.js @@ -549,4 +549,4 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] }; return SessionPlayer; -}); \ No newline at end of file +}); diff --git a/src/components/shell.js b/src/components/shell.js index 534a57b027..f82f5eea3c 100644 --- a/src/components/shell.js +++ b/src/components/shell.js @@ -27,4 +27,4 @@ define([], function () { } } }; -}); \ No newline at end of file +}); diff --git a/src/components/shortcuts.js b/src/components/shortcuts.js index 9d2b1847e5..ab606ab1d2 100644 --- a/src/components/shortcuts.js +++ b/src/components/shortcuts.js @@ -425,4 +425,4 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl getShortcutAttributesHtml: getShortcutAttributesHtml }; -}); \ No newline at end of file +}); diff --git a/src/components/skinManager.js b/src/components/skinManager.js index 9f96516422..b81e7c3a40 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -34,15 +34,12 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr id: "dark", isDefault: true, isDefaultServerDashboard: true - }, { - name: "Emby", - id: "emby" }, { name: "Light", id: "light" }, { name: "Purple Haze", - id: "purple-haze" + id: "purplehaze" }, { name: "Windows Media Center", id: "wmc" @@ -72,7 +69,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr selectedTheme = selectedTheme || defaultTheme; return { - stylesheetPath: require.toUrl('components/themes/' + selectedTheme.id + '/theme.css'), + stylesheetPath: require.toUrl('themes/' + selectedTheme.id + '/theme.css'), themeId: selectedTheme.id }; } @@ -99,7 +96,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr appHost.setThemeColor(color); } } catch (err) { - console.log('Error setting theme color: ' + err); + console.error('error setting theme color: ' + err); } } @@ -165,6 +162,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr function playSound(path, volume) { lastSound = new Date().getTime(); require(['howler'], function (howler) { + /* globals Howl */ try { var sound = new Howl({ src: [path], @@ -173,7 +171,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr sound.play(); currentSound = sound; } catch (err) { - console.log('Error playing sound: ' + err); + console.error('error playing sound: ' + err); } }); } diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index a5acd042b3..4d426f2484 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -70,7 +70,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f var tabIndex = canFocus ? '' : ' tabindex="-1"'; autoFocus = autoFocus ? ' autofocus' : ''; - return ''; + return ''; } function setUserScalable(scalable) { @@ -78,7 +78,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f try { appHost.setUserScalable(scalable); } catch (err) { - console.log('error in appHost.setUserScalable: ' + err); + console.error('error in appHost.setUserScalable: ' + err); } } @@ -198,6 +198,22 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } } + function onAutoplayStart() { + var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); + if (btnSlideshowPause) { + btnSlideshowPause.classList.remove("play_arrow"); + btnSlideshowPause.classList.add("pause"); + } + } + + function onAutoplayStop() { + var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); + if (btnSlideshowPause) { + btnSlideshowPause.classList.remove("pause"); + btnSlideshowPause.classList.add("play_arrow"); + } + } + function loadSwiper(dlg) { if (currentOptions.slides) { @@ -212,17 +228,22 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f // Optional parameters direction: 'horizontal', loop: options.loop !== false, - autoplay: options.interval || 8000, + autoplay: { + delay: options.interval || 8000 + }, // Disable preloading of all images preloadImages: false, // Enable lazy loading - lazyLoading: true, - lazyLoadingInPrevNext: true, - autoplayDisableOnInteraction: false, + lazy: true, + loadPrevNext: true, + disableOnInteraction: false, initialSlide: options.startIndex || 0, speed: 240 }); + swiperInstance.on('autoplayStart', onAutoplayStart); + swiperInstance.on('autoplayStop', onAutoplayStop); + if (layoutManager.mobile) { pause(); } else { @@ -334,28 +355,19 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } function play() { - - var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); - if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "pause"; + if (swiperInstance.autoplay) { + swiperInstance.autoplay.start(); } - - swiperInstance.startAutoplay(); } function pause() { - - var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); - if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "play_arrow"; + if (swiperInstance.autoplay) { + swiperInstance.autoplay.stop(); } - - swiperInstance.stopAutoplay(); } function playPause() { - - var paused = dlg.querySelector('.btnSlideshowPause i').innerHTML !== "pause"; + var paused = !dlg.querySelector('.btnSlideshowPause i').classList.contains("pause"); if (paused) { play(); } else { @@ -639,4 +651,4 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } }; }; -}); \ No newline at end of file +}); diff --git a/src/components/slideshow/style.css b/src/components/slideshow/style.css index 1167a972c8..2bea7c9696 100644 --- a/src/components/slideshow/style.css +++ b/src/components/slideshow/style.css @@ -3,11 +3,14 @@ background: #000; } -.slideshowSwiperContainer, .swiper-wrapper, .swiper-slide { +.slideshowSwiperContainer, +.swiper-wrapper, +.swiper-slide { background: #000; } -.slideshowImage, .slideshowSwiperContainer { +.slideshowImage, +.slideshowSwiperContainer { position: fixed; top: 0; right: 0; @@ -27,11 +30,12 @@ .slideshowImageText { position: fixed; - bottom: .25em; - right: .5em; + bottom: 0.25em; + right: 0.5em; color: #fff; z-index: 1002; font-weight: normal; + /* Add an outline */ text-shadow: 3px 3px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } @@ -41,6 +45,9 @@ height: auto; max-width: 100%; max-height: 100%; + -ms-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); transform: translate(-50%, -50%); position: absolute; left: 50%; @@ -49,26 +56,26 @@ .slideshowButtonIcon { color: #fff; - opacity: .7; + opacity: 0.7; } .btnSlideshowPrevious { - left: .5vh; + left: 0.5vh; top: 45vh; z-index: 1002; position: absolute; } .btnSlideshowNext { - right: .5vh; + right: 0.5vh; top: 45vh; z-index: 1002; position: absolute; } .topActionButtons { - right: .5vh; - top: .5vh; + right: 0.5vh; + top: 0.5vh; z-index: 1002; position: absolute; } @@ -78,9 +85,9 @@ left: 0; bottom: 0; right: 0; - background-color: rgba(0, 0, 0, .7); + background-color: rgba(0, 0, 0, 0.7); color: #fff; - padding: .5%; + padding: 0.5%; display: flex; flex-direction: row; align-items: center; @@ -92,9 +99,9 @@ left: 0; top: 0; right: 0; - background-color: rgba(0, 0, 0, .7); + background-color: rgba(0, 0, 0, 0.7); color: #fff; - padding: .5%; + padding: 0.5%; display: flex; flex-direction: row; align-items: center; @@ -118,14 +125,14 @@ .slideTextInner { margin: 0 auto; max-width: 60%; - background: rgba(0,0,0,.8); + background: rgba(0, 0, 0, 0.8); display: inline-block; - padding: .5em 1em; - border-radius: .25em; + padding: 0.5em 1em; + border-radius: 0.25em; } .slideTitle { - margin: 0 0 .25em; + margin: 0 0 0.25em; } .slideSubtitle { diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index d4f75a0806..a0b40acaf6 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -66,7 +66,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Sort}

'; html += '
'; diff --git a/src/components/sortmenu/sortmenu.template.html b/src/components/sortmenu/sortmenu.template.html index 3f523c2959..da7da98371 100644 --- a/src/components/sortmenu/sortmenu.template.html +++ b/src/components/sortmenu/sortmenu.template.html @@ -19,4 +19,4 @@
-
\ No newline at end of file +
diff --git a/src/components/subtitleeditor/subtitleeditor.css b/src/components/subtitleeditor/subtitleeditor.css index a97b20b38a..08e6faffba 100644 --- a/src/components/subtitleeditor/subtitleeditor.css +++ b/src/components/subtitleeditor/subtitleeditor.css @@ -1,3 +1,3 @@ .originalSubtitleFileLabel { margin-right: 1em; -} \ No newline at end of file +} diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 964aa81789..1ff30712f6 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -132,7 +132,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', itemHtml += '<' + tagName + ' class="' + className + '" data-index="' + s.Index + '">'; - itemHtml += 'closed_caption'; + itemHtml += ''; itemHtml += '
'; @@ -149,7 +149,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', if (!layoutManager.tv) { if (s.Path) { - itemHtml += ''; + itemHtml += ''; } } @@ -248,7 +248,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '<' + tagName + ' class="' + className + '" data-subid="' + result.Id + '">'; - html += 'closed_caption'; + html += ''; var bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; @@ -281,7 +281,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '
'; if (!layoutManager.tv) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/subtitleeditor/subtitleeditor.template.html b/src/components/subtitleeditor/subtitleeditor.template.html index dc8ae25701..8719cc9305 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -1,8 +1,8 @@
- +

${Subtitles}

- info${Help} + info${Help}
@@ -18,7 +18,7 @@
- +
diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 8a40bd134b..fdc64f0dfa 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -156,4 +156,4 @@ define([], function () { getStyles: getStyles, applyStyles: applyStyles }; -}); \ No newline at end of file +}); diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 669b26d271..69de536e4c 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -219,4 +219,4 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi }; return SubtitleSettings; -}); \ No newline at end of file +}); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index a6ec43d8fa..cc2788397f 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -91,4 +91,4 @@ - \ No newline at end of file + diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index 38a15be901..2ff8a3e905 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -3,8 +3,8 @@ margin-left: 30%; margin-right: 30%; height: 4.2em; - background: rgba(28,28,28,0.8); - border-radius: .3em; + background: rgba(28, 28, 28, 0.8); + border-radius: 0.3em; color: #fff; position: absolute; } @@ -14,7 +14,7 @@ top: 0; right: 0; color: #ccc; - z-index: 2; + z-index: 2; } .subtitleSyncTextField { @@ -27,7 +27,7 @@ text-align: center; font-size: 20px; color: white; - z-index: 2; + z-index: 2; } #prompt { @@ -40,7 +40,9 @@ margin-right: 1%; top: 2.5em; height: 1.4em; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; - border-radius: .3em; - z-index: 1; -} \ No newline at end of file + border-radius: 0.3em; + z-index: 1; +} diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 904c612317..07ce2cb7ec 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -130,7 +130,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle = function(action) { if (player && playbackManager.supportSubtitleOffset(player)) { - + /* eslint-disable no-fallthrough */ switch (action) { case undefined: // if showing subtitle sync is enabled @@ -157,7 +157,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncContainer.classList.add("hide"); break; } - + /* eslint-enable no-fallthrough */ } } diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 4ee344333d..999e4d0bb9 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -1,7 +1,7 @@
- +
0s
-
\ No newline at end of file +
diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index 33eddb6ec5..6cfd408424 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -104,24 +104,17 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts } function showSortMenu() { - var instance = this; - require(['sortMenu'], function (SortMenu) { - new SortMenu().show({ - settingsKey: instance.getSettingsKey(), settings: instance.getSortValues(), onChange: instance.itemsContainer.refreshItems.bind(instance.itemsContainer), serverId: instance.params.serverId, sortOptions: instance.getSortMenuOptions() - }).then(function () { - updateSortText(instance); updateAlphaPickerState(instance); - instance.itemsContainer.refreshItems(); }); }); @@ -188,7 +181,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts return; } - btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'; + btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? '' : ''; } function bindAll(elems, eventName, fn) { diff --git a/src/components/tabbedview/tabbedview.js b/src/components/tabbedview/tabbedview.js index 33f1c6e6cc..a67e8e0fa1 100644 --- a/src/components/tabbedview/tabbedview.js +++ b/src/components/tabbedview/tabbedview.js @@ -120,4 +120,4 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function ( }; return TabbedView; -}); \ No newline at end of file +}); diff --git a/src/components/thememediaplayer.js b/src/components/thememediaplayer.js index a8298fad37..94012ba823 100644 --- a/src/components/thememediaplayer.js +++ b/src/components/thememediaplayer.js @@ -108,4 +108,4 @@ define(['playbackManager', 'userSettings', 'connectionManager'], function (playb // } //}); -}); \ No newline at end of file +}); diff --git a/src/components/themes/appletv/theme.css b/src/components/themes/appletv/theme.css deleted file mode 100644 index a6e9888e12..0000000000 --- a/src/components/themes/appletv/theme.css +++ /dev/null @@ -1,430 +0,0 @@ -.skinHeader, -html { - color: #222; - color: rgba(0, 0, 0, .87) -} - -.wizardStartForm, -.ui-corner-all, -.ui-shadow { - background-color: #303030 -} - -.emby-collapsible-button { - border-color: #ccc; - border-color: rgba(0, 0, 0, .158) -} - -.collapseContent { - background-color: #eaeaea -} - -.formDialogHeader:not(.formDialogHeader-clear), -.skinHeader-withBackground { - color: rgba(0, 0, 0, .7); - background: #303030; - background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB) -} - -.skinHeader.semiTransparent { - backdrop-filter: none !important -} - -.pageTitleWithDefaultLogo { - background-image: url(../logodark.png) -} - -html { - background: #D5E9F2 -} - -.backgroundContainer, -.dialog { - background: #D5E9F2; - background-size: 100% 100% -} - -.backgroundContainer.withBackdrop { - background: linear-gradient(to bottom, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)) -} - -.actionSheet { - background: #f0f0f0 -} - -.paper-icon-button-light:hover:not(:disabled) { - color: #00a4dc; - background-color: rgba(0,164,220, .2); -} - -.paper-icon-button-light.show-focus:focus { - color: #00a4dc; -} - -.fab, -.raised { - background: #fff; - background: rgba(0, 0, 0, .14); - color: inherit -} - -.fab:focus, -.raised:focus { - background: rgba(0, 0, 0, .24) -} - -.button-submit { - background: #00a4dc; - color: #fff -} - -.button-submit:focus { - background: #0cb0e8 -} - -.button-delete { - background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) -} - -.checkboxLabel { - color: inherit -} - -.checkboxListLabel, -.inputLabel, -.inputLabelUnfocused, -.paperListLabel, -.textareaLabelUnfocused { - color: #555; - color: rgba(0, 0, 0, .7) -} - -.button-link, -.inputLabelFocused, -.selectLabelFocused, -.textareaLabelFocused { - color: green -} - -.checkboxOutline { - border-color: currentColor -} - -.paperList, -.visualCardBox { - background-color: #fff; - background-color: rgba(0, 0, 0, .1) -} - -.defaultCardBackground1 { - background-color: #009688 -} - -.defaultCardBackground2 { - background-color: #D32F2F -} - -.defaultCardBackground3 { - background-color: #0288D1 -} - -.defaultCardBackground4 { - background-color: #388E3C -} - -.defaultCardBackground5 { - background-color: #F57F17 -} - -.formDialogFooter:not(.formDialogFooter-clear) { - border-top: 1px solid #ddd; - border-top: 1px solid rgba(0, 0, 0, .08) -} - -.cardText-secondary, -.fieldDescription, -.guide-programNameCaret, -.listItem .secondary, -.nowPlayingBarSecondaryText, -.programSecondaryTitle, -.secondaryText { - color: #888; - color: rgba(0, 0, 0, .5) -} - -.actionsheetDivider { - background: #ddd; - background: rgba(0, 0, 0, .14) -} - -.cardFooter-vibrant .cardText-secondary { - color: inherit; - opacity: .5 -} - -.formDialogHeader a, -.toast { - color: #fff -} - -.actionSheetMenuItem:hover { - background-color: #ddd -} - -.toast { - background: #303030; - color: rgba(255, 255, 255, .87) -} - -.appfooter, -.formDialogFooter:not(.formDialogFooter-clear) { - color: rgba(0, 0, 0, .7); - background: #303030; - background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB) -} - -.nowPlayingBarSecondaryText { - color: #999 -} - -.itemSelectionPanel { - border: 1px solid #00a4dc -} - -.selectionCommandsPanel { - background: #00a4dc; - color: #fff -} - -.upNextDialog-countdownText { - color: #00a4dc -} - -.alphaPickerButton { - color: #555; - color: rgba(0, 0, 0, .7); - background-color: transparent -} - -.alphaPickerButton-selected, -.alphaPickerButton-tv:focus { - background-color: #00a4dc; - color: #fff !important -} - -.detailTableBodyRow-shaded:nth-child(even) { - background: #f8f8f8; - background: rgba(0, 0, 0, .1) -} - -.listItem-border { - border-color: rgba(0, 0, 0, .1) !important -} - -.listItem:focus { - background: rgba(0, 0, 0, .2) -} - -.progressring-spiner { - border-color: #00a4dc -} - -.mediaInfoText { - color: #333; - background: #fff -} - -.mediaInfoTimerIcon, -.starIcon { - color: #CB272A -} - -.emby-input, -.emby-textarea { - color: inherit; - background: rgba(255, 255, 255, .9); - border: .07em solid rgba(0, 0, 0, .158); - border-radius: .15em -} - -.emby-input:focus, -.emby-textarea:focus { - border-color: #00a4dc -} - -.emby-select-withcolor { - color: inherit; - background: rgba(255, 255, 255, .9); - border: .07em solid rgba(0, 0, 0, .158) -} - -.emby-checkbox:checked+span+.checkboxOutline, -.emby-select-withcolor:focus { - border-color: #00a4dc -} - -.emby-checkbox:focus+span+.checkboxOutline { - border-color: #fff; -} - -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #00a4dc; -} - -.emby-select-withcolor>option { - color: #000; - background: #fff -} - -.emby-select-tv-withcolor:focus { - background-color: #00a4dc; - color: #fff -} - -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #00a4dc -} - -.itemProgressBarForeground-recording { - background-color: #CB272A -} - -.countIndicator, -.fullSyncIndicator, -.playedIndicator { - background: #00a4dc -} - -.fullSyncIndicator { - color: #fff -} - -.mainDrawer { - background: #fff -} - -.navMenuOption:hover { - background: #f2f2f2 -} - -.navMenuOption-selected { - background: #00a4dc !important; - color: #fff -} - -.emby-button.show-focus:focus { - background: #00a4dc; - color: #fff -} - -.emby-tab-button { - color: #999; -} - -.emby-tab-button-active { - color: #fff; -} - -.emby-tab-button.show-focus:focus { - color: #fff; -} - -.emby-tab-button:hover { - color: #fff; -} - -.channelPrograms, -.guide-channelHeaderCell, -.programCell { - border-color: #555; - border-color: rgba(0, 0, 0, .1) -} - -.programCell-sports { - background: #3949AB !important -} - -.programCell-movie { - background: #5E35B1 !important -} - -.programCell-kids { - background: #039BE5 !important -} - -.programCell-news { - background: #43A047 !important -} - -.programCell-active { - background: rgba(0, 0, 0, .1) !important -} - -.guide-channelHeaderCell:focus, -.programCell:focus { - background-color: #00a4dc !important; - color: #fff !important -} - -.guide-programTextIcon { - color: #1e1e1e; - background: #555 -} - -.guide-headerTimeslots { - color: inherit -} - -.guide-date-tab-button { - color: #555; - color: rgba(0, 0, 0, .54) -} - -.guide-date-tab-button.emby-tab-button-active, -.guide-date-tab-button:focus { - color: #00a4dc -} - -.guide-date-tab-button.show-focus:focus { - background-color: #00a4dc; - color: #fff -} - -.itemBackdropFader { - background: linear-gradient(rgba(0, 0, 0, 0), #E4E2DC) -} - -.infoBanner { - color: #000; - background: #fff3a5; - padding: 1em; - border-radius: .25em -} - -.ratingbutton-icon-withrating { - color: #c33 -} - -.downloadbutton-icon-complete, -.downloadbutton-icon-on { - color: #4285F4 -} - -.playstatebutton-icon-played { - color: #c33 -} - -.repeatButton-active { - color: #4285F4 -} - -.card:focus .cardBox.visualCardBox, -.card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #00a4dc !important -} - -.metadataSidebarIcon { - color: #00a4dc -} diff --git a/src/components/themes/blueradiance/theme.css b/src/components/themes/blueradiance/theme.css deleted file mode 100644 index dca6ab8104..0000000000 --- a/src/components/themes/blueradiance/theme.css +++ /dev/null @@ -1,459 +0,0 @@ -.skinHeader, -html { - color: #ddd; - color: rgba(255, 255, 255, .8) -} - -.wizardStartForm, -.ui-corner-all, -.ui-shadow { - background-color: #303030 -} - -.emby-collapsible-button { - border-color: #383838; - border-color: rgba(255, 255, 255, .135) -} - -.skinHeader-withBackground { - background: #303030; - background: linear-gradient(to right, #291A31, #033664, #011432, #141A3A, #291A31) -} - -.skinHeader.semiTransparent { - backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) -} - -.pageTitleWithDefaultLogo { - background-image: url(../logowhite.png) -} - -.dialog, -html { - background-color: #033361 -} - -.backgroundContainer { - background: url(bg.jpg) center top no-repeat #033361; - background-size: cover -} - -.backgroundContainer.withBackdrop { - opacity: .86 -} - -@media (orientation:portrait) { - .backgroundContainer { - background-position: 30% top - } -} - -.paper-icon-button-light:hover:not(:disabled) { - color: #00a4dc; - background-color: rgba(0,164,220, .2); -} - -.paper-icon-button-light.show-focus:focus { - color: #00a4dc; -} - -.fab, -.raised { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87) -} - -.fab:focus, -.raised:focus { - background: rgba(0, 0, 0, .7) -} - -.button-submit { - background: #00a4dc; - color: #fff -} - -.button-submit:focus { - background: #0cb0e8; - color: #fff -} - -.button-delete { - background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) -} - -.checkboxLabel { - color: inherit -} - -.checkboxListLabel, -.inputLabel, -.inputLabelUnfocused, -.paperListLabel, -.textareaLabelUnfocused { - color: #bbb; - color: rgba(255, 255, 255, .7) -} - -.inputLabelFocused, -.selectLabelFocused, -.textareaLabelFocused { - color: #00a4dc -} - -.checkboxOutline { - border-color: currentColor -} - -.collapseContent, -.formDialogFooter:not(.formDialogFooter-clear), -.formDialogHeader:not(.formDialogHeader-clear), -.paperList, -.visualCardBox { - background-color: rgba(0, 0, 0, .5) -} - -.defaultCardBackground1 { - background-color: #d2b019 -} - -.defaultCardBackground2 { - background-color: #338abb -} - -.defaultCardBackground3 { - background-color: #6b689d -} - -.defaultCardBackground4 { - background-color: #dd452b -} - -.defaultCardBackground5 { - background-color: #5ccea9 -} - -.cardText-secondary, -.fieldDescription, -.guide-programNameCaret, -.listItem .secondary, -.nowPlayingBarSecondaryText, -.programSecondaryTitle, -.secondaryText { - color: #999; - color: rgba(255, 255, 255, .5) -} - -.actionsheetDivider { - background: #444; - background: rgba(255, 255, 255, .14) -} - -.cardFooter-vibrant .cardText-secondary { - color: inherit; - opacity: .5 -} - -.actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, .5) -} - -.toast { - background: #303030; - color: #fff; - color: rgba(255, 255, 255, .87) -} - -.appfooter { - background: #033664; - color: #ccc; - color: rgba(255, 255, 255, .78) -} - -@supports (backdrop-filter:blur(10px)) { - .appfooter-blurred { - background: rgba(1, 2, 50, .7); - backdrop-filter: blur(20px) - } -} - -.itemSelectionPanel { - border: 1px solid #00a4dc -} - -.selectionCommandsPanel { - background: #00a4dc; - color: #fff -} - -.upNextDialog-countdownText { - color: #00a4dc -} - -.alphaPickerButton { - color: #999; - color: rgba(255, 255, 255, .5); - background-color: transparent -} - -.alphaPickerButton-selected { - color: #fff -} - -.alphaPickerButton-tv:focus { - background-color: #00a4dc; - color: #fff !important -} - -.detailTableBodyRow-shaded:nth-child(even) { - background: #1c1c1c; - background: rgba(30, 30, 30, .9) -} - -.listItem-border { - border-color: rgba(255, 255, 255, .1) !important -} - -.listItem:focus { - background: rgba(0, 0, 0, .3) -} - -.progressring-spiner { - border-color: #00a4dc -} - -.button-flat-accent, -.button-link { - color: #00a4dc -} - -.mediaInfoText { - color: #ddd; - background: rgba(170, 170, 190, .2) -} - -.mediaInfoTimerIcon, -.starIcon { - color: #CB272A -} - -.emby-input, -.emby-textarea { - color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent; - border-radius: .15em -} - -.emby-input:focus, -.emby-textarea:focus { - border-color: #00a4dc -} - -.emby-select-withcolor { - color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent -} - -.emby-select-withcolor>option { - color: inherit; - background: #222 -} - -.emby-select-withcolor:focus { - border-color: #00a4dc !important -} - -.emby-select-tv-withcolor:focus { - background-color: #00a4dc !important; - color: #fff !important -} - -.emby-checkbox:checked+span+.checkboxOutline { - border-color: #00a4dc -} - -.emby-checkbox:focus+span+.checkboxOutline { - border-color: #fff; -} - -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #00a4dc; -} - -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #00a4dc -} - -.itemProgressBarForeground-recording { - background-color: #CB272A -} - -.countIndicator, -.fullSyncIndicator, -.playedIndicator { - background: #00a4dc -} - -.fullSyncIndicator { - color: #fff -} - -.mainDrawer { - background-color: rgba(0, 0, 0, .5) -} - -.drawer-open { - background-color: #011432 -} - -.navMenuOption:hover { - background: rgba(221, 221, 221, 0.068) -} - -.navMenuOption-selected { - background: #00a4dc !important; - color: #fff -} - -.emby-button.show-focus:focus { - background: #00a4dc; - color: #fff -} - -.emby-tab-button { - color: #999; -} - -.emby-tab-button-active { - color: #00a4dc -} - -.emby-tab-button.show-focus:focus { - color: #00a4dc; -} - -.emby-tab-button:hover { - color: #00a4dc; -} - -.channelPrograms, -.guide-channelHeaderCell, -.programCell { - border-color: rgba(255, 255, 255, .05) -} - -.programCell-sports { - background: #3949AB !important -} - -.programCell-movie { - background: #5E35B1 !important -} - -.programCell-kids { - background: #039BE5 !important -} - -.programCell-news { - background: #43A047 !important -} - -.programCell-active { - background: rgba(0, 0, 0, .4) !important -} - -.guide-channelHeaderCell:focus, -.programCell:focus { - background-color: #00a4dc !important; - color: #fff !important -} - -.guide-programTextIcon { - color: #1e1e1e; - background: #555 -} - -.guide-headerTimeslots { - color: inherit -} - -.guide-date-tab-button { - color: #555; - color: rgba(255, 255, 255, .3) -} - -.guide-date-tab-button.emby-tab-button-active, -.guide-date-tab-button:focus { - color: #00a4dc -} - -.guide-date-tab-button.show-focus:focus { - background-color: #00a4dc; - color: #fff -} - -.itemBackdropFader { - background: linear-gradient(rgba(0, 0, 0, 0), #181818) -} - -.infoBanner { - color: #ddd; - background: #111; - padding: 1em; - border-radius: .25em -} - -.ratingbutton-icon-withrating { - color: #c33 -} - -.downloadbutton-icon-complete, -.downloadbutton-icon-on { - color: #4285F4 -} - -.playstatebutton-icon-played { - color: #c33 -} - -.repeatButton-active { - color: #4285F4 -} - -.card:focus .cardBox.visualCardBox, -.card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #00a4dc !important -} - -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em -} - -::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) -} - -::-webkit-scrollbar-track-piece { - background-color: #3b3b3b -} - -::-webkit-scrollbar-thumb:horizontal, -::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; - background: center no-repeat #888 -} - -.timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em -} - -.metadataSidebarIcon { - color: #00a4dc -} diff --git a/src/components/themes/emby/theme.css b/src/components/themes/emby/theme.css deleted file mode 100644 index e78077c29b..0000000000 --- a/src/components/themes/emby/theme.css +++ /dev/null @@ -1,436 +0,0 @@ -.skinHeader, -html { - color: #ddd; - color: rgba(255, 255, 255, .8) -} - -.wizardStartForm, -.ui-corner-all, -.ui-shadow { - background-color: #1f1f1f -} - -.emby-collapsible-button { - border-color: #383838; - border-color: rgba(255, 255, 255, .135) -} - -.skinHeader-withBackground { - background-color: #1f1f1f -} - -.skinHeader.semiTransparent { - backdrop-filter: none !important; - background-color: rgba(0, 0, 0, 0.4); -} - -.pageTitleWithDefaultLogo { - background-image: url(../logowhite.png) -} - -.backgroundContainer, -.dialog, -html { - background-color: #1a1a1a -} - -.backgroundContainer.withBackdrop { - background-color: rgba(0, 0, 0, .86) -} - -.paper-icon-button-light:hover:not(:disabled) { - color: #52b54b; - background-color: rgba(82, 181, 75, .2); -} - -.paper-icon-button-light.show-focus:focus { - color: #52b54b; -} - -.fab, -.raised { - background: #303030; - color: rgba(255, 255, 255, .87) -} - -.fab:focus, -.raised:focus { - background: #383838 -} - -.button-submit { - background: #52b54b; - color: #fff -} - -.button-submit:focus { - background: #5EC157; - color: #fff -} - -.button-delete { - background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) -} - -.checkboxLabel { - color: inherit -} - -.checkboxListLabel, -.inputLabel, -.inputLabelUnfocused, -.paperListLabel, -.textareaLabelUnfocused { - color: #bbb; - color: rgba(255, 255, 255, .7) -} - -.inputLabelFocused, -.selectLabelFocused, -.textareaLabelFocused { - color: #52b54b -} - -.checkboxOutline { - border-color: currentColor -} - -.collapseContent, -.formDialogFooter:not(.formDialogFooter-clear), -.formDialogHeader:not(.formDialogHeader-clear), -.paperList, -.visualCardBox { - background-color: #242424 -} - -.defaultCardBackground1 { - background-color: #d2b019 -} - -.defaultCardBackground2 { - background-color: #338abb -} - -.defaultCardBackground3 { - background-color: #6b689d -} - -.defaultCardBackground4 { - background-color: #dd452b -} - -.defaultCardBackground5 { - background-color: #5ccea9 -} - -.cardText-secondary, -.fieldDescription, -.guide-programNameCaret, -.listItem .secondary, -.nowPlayingBarSecondaryText, -.programSecondaryTitle, -.secondaryText { - color: #999; - color: rgba(255, 255, 255, .5) -} - -.actionsheetDivider { - background: #444; - background: rgba(255, 255, 255, .14) -} - -.cardFooter-vibrant .cardText-secondary { - color: inherit; - opacity: .5 -} - -.actionSheetMenuItem:hover { - background-color: #242424 -} - -.toast { - background: #303030; - color: #fff; - color: rgba(255, 255, 255, .87) -} - -.appfooter { - background: #101010; - color: #ccc; - color: rgba(255, 255, 255, .78) -} - -.itemSelectionPanel { - border: 1px solid #52b54b -} - -.selectionCommandsPanel { - background: #52b54b; - color: #fff -} - -.upNextDialog-countdownText { - color: #52b54b -} - -.alphaPickerButton { - color: #999; - color: rgba(255, 255, 255, .5); - background-color: transparent -} - -.alphaPickerButton-selected { - color: #fff -} - -.alphaPickerButton-tv:focus { - background-color: #52b54b; - color: #fff !important -} - -.detailTableBodyRow-shaded:nth-child(even) { - background: #1c1c1c; - background: rgba(30, 30, 30, .9) -} - -.listItem-border { - border-color: rgba(34, 34, 34, .9) !important -} - -.listItem:focus { - background: #333 -} - -.progressring-spiner { - border-color: #52b54b -} - -.button-flat-accent, -.button-link { - color: #52b54b -} - -.mediaInfoText { - color: #ddd; - background: rgba(170, 170, 190, .2) -} - -.mediaInfoTimerIcon, -.starIcon { - color: #CB272A -} - -.emby-input, -.emby-textarea { - color: inherit; - background: #292929; - border: .07em solid #292929; - border-radius: .15em -} - -.emby-input:focus, -.emby-textarea:focus { - border-color: #52b54b -} - -.emby-select-withcolor { - color: inherit; - background: #292929; - border: .07em solid #292929 -} - -.emby-select-withcolor>option { - color: inherit; - background: #222 -} - -.emby-select-withcolor:focus { - border-color: #52b54b !important -} - -.emby-select-tv-withcolor:focus { - background-color: #52b54b !important; - color: #fff !important -} - -.emby-checkbox:checked+span+.checkboxOutline { - border-color: #52b54b -} - -.emby-checkbox:focus+span+.checkboxOutline { - border-color: #fff; -} - -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #52b54b; -} - -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #52b54b -} - -.itemProgressBarForeground-recording { - background-color: #CB272A -} - -.countIndicator, -.fullSyncIndicator, -.playedIndicator { - background: #52b54b -} - -.fullSyncIndicator { - color: #fff -} - -.mainDrawer { - background-color: #1c1c1c -} - -.navMenuOption:hover { - background: #252528 -} - -.navMenuOption-selected { - background: #52b54b !important; - color: #fff -} - -.emby-button.show-focus:focus { - background: #52b54b; - color: #fff -} - -.emby-tab-button { - color: #999; -} - -.emby-tab-button-active { - color: #52b54b; -} - -.emby-tab-button.show-focus:focus { - color: #52b54b; -} - -.emby-tab-button:hover { - color: #52b54b; -} - -.channelPrograms, -.guide-channelHeaderCell, -.programCell { - border-color: rgba(255, 255, 255, .05) -} - -.programCell-sports { - background: #3949AB !important -} - -.programCell-movie { - background: #5E35B1 !important -} - -.programCell-kids { - background: #039BE5 !important -} - -.programCell-news { - background: #43A047 !important -} - -.programCell-active { - background: #1e1e1e !important -} - -.guide-channelHeaderCell:focus, -.programCell:focus { - background-color: #52b54b !important; - color: #fff !important -} - -.guide-programTextIcon { - color: #1e1e1e; - background: #555 -} - -.guide-headerTimeslots { - color: inherit -} - -.guide-date-tab-button { - color: #555; - color: rgba(255, 255, 255, .3) -} - -.guide-date-tab-button.emby-tab-button-active, -.guide-date-tab-button:focus { - color: #52b54b -} - -.guide-date-tab-button.show-focus:focus { - background-color: #52b54b; - color: #fff -} - -.itemBackdropFader { - background: linear-gradient(rgba(0, 0, 0, 0), #1a1a1a) -} - -.infoBanner { - color: #ddd; - background: #111; - padding: 1em; - border-radius: .25em -} - -.ratingbutton-icon-withrating { - color: #c33 -} - -.downloadbutton-icon-complete, -.downloadbutton-icon-on { - color: #4285F4 -} - -.playstatebutton-icon-played { - color: #c33 -} - -.repeatButton-active { - color: #4285F4 -} - -.card:focus .cardBox.visualCardBox, -.card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #52b54b !important -} - -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em -} - -::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) -} - -::-webkit-scrollbar-track-piece { - background-color: #3b3b3b -} - -::-webkit-scrollbar-thumb:horizontal, -::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; - background: center no-repeat #888 -} - -.timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em -} - -.metadataSidebarIcon { - color: #00a4dc -} diff --git a/src/components/themes/logowhite.png b/src/components/themes/logowhite.png deleted file mode 100644 index 560d910d74..0000000000 Binary files a/src/components/themes/logowhite.png and /dev/null differ diff --git a/src/components/themes/purple-haze/theme.css b/src/components/themes/purple-haze/theme.css deleted file mode 100644 index fe348217d8..0000000000 --- a/src/components/themes/purple-haze/theme.css +++ /dev/null @@ -1,564 +0,0 @@ -.skinHeader, -html { - color: #f8f8fe; - color: rgba(248, 248, 254, 0.973) -} - -.wizardStartForm, -.ui-corner-all, -.ui-shadow { - background-color: #303030 -} - -.emby-collapsible-button { - border-color: #383838; - border-color: rgba(255, 255, 255, .135) -} - -.skinHeader-withBackground { - background: #000420; - background: linear-gradient(to right, #000420 0%,#06256f 18%,#2b052b 38%,#2b052b 68%,#06256f 81%,#000420 100%); -} - -.skinHeader.semiTransparent { - backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) -} - -.pageTitleWithDefaultLogo { - background-image: url(../logowhite.png) -} - -.dialog, -html { - background-color: #230c33 -} - -.backgroundContainer { - background: url(bg.jpg) center top no-repeat #030322; - background-size: cover -} - -.backgroundContainer.withBackdrop { - opacity: .86 -} - -@media (orientation:portrait) { - .backgroundContainer { - background-position: 30% top - } -} - -.paper-icon-button-light:hover:not(:disabled) { - color: rgb(12, 232, 214); - background-color: rgba(0,164,220, .2); -} - -.paper-icon-button-light.show-focus:focus { - color: #ff77f1; -} - -progress { - border-radius: .4em; -} - -progress::-webkit-progress-bar { - border-radius: .4em; -} - -progress::-moz-progress-bar { - border-radius: .4em; -} - -progress::-webkit-progress-value { - border-radius: .4em; -} - -.fab, -.raised { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87); -} - -.fab:focus, -.raised:focus { - background: #ff77f1 -} - -div[data-role=controlgroup] a.ui-btn-active { - background: #55828b !important; - color: #e1e5f2 !important -} - -a[data-role=button] { - background: rgba(2, 43, 58, 0.521) !important; -} - -#btnDeleteImage, -.submit, -.btnBrowse, -.mini, -.btnRefresh, -.btnManual, -.button-submit, -.viewTabButton, -.button-alt, -.btnOption { - background: rgb(72, 195, 200); - color: rgb(225, 229, 242) -} - -#btnResetPassword:hover, -#btnRestart:hover, -#btnDeleteImage:hover, -#btnShutdown:hover, -.button-cancel:hover, -.fab:hover, -.raised:hover, -.alphaPickerButton:hover, -.submit:hover, -.btnBrowse:hover, -.mini:hover, -.btnRefresh:hover, -.button-submit:hover, -.viewTabButton:hover, -.button-alt:hover, -.btnOption:hover, -.btnManual:hover, -.block:hover { - background: rgb(12, 232, 214); - color: rgba(255, 255, 255, .87) -} - -.button-submit:focus { - background: #ff77f1 -} - -.button-delete { - background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) -} - -#btnResetPassword, -.btnForgotPassword, -.btnCancel, -.button-cancel { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87); -} - -.itemName { - color: #f1f7ee -} - -.textareaLabel, -.sectionTitle, -.fieldDescription, -.checkboxLabel { - color: #f1f7ee -} - -.checkboxLabel { - color: inherit -} - -.selectLabel, -.checkboxLabel, -.checkboxListLabel, -.inputLabel, -.inputLabelUnfocused, -.paperListLabel, -.textareaLabelUnfocused { - color: rgb(191, 219, 247); -} - -.inputLabelFocused, -.selectLabelFocused, -.textareaLabelFocused { - color: #ff77f1 -} - -.checkboxOutline { - border-color: currentColor -} - -.cardContent { - border-radius: 1.000em -} - -.collapseContent, -.formDialogFooter:not(.formDialogFooter-clear), -.formDialogHeader:not(.formDialogHeader-clear), -.paperList, -.visualCardBox { - background-color: rgba(0, 0, 0, .5); - border-radius: 1.000em -} - -.cardOverlayContainer { - border-radius: 0.8em; -} -.visualCardBox .cardOverlayContainer { - border-bottom-right-radius: 0em; - border-bottom-left-radius: 0em; -} - -.defaultCardBackground1 { - background-color: #d2b019 -} - -.defaultCardBackground2 { - background-color: #338abb -} - -.defaultCardBackground3 { - background-color: #6b689d -} - -.defaultCardBackground4 { - background-color: #dd452b -} - -.defaultCardBackground5 { - background-color: #5ccea9 -} - -.cardText-secondary, -.fieldDescription, -.guide-programNameCaret, -.listItem .secondary, -.nowPlayingBarSecondaryText, -.programSecondaryTitle, -.secondaryText { - color: #999; - color: rgba(255, 255, 255, .5) -} - -.actionsheetDivider { - background: #444; - background: rgba(255, 255, 255, .14) -} - -.cardFooter-vibrant .cardText-secondary { - color: inherit; - opacity: .5 -} - -.actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, .5) -} - -.toast { - background: #303030; - color: #f8f8fe; - color: rgba(255, 255, 255, .87) -} - -.appfooter { - background: #06256f; - color: #ccc; - color: rgba(255, 255, 255, .78) -} - -@supports (backdrop-filter:blur(10px)) { - .appfooter-blurred { - background: rgba(6, 37, 111, .7); - backdrop-filter: blur(20px) - } -} - -.itemSelectionPanel { - border: 1px solid #48C3C8 -} - -.selectionCommandsPanel { - background: #48C3C8; - color: #f8f8fe -} - -.upNextDialog-countdownText { - color: #48C3C8 -} - -.alphaPickerButton { - color: #999; - color: rgba(255, 255, 255, .5); - background-color: transparent -} - -.alphaPickerButton-selected { - color: #0ce8d6 -} - -.alphaPickerButton-tv:focus { - background: #ff77f1; - color: #f8f8fe !important -} - -.detailTableBodyRow-shaded:nth-child(even) { - background: #1c1c1c; - background: rgba(30, 30, 30, .9) -} - -.listItem-border { - border-color: rgba(255, 255, 255, .1) !important -} - -.listItem:focus { - background: rgba(0, 0, 0, .3) -} - -.progressring-spiner { - border-color: #48C3C8 -} - -.button-flat-accent, -.button-link { - color: #48C3C8 -} - -.mediaInfoText { - color: #f8f8fe; - background: rgba(170, 170, 190, .2) -} - -.mediaInfoTimerIcon, -.starIcon { - color: #f2b01e -} - -.emby-input, -.emby-textarea { - color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent; - border-radius: .15em -} - -.emby-input:focus, -.emby-textarea:focus { - border-color: #ff77f1 -} - -.emby-select-withcolor { - color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent -} - -.emby-select-withcolor>option { - color: inherit; - background: #030322d7 -} - -.emby-select-withcolor:focus { - border-color: #ff77f1 !important -} - -.emby-select-tv-withcolor:focus { - background-color: #ff77f1 !important; - color: #fff !important -} - -.emby-checkbox:checked+span+.checkboxOutline { - background-color: #030322; - border:2px solid rgb(72, 195, 200); -} - -.emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked { - color: rgb(12, 232, 214); -} - -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border:2px solid #ff77f1; -} - -.emby-checkbox:focus+span+.checkboxOutline { - border-color: #ff77f1; -} - -.itemProgressBarForeground { - background-color: rgb(12, 232, 214); -} - -.itemProgressBarForeground-recording { - background-color: #CB272A -} - -.countIndicator, -.fullSyncIndicator, -.playedIndicator { - background: rgb(12, 232, 214); -} - -.fullSyncIndicator { - color: #fff -} - -.mainDrawer { - color: #f8f8fe; - background: rgba(0, 0, 0, .5) -} - -.drawer-open { - background-color: #030322 -} - -.navMenuOption:hover { - background: rgba(221, 221, 221, 0.068) -} - -.navMenuOption-selected { - background: #6f0765 !important; - color: #f8f8fe -} - -.emby-button.show-focus:focus { - background: #8ae9c1; - color: #f8f8fe -} - -.emby-tab-button { - color: #999; -} - -.emby-tab-button-active { - color: #f8f8fe; -} - -.emby-tab-button.show-focus:focus { - color: #ff77f1; -} - -.emby-tab-button:hover { - color: #ff77f1; -} - -.channelPrograms, -.guide-channelHeaderCell, -.programCell { - border-color: rgba(255, 255, 255, .05) -} - -.programCell-sports { - background: #3949AB !important -} - -.programCell-movie { - background: #5E35B1 !important -} - -.programCell-kids { - background: #039BE5 !important -} - -.programCell-news { - background: #43A047 !important -} - -.programCell-active { - background: rgba(0, 0, 0, .4) !important -} - -.guide-channelHeaderCell:focus, -.programCell:focus { - background-color: #48C3C8 !important; - color: #fff !important -} - -.guide-programTextIcon { - color: #1e1e1e; - background: #555 -} - -.guide-headerTimeslots { - color: inherit -} - -.guide-date-tab-button { - color: #555; - color: rgba(255, 255, 255, .3) -} - -.guide-date-tab-button.emby-tab-button-active, -.guide-date-tab-button:focus { - color: #ff77f1 -} - -.guide-date-tab-button.show-focus:focus { - background-color: #48C3C8; - color: #fff -} - -.itemBackdropFader { - background: linear-gradient(rgba(0, 0, 0, 0), #181818) -} - -.infoBanner { - color: #0e0f2d; - background: #dbe6ff; - padding: 1em; - border-radius: .25em -} - -.ratingbutton-icon-withrating { - color: #c33 -} - -.downloadbutton-icon-complete, -.downloadbutton-icon-on { - color: #4285F4 -} - -.playstatebutton-icon-played { - color: #c33 -} - -.repeatButton-active { - color: #4285F4 -} - -.card:focus .cardBox.visualCardBox, -.card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #ff77f1 !important -} - -.layout-desktop, -.scrollY { - scrollbar-width: thin; - scrollbar-color: #888 rgba(59, 59, 59, 0.5) -} - -.layout-desktop ::-webkit-scrollbar { - width: .4em; - height: 1em -} - -::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) -} - -::-webkit-scrollbar-track-piece { - background-color: rgba(59, 59, 59, 0.5) -} - -::-webkit-scrollbar-thumb:horizontal, -::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; - background: center no-repeat #888 -} - -.timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em -} - -.mediaInfoOfficialRating { - border: .09em solid #583fa0; - background-color: #dbe6ff; - color: #0e0f2d; -} - -.metadataSidebarIcon { - color: #dbe6ff -} diff --git a/src/components/themes/wmc/theme.css b/src/components/themes/wmc/theme.css deleted file mode 100644 index cabb21ba97..0000000000 --- a/src/components/themes/wmc/theme.css +++ /dev/null @@ -1,434 +0,0 @@ -html { - color: #eee; - color: rgba(255, 255, 255, .9); - background-color: #0F3562 -} - -.wizardStartForm, -.ui-corner-all, -.ui-shadow { - background-color: #0C2450 -} - -.emby-collapsible-button { - border-color: #383838; - border-color: rgba(255, 255, 255, .135) -} - -.skinHeader { - color: #ccc; - color: rgba(255, 255, 255, .78) -} - -.formDialogHeader:not(.formDialogHeader-clear), -.skinHeader-withBackground { - background-color: #0C2450; - background: linear-gradient(to bottom, #0C2450, #081B3B) -} - -.skinHeader.semiTransparent { - backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) -} - -.pageTitleWithDefaultLogo { - background-image: url(../logowhite.png) -} - -.backgroundContainer, -.dialog { - background-color: #0F3562; - background: linear-gradient(to bottom, #0F3562, #1162A4, #03215F) -} - -.backgroundContainer.withBackdrop { - background: rgba(17, 98, 164, .9) -} - -.paper-icon-button-light:hover:not(:disabled) { - color: #00a4dc; - background-color: rgba(0,164,220, .2); -} - -.paper-icon-button-light.show-focus:focus { - color: #00a4dc; -} - -.fab, -.raised { - background: #082845; - color: #fff -} - -.fab:focus, -.raised:focus { - background: #143451 -} - -.button-submit { - background: #00a4dc; - color: #fff -} - -.button-submit:focus { - background: #0cb0e8; - color: #fff -} - -.button-delete { - background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) -} - -.checkboxLabel { - color: inherit -} - -.checkboxListLabel, -.inputLabel, -.inputLabelUnfocused, -.paperListLabel, -.textareaLabelUnfocused { - color: #bbb; - color: rgba(255, 255, 255, .7) -} - -.inputLabelFocused, -.selectLabelFocused, -.textareaLabelFocused { - color: #00a4dc -} - -.checkboxOutline { - border-color: currentColor -} - -.collapseContent, -.paperList, -.visualCardBox { - background-color: #0F3562 -} - -.defaultCardBackground1 { - background-color: #d2b019 -} - -.defaultCardBackground2 { - background-color: #338abb -} - -.defaultCardBackground3 { - background-color: #6b689d -} - -.defaultCardBackground4 { - background-color: #dd452b -} - -.defaultCardBackground5 { - background-color: #5ccea9 -} - -.cardText-secondary, -.fieldDescription, -.guide-programNameCaret, -.listItem .secondary, -.nowPlayingBarSecondaryText, -.programSecondaryTitle, -.secondaryText { - color: #999; - color: rgba(255, 255, 255, .5) -} - -.actionsheetDivider { - background: #ddd; - background: rgba(255, 255, 255, .14) -} - -.cardFooter-vibrant .cardText-secondary { - color: inherit; - opacity: .5 -} - -.toast { - background: #081B3B; - color: #fff; - color: rgba(255, 255, 255, .87) -} - -.appfooter, -.formDialogFooter:not(.formDialogFooter-clear) { - background: #0C2450; - background: linear-gradient(to top, #0C2450, #081B3B); - color: rgba(255, 255, 255, .78) -} - -.itemSelectionPanel { - border: 1px solid #00a4dc -} - -.selectionCommandsPanel { - background: #00a4dc; - color: #fff -} - -.upNextDialog-countdownText { - color: #00a4dc -} - -.alphaPickerButton { - color: #999; - color: rgba(255, 255, 255, .5); - background-color: transparent -} - -.alphaPickerButton-selected, -.alphaPickerButton-tv:focus { - background-color: #00a4dc; - color: #fff !important -} - -.detailTableBodyRow-shaded:nth-child(even) { - background: #1c1c1c; - background: rgba(0, 0, 0, .3) -} - -.listItem-border { - border-color: rgba(0, 0, 0, .3) !important -} - -.listItem:focus { - background: #333 -} - -.progressring-spiner { - border-color: #00a4dc -} - -.button-flat-accent, -.button-link { - color: #00a4dc -} - -.mediaInfoText { - color: #ddd; - background: rgba(170, 170, 190, .2) -} - -.mediaInfoTimerIcon, -.starIcon { - color: #CB272A -} - -.emby-input, -.emby-textarea { - color: inherit; - background: rgba(255, 255, 255, .2); - border: .07em solid rgba(255, 255, 255, .135); - border-radius: .15em -} - -.emby-input:focus, -.emby-textarea:focus { - border-color: #00a4dc -} - -.emby-select-withcolor { - color: inherit; - background: rgba(255, 255, 255, .2); - border: .07em solid rgba(255, 255, 255, .135) -} - -.emby-checkbox:checked+span+.checkboxOutline, -.emby-select-withcolor:focus { - border-color: #00a4dc -} - -.emby-checkbox:focus+span+.checkboxOutline { - border-color: #fff; -} - -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #00a4dc; -} - -.emby-select-withcolor>option { - color: #000; - background: #fff -} - -.emby-select-tv-withcolor:focus { - background-color: #00a4dc; - color: #fff -} - -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #00a4dc -} - -.itemProgressBarForeground-recording { - background-color: #CB272A -} - -.countIndicator, -.fullSyncIndicator, -.playedIndicator { - background: #00a4dc -} - -.fullSyncIndicator { - color: #fff -} - -.mainDrawer { - background-color: #0F3562; - color: #ccc; - color: rgba(255, 255, 255, .7) -} - -.actionSheetMenuItem:hover, -.navMenuOption:hover { - background: #252528; - background: rgba(0, 0, 0, .2) -} - -.navMenuOption-selected { - background: #00a4dc !important; - color: #fff -} - -.emby-button.show-focus:focus { - background: #00a4dc; - color: #fff -} - -.emby-tab-button { - color: #999; -} - -.emby-tab-button-active { - color: #fff -} - -.emby-tab-button.show-focus:focus { - color: #fff; -} - -.emby-tab-button:hover { - color: #fff; -} - -.channelPrograms, -.guide-channelHeaderCell, -.programCell { - border-color: #999; - border-color: rgba(255, 255, 255, .1) -} - -.programCell-sports { - background: #3949AB !important -} - -.programCell-movie { - background: #5E35B1 !important -} - -.programCell-kids { - background: #039BE5 !important -} - -.programCell-news { - background: #43A047 !important -} - -.programCell-active { - background: rgba(0, 0, 0, .3) !important -} - -.guide-channelHeaderCell:focus, -.programCell:focus { - background-color: #00a4dc !important; - color: #fff !important -} - -.guide-programTextIcon { - color: #1e1e1e; - background: #555 -} - -.guide-headerTimeslots { - color: inherit -} - -.guide-date-tab-button { - color: #555; - color: rgba(255, 255, 255, .3) -} - -.guide-date-tab-button.emby-tab-button-active, -.guide-date-tab-button:focus { - color: #00a4dc -} - -.guide-date-tab-button.show-focus:focus { - background-color: #00a4dc; - color: #fff -} - -.itemBackdropFader { - background: linear-gradient(rgba(0, 0, 0, 0), #115E9E) -} - -.infoBanner { - color: #000; - background: #fff3a5; - padding: 1em; - border-radius: .25em -} - -.ratingbutton-icon-withrating { - color: #c33 -} - -.downloadbutton-icon-complete, -.downloadbutton-icon-on { - color: #4285F4 -} - -.playstatebutton-icon-played { - color: #c33 -} - -.repeatButton-active { - color: #4285F4 -} - -.card:focus .cardBox.visualCardBox, -.card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #fff !important -} - -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em -} - -::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) -} - -::-webkit-scrollbar-track-piece { - background-color: #081B3B -} - -::-webkit-scrollbar-thumb:horizontal, -::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; - background: center no-repeat rgba(255, 255, 255, .7) -} - -.metadataSidebarIcon { - color: #00a4dc -} diff --git a/src/components/toast/toast.css b/src/components/toast/toast.css index 09d89abca5..28d6cb52fc 100644 --- a/src/components/toast/toast.css +++ b/src/components/toast/toast.css @@ -3,9 +3,9 @@ min-width: 20em; box-sizing: border-box; box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); - border-radius: .15em; + border-radius: 0.15em; cursor: default; - transition: transform .3s ease-out; + transition: transform 0.3s ease-out; min-height: initial; padding: 1em 1.5em; bottom: 1em; diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index d8ac404764..22eb53396c 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -39,4 +39,4 @@ define(['css!./toast'], function () { }, 300); }; -}); \ No newline at end of file +}); diff --git a/src/components/touchhelper.js b/src/components/touchhelper.js index 0f6d34aace..97455fc969 100644 --- a/src/components/touchhelper.js +++ b/src/components/touchhelper.js @@ -168,4 +168,4 @@ define(['dom', 'events'], function (dom, events) { }; return TouchHelper; -}); \ No newline at end of file +}); diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index 3882f2e85a..4dd5ecd3de 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -1,4 +1,4 @@ -define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser) { +define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "focusManager", "scrollHelper", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { "use strict"; var enableFocusTransform = !browser.slow && !browser.edge; @@ -41,7 +41,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" html += '
'; html += '
'; html += '
'; - html += '
dvr
'; + html += '
dvr
'; html += "
"; html += "
"; html += '
'; @@ -128,7 +128,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" dlg.classList.add("formDialog"); var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += globalize.translate("HeaderLiveTvTunerSetup"); html += "

"; @@ -152,14 +152,14 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" }); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, true); + scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); } var apiClient = connectionManager.getApiClient(options.serverId); discoverDevices(dlg, apiClient); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, false); + scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"), false); } return dialogHelper.open(dlg).then(function () { diff --git a/src/components/tvproviders/schedulesdirect.template.html b/src/components/tvproviders/schedulesdirect.template.html index da593ef569..3cfba06fe1 100644 --- a/src/components/tvproviders/schedulesdirect.template.html +++ b/src/components/tvproviders/schedulesdirect.template.html @@ -70,4 +70,4 @@
-
\ No newline at end of file +
diff --git a/src/components/tvproviders/xmltv.template.html b/src/components/tvproviders/xmltv.template.html index 288c1ebe85..7f6490e621 100644 --- a/src/components/tvproviders/xmltv.template.html +++ b/src/components/tvproviders/xmltv.template.html @@ -12,7 +12,7 @@
- +
${XmlTvPathHelp}
diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 784c79cbb7..15f91b29d9 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -11,6 +11,7 @@ background-color: rgba(0, 0, 0, 0.7); color: #fff; user-select: none; + -webkit-touch-callout: none; } .upNextDialog-hidden { @@ -27,7 +28,7 @@ position: relative; margin-right: 1em; flex-shrink: 0; - margin-bottom: .5em; + margin-bottom: 0.5em; } .upNextDialog-button { @@ -36,7 +37,6 @@ } @media all and (orientation: landscape) { - .upNextDialog { flex-direction: row; } @@ -66,4 +66,8 @@ border: 0; user-drag: none; user-select: none; + -moz-user-select: none; + -webkit-user-drag: none; + -webkit-user-select: none; + -ms-user-select: none; } diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 80e7d807bd..225859e0b3 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -131,7 +131,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l var secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0); - console.log('up next seconds remaining: ' + secondsRemaining); + console.debug('up next seconds remaining: ' + secondsRemaining); var timeText = '' + globalize.translate('HeaderSecondsValue', secondsRemaining) + ''; @@ -332,4 +332,4 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l }; return UpNextDialog; -}); \ No newline at end of file +}); diff --git a/src/components/userdatabuttons/emby-playstatebutton.js b/src/components/userdatabuttons/emby-playstatebutton.js index eaed128933..4c3e5b6b62 100644 --- a/src/components/userdatabuttons/emby-playstatebutton.js +++ b/src/components/userdatabuttons/emby-playstatebutton.js @@ -156,4 +156,4 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby prototype: EmbyPlaystateButtonPrototype, extends: 'button' }); -}); \ No newline at end of file +}); diff --git a/src/components/userdatabuttons/userdatabuttons.css b/src/components/userdatabuttons/userdatabuttons.css index 0138631734..f93f47ffcc 100644 --- a/src/components/userdatabuttons/userdatabuttons.css +++ b/src/components/userdatabuttons/userdatabuttons.css @@ -1,3 +1,3 @@ .btnUserDataOn { - color: #cc3333 !important; -} \ No newline at end of file + color: #c33 !important; +} diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index 1c00e50caf..2636be1e1d 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -28,7 +28,7 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto iconCssClass = ''; } - iconCssClass += 'md-icon'; + iconCssClass += 'material-icons'; return ''; } diff --git a/src/components/usersettings/usersettings.js b/src/components/usersettings/usersettings.js deleted file mode 100644 index 6b3dc90d49..0000000000 --- a/src/components/usersettings/usersettings.js +++ /dev/null @@ -1,5 +0,0 @@ -define(['userSettingsBuilder'], function (userSettingsBuilder) { - 'use strict'; - - return new userSettingsBuilder(); -}); \ No newline at end of file diff --git a/src/components/viewManager/viewContainer.css b/src/components/viewManager/viewContainer.css index edfa101976..61d9345014 100644 --- a/src/components/viewManager/viewContainer.css +++ b/src/components/viewManager/viewContainer.css @@ -5,8 +5,10 @@ right: 0; bottom: 0; contain: layout style size; - /* Can't use will-change because it causes the alpha picker to move when the page scrolls*/ - /*will-change: transform;*/ + + /* Can't use will-change because it causes the alpha picker to move when the page scrolls */ + + /* will-change: transform; */ } @keyframes view-fadeout { @@ -18,6 +20,7 @@ opacity: 0; } } + @keyframes view-fadein { from { opacity: 0; @@ -66,4 +69,4 @@ to { transform: translate3d(100%, 0, 0); } -} \ No newline at end of file +} diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index e3c75c6293..d40c4d9618 100644 --- a/src/components/viewsettings/viewsettings.js +++ b/src/components/viewsettings/viewsettings.js @@ -77,7 +77,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Settings}

'; html += '
'; diff --git a/src/components/viewsettings/viewsettings.template.html b/src/components/viewsettings/viewsettings.template.html index 07cbc35e9f..8aea2fac26 100644 --- a/src/components/viewsettings/viewsettings.template.html +++ b/src/components/viewsettings/viewsettings.template.html @@ -38,4 +38,4 @@
-
\ No newline at end of file +
diff --git a/src/components/visibleinviewport.js b/src/components/visibleinviewport.js index 3768740175..a48dbd3a1d 100644 --- a/src/components/visibleinviewport.js +++ b/src/components/visibleinviewport.js @@ -38,4 +38,4 @@ define(['dom'], function (dom) { } return visibleInViewport; -}); \ No newline at end of file +}); diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index a2478cd3f4..fd9c05292e 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -1,5 +1,6 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (require, events, browser, appRouter, loading) { "use strict"; + /* globals YT */ function zoomIn(elem, iterations) { var keyframes = [ @@ -405,4 +406,4 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi }; return YoutubePlayer; -}); \ No newline at end of file +}); diff --git a/src/components/youtubeplayer/style.css b/src/components/youtubeplayer/style.css index 8c59a541cf..1328e6f3d5 100644 --- a/src/components/youtubeplayer/style.css +++ b/src/components/youtubeplayer/style.css @@ -9,13 +9,13 @@ align-items: center; } - .youtubePlayerContainer.onTop { - z-index: 1000; - } +.youtubePlayerContainer.onTop { + z-index: 1000; +} - .youtubePlayerContainer video { - margin: 0 !important; - padding: 0 !important; - width: 100%; - height: 100%; - } \ No newline at end of file +.youtubePlayerContainer video { + margin: 0 !important; + padding: 0 !important; + width: 100%; + height: 100%; +} diff --git a/src/controllers/addserver.js b/src/controllers/auth/addserver.js similarity index 100% rename from src/controllers/addserver.js rename to src/controllers/auth/addserver.js diff --git a/src/controllers/forgotpassword.js b/src/controllers/auth/forgotpassword.js similarity index 100% rename from src/controllers/forgotpassword.js rename to src/controllers/auth/forgotpassword.js diff --git a/src/controllers/forgotpasswordpin.js b/src/controllers/auth/forgotpasswordpin.js similarity index 100% rename from src/controllers/forgotpasswordpin.js rename to src/controllers/auth/forgotpasswordpin.js diff --git a/src/controllers/loginpage.js b/src/controllers/auth/login.js similarity index 83% rename from src/controllers/loginpage.js rename to src/controllers/auth/login.js index 8dd041a9f1..4296b8bfb3 100644 --- a/src/controllers/loginpage.js +++ b/src/controllers/auth/login.js @@ -1,23 +1,31 @@ -define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function(appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) { +define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) { "use strict"; var enableFocusTransform = !browser.slow && !browser.edge; function authenticateUserByName(page, apiClient, username, password) { loading.show(); - apiClient.authenticateUserByName(username, password).then(function(result) { + apiClient.authenticateUserByName(username, password).then(function (result) { var user = result.User; var serverId = getParameterByName("serverid"); - var newUrl = user.Policy.IsAdministrator && !serverId ? "dashboard.html" : "home.html"; + var newUrl; + + if (user.Policy.IsAdministrator && !serverId) { + newUrl = "dashboard.html"; + } else { + newUrl = "home.html"; + } + loading.hide(); Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); Dashboard.navigate(newUrl); - }, function(response) { + }, function (response) { page.querySelector("#txtManualName").value = ""; page.querySelector("#txtManualPassword").value = ""; loading.hide(); + if (response.status === 401) { - require(["toast"], function(toast) { + require(["toast"], function (toast) { toast(Globalize.translate("MessageInvalidUser")); }); } else { @@ -34,8 +42,18 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout context.querySelector(".manualLoginForm").classList.remove("hide"); context.querySelector(".visualLoginForm").classList.add("hide"); context.querySelector(".btnManual").classList.add("hide"); - focusPassword ? context.querySelector("#txtManualPassword").focus() : context.querySelector("#txtManualName").focus(); - showCancel ? context.querySelector(".btnCancel").classList.remove("hide") : context.querySelector(".btnCancel").classList.add("hide"); + + if (focusPassword) { + context.querySelector("#txtManualPassword").focus(); + } else { + context.querySelector("#txtManualName").focus(); + } + + if (showCancel) { + context.querySelector(".btnCancel").classList.remove("hide"); + } else { + context.querySelector(".btnCancel").classList.add("hide"); + } } var metroColors = ["#6FBD45", "#4BB3DD", "#4164A5", "#E12026", "#800080", "#E1B222", "#008040", "#0094FF", "#FF00C7", "#FF870F", "#7F0037"]; @@ -49,22 +67,25 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout if (str) { var character = String(str.substr(0, 1).charCodeAt()); var sum = 0; + for (var i = 0; i < character.length; i++) { sum += parseInt(character.charAt(i)); } + var index = String(sum).substr(-1); return metroColors[index]; } + return getRandomMetroColor(); } function loadUserList(context, apiClient, users) { var html = ""; + for (var i = 0; i < users.length; i++) { var user = users[i]; // TODO move card creation code to Card component - var cssClass = "card squareCard scalableCard squareCard-scalable"; if (layoutManager.tv) { @@ -76,13 +97,13 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } var cardBoxCssClass = "cardBox cardBox-bottompadded"; - html += '"; } + context.querySelector("#divUsers").innerHTML = html; } - return function(view, params) { + return function (view, params) { function getApiClient() { var serverId = params.serverid; - return serverId ? connectionManager.getOrCreateApiClient(serverId) : ApiClient; + + if (serverId) { + return connectionManager.getOrCreateApiClient(serverId); + } + + return ApiClient; } function showVisualForm() { @@ -122,14 +150,16 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout }); } - view.querySelector("#divUsers").addEventListener("click", function(e) { + view.querySelector("#divUsers").addEventListener("click", function (e) { var card = dom.parentWithClass(e.target, "card"); var cardContent = card ? card.querySelector(".cardContent") : null; + if (cardContent) { var context = view; var id = cardContent.getAttribute("data-userid"); var name = cardContent.getAttribute("data-username"); var haspw = cardContent.getAttribute("data-haspw"); + if (id === 'manual') { context.querySelector("#txtManualName").value = ""; showManualForm(context, true); @@ -142,33 +172,33 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } } }); - - view.querySelector(".manualLoginForm").addEventListener("submit", function(e) { + view.querySelector(".manualLoginForm").addEventListener("submit", function (e) { appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked); var apiClient = getApiClient(); authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value); e.preventDefault(); return false; }); - - view.querySelector(".btnForgotPassword").addEventListener("click", function() { + view.querySelector(".btnForgotPassword").addEventListener("click", function () { Dashboard.navigate("forgotpassword.html"); }); - view.querySelector(".btnCancel").addEventListener("click", showVisualForm); - - view.querySelector(".btnManual").addEventListener("click", function() { + view.querySelector(".btnManual").addEventListener("click", function () { view.querySelector("#txtManualName").value = ""; showManualForm(view, true); }); - - view.addEventListener("viewshow", function(e) { + view.querySelector(".btnSelectServer").addEventListener("click", function () { + Dashboard.selectServer(); + }); + view.addEventListener("viewshow", function (e) { loading.show(); + if (!appHost.supports('multiserver')) { view.querySelector(".btnSelectServer").classList.add("hide"); } + var apiClient = getApiClient(); - apiClient.getPublicUsers().then(function(users) { + apiClient.getPublicUsers().then(function (users) { if (users.length) { showVisualForm(); loadUserList(view, apiClient, users); @@ -176,13 +206,12 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout view.querySelector("#txtManualName").value = ""; showManualForm(view, false, false); } - }).catch().then(function() { + }).catch().then(function () { loading.hide(); }); - - apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options) { + apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function (options) { view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || ""; }); }); - } + }; }); diff --git a/src/controllers/selectserver.js b/src/controllers/auth/selectserver.js similarity index 98% rename from src/controllers/selectserver.js rename to src/controllers/auth/selectserver.js index b0ee5673e0..e766dbdb5c 100644 --- a/src/controllers/selectserver.js +++ b/src/controllers/auth/selectserver.js @@ -18,7 +18,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu var cardImageContainer; if (item.showIcon) { - cardImageContainer = '' + item.icon + ""; + cardImageContainer = '' + item.icon + ""; } else { cardImageContainer = '
'; } diff --git a/src/controllers/dashboardpage.js b/src/controllers/dashboard/dashboard.js similarity index 95% rename from src/controllers/dashboardpage.js rename to src/controllers/dashboard/dashboard.js index 63c6f3226b..2057deaf6f 100644 --- a/src/controllers/dashboardpage.js +++ b/src/controllers/dashboard/dashboard.js @@ -301,23 +301,30 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += "
"; html += '
'; html += '
'; - var btnCssClass; - btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; - html += ''; + + var btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl ? "" : " hide"; + var playIcon = session.PlayState.IsPaused ? 'pause' : 'play'; + + html += ''; + html += ''; + btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? "" : " hide"; - html += ''; + html += ''; + btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; + html += ''; html += "
"; + html += '
'; html += DashboardPage.getSessionNowPlayingStreamInfo(session); html += "
"; + html += '
'; var userImage = DashboardPage.getUserImage(session); html += userImage ? '
" : '
'; html += '
'; html += DashboardPage.getUsersHtml(session); + html += "
"; html += "
"; html += "
"; @@ -361,7 +368,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += progress + "%"; html += ""; html += "" + progress + "%"; - html += ''; + html += ''; } else if (task.State === "Cancelling") { html += '' + globalize.translate("LabelStopping") + ""; } @@ -564,7 +571,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } if (session.PlayState && session.PlayState.IsPaused) { - btnSessionPlayPause.querySelector("i").innerHTML = "play_arrow"; + btnSessionPlayPause.querySelector("i").innerHTML = ""; } else { btnSessionPlayPause.querySelector("i").innerHTML = "pause"; } @@ -627,8 +634,11 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa return ""; }, getNowPlayingImageUrl: function (item) { + /* Screen width is multiplied by 0.2, as the there is currently no way to get the width of + elements that aren't created yet. */ if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Backdrop", tag: item.BackdropImageTags[0] }); @@ -636,6 +646,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.ParentBackdropItemId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Backdrop", tag: item.ParentBackdropImageTags[0] }); @@ -643,6 +654,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTag) { return ApiClient.getScaledImageUrl(item.BackdropItemId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Backdrop", tag: item.BackdropImageTag }); @@ -652,6 +664,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Thumb) { return ApiClient.getScaledImageUrl(item.Id, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb", tag: imageTags.Thumb }); @@ -659,6 +672,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentThumbImageTag) { return ApiClient.getScaledImageUrl(item.ParentThumbItemId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb", tag: item.ParentThumbImageTag }); @@ -666,6 +680,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ThumbImageTag) { return ApiClient.getScaledImageUrl(item.ThumbItemId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Thumb", tag: item.ThumbImageTag }); @@ -673,6 +688,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Primary) { return ApiClient.getScaledImageUrl(item.Id, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary", tag: imageTags.Primary }); @@ -680,6 +696,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.PrimaryImageTag) { return ApiClient.getScaledImageUrl(item.PrimaryImageItemId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary", tag: item.PrimaryImageTag }); @@ -687,6 +704,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.AlbumPrimaryImageTag) { return ApiClient.getScaledImageUrl(item.AlbumId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.20), type: "Primary", tag: item.AlbumPrimaryImageTag }); @@ -734,21 +752,15 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa }; return function (view, params) { function onRestartRequired(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onRestartRequired not implemented', evt, apiClient); } function onServerShuttingDown(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerShuttingDown not implemented', evt, apiClient); } function onServerRestarting(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerRestarting not implemented', evt, apiClient); } function onPackageInstalling(evt, apiClient) { diff --git a/src/controllers/dashboardgeneral.js b/src/controllers/dashboard/general.js similarity index 74% rename from src/controllers/dashboardgeneral.js rename to src/controllers/dashboard/general.js index c37e5e9a46..a434e46241 100644 --- a/src/controllers/dashboardgeneral.js +++ b/src/controllers/dashboard/general.js @@ -1,38 +1,29 @@ -define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function($, loading) { +define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function ($, loading) { "use strict"; function loadPage(page, config, languageOptions, systemInfo) { page.querySelector("#txtServerName").value = systemInfo.ServerName; $("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp); + if (systemInfo.CanLaunchWebBrowser) { page.querySelector("#fldAutoRunWebApp").classList.remove("hide"); } else { page.querySelector("#fldAutoRunWebApp").classList.add("hide"); } + page.querySelector("#txtCachePath").value = systemInfo.CachePath || ""; $("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || ""); $("#txtMetadataNetworkPath", page).val(systemInfo.MetadataNetworkPath || ""); - $("#selectLocalizationLanguage", page).html(languageOptions.map(function(language) { - return '" + $("#selectLocalizationLanguage", page).html(languageOptions.map(function (language) { + return '"; })).val(config.UICulture); currentLanguage = config.UICulture; - if (systemInfo.CanSelfUpdate) { - page.querySelector(".fldAutomaticUpdates").classList.remove("hide"); - } else { - page.querySelector(".fldAutomaticUpdates").classList.add("hide"); - } - $("#chkEnableAutomaticServerUpdates", page).checked(config.EnableAutoUpdate); - $("#chkEnableAutomaticRestart", page).checked(config.EnableAutomaticRestart); - if (systemInfo.CanSelfRestart) { - page.querySelector("#fldEnableAutomaticRestart").classList.remove("hide"); - } else { - page.querySelector("#fldEnableAutomaticRestart").classList.add("hide"); - } if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) { $(".autoUpdatesContainer", page).removeClass("hide"); } else { $(".autoUpdatesContainer", page).addClass("hide"); } + loading.hide(); } @@ -40,92 +31,100 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb loading.show(); var form = this; $(form).parents(".page"); - return ApiClient.getServerConfiguration().then(function(config) { + ApiClient.getServerConfiguration().then(function (config) { config.ServerName = $("#txtServerName", form).val(); config.UICulture = $("#selectLocalizationLanguage", form).val(); config.CachePath = form.querySelector("#txtCachePath").value; config.MetadataPath = $("#txtMetadataPath", form).val(); config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val(); - var requiresReload = (config.UICulture !== currentLanguage); + var requiresReload = config.UICulture !== currentLanguage; config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked(); - config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked(); - config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked(); ApiClient.updateServerConfiguration(config).then(function() { ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) { brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value; brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value; + if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) { requiresReload = true; } - ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function() { + + ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function () { Dashboard.processServerConfigurationUpdateResult(); + if (requiresReload && !AppInfo.isNativeApp) { window.location.reload(true); } }); - }) - }) - }), !1 + }); + }, function () { + require(["alert"], function (alert) { + alert(Globalize.translate("DefaultErrorMessage")); + }); + + Dashboard.processServerConfigurationUpdateResult(); + }); + }); + return false; } var currentBrandingOptions; var currentLanguage; var brandingConfigKey = "branding"; - - return function(view, params) { - $("#btnSelectCachePath", view).on("click.selectDirectory", function() { - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + return function (view, params) { + $("#btnSelectCachePath", view).on("click.selectDirectory", function () { + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ - callback: function(path) { + callback: function (path) { if (path) { view.querySelector("#txtCachePath").value = path; } + picker.close(); }, validateWriteable: true, header: Globalize.translate("HeaderSelectServerCachePath"), instruction: Globalize.translate("HeaderSelectServerCachePathHelp") - }) - }) + }); + }); }); - - $("#btnSelectMetadataPath", view).on("click.selectDirectory", function() { - require(["directorybrowser"], function(directoryBrowser) { + $("#btnSelectMetadataPath", view).on("click.selectDirectory", function () { + require(["directorybrowser"], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ path: $("#txtMetadataPath", view).val(), networkSharePath: $("#txtMetadataNetworkPath", view).val(), - callback: function(path, networkPath) { + callback: function (path, networkPath) { if (path) { $("#txtMetadataPath", view).val(path); } + if (networkPath) { $("#txtMetadataNetworkPath", view).val(networkPath); } + picker.close(); }, validateWriteable: true, header: Globalize.translate("HeaderSelectMetadataPath"), instruction: Globalize.translate("HeaderSelectMetadataPathHelp"), enableNetworkSharePath: true - }) - }) + }); + }); }); - $(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit); - view.addEventListener("viewshow", function() { + view.addEventListener("viewshow", function () { var promiseConfig = ApiClient.getServerConfiguration(); var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl("Localization/Options")); var promiseSystemInfo = ApiClient.getSystemInfo(); - Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function(responses) { + Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function (responses) { loadPage(view, responses[0], responses[1], responses[2]); }); - ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config) { + ApiClient.getNamedConfiguration(brandingConfigKey).then(function (config) { currentBrandingOptions = config; view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || ""; view.querySelector("#txtCustomCss").value = config.CustomCss || ""; }); }); - } + }; }); diff --git a/src/controllers/logpage.js b/src/controllers/dashboard/logs.js similarity index 99% rename from src/controllers/logpage.js rename to src/controllers/dashboard/logs.js index f5866f344c..144e21fc92 100644 --- a/src/controllers/logpage.js +++ b/src/controllers/dashboard/logs.js @@ -30,4 +30,4 @@ define(["datetime", "loading", "apphost", "listViewStyle", "emby-button", "flexS }); }); } -}); \ No newline at end of file +}); diff --git a/src/controllers/networking.js b/src/controllers/dashboard/networking.js similarity index 53% rename from src/controllers/networking.js rename to src/controllers/dashboard/networking.js index a6e42967a4..c0e4d76d0d 100644 --- a/src/controllers/networking.js +++ b/src/controllers/dashboard/networking.js @@ -1,53 +1,61 @@ -define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function(loading, libraryMenu, globalize) { +define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) { "use strict"; function onSubmit(e) { var form = this; var localAddress = form.querySelector("#txtLocalAddress").value; var enableUpnp = form.querySelector("#chkEnableUpnp").checked; - confirmSelections(localAddress, enableUpnp, function() { + confirmSelections(localAddress, enableUpnp, function () { var validationResult = getValidationAlert(form); - if (validationResult) return void alertText(validationResult); - validateHttps(form).then(function() { + + if (validationResult) { + alertText(validationResult); + return; + } + + validateHttps(form).then(function () { loading.show(); - ApiClient.getServerConfiguration().then(function(config) { - config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function(s) { - return s.trim() - }).filter(function(s) { - return s.length > 0 + ApiClient.getServerConfiguration().then(function (config) { + config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function (s) { + return s.trim(); + }).filter(function (s) { + return s.length > 0; }); - - config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function(s) { - return s.trim() - }).filter(function(s) { - return s.length > 0 + config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function (s) { + return s.trim(); + }).filter(function (s) { + return s.length > 0; }); - config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value; config.PublicPort = form.querySelector("#txtPublicPort").value; config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value; var httpsMode = form.querySelector("#selectHttpsMode").value; + switch (httpsMode) { case "proxy": config.EnableHttps = true; config.RequireHttps = false; config.IsBehindProxy = true; break; + case "required": config.EnableHttps = true; config.RequireHttps = true; config.IsBehindProxy = false; break; + case "enabled": config.EnableHttps = true; config.RequireHttps = false; config.IsBehindProxy = false; break; + default: config.EnableHttps = false; config.RequireHttps = false; config.IsBehindProxy = false; } + config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value; config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value; config.EnableUPnP = enableUpnp; @@ -57,47 +65,67 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], config.CertificatePassword = form.querySelector("#txtCertPassword").value || null; config.LocalNetworkAddresses = localAddress ? [localAddress] : []; ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse); - }) - }) - }), e.preventDefault() + }); + }); + }); + e.preventDefault(); } function triggerChange(select) { var evt = document.createEvent("HTMLEvents"); - evt.initEvent("change", !1, !0), select.dispatchEvent(evt) + evt.initEvent("change", false, true); + select.dispatchEvent(evt); } function getValidationAlert(form) { - return form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value ? "The public http and https ports must be different." : form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value ? "The http and https ports must be different." : null + if (form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value) { + return "The public http and https ports must be different."; + } + + if (form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value) { + return "The http and https ports must be different."; + } + + return null; } function validateHttps(form) { + var remoteAccess = form.querySelector("#chkRemoteAccess").checked; var certPath = form.querySelector("#txtCertificatePath").value || null; var httpsMode = form.querySelector("#selectHttpsMode").value; - return "enabled" !== httpsMode && "required" !== httpsMode || certPath ? Promise.resolve() : new Promise(function(resolve, reject) { + + if (!remoteAccess || ("enabled" !== httpsMode && "required" !== httpsMode || certPath)) { + return Promise.resolve(); + } + + return new Promise(function (resolve, reject) { return alertText({ title: globalize.translate("TitleHostingSettings"), text: globalize.translate("HttpsRequiresCert") - }).then(reject, reject) - }) + }).then(reject, reject); + }); } function alertText(options) { - return new Promise(function(resolve, reject) { - require(["alert"], function(alert) { - alert(options).then(resolve, reject) - }) - }) + return new Promise(function (resolve, reject) { + require(["alert"], function (alert) { + alert(options).then(resolve, reject); + }); + }); } function confirmSelections(localAddress, enableUpnp, callback) { - localAddress || !enableUpnp ? alertText({ - title: globalize.translate("TitleHostingSettings"), - text: globalize.translate("SettingsWarning") - }).then(callback) : callback() + if (localAddress || !enableUpnp) { + alertText({ + title: globalize.translate("TitleHostingSettings"), + text: globalize.translate("SettingsWarning") + }).then(callback); + } else { + callback(); + } } - return function(view, params) { + return function (view, params) { function loadPage(page, config) { page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber; page.querySelector("#txtPublicPort").value = config.PublicPort; @@ -108,7 +136,17 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist"; page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; var selectHttpsMode = page.querySelector("#selectHttpsMode"); - config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled"; + + if (config.IsBehindProxy) { + selectHttpsMode.value = "proxy"; + } else if (config.RequireHttps) { + selectHttpsMode.value = "required"; + } else if (config.EnableHttps) { + selectHttpsMode.value = "enabled"; + } else { + selectHttpsMode.value = "disabled"; + } + page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber; page.querySelector("#txtBaseUrl").value = config.BaseUrl || ""; var txtCertificatePath = page.querySelector("#txtCertificatePath"); @@ -119,27 +157,50 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], loading.hide(); } - view.querySelector("#chkRemoteAccess").addEventListener("change", function() { - this.checked ? (view.querySelector(".fldExternalAddressFilter").classList.remove("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"), view.querySelector(".fldPublicPort").classList.remove("hide"), view.querySelector(".fldPublicHttpsPort").classList.remove("hide"), view.querySelector(".fldCertificatePath").classList.remove("hide"), view.querySelector(".fldCertPassword").classList.remove("hide"), view.querySelector(".fldHttpsMode").classList.remove("hide"), view.querySelector(".fldEnableUpnp").classList.remove("hide")) : (view.querySelector(".fldExternalAddressFilter").classList.add("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"), view.querySelector(".fldPublicPort").classList.add("hide"), view.querySelector(".fldPublicHttpsPort").classList.add("hide"), view.querySelector(".fldCertificatePath").classList.add("hide"), view.querySelector(".fldCertPassword").classList.add("hide"), view.querySelector(".fldHttpsMode").classList.add("hide"), view.querySelector(".fldEnableUpnp").classList.add("hide")) - }), view.querySelector("#btnSelectCertPath").addEventListener("click", function() { - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + view.querySelector("#chkRemoteAccess").addEventListener("change", function () { + if (this.checked) { + view.querySelector(".fldExternalAddressFilter").classList.remove("hide"); + view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"); + view.querySelector(".fldPublicPort").classList.remove("hide"); + view.querySelector(".fldPublicHttpsPort").classList.remove("hide"); + view.querySelector(".fldCertificatePath").classList.remove("hide"); + view.querySelector(".fldCertPassword").classList.remove("hide"); + view.querySelector(".fldHttpsMode").classList.remove("hide"); + view.querySelector(".fldEnableUpnp").classList.remove("hide"); + } else { + view.querySelector(".fldExternalAddressFilter").classList.add("hide"); + view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"); + view.querySelector(".fldPublicPort").classList.add("hide"); + view.querySelector(".fldPublicHttpsPort").classList.add("hide"); + view.querySelector(".fldCertificatePath").classList.add("hide"); + view.querySelector(".fldCertPassword").classList.add("hide"); + view.querySelector(".fldHttpsMode").classList.add("hide"); + view.querySelector(".fldEnableUpnp").classList.add("hide"); + } + }); + view.querySelector("#btnSelectCertPath").addEventListener("click", function () { + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ - includeFiles: !0, - includeDirectories: !0, - callback: function(path) { - path && (view.querySelector("#txtCertificatePath").value = path), picker.close() + includeFiles: true, + includeDirectories: true, + callback: function (path) { + if (path) { + view.querySelector("#txtCertificatePath").value = path; + } + + picker.close(); }, header: globalize.translate("HeaderSelectCertificatePath") - }) - }) + }); + }); }); - - view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit), view.addEventListener("viewshow", function(e) { + view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit); + view.addEventListener("viewshow", function (e) { loading.show(); - ApiClient.getServerConfiguration().then(function(config) { + ApiClient.getServerConfiguration().then(function (config) { loadPage(view, config); }); }); - } + }; }); diff --git a/src/controllers/notificationsetting.js b/src/controllers/dashboard/notifications/notification.js similarity index 100% rename from src/controllers/notificationsetting.js rename to src/controllers/dashboard/notifications/notification.js diff --git a/src/controllers/notificationsettings.js b/src/controllers/dashboard/notifications/notifications.js similarity index 89% rename from src/controllers/notificationsettings.js rename to src/controllers/dashboard/notifications/notifications.js index 8b56dc506d..8f63753bf3 100644 --- a/src/controllers/notificationsettings.js +++ b/src/controllers/dashboard/notifications/notifications.js @@ -31,14 +31,14 @@ define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"], } itemHtml += ''; if (notification.Enabled) { - itemHtml += 'notifications_active'; + itemHtml += ''; } else { - itemHtml += 'notifications_off'; + itemHtml += ''; } itemHtml += '
'; itemHtml += '
' + notification.Name + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; return itemHtml; }).join(""); diff --git a/src/controllers/addpluginpage.js b/src/controllers/dashboard/plugins/add.js similarity index 99% rename from src/controllers/addpluginpage.js rename to src/controllers/dashboard/plugins/add.js index 7930d6927b..72a7134fac 100644 --- a/src/controllers/addpluginpage.js +++ b/src/controllers/dashboard/plugins/add.js @@ -122,7 +122,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e confirm(msg, globalize.translate("HeaderConfirmPluginInstallation")).then(function () { alertCallback(); }, function () { - console.log('plugin not installed'); + console.debug('plugin not installed'); }); }); } else { diff --git a/src/controllers/availableplugins.js b/src/controllers/dashboard/plugins/available.js similarity index 98% rename from src/controllers/availableplugins.js rename to src/controllers/dashboard/plugins/available.js index 1679fec5e7..5526bd9ade 100644 --- a/src/controllers/availableplugins.js +++ b/src/controllers/dashboard/plugins/available.js @@ -103,7 +103,7 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby html += '
"; html += "
"; } else { - html += 'folder'; + html += 'folder'; } html += ""; diff --git a/src/controllers/installedplugins.js b/src/controllers/dashboard/plugins/installed.js similarity index 95% rename from src/controllers/installedplugins.js rename to src/controllers/dashboard/plugins/installed.js index c18673738e..026b58ce67 100644 --- a/src/controllers/installedplugins.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -47,14 +47,14 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += '
"; html += "
"; } else { - html += 'folder'; + html += 'folder'; } html += configPageUrl ? "" : "
"; html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += "
"; html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name; @@ -82,9 +82,11 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" return -1; }); + var html = plugins.map(function (p) { return getPluginCardHtml(p, pluginConfigurationPages); }).join(""); + var installedPluginsElement = page.querySelector(".installedPlugins"); installedPluginsElement.removeEventListener("click", onInstalledPluginsClick); installedPluginsElement.addEventListener("click", onInstalledPluginsClick); @@ -93,8 +95,8 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" installedPluginsElement.classList.add("itemsContainer"); installedPluginsElement.classList.add("vertical-wrap"); } else { - html += '
'; - html += "

" + globalize.translate("MessageNoPluginsInstalled") + "

"; + html += '
'; + html += "

" + globalize.translate("MessageNoPluginsInstalled") + "

"; html += '

'; html += globalize.translate("BrowsePluginCatalogMessage"); html += "

"; @@ -135,9 +137,9 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" case "open": Dashboard.navigate(configHref); break; - case "delete": deletePlugin(page, id, name); + break; } } }); @@ -168,7 +170,6 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" showConnectMessage(); } else { var btnCardMenu = dom.parentWithClass(e.target, "btnCardMenu"); - if (btnCardMenu) { showPluginMenu(dom.parentWithClass(btnCardMenu, "page"), btnCardMenu); } @@ -179,6 +180,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" libraryMenu.setTabs("plugins", 0, getTabs); reloadList(this); }); + window.PluginsPage = { renderPlugins: renderPlugins }; diff --git a/src/controllers/scheduledtaskpage.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js similarity index 98% rename from src/controllers/scheduledtaskpage.js rename to src/controllers/dashboard/scheduledtasks/scheduledtask.js index 7a3e1dbcd6..03eeeeb870 100644 --- a/src/controllers/scheduledtaskpage.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -49,7 +49,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby var trigger = task.Triggers[i]; html += '
'; - html += 'schedule'; + html += 'schedule'; if (trigger.MaxRuntimeMs) { html += '
'; } else { @@ -68,7 +68,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby } html += "
"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/scheduledtaskspage.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js similarity index 94% rename from src/controllers/scheduledtaskspage.js rename to src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 87297dbcf3..390fd17353 100644 --- a/src/controllers/scheduledtaskspage.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -40,7 +40,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma } html += '
'; html += ""; - html += 'schedule'; + html += 'schedule'; html += ""; html += '"; if (task.State === "Running") { - html += ''; + html += ''; } else if (task.State === "Idle") { - html += ''; + html += ''; } html += "
"; } @@ -90,16 +90,22 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma return html; } + function setTaskButtonIcon(button, icon) { + var inner = button.querySelector("i"); + inner.classList.remove("stop", "play_arrow"); + inner.classList.add(icon); + } + function updateTaskButton(elem, state) { if (state === "Running") { elem.classList.remove("btnStartTask"); elem.classList.add("btnStopTask"); - elem.querySelector("i").innerHTML = "stop"; + setTaskButtonIcon(elem, "stop"); elem.title = globalize.translate("ButtonStop"); } else if (state === "Idle") { elem.classList.add("btnStartTask"); elem.classList.remove("btnStopTask"); - elem.querySelector("i").innerHTML = "play_arrow"; + setTaskButtonIcon(elem, "play_arrow"); elem.title = globalize.translate("ButtonStart"); } $(elem).parents(".listItem")[0].setAttribute("data-status", state); diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 4c8c37eedc..3fd2be983e 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -80,7 +80,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu deviceHtml += '
"; deviceHtml += "
"; } else { - deviceHtml += 'tablet_android'; + deviceHtml += ''; } deviceHtml += ""; @@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; + deviceHtml += ''; deviceHtml += "
"; } diff --git a/src/controllers/dlnaprofile.js b/src/controllers/dlnaprofile.js index e9239693d8..fb4cdb425e 100644 --- a/src/controllers/dlnaprofile.js +++ b/src/controllers/dlnaprofile.js @@ -76,12 +76,12 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '
' + headers.map(function (h) { var li = '
'; - li += 'info'; + li += 'info'; li += '
'; li += '

' + h.Name + ": " + (h.Value || "") + "

"; li += '
' + (h.Match || "") + "
"; li += "
"; - li += ''; + li += ''; li += "
"; index++; return li; @@ -132,11 +132,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in function renderXmlDocumentAttributes(page, attribute) { var html = '
' + attribute.map(function (h) { var li = '
'; - li += 'info'; + li += 'info'; li += '
'; li += '

' + h.Name + " = " + (h.Value || "") + "

"; li += "
"; - li += ''; + li += ''; return li += "
"; }).join("") + "
"; var elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create"); @@ -174,11 +174,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '
' + profiles.map(function (h) { var li = '
'; - li += 'info'; + li += 'info'; li += '
'; li += '

' + (h.Format || "") + "

"; li += "
"; - li += ''; + li += ''; li += "
"; index++; return li; @@ -270,7 +270,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -331,7 +331,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -415,7 +415,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -487,7 +487,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -567,7 +567,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dlnaprofiles.js b/src/controllers/dlnaprofiles.js index ae708bcd4e..e1719ea597 100644 --- a/src/controllers/dlnaprofiles.js +++ b/src/controllers/dlnaprofiles.js @@ -32,7 +32,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- for (var i = 0, length = profiles.length; i < length; i++) { var profile = profiles[i]; html += '"; diff --git a/src/controllers/encodingsettings.js b/src/controllers/encodingsettings.js index f3dfd2706e..ff140ed539 100644 --- a/src/controllers/encodingsettings.js +++ b/src/controllers/encodingsettings.js @@ -12,9 +12,10 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo page.querySelector(".txtEncoderPath").value = config.EncoderAppPathDisplay || ""; $("#txtTranscodingTempPath", page).val(systemInfo.TranscodingTempPath || ""); $("#txtVaapiDevice", page).val(config.VaapiDevice || ""); - page.querySelector("#selectH264Preset").value = config.H264Preset || ""; + page.querySelector("#selectEncoderPreset").value = config.EncoderPreset || ""; page.querySelector("#txtH264Crf").value = config.H264Crf || ""; page.querySelector("#chkEnableSubtitleExtraction").checked = config.EnableSubtitleExtraction || false; + page.querySelector("#chkEnableThrottling").checked = config.EnableThrottling || false; page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change", { bubbles: true })); @@ -55,9 +56,10 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo config.EncodingThreadCount = $("#selectThreadCount", form).val(); config.HardwareAccelerationType = $("#selectVideoDecoder", form).val(); config.VaapiDevice = $("#txtVaapiDevice", form).val(); - config.H264Preset = form.querySelector("#selectH264Preset").value; + config.EncoderPreset = form.querySelector("#selectEncoderPreset").value; config.H264Crf = parseInt(form.querySelector("#txtH264Crf").value || "0"); config.EnableSubtitleExtraction = form.querySelector("#chkEnableSubtitleExtraction").checked; + config.EnableThrottling = form.querySelector("#chkEnableThrottling").checked; config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll(".chkDecodeCodec"), function (c) { return c.checked; }), function (c) { @@ -66,6 +68,12 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo config.EnableHardwareEncoding = form.querySelector("#chkHardwareEncoding").checked; ApiClient.updateNamedConfiguration("encoding", config).then(function () { updateEncoder(form); + }, function () { + require(["alert"], function (alert) { + alert(globalize.translate("DefaultErrorMessage")); + }); + + Dashboard.processServerConfigurationUpdateResult(); }); }); }; diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 0bfe3c4550..c06b0bd8fb 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -248,12 +248,12 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap html += '

'; html += globalize.translate(section.name); html += "

"; - html += 'chevron_right'; + html += ''; html += "
"; } html += "
"; - html += '
'; + html += '
'; html += "
"; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 1dac65750b..82569835ca 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1,4 +1,4 @@ -define(["loading", "appRouter", "layoutManager", "userSettings", "connectionManager", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "apphost", "imageLoader", "libraryMenu", "globalize", "browser", "events", "scrollHelper", "playbackManager", "libraryBrowser", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, userSettings, connectionManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, appHost, imageLoader, libraryMenu, globalize, browser, events, scrollHelper, playbackManager, libraryBrowser) { +define(["loading", "appRouter", "layoutManager", "connectionManager", "userSettings", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "imageLoader", "libraryMenu", "globalize", "browser", "events", "playbackManager", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { "use strict"; function getPromise(apiClient, params) { @@ -60,8 +60,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana return options; } - function getProgramScheduleHtml(items, options) { - options = options || {}; + function getProgramScheduleHtml(items) { var html = ""; html += '
'; html += listView.getListViewHtml({ @@ -419,13 +418,13 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana var offset = parentNameLast ? ".25em" : ".5em"; if (html && !parentNameLast) { - html += '

' + name + '

'; + html += '

' + name + '

'; } else { - html = '

' + name + "

" + html; + html = '

' + name + "

" + html; } if (item.OriginalTitle && item.OriginalTitle != item.Name) { - html += '

' + item.OriginalTitle + '

'; + html += '

' + item.OriginalTitle + '

'; } container.innerHTML = html; @@ -445,85 +444,96 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } } - function enabled() { - return userSettings.enableBackdrops(); - } - - function renderBackdrop(page, item, apiClient) { - if (enabled()) { - if (dom.getWindowSize().innerWidth >= 1000) { - backdrop.setBackdrops([item]); - } else { - backdrop.clear(); - } + function renderBackdrop(item) { + if (dom.getWindowSize().innerWidth >= 1000) { + backdrop.setBackdrops([item]); + } else { + backdrop.clear(); } } function renderDetailPageBackdrop(page, item, apiClient) { var imgUrl; - var screenWidth = screen.availWidth; var hasbackdrop = false; var itemBackdropElement = page.querySelector("#itemBackdrop"); var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || item.MediaType && item.MediaType !== "Video" || item.Type === "MusicAlbum" || - item.Type === "MusicArtist"; + item.Type === "Person"; + + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + return false; + } if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Thumb }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Primary", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Primary }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.BackdropImageTags[0] }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ParentBackdropImageTags[0] }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Thumb }); - itemBackdropElement.classList.remove("noBackdrop"); + page.classList.remove("noBackdrop"); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else { - itemBackdropElement.classList.add("noBackdrop"); itemBackdropElement.style.backgroundImage = ""; } + if ("Person" === item.Type) { + // FIXME: This hides the backdrop on all persons to fix a margin issue. Ideally, a proper fix should be made. + page.classList.add('noBackdrop'); + itemBackdropElement.classList.add("personBackdrop"); + } else { + itemBackdropElement.classList.remove("personBackdrop"); + } + return hasbackdrop; } function reloadFromItem(instance, page, params, item, user) { var context = params.context; + page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky"); + renderName(item, page.querySelector(".nameContainer"), false, context); var apiClient = connectionManager.getApiClient(item.ServerId); renderSeriesTimerEditor(page, item, apiClient, user); @@ -534,7 +544,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana setInitialCollapsibleState(page, item, apiClient, context, user); renderDetails(page, item, apiClient, context); renderTrackSelections(page, instance, item); - renderBackdrop(page, item, apiClient); + renderBackdrop(item); renderDetailPageBackdrop(page, item, apiClient); var canPlay = reloadPlayButtons(page, item); @@ -645,7 +655,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url = null) { + if (url != null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); @@ -661,7 +671,9 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana }); var detailLogo = page.querySelector(".detailLogo"); - if (url) { + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + detailLogo.classList.add("hide"); + } else if (url) { detailLogo.classList.remove("hide"); detailLogo.classList.add("lazy"); detailLogo.setAttribute("data-src", url); @@ -741,12 +753,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana editable = false; } - if ("Person" !== item.Type) { - elem.classList.add("detailimg-hidemobile"); - page.querySelector(".detailPageContent").classList.add("detailPageContent-nodetailimg"); - } else { - page.querySelector(".detailPageContent").classList.remove("detailPageContent-nodetailimg"); - } + elem.classList.add("detailimg-hidemobile"); var imageTags = item.ImageTags || {}; @@ -759,66 +766,78 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana var shape = "portrait"; var detectRatio = false; + /* In the following section, getScreenWidth() is multiplied by 0.5 as the posters + are 25vw and we need double the resolution to counter Skia's scaling. */ + // TODO: Find a reliable way to get the poster width if (imageTags.Primary) { url = apiClient.getScaledImageUrl(item.Id, { type: "Primary", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Primary }); detectRatio = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { url = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.BackdropImageTags[0] }); shape = "thumb"; } else if (imageTags.Thumb) { url = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Thumb }); shape = "thumb"; } else if (imageTags.Disc) { url = apiClient.getScaledImageUrl(item.Id, { type: "Disc", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Disc }); shape = "square"; } else if (item.AlbumId && item.AlbumPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.AlbumPrimaryImageTag }); shape = "square"; } else if (item.SeriesId && item.SeriesPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.SeriesId, { type: "Primary", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.SeriesPrimaryImageTag }); } else if (item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { type: "Primary", + maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ParentPrimaryImageTag }); } - html += '
'; - - if (editable) { - html += ""; + if (editable && url === undefined) { + html += ""; + } else if (!editable && url === undefined) { + html += ""; } var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item); @@ -828,10 +847,17 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana html += progressHtml; } - html += "
"; html += "
"; elem.innerHTML = html; + if (detectRatio && item.PrimaryImageAspectRatio) { + if (item.PrimaryImageAspectRatio >= 1.48) { + shape = "thumb"; + } else if (item.PrimaryImageAspectRatio >= 0.85 && item.PrimaryImageAspectRatio <= 1.34) { + shape = "square"; + } + } + if ("thumb" == shape) { elem.classList.add("thumbDetailImageContainer"); elem.classList.remove("portraitDetailImageContainer"); @@ -867,7 +893,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana elem.querySelector(".detailImageProgressContainer").innerHTML = indicators.getProgressBarHtml(item); } - function refreshImage(page, item, user) { + function refreshImage(page, item) { refreshDetailImageUserData(page.querySelector(".detailImageContainer"), item); } @@ -898,7 +924,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana var html = cardBuilder.getCardsHtml({ items: result.Items, - shape: getThumbShape(false), + shape: "overflowBackdrop", showTitle: true, displayAsSpecial: "Season" == item.Type && item.IndexNumber, overlayText: false, @@ -916,10 +942,10 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana if ("Playlist" == item.Type) { page.querySelector("#childrenCollapsible").classList.remove("hide"); - renderPlaylistItems(page, item, user); + renderPlaylistItems(page, item); } else if ("Studio" == item.Type || "Person" == item.Type || "Genre" == item.Type || "MusicGenre" == item.Type || "MusicArtist" == item.Type) { page.querySelector("#childrenCollapsible").classList.remove("hide"); - renderItemsByName(page, item, user); + renderItemsByName(page, item); } else if (item.IsFolder) { if ("BoxSet" == item.Type) { page.querySelector("#childrenCollapsible").classList.add("hide"); @@ -931,7 +957,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } if ("Series" == item.Type) { - renderSeriesSchedule(page, item, user); + renderSeriesSchedule(page, item); renderNextUp(page, item, user); } else { page.querySelector(".nextUpSection").classList.add("hide"); @@ -946,7 +972,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana page.querySelector("#specialsCollapsible").classList.add("hide"); } - renderCast(page, item, context, enableScrollX() ? null : 12); + renderCast(page, item); if (item.PartCount && item.PartCount > 1) { page.querySelector("#additionalPartsCollapsible").classList.remove("hide"); @@ -982,7 +1008,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } } - function renderGenres(page, item, apiClient, context, isStatic) { + function renderGenres(page, item, context) { context = context || inferContext(item); var type; var genres = item.GenreItems || []; @@ -1016,7 +1042,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } } - function renderDirector(page, item, apiClient, context, isStatic) { + function renderDirector(page, item, context) { var directors = (item.People || []).filter(function (p) { return "Director" === p.Type; }); @@ -1044,8 +1070,8 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana renderSimilarItems(page, item, context); renderMoreFromSeason(page, item, apiClient); renderMoreFromArtist(page, item, apiClient); - renderDirector(page, item, apiClient, context, isStatic); - renderGenres(page, item, apiClient, context, isStatic); + renderDirector(page, item, context); + renderGenres(page, item, context); renderChannelGuide(page, apiClient, item); var taglineElement = page.querySelector(".tagline"); @@ -1059,11 +1085,6 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana var overview = page.querySelector(".overview"); var externalLinksElem = page.querySelector(".itemExternalLinks"); - if ("Season" !== item.Type && "MusicAlbum" !== item.Type && "MusicArtist" !== item.Type) { - overview.classList.add("detailsHiddenOnMobile"); - externalLinksElem.classList.add("detailsHiddenOnMobile"); - } - renderOverview([overview], item); var i; var itemMiscInfo; @@ -1124,14 +1145,6 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana return scrollX ? "overflowSquare" : "square"; } - function getThumbShape(scrollX) { - if (null == scrollX) { - scrollX = enableScrollX(); - } - - return scrollX ? "overflowBackdrop" : "backdrop"; - } - function renderMoreFromSeason(view, item, apiClient) { var section = view.querySelector(".moreFromSeasonSection"); @@ -1403,7 +1416,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana scrollX = enableScrollX(); html = cardBuilder.getCardsHtml({ items: result.Items, - shape: getPortraitShape(), + shape: "overflowPortrait", showTitle: true, centerText: true, lazy: true, @@ -1422,7 +1435,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana if ("Episode" === item.Type) { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: getThumbShape(scrollX), + shape: "overflowBackdrop", showTitle: true, displayAsSpecial: "Season" == item.Type && item.IndexNumber, playFromHere: true, @@ -1507,13 +1520,13 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } } - function renderItemsByName(page, item, user) { + function renderItemsByName(page, item) { require("scripts/itembynamedetailpage".split(","), function () { window.ItemsByName.renderItems(page, item); }); } - function renderPlaylistItems(page, item, user) { + function renderPlaylistItems(page, item) { require("scripts/playlistedit".split(","), function () { PlaylistViewer.render(page, item); }); @@ -1593,7 +1606,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } } - function renderSeriesSchedule(page, item, user) { + function renderSeriesSchedule(page, item) { var apiClient = connectionManager.getApiClient(item.ServerId); apiClient.getLiveTvPrograms({ UserId: apiClient.getCurrentUserId(), @@ -1660,7 +1673,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana function canPlaySomeItemInCollection(items) { var i = 0; - for (length = items.length; i < length; i++) { + for (var length = items.length; i < length; i++) { if (playbackManager.canPlay(items[i])) { return true; } @@ -1732,7 +1745,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana html += '

'; html += "" + type.name + ""; html += "

"; - html += ''; + html += ''; html += "
"; html += '
'; var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false); @@ -1807,7 +1820,6 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana require(["chaptercardbuilder"], function (chaptercardbuilder) { chaptercardbuilder.buildChapterCards(item, chapters, { itemsContainer: scenesContent, - width: 400, backdropShape: "overflowBackdrop", squareShape: "overflowSquare" }); @@ -1843,7 +1855,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana }); } - function renderCast(page, item, context, limit, isStatic) { + function renderCast(page, item) { var people = (item.People || []).filter(function (p) { return "Director" !== p.Type; }); @@ -1860,8 +1872,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana itemsContainer: castContent, coverImage: true, serverId: item.ServerId, - width: 160, - shape: getPortraitShape() + shape: "overflowPortrait" }); }); } @@ -1933,7 +1944,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana playbackManager.play(playOptions); } - function playTrailer(page) { + function playTrailer() { playbackManager.playTrailers(currentItem); } @@ -1990,11 +2001,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } function onPlayTrailerClick() { - playTrailer(view); - } - - function onDownloadChange() { - reload(self, view, params); + playTrailer(); } function onDownloadClick() { @@ -2049,9 +2056,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana if (userData) { currentItem.UserData = userData; reloadPlayButtons(view, currentItem); - apiClient.getCurrentUser().then(function (user) { - refreshImage(view, currentItem, user); - }); + refreshImage(view, currentItem); } } } @@ -2069,7 +2074,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick); bindAll(view, ".btnDeleteItem", "click", onDeleteClick); bindAll(view, ".btnDownload", "click", onDownloadClick); - view.querySelector(".btnMoreCommands i").innerHTML = "more_horiz"; + view.querySelector(".btnMoreCommands i").innerHTML = ""; view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit); view.querySelector(".btnSplitVersions").addEventListener("click", function () { splitVersions(self, view, apiClient, params); @@ -2082,11 +2087,9 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana }); view.addEventListener("click", function (e) { if (dom.parentWithClass(e.target, "moreScenes")) { - apiClient.getCurrentUser().then(function (user) { - renderScenes(view, currentItem); - }); + renderScenes(view, currentItem); } else if (dom.parentWithClass(e.target, "morePeople")) { - renderCast(view, currentItem, params.context); + renderCast(view, currentItem); } else if (dom.parentWithClass(e.target, "moreSpecials")) { apiClient.getCurrentUser().then(function (user) { renderSpecials(view, currentItem, user); @@ -2102,7 +2105,10 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana }); view.addEventListener("viewshow", function (e) { var page = this; - libraryMenu.setTransparentMenu(true); + + if (layoutManager.mobile) { + libraryMenu.setTransparentMenu(true); + } if (e.detail.isRestored) { if (currentItem) { diff --git a/src/controllers/librarydisplay.js b/src/controllers/librarydisplay.js index 10a0eb945b..55986a4b7d 100644 --- a/src/controllers/librarydisplay.js +++ b/src/controllers/librarydisplay.js @@ -68,4 +68,4 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", " }); }); } -}); \ No newline at end of file +}); diff --git a/src/controllers/list.js b/src/controllers/list.js index a554bec611..bcc38f27cf 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -157,6 +157,12 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" return query; } + function setSortButtonIcon(btnSortIcon, icon) { + btnSortIcon.classList.remove("arrow_downward"); + btnSortIcon.classList.remove("arrow_upward"); + btnSortIcon.classList.add(icon); + } + function updateSortText(instance) { var btnSortText = instance.btnSortText; @@ -175,7 +181,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"; + setSortButtonIcon(btnSortIcon, "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"); } } } @@ -203,15 +209,9 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" if ("SortName" === values.sortBy && "Ascending" === values.sortOrder && numItems > 40) { alphaPicker.classList.remove("hide"); - - if (layoutManager.tv) { - instance.itemsContainer.parentNode.classList.add("padded-left-withalphapicker"); - } else { - instance.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); - } + instance.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); } else { alphaPicker.classList.add("hide"); - instance.itemsContainer.parentNode.classList.remove("padded-left-withalphapicker"); instance.itemsContainer.parentNode.classList.remove("padded-right-withalphapicker"); } } @@ -540,15 +540,9 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" self.scroller = view.querySelector(".scrollFrameY"); var alphaPickerElement = self.alphaPickerElement; - if (layoutManager.tv) { - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - alphaPickerElement.classList.add("focuscontainer-left"); - self.itemsContainer.parentNode.classList.add("padded-left-withalphapicker"); - } else { - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - alphaPickerElement.classList.add("focuscontainer-right"); - self.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); - } + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + alphaPickerElement.classList.add("focuscontainer-right"); + self.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, diff --git a/src/controllers/livetv/livetvrecordings.js b/src/controllers/livetv/livetvrecordings.js index ed3ae24087..f8e49f2590 100644 --- a/src/controllers/livetv/livetvrecordings.js +++ b/src/controllers/livetv/livetvrecordings.js @@ -2,6 +2,10 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc "use strict"; function renderRecordings(elem, recordings, cardOptions, scrollX) { + if (!elem) { + return; + } + if (recordings.length) { elem.classList.remove("hide"); } else { diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index c25487fd32..aee5876a45 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -26,11 +26,11 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += '
'; html += '
'; html += '
'; - html += '
dvr
'; + html += '
dvr
'; html += "
"; html += "
"; html += '
'; - html += ''; + html += ''; html += '
' + (device.FriendlyName || getTunerName(device.Type)) + "
"; html += '
'; html += device.Url || " "; @@ -101,7 +101,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo for (var i = 0, length = providers.length; i < length; i++) { var provider = providers[i]; html += '"; - html += ''; + html += ''; html += "
"; } @@ -187,16 +187,12 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo switch (providerId = providerId.toLowerCase()) { case "m3u": return "M3U"; - case "hdhomerun": - return "HDHomerun"; - + return "HDHomeRun"; case "hauppauge": return "Hauppauge"; - case "satip": return "DVB"; - default: return "Unknown"; } @@ -206,13 +202,8 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo switch (providerId = providerId.toLowerCase()) { case "schedulesdirect": return "Schedules Direct"; - case "xmltv": - return "Xml TV"; - - case "emby": - return "Emby Guide"; - + return "XMLTV"; default: return "Unknown"; } @@ -222,12 +213,8 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo switch (providerId = providerId.toLowerCase()) { case "xmltv": return "livetvguideprovider.html?type=xmltv"; - case "schedulesdirect": return "livetvguideprovider.html?type=schedulesdirect"; - - case "emby": - return "livetvguideprovider.html?type=emby"; } } @@ -238,7 +225,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo id: "SchedulesDirect" }); menuItems.push({ - name: "Xml TV", + name: "XMLTV", id: "xmltv" }); diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 543acf31da..d838c2145e 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -256,6 +256,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.PrimaryImageItemId) { imgUrl = ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId, { + maxWidth: Math.round(dom.getScreenWidth() * 0.40), type: "Primary" }); } @@ -267,7 +268,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl hasCardImageContainer = true; } else if (!virtualFolder.showNameWithIcon) { html += '
'; - html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; + html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; hasCardImageContainer = true; } @@ -280,7 +281,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (!imgUrl && virtualFolder.showNameWithIcon) { html += '

'; - html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; + html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; if (virtualFolder.showNameWithIcon) { html += '
'; @@ -297,7 +298,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.showMenu !== false) { html += '
'; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/metadataimagespage.js b/src/controllers/metadataimagespage.js index 3a6656e4b6..a4932e9bb0 100644 --- a/src/controllers/metadataimagespage.js +++ b/src/controllers/metadataimagespage.js @@ -61,4 +61,4 @@ define(["jQuery", "dom", "loading", "libraryMenu", "listViewStyle"], function($, }).on("pageshow", "#metadataImagesConfigurationPage", function() { libraryMenu.setTabs("metadata", 2, getTabs), loading.show(), loadPage(this) }) -}); \ No newline at end of file +}); diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index e51274d254..d51a2e4789 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -114,7 +114,10 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader shape: getPortraitShape(), scalable: true, overlayMoreButton: true, - allowBottomPadding: false + allowBottomPadding: true, + showTitle: true, + centerText: true, + showYear: true }); } if (result.Items.length >= query.Limit) { @@ -142,14 +145,14 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += ''; html += ""; html += "
"; if (enableScrollX()) { var scrollXClass = "scrollX hiddenScrollX"; if (layoutManager.tv) { - scrollXClass += "smoothScrollX"; + scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; } html += '
'; diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 3a365acc90..ce077bd179 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -169,11 +169,9 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { - alphaPickerElement.classList.add("alphabetPicker-right"); - itemsContainer.classList.remove("padded-left-withalphapicker"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); } var btnFilter = tabContent.querySelector(".btnFilter"); diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 0327217e44..7e19af4b9f 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -1,4 +1,4 @@ -define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) { +define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-scroller", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) { "use strict"; function enableScrollX() { @@ -114,18 +114,25 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" var allowBottomPadding = true; if (enableScrollX()) { - allowBottomPadding = false; - html += '
'; + html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += cardBuilder.getCardsHtml(recommendation.Items, { shape: getPortraitShape(), scalable: true, overlayPlayButton: true, - allowBottomPadding: allowBottomPadding + allowBottomPadding: allowBottomPadding, + showTitle: true, + showYear: true, + centerText: true }); + + if (enableScrollX()) { + html += '
'; + } html += "
"; html += "
"; return html; @@ -171,6 +178,8 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" if (layoutManager.tv) { elem.classList.add("smoothScrollX"); + elem.classList.add("padded-top-focusscale"); + elem.classList.add("padded-bottom-focusscale"); } elem.classList.add("scrollX"); @@ -194,7 +203,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function loadSuggestionsTab(view, params, tabContent) { var parentId = params.topParentId; var userId = ApiClient.getCurrentUserId(); - console.log("loadSuggestionsTab"); + console.debug("loadSuggestionsTab"); loadResume(tabContent, userId, parentId); loadLatest(tabContent, userId, parentId); loadSuggestions(tabContent, userId, parentId); diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 3e62298613..c764190ee0 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -193,6 +193,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; var query = getQuery(tabContent); @@ -205,12 +206,9 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 480f0af77f..58d30e71da 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -199,6 +199,7 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; @@ -211,12 +212,10 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index aaeea8c885..ceed448a06 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -181,6 +181,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; @@ -193,12 +194,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 556877aa1b..8b87dff265 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -155,7 +155,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } function loadSuggestionsTab(page, tabContent, parentId) { - console.log("loadSuggestionsTab"); + console.debug("loadSuggestionsTab"); loadLatest(tabContent, parentId); loadRecentlyPlayed(tabContent, parentId); loadFrequentlyPlayed(tabContent, parentId); diff --git a/src/controllers/nowplayingpage.js b/src/controllers/playback/nowplaying.js similarity index 100% rename from src/controllers/nowplayingpage.js rename to src/controllers/playback/nowplaying.js diff --git a/src/controllers/videoosd.js b/src/controllers/playback/videoosd.js similarity index 92% rename from src/controllers/videoosd.js rename to src/controllers/playback/videoosd.js index a93b5b61a8..24b6548544 100644 --- a/src/controllers/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1,4 +1,4 @@ -define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) { +define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "keyboardnavigation", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!assets/css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings, keyboardnavigation) { "use strict"; function seriesImageUrl(item, options) { @@ -334,18 +334,24 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (item) { var imgUrl = seriesImageUrl(item, { + maxWidth: osdPoster.clientWidth * 2, type: "Primary" }) || seriesImageUrl(item, { + maxWidth: osdPoster.clientWidth * 2, type: "Thumb" }) || imageUrl(item, { + maxWidth: osdPoster.clientWidth * 2, type: "Primary" }); if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { + maxWidth: osdPoster.clientWidth * 2, type: "Primary" }) || seriesImageUrl(secondaryItem, { + maxWidth: osdPoster.clientWidth * 2, type: "Thumb" }) || imageUrl(secondaryItem, { + maxWidth: osdPoster.clientWidth * 2, type: "Primary" })), imgUrl) { return void (osdPoster.innerHTML = ''); @@ -376,7 +382,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function startOsdHideTimer() { stopOsdHideTimer(); - osdHideTimeout = setTimeout(hideOsd, 5e3); + osdHideTimeout = setTimeout(hideOsd, 3e3); } function stopOsdHideTimer() { @@ -437,6 +443,11 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }); currentVisibleMenu = null; toggleSubtitleSync("hide"); + + // Firefox does not blur by itself + if (document.activeElement) { + document.activeElement.blur(); + } } } @@ -534,7 +545,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updateFullscreenIcon() { if (playbackManager.isFullscreen(currentPlayer)) { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("ExitFullscreen")); - view.querySelector(".btnFullscreen i").innerHTML = "fullscreen_exit"; + view.querySelector(".btnFullscreen i").innerHTML = ""; } else { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); view.querySelector(".btnFullscreen i").innerHTML = "fullscreen"; @@ -570,7 +581,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onPlaybackStart(e, state) { - console.log("nowplaying event: " + e.type); + console.debug("nowplaying event: " + e.type); var player = this; onStateChanged.call(player, e, state); resetUpNextDialog(); @@ -589,7 +600,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function onPlaybackStopped(e, state) { currentRuntimeTicks = null; resetUpNextDialog(); - console.log("nowplaying event: " + e.type); + console.debug("nowplaying event: " + e.type); if ("Video" !== state.NextMediaType) { view.removeEventListener("viewbeforehide", onViewHideStopPlayback); @@ -720,14 +731,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var endDate = datetime.parseISO8601Date(program.EndDate); if (new Date().getTime() >= endDate.getTime()) { - console.log("program info needs to be refreshed"); + console.debug("program info needs to be refreshed"); var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { type: "init" }, state); } } catch (e) { - console.log("Error parsing date: " + program.EndDate); + console.error("error parsing date: " + program.EndDate); } } } @@ -736,7 +747,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updatePlayPauseState(isPaused) { var button = view.querySelector(".btnPause i"); if (isPaused) { - button.innerHTML = "play_arrow"; + button.innerHTML = ""; button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); } else { button.innerHTML = "pause"; @@ -789,6 +800,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med view.querySelector(".btnPip").classList.remove("hide"); } + if (-1 === supportedCommands.indexOf("AirPlay")) { + view.querySelector(".btnAirPlay").classList.add("hide"); + } else { + view.querySelector(".btnAirPlay").classList.remove("hide"); + } + updateFullscreenIcon(); } @@ -851,8 +868,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var supportedCommands = currentPlayerSupportedCommands; var showMuteButton = true; var showVolumeSlider = true; - var volumeSlider = view.querySelector('.osdVolumeSliderContainer'); - var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); if (-1 === supportedCommands.indexOf("Mute")) { showMuteButton = false; @@ -869,14 +884,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = "volume_off"; + view.querySelector(".buttonMute i").innerHTML = ""; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = "volume_up"; - } - - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; + view.querySelector(".buttonMute i").innerHTML = ""; } if (showMuteButton) { @@ -1077,68 +1088,78 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } /** - * Keys used for keyboard navigation. + * Clicked element. + * To skip 'click' handling on Firefox/Edge. */ - var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; + var clickedElement; function onWindowKeyDown(e) { + clickedElement = e.srcElement; + + var key = keyboardnavigation.getKeyName(e); + if (!currentVisibleMenu && 32 === e.keyCode) { playbackManager.playPause(currentPlayer); showOsd(); return; } - if (layoutManager.tv && NavigationKeys.indexOf(e.key) != -1) { + if (layoutManager.tv && keyboardnavigation.isNavigationKey(key)) { showOsd(); return; } - switch (e.key) { + switch (key) { + case "Enter": + showOsd(); + break; + case "Escape": + case "Back": + // Ignore key when some dialog is opened + if (currentVisibleMenu === "osd" && !document.querySelector(".dialogContainer")) { + hideOsd(); + e.stopPropagation(); + } + break; case "k": playbackManager.playPause(currentPlayer); showOsd(); break; - case "l": case "ArrowRight": case "Right": playbackManager.fastForward(currentPlayer); showOsd(); break; - case "j": case "ArrowLeft": case "Left": playbackManager.rewind(currentPlayer); showOsd(); break; - case "f": if (!e.ctrlKey && !e.metaKey) { playbackManager.toggleFullscreen(currentPlayer); showOsd(); } break; - case "m": playbackManager.toggleMute(currentPlayer); showOsd(); break; - case "NavigationLeft": case "GamepadDPadLeft": case "GamepadLeftThumbstickLeft": - // Ignores gamepad events that are always triggered, even when not focused. + // Ignores gamepad events that are always triggered, even when not focused. if (document.hasFocus()) { playbackManager.rewind(currentPlayer); showOsd(); } break; - case "NavigationRight": case "GamepadDPadRight": case "GamepadLeftThumbstickRight": - // Ignores gamepad events that are always triggered, even when not focused. + // Ignores gamepad events that are always triggered, even when not focused. if (document.hasFocus()) { playbackManager.fastForward(currentPlayer); showOsd(); @@ -1146,6 +1167,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } } + function onWindowMouseDown(e) { + clickedElement = e.srcElement; + } + + function onWindowTouchStart(e) { + clickedElement = e.srcElement; + } + function getImgUrl(item, chapter, index, maxWidth, apiClient) { if (chapter.ImageTag) { return apiClient.getScaledImageUrl(item.Id, { @@ -1195,12 +1224,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } + var playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); @@ -1274,6 +1305,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med showOsd(); inputManager.on(window, onInputCommand); dom.addEventListener(window, "keydown", onWindowKeyDown, { + capture: true + }); + dom.addEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, { + passive: true + }); + dom.addEventListener(window, "touchstart", onWindowTouchStart, { passive: true }); } catch (e) { @@ -1288,6 +1325,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } dom.removeEventListener(window, "keydown", onWindowKeyDown, { + capture: true + }); + dom.removeEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, { + passive: true + }); + dom.removeEventListener(window, "touchstart", onWindowTouchStart, { passive: true }); stopOsdHideTimer(); @@ -1306,6 +1349,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med view.querySelector(".btnPip").addEventListener("click", function () { playbackManager.togglePictureInPicture(currentPlayer); }); + view.querySelector(".btnAirPlay").addEventListener("click", function () { + playbackManager.toggleAirPlay(currentPlayer); + }); view.querySelector(".btnVideoOsdSettings").addEventListener("click", onSettingsButtonClick); view.addEventListener("viewhide", function () { headerElement.classList.remove("hide"); @@ -1344,8 +1390,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - playbackManager.playPause(currentPlayer); - showOsd(); + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); + playPauseClickTimeout = 0; + } else { + playPauseClickTimeout = setTimeout(function() { + playbackManager.playPause(currentPlayer); + showOsd(); + playPauseClickTimeout = 0; + }, 300); + } } break; @@ -1367,39 +1421,28 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }, options); } + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + + playbackManager.setVolume(this.value, currentPlayer); + } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + view.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); - nowPlayingVolumeSlider.addEventListener("change", function () { - if (volumeSliderTimer) { - // interupt and remove existing timer - clearTimeout(volumeSliderTimer); - volumeSliderTimer = null; - } - playbackManager.setVolume(this.value, currentPlayer); - }); - nowPlayingVolumeSlider.addEventListener("mousemove", function () { - if (!volumeSliderTimer) { - var that = this; - // register new timer - volumeSliderTimer = setTimeout(function() { - playbackManager.setVolume(that.value, currentPlayer); - // delete timer after completion - volumeSliderTimer = null; - }, 700); - } - }); - nowPlayingVolumeSlider.addEventListener("touchmove", function () { - if (!volumeSliderTimer) { - var that = this; - // register new timer - volumeSliderTimer = setTimeout(function() { - playbackManager.setVolume(that.value, currentPlayer); - // delete timer after completion - volumeSliderTimer = null; - }, 700); - } - }); + nowPlayingVolumeSlider.addEventListener("change", setVolume); + nowPlayingVolumeSlider.addEventListener("mousemove", setVolumeDelayed); + nowPlayingVolumeSlider.addEventListener("touchmove", setVolumeDelayed); nowPlayingPositionSlider.addEventListener("change", function () { var player = currentPlayer; @@ -1456,7 +1499,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med playbackManager.previousTrack(currentPlayer); }); view.querySelector(".btnPause").addEventListener("click", function () { - playbackManager.playPause(currentPlayer); + // Ignore 'click' if another element was originally clicked (Firefox/Edge issue) + if (this.contains(clickedElement)) { + playbackManager.playPause(currentPlayer); + } }); view.querySelector(".btnNextTrack").addEventListener("click", function () { playbackManager.nextTrack(currentPlayer); diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index b6fa54f213..9c37e04e7c 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -141,13 +141,13 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += ''; html += ""; html += "
"; if (enableScrollX()) { var scrollXClass = "scrollX hiddenScrollX"; if (layoutManager.tv) { - scrollXClass += "smoothScrollX"; + scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; } html += '
'; } else { diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 1dec530540..24f6cb1a03 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -210,6 +210,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; @@ -222,12 +223,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/shows/tvupcoming.js b/src/controllers/shows/tvupcoming.js index f85278195f..249d932d39 100644 --- a/src/controllers/shows/tvupcoming.js +++ b/src/controllers/shows/tvupcoming.js @@ -58,7 +58,7 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", day: "numeric" }); } catch (err) { - console.log('error parsing timestamp for upcoming tv shows'); + console.error('error parsing timestamp for upcoming tv shows'); } } diff --git a/src/controllers/streamingsettings.js b/src/controllers/streamingsettings.js index 6c85034458..14e5e028a8 100644 --- a/src/controllers/streamingsettings.js +++ b/src/controllers/streamingsettings.js @@ -13,6 +13,7 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) config.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($("#txtRemoteClientBitrateLimit", form).val() || "0")); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }); + return false; } @@ -30,24 +31,6 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) } $(document).on("pageinit", "#streamingSettingsPage", function () { - var page = this; - $("#btnSelectTranscodingTempPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { - var picker = new directoryBrowser(); - picker.show({ - callback: function (path) { - if (path) { - $("#txtTranscodingTempPath", page).val(path); - } - - picker.close(); - }, - validateWriteable: true, - header: Globalize.translate("HeaderSelectTranscodingPath"), - instruction: Globalize.translate("HeaderSelectTranscodingPathHelp") - }); - }); - }); $(".streamingSettingsForm").off("submit", onSubmit).on("submit", onSubmit); }).on("pageshow", "#streamingSettingsPage", function () { loading.show(); diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index 4e0a7824b7..6087beadfe 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -6,6 +6,10 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio Dashboard.logout(); }); + view.querySelector(".selectServer").addEventListener("click", function () { + Dashboard.selectServer(); + }); + view.addEventListener("viewshow", function() { // this page can also be used by admins to change user preferences from the user edit page var userId = params.userId || Dashboard.getCurrentUserId(); diff --git a/src/controllers/user/profile.js b/src/controllers/user/profile.js index 8bd2bdd376..3b85cb1d8c 100644 --- a/src/controllers/user/profile.js +++ b/src/controllers/user/profile.js @@ -8,7 +8,7 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em page.querySelector(".username").innerHTML = user.Name; libraryMenu.setTitle(user.Name); - var imageUrl = "img/logindefault.png"; + var imageUrl = "assets/img/avatar.png"; if (user.PrimaryImageTag) { imageUrl = ApiClient.getUserImageUrl(user.Id, { tag: user.PrimaryImageTag, diff --git a/src/controllers/useredit.js b/src/controllers/useredit.js index fb6a3f94cd..f6a5aaf000 100644 --- a/src/controllers/useredit.js +++ b/src/controllers/useredit.js @@ -97,6 +97,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, $("#chkEnableAudioPlaybackTranscoding", page).checked(user.Policy.EnableAudioPlaybackTranscoding); $("#chkEnableVideoPlaybackTranscoding", page).checked(user.Policy.EnableVideoPlaybackTranscoding); $("#chkEnableVideoPlaybackRemuxing", page).checked(user.Policy.EnablePlaybackRemuxing); + $("#chkForceRemoteSourceTranscoding", page).checked(user.Policy.ForceRemoteSourceTranscoding); $("#chkRemoteAccess", page).checked(null == user.Policy.EnableRemoteAccess || user.Policy.EnableRemoteAccess); $("#chkEnableSyncTranscoding", page).checked(user.Policy.EnableSyncTranscoding); $("#chkEnableConversion", page).checked(user.Policy.EnableMediaConversion || false); @@ -128,6 +129,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, user.Policy.EnableAudioPlaybackTranscoding = $("#chkEnableAudioPlaybackTranscoding", page).checked(); user.Policy.EnableVideoPlaybackTranscoding = $("#chkEnableVideoPlaybackTranscoding", page).checked(); user.Policy.EnablePlaybackRemuxing = $("#chkEnableVideoPlaybackRemuxing", page).checked(); + user.Policy.ForceRemoteSourceTranscoding = $("#chkForceRemoteSourceTranscoding", page).checked(); user.Policy.EnableContentDownloading = $("#chkEnableDownloading", page).checked(); user.Policy.EnableSyncTranscoding = $("#chkEnableSyncTranscoding", page).checked(); user.Policy.EnableMediaConversion = $("#chkEnableConversion", page).checked(); diff --git a/src/controllers/userparentalcontrol.js b/src/controllers/userparentalcontrol.js index 2a862912d5..333c09f266 100644 --- a/src/controllers/userparentalcontrol.js +++ b/src/controllers/userparentalcontrol.js @@ -108,7 +108,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- li += h; li += "

"; li += "
"; - li += ''; + li += ''; return li += "
"; }).join(""); @@ -143,7 +143,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- itemHtml += ""; itemHtml += '
' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; index++; return itemHtml; diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 7aeea9cb28..2a2387ab60 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -104,7 +104,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
"; } else { html += '
'; - html += 'person'; + html += 'person'; } html += "
"; @@ -115,7 +115,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
'; html += user.Name; html += "
"; - html += ''; + html += ''; html += "
"; html += '
'; var lastSeen = getLastSeenText(user.LastActivityDate); @@ -181,14 +181,14 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
"; html += "
"; } else { - html += 'person'; + html += 'person'; } html += ""; html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += '
'; html += user.UserName; diff --git a/src/controllers/wizardfinishpage.js b/src/controllers/wizard/finish.js similarity index 100% rename from src/controllers/wizardfinishpage.js rename to src/controllers/wizard/finish.js diff --git a/src/controllers/wizardremoteaccess.js b/src/controllers/wizard/remoteaccess.js similarity index 100% rename from src/controllers/wizardremoteaccess.js rename to src/controllers/wizard/remoteaccess.js diff --git a/src/controllers/wizardsettings.js b/src/controllers/wizard/settings.js similarity index 100% rename from src/controllers/wizardsettings.js rename to src/controllers/wizard/settings.js diff --git a/src/controllers/wizardstart.js b/src/controllers/wizard/start.js similarity index 100% rename from src/controllers/wizardstart.js rename to src/controllers/wizard/start.js diff --git a/src/controllers/wizarduserpage.js b/src/controllers/wizard/user.js similarity index 97% rename from src/controllers/wizarduserpage.js rename to src/controllers/wizard/user.js index d29be37c13..270953b24e 100644 --- a/src/controllers/wizarduserpage.js +++ b/src/controllers/wizard/user.js @@ -10,7 +10,7 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em } function onUpdateUserComplete(result) { - console.log(result); + console.debug("user update complete: " + result); loading.hide(); nextWizardPage(); } diff --git a/src/css/dashboard.css b/src/css/dashboard.css deleted file mode 100644 index d4928db691..0000000000 --- a/src/css/dashboard.css +++ /dev/null @@ -1,427 +0,0 @@ -.dashboardColumn, -.dashboardSections { - flex-direction: column; -} - -.dashboardFooter { - margin-top: 3.5em; - text-align: center -} - -.dashboardFooter a { - margin: 0 .7em -} - -progress { - appearance: none; - margin: 0; - background: #ccc !important -} - -progress[role]:after { - background-image: none -} - -progress::-webkit-progress-bar { - background: #ccc -} - -progress::-moz-progress-bar { - background-color: #00a4dc -} - -progress::-webkit-progress-value { - background-color: #00a4dc -} - -progress[aria-valuenow]:before { - border-radius: .4em; - background-color: #00a4dc -} - -.localnav { - margin-bottom: 2.2em !important -} - -@media all and (min-width:50em) { - - .type-interior>.ui-panel-content-wrap>div[data-role=content], - .type-interior>div[data-role=content] { - padding-right: 0; - padding-left: 0; - padding-top: 0; - overflow: hidden - } -} - -.dashboardDocument .dashboardEntryHeaderButton, -.dashboardDocument .lnkManageServer { - display: none !important -} - -.adminDrawerLogo { - padding: 1.5em 1em 1.2em; - border-bottom: 1px solid #e0e0e0; - margin-bottom: 1em; - display: block -} - -.adminDrawerLogo img { - height: 4em -} - -div[data-role=controlgroup] a[data-role=button] { - display: inline-block !important; - margin: 0 !important; - box-shadow: none !important; - border-radius: 0 -} - -div[data-role=controlgroup] a[data-role=button]:first-child { - border-bottom-left-radius: .3125em; - border-top-left-radius: .3125em -} - -div[data-role=controlgroup] a[data-role=button]:last-child { - border-bottom-right-radius: .3125em; - border-top-right-radius: .3125em -} - -div[data-role=controlgroup] a[data-role=button]+a[data-role=button] { - border-left-width: 0 !important; - margin: 0 0 0 -.4em !important -} - -div[data-role=controlgroup] a.ui-btn-active { - background: #00a4dc !important; - color: #292929 !important -} - -.header .imageLink { - display: inline-block -} - -.header .imageLink img { - height: 2.1em; - vertical-align: middle -} - -.content-primary { - padding-top: 6em; - padding-right: 1em; - padding-left: 1em -} - -.withTabs .content-primary { - padding-top: 9em !important -} - -@media all and (min-width:40em) { - .content-primary { - padding-top: 7em - } - - .withTabs .content-primary { - padding-top: 10em !important - } -} - -@media all and (min-width:84em) { - .withTabs .content-primary { - padding-top: 7em !important - } -} - -.content-primary ul:first-child { - margin-top: 0 -} - -.dashboardSections { - display: flex; - flex-direction: column -} - -.dashboardColumn { - display: flex; - flex-direction: column; - flex-shrink: 0; - flex-grow: 1 -} - -.activeSession:not(.playingSession) .sessionNowPlayingContent { - display: none -} - -.dashboardSection { - flex-shrink: 0; - margin: 0 0 2em -} - -.dashboardSection h3 { - margin-top: .5em; - margin-bottom: .5em -} - -.activeRecordingItems>.card { - width: 50% -} - -@media all and (min-width:70em) { - .dashboardSections { - flex-wrap: wrap; - flex-direction: row - } - - .dashboardColumn-2-60 { - width: 46% - } - - .dashboardColumn-2-40 { - width: 27% - } - - .dashboardSection { - padding: 0 1.5em - } - - .activeRecordingItems>.card { - width: 25% - } -} - -.premiumBanner img { - position: absolute; - text-align: right; - top: 0; - right: 0; - width: 4.4em; - height: 4.4em -} - -.wizardContent { - max-width: 62em; - padding: .5em 2em 1em; - margin: 0 auto; - background: #fff -} - -.wizardNavigation { - text-align: right -} - -.wizardContent form { - max-width: 100% -} - -.wizardContent h2 img { - height: 2.5em; - vertical-align: middle; - margin-right: .5em; - position: relative; - top: -.3em -} - -.scheduledTaskPaperIconItem { - outline: 0 !important -} - -.activeSession { - width: 100% !important -} - -.activitylogUserPhoto { - height:1.71em; - width:1.71em; - border-radius:100%; - margin-right:.5em; - background-size:cover; - background-repeat:no-repeat; - background-position:center; -} - -@media all and (min-width:40em) { - .activeSession { - width: 100% !important - } -} - -@media all and (min-width:50em) { - .activeSession { - width: 50% !important - } -} - -.sessionCardFooter { - padding-top: .5em !important; - padding-bottom: 1em !important; - border-top: 1px solid #eee; - text-align: center; - position: relative -} - -.sessionAppInfo { - padding: 0.5em; - overflow: hidden; -} - -.sessionCardButtons { - min-height: 2.7em -} - -.sessionCardButton { - margin: 0 -} - -.sessionNowPlayingContent { - background-size: cover; - background-repeat: no-repeat; - background-position: center center; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0 -} - -.sessionNowPlayingInnerContent { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - font-weight: 400 -} - -.sessionNowPlayingContent-withbackground+.sessionNowPlayingInnerContent { - color: #fff !important; - background: rgba(0, 0, 0, .7) -} - -.sessionAppName { - vertical-align: top; - max-width: 200px -} - -.sessionNowPlayingDetails { - display: flex; - position: absolute; - bottom: 0px; - width: 100%; -} - -.sessionNowPlayingInfo { - flex-grow: 1; - text-overflow: ellipsis; - padding: 0.8em 0.5em; -} - -.sessionAppInfo img { - max-width: 40px; - max-height: 40px; - margin-right: 8px; -} - -.sessionNowPlayingTime { - flex-shrink: 0; - align-self: flex-end; - text-overflow: ellipsis; - padding: 0.8em 0.5em; -} - -.sessionNowPlayingStreamInfo { - white-space: nowrap; -} - -.activeSession .playbackProgress, -.activeSession .transcodingProgress { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 6px; - width: 100%; -} - -.playbackProgress, -.transcodingProgress { - margin: 0px; - width: 100%; - background: transparent !important; -} - -.playbackProgress > div { - z-index: 1000; - background-color: #00a4dc; -} - -.transcodingProgress > div { - background-color: #dd4919; -} - -@media all and (max-width:34.375em) { - .sessionAppName { - max-width: 160px - } -} - -@media all and (max-width:31.25em) { - .sessionAppName { - max-width: 150px - } -} - -.disabledUser { - filter: grayscale(100%) -} - -.disabledUserBanner { - margin: 0 0 2em -} - -.appLinks a { - text-decoration: none !important -} - -.appLinks a+a { - margin-left: 5px -} - -.appLinks img { - height: 36px -} - -a[data-role=button] { - background-clip: padding-box; - cursor: pointer !important; - font-family: inherit !important; - font-weight: 500 !important; - margin: 0 .25em !important; - display: inline-block; - padding: .8em 1em; - text-align: center; - text-decoration: none !important; - background: #292929 !important; -} - -@keyframes rotating { - from { - transform: rotate(0) - } - - to { - transform: rotate(360deg) - } -} - -.rotatingCircle { - animation: rotating 2s linear infinite -} - -.pluginPreviewImg { - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) -} - -.ui-bar-a{ - text-align: center; - padding: 0 20px; -} diff --git a/src/css/fonts.css b/src/css/fonts.css deleted file mode 100644 index da5515fc1e..0000000000 --- a/src/css/fonts.css +++ /dev/null @@ -1,36 +0,0 @@ -html { - font-family: -apple-system, "Helvetica", system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; -} - -html { - font-size: 93%; - text-size-adjust: 100%; -} - -h1, h2, h3 { - /* For better bolding, since Helvetica does not support 500 weight, and 600 is too thick */ - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; -} - -h1 { - font-weight: 500; - font-size: 1.8em; -} - -h2 { - font-weight: 500; - font-size: 1.5em; -} - -h3 { - font-weight: 500; - font-size: 1.17em; -} - -.layout-tv { - font-size: 2.5vh; -} - -.layout-mobile { - font-size: 90%; -} diff --git a/src/css/ios.css b/src/css/ios.css deleted file mode 100644 index 47fa7bd538..0000000000 --- a/src/css/ios.css +++ /dev/null @@ -1,8 +0,0 @@ -html { - font-size: 82% !important -} - -.formDialogFooter { - position: static !important; - margin: 0 -1em !important -} \ No newline at end of file diff --git a/src/css/librarybrowser.css b/src/css/librarybrowser.css deleted file mode 100644 index 1a41fe8015..0000000000 --- a/src/css/librarybrowser.css +++ /dev/null @@ -1,933 +0,0 @@ -.headerUserImage, -.navMenuOption, -.pageTitle { - vertical-align: middle -} - -.detailButton-mobile, -.itemLinks, -.listPaging, -.sectionTabs, -.viewSettings { - text-align: center -} - -.headerSelectedPlayer, -.itemMiscInfo, -.navMenuOptionText { - text-overflow: ellipsis; - overflow: hidden -} - -.libraryPage { - padding-top: 7em !important -} - -.itemDetailPage { - padding-top: 4em !important -} - -.standalonePage { - padding-top: 4.5em !important -} - -.wizardPage { - padding-top: 7em !important -} - -.libraryPage:not(.noSecondaryNavPage) { - padding-top: 7.5em !important -} - -.absolutePageTabContent { - position: absolute; - left: 0; - right: 0; - bottom: 0; - z-index: 1; - margin: 0 !important; - top: 6.9em !important; - transition: transform .2s ease-out -} - -.pageTabContent:not(.is-active) { - display: none !important -} - -.headerUserImage { - background-size: contain; - background-repeat: no-repeat; - background-position: center center; - border-radius: 100em; - display: inline-block -} - -.headerUserButtonRound div { - border-radius: 100em; - background-size: cover; - background-repeat: no-repeat; - background-position: center center; -} - -.headerButton { - flex-shrink: 0 -} - -.hideMainDrawer .mainDrawerButton { - display: none -} - -.noHeaderRight .headerRight, -.noHomeButtonHeader .headerHomeButton { - display: none !important -} - -.pageTitle { - display: inline-flex; - margin: .3em 0 0 .5em; - height: 1.7em; - align-items: center; - flex-shrink: 1 -} - -.headerLeft, -.skinHeader { - display: flex; -} - -.detailButton-mobile, -.skinHeader { - flex-direction: column; -} - -.pageTitleWithLogo { - background-position: left center; - background-size: contain; - background-repeat: no-repeat; - width: 13.2em -} - -.skinHeader { - position: fixed; - right: 0; - left: 0; - z-index: 999; - top: 0; - border: 0; - display: flex; - flex-direction: column; - contain: layout style paint -} - -.headerLeft, -.headerRight { - justify-content: center; -} - -.hiddenViewMenuBar .skinHeader { - display: none -} - -.headerTop { - padding: .54em 0 -} - -.headerLeft { - display: flex; - align-items: center; - flex-grow: 1; - overflow: hidden; - justify-content: left; -} - -.sectionTabs { - width: 100% -} - -.headerRight { - display: flex; - align-items: center; - justify-content: flex-end -} - -.selectedMediaFolder { - background-color: #f2f2f2 !important -} - -.navMenuOption { - display: flex !important; - align-items: center; - text-decoration: none; - color: inherit; - padding: .9em 0 .9em 2.4em !important; - flex-grow: 1; - font-weight: 400 !important; - margin: 0 !important; - border-radius: 0 !important -} - -.navMenuOptionIcon { - margin-right: 1.2em; - flex-shrink: 0 -} - -.navMenuOptionText { - white-space: nowrap -} - -.sidebarHeader { - padding-left: 1.2em; - margin: 1em 0 .5em -} - -.dashboardDocument .skinBody { - transition: left ease-in-out .3s, padding ease-in-out .3s; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0 -} - -.layout-desktop .searchTabButton, -.layout-mobile .searchTabButton, -.layout-tv .headerSearchButton { - display: none !important -} - -.mainDrawer-scrollContainer { - padding-bottom: 10vh -} - -@media all and (min-width:40em) { - .dashboardDocument .adminDrawerLogo, - .dashboardDocument .mainDrawerButton { - display: none !important - } - - .dashboardDocument .mainDrawer { - z-index: inherit !important; - left: 0 !important; - top: 0 !important; - transform: none !important; - box-shadow: none !important; - width: 20.205em !important; - font-size: 94% - } - - .dashboardDocument .mainDrawer-scrollContainer { - margin-top: 5em !important - } - - .dashboardDocument .skinBody { - left: 20em - } -} - -@media all and (max-width:60em) { - .libraryDocument .mainDrawerButton { - display: none - } -} - -@media all and (max-width:84em) { - .withSectionTabs .headerTop { - padding-bottom: 0.2em; - } - - .sectionTabs { - font-size: 83.5%; - } -} - -@media all and (min-width:84em) { - .headerTop { - padding: 1.489em 0 - } - - .headerTabs { - align-self: center; - width: auto; - align-items: center; - justify-content: center; - margin-top: -3.34em; - position: relative; - top: -1.05em - } - - .libraryPage:not(.noSecondaryNavPage) { - padding-top: 4.6em !important - } - - .pageWithAbsoluteTabs:not(.noSecondaryNavPage) { - padding-top: 6.7em !important - } - - .absolutePageTabContent { - top: 5.7em !important - } - - .dashboardDocument .mainDrawer-scrollContainer { - margin-top: 6em !important; - } -} - -.headerSelectedPlayer { - max-width: 10em; - white-space: nowrap -} - -@media all and (max-width:37.5em) { - .headerSelectedPlayer { - display: none - } -} - -.hidingAnimatedTab { - visibility: hidden -} - -.headerArrowImage { - height: 20px; - margin-left: .5em -} - -.backdropContainer { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1 -} - -.libraryPage .header { - padding-bottom: 0 -} - -.flexPageTabContent.is-active { - display: flex !important -} - -.viewSettings { - margin: 0 0 .25em -} - -.viewControls+.listTopPaging { - margin-left: .5em !important -} - -.criticReview { - margin: 1.5em 0; - background: #222; - padding: .8em .8em .8em 3em; - border-radius: .3em; - position: relative -} - -.detailLogo, -.itemBackdrop { - background-repeat: no-repeat; - background-position: center center -} - -.criticReview:first-child { - margin-top: .5em -} - -.criticReview img { - width: 2.4em -} - -.criticRatingScore { - margin-bottom: .5em -} - -.itemTag { - display: inline-block; - margin-right: 1em -} - -.itemOverview { - white-space: pre-wrap -} - -.itemLinks { - padding: 0 -} - -.itemLinks p { - margin: .5em 0 -} - -.reviewLink, -.reviewerName { - margin-top: .5em -} - -.reviewerName { - color: #ccc -} - -.reviewDate { - margin-left: 1em -} - -.reviewScore { - position: absolute; - left: .8em -} - -.itemBackdrop { - background-size: cover; - height: 50vh; - position: relative -} - -.itemBackdropProgressBar { - position: absolute !important; - bottom: 0; - left: 0; - right: 0 -} - -.itemBackdropFader { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - height: 15vh -} - -.desktopMiscInfoContainer { - position: absolute; - bottom: .75em -} - -.detailImageContainer { - width: 280px; - margin-right: 2em; - flex-shrink: 0; -} - -.detailPagePrimaryContent { - position: relative; - flex-grow: 1 -} - -.detailLogo { - width: 21.3em; - height: 5em; - position: absolute; - top: 13.5%; - right: 19.5%; - background-size: contain -} - -@media all and (max-width:87.5em) { - .detailLogo { - right: 5% - } -} - -@media all and (max-width:75em) { - .detailLogo { - right: 2% - } -} - -@media all and (max-width:68.75em) { - .detailLogo { - width: 14.91em; - height: 3.5em; - right: 5%; - bottom: 5%; - top: auto; - background-position: center right; - display: none - } -} - -.itemDetailImage { - width: 100%; - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) -} - -.thumbDetailImageContainer { - width: 400px -} - -@media all and (max-width:62.5em) { - .detailPageContent { - position: relative - } - - .detailImageContainer { - position: absolute; - top: -90px; - left: 5%; - width: auto - } - - .itemDetailImage { - height: 120px; - width: auto !important - } - - .btnPlaySimple { - display: none !important - } -} - -@media all and (min-width:62.5em) { - .itemBackdrop { - display: none - } - - .detailPagePrimaryContainer { - display: flex; - margin-bottom: 3em - } -} - -@media all and (max-width:75em) { - .lnkSibling { - display: none !important - } -} - -.parentName { - display: block; - margin-bottom: .5em -} - -.emby-button.detailFloatingButton { - position: absolute; - background-color: rgba(0, 0, 0, .5) !important; - z-index: 1; - top: 50%; - left: 50%; - margin: -2.2em 0 0 -2.2em; - border: 2.7px solid rgba(255, 255, 255, .6); - padding: .38em !important; - color: rgba(255, 255, 255, .76) -} - -.emby-button.detailFloatingButton i { - font-size: 3.5em -} - -@media all and (max-width:62.5em) { - .parentName { - margin-bottom: 1em - } - - .itemDetailPage { - padding-top: 0 !important - } - - .detailimg-hidemobile { - display: none - } -} - -@media all and (min-width:31.25em) { - .mobileDetails { - display: none - } -} - -@media all and (max-width:31.25em) { - .desktopDetails { - display: none !important - } -} - -.detailButton-mobile, -.mainDetailButtons { - display: flex; -} - -.itemName { - margin: .5em 0 -} - -.empty { - margin: 0 -} - -.detailCollapsibleSection:not(.hide)+.detailCollapsibleSection { - margin-top: -2em -} - -.detailPageCollabsible { - margin-top: 0 -} - -.mainDetailButtons { - display: flex; - align-items: center; - flex-wrap: wrap; - margin: 1em 0 -} - -.recordingFields button { - margin-left: 0; - margin-right: .5em; - flex-shrink: 0 -} - -.mainDetailButtons.hide+.recordingFields { - margin-top: 1.5em !important -} - -.detailButton-mobile { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - margin: 0 !important; - padding: .5em .7em !important -} - -.detailButton { - margin: 0 .5em 0 0 !important -} - -@media all and (min-width:29em) { - .detailButton-mobile { - padding-left: .75em !important; - padding-right: .75em !important - } -} - -@media all and (min-width:32em) { - .detailButton-mobile { - padding-left: .8em !important; - padding-right: .8em !important - } -} - -@media all and (min-width:35em) { - .detailButton-mobile { - padding-left: .85em !important; - padding-right: .85em !important - } -} - -.detailButton-mobile-content { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center -} - -.detailButton-mobile-icon { - font-size: 1.6em !important; - width: 1em; - height: 1em -} - -.detailImageProgressContainer { - position: absolute; - bottom: 4px; - right: 1px; - left: 1px; - text-align: center -} - -.detailButton-mobile-text { - margin-top: .7em; - font-size: 80%; - font-weight: 400 -} - -@media all and (max-width:62.5em) { - .mainDetailButtons { - margin-left: -.5em - } - - .detailButton { - display: none !important - } -} - -@media all and (min-width:62.5em) { - .detailButton-mobile { - display: none !important - } - - .mainDetailButtons { - font-size: 108%; - margin: 1.25em 0 - } -} - -.listTopPaging, -.viewControls { - display: inline-block -} - -@media all and (max-width:50em) { - .editorMenuLink { - display: none - } -} - -.itemMiscInfo { - display: flex; - flex-wrap: wrap; - align-items: center -} - -@media all and (max-width:31.25em) { - .mobileDetails .itemMiscInfo { - text-align: center; - justify-content: center - } - - .itemMiscInfo .endsAt { - display: none - } -} - -.layout-tv .detailVerticalSection { - margin-bottom: 3.4em !important -} - -.detailPageContent { - border-spacing: 0; - border-collapse: collapse; - padding-top: 3em -} - -@media all and (max-width:62.5em) { - .detailPageContent-nodetailimg { - padding-top: 0; - margin-top: -3em - } -} - -.mediaInfoStream { - margin: 0 3em 0 0; - display: inline-block; - vertical-align: top -} - -.mediaInfoStreamType { - display: block; - margin: 1em 0 -} - -.mediaInfoAttribute, -.mediaInfoLabel { - display: inline-block -} - -.mediaInfoLabel { - margin-right: 1em; - font-weight: 600 -} - -.recordingProgressBar::-moz-progress-bar { - background-color: #c33 -} - -.recordingProgressBar::-webkit-progress-value { - background-color: #c33 -} - -.recordingProgressBar[aria-valuenow]:before { - background-color: #c33 -} - -.timelineHeader { - margin-bottom: .25em; - line-height: 1.25em; - line-height: initial -} - -.itemsContainer { - margin: 0 auto -} - -@media all and (max-height:31.25em) { - .itemBackdrop { - height: 52vh - } -} - -@media all and (max-width:75em) { - .listViewUserDataButtons { - display: none !important - } -} - -@media all and (max-width:62.5em) { - .detailsHiddenOnMobile { - display: none - } -} - -.btnSyncComplete { - background: #673AB7 !important -} - -.btnSyncComplete i { - border-radius: 100em -} - -.bulletSeparator { - margin: 0 .35em -} - -.mediaInfoIcons { - display: flex; - align-items: center; - margin: 1em 0; - flex-wrap: wrap -} - -.verticalSection-extrabottompadding { - margin-bottom: 2.7em -} - -.sectionTitleButton, -.sectionTitleIconButton { - margin-right: 0 !important; - display: inline-block; - vertical-align: middle -} - -.sectionTitleContainer { - margin: 1.25em 0; -} - -.sectionTitleContainer > .sectionTitle { - margin: 0; - display: inline-block; - vertical-align: middle; -} - -/* these next two rules are for the scroller element headers */ -.sectionTitleContainer-cards { - margin: 0; - padding-top: 1.25em; -} - -div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { - margin: 0; - padding-top: 1.25em; -} - -.sectionTitleButton { - margin-left: 1.5em !important; - flex-shrink: 0 -} - -.sectionTitleButton + .sectionTitleButton { - margin-left: .5em !important -} - -.sectionTitleIconButton { - margin-left: 1.5em !important; - flex-shrink: 0; - font-size: 84% !important; - padding: .5em !important -} - -.horizontalItemsContainer { - display: flex -} - -.sectionTitleTextButton { - margin: 0 !important; - display: inline-flex !important; - color: inherit !important -} - -.sectionTitleTextButton:not(.padded-left) { - padding: 0 !important -} - -.sectionTitleTextButton.padded-left { - padding-bottom: 0 !important; - padding-right: 0 !important; - padding-top: 0 !important -} - -.sectionTitleTextButton>.sectionTitle { - margin-bottom: 0; - margin-top: 0 -} - -.padded-left { - padding-left: 3.3%; -} - -.padded-right { - padding-right: 3.3%; -} - -.padded-top { - padding-top: 1em; -} - -.padded-bottom { - padding-bottom: 1em; -} - -.layout-tv .padded-top-focusscale { - padding-top: 1em; - margin-top: -1em; -} - -.layout-tv .padded-bottom-focusscale { - padding-bottom: 1em; - margin-bottom: -1em; -} - -@media all and (min-height:31.25em) { - .padded-left-withalphapicker { - padding-left: 7.5%; - } - - .padded-right-withalphapicker { - padding-right: 7.5%; - } -} - -.searchfields-icon { - color: #aaaaaa; -} - -.button-accent-flat { - color: #00a4dc !important; -} - -.clearLink { - text-decoration: none; - font-weight: inherit !important; - vertical-align: middle; - color: inherit !important -} - -.itemsViewSettingsContainer { - justify-content: center -} - -@media all and (min-width:40em) { - .listIconButton-autohide { - display: none !important - } -} - -@media all and (max-width:40em) { - .listTextButton-autohide { - display: none !important - } -} - -.itemsViewSettingsContainer>.button-flat { - margin: 0 -} diff --git a/src/css/livetv.css b/src/css/livetv.css deleted file mode 100644 index 93e3e029c8..0000000000 --- a/src/css/livetv.css +++ /dev/null @@ -1,9 +0,0 @@ -.guideVerticalScroller { - padding-bottom: 15em -} - -@media all and (min-width:62.5em) { - #guideTab { - padding-left: .5em - } -} \ No newline at end of file diff --git a/src/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff b/src/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff deleted file mode 100644 index 9357bfc6ff..0000000000 Binary files a/src/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff and /dev/null differ diff --git a/src/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 b/src/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 deleted file mode 100644 index db867bc362..0000000000 Binary files a/src/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 and /dev/null differ diff --git a/src/css/material-icons/style.css b/src/css/material-icons/style.css deleted file mode 100644 index 2d410b9985..0000000000 --- a/src/css/material-icons/style.css +++ /dev/null @@ -1,25 +0,0 @@ -@font-face { - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - src: local('Material Icons'), local('MaterialIcons-Regular'), url(flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2'), url(flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff) format('woff'); -} - -.md-icon { - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - letter-spacing: normal; - text-transform: none; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: 'liga'; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - font-feature-settings: "liga" 1; - line-height: 1; - overflow: hidden; - vertical-align: middle; -} diff --git a/src/css/scrollstyles.css b/src/css/scrollstyles.css deleted file mode 100644 index 69039ce341..0000000000 --- a/src/css/scrollstyles.css +++ /dev/null @@ -1,46 +0,0 @@ -.scrollX { - overflow-x: auto; - overflow-y: hidden; - white-space: nowrap; -} - -.smoothScrollX { - scroll-behavior: smooth; -} - -.hiddenScrollX, .layout-tv .scrollX { - scrollbar-width: none; -} - -.hiddenScrollX-forced { - scrollbar-width: none; -} - -.hiddenScrollX::-webkit-scrollbar, .layout-tv .scrollX::-webkit-scrollbar { - height: 0 !important; - display: none; -} - -.scrollY { - overflow-y: auto; - overflow-x: hidden; -} - -.smoothScrollY { - overflow-y: auto; - overflow-x: hidden; - scroll-behavior: smooth; -} - -.hiddenScrollY, .layout-tv .smoothScrollY { - scrollbar-width: none; -} - -.hiddenScrollY-forced { - scrollbar-width: none; -} - -.hiddenScrollY::-webkit-scrollbar, .layout-tv .smoothScrollY::-webkit-scrollbar, .layout-tv .scrollY::-webkit-scrollbar { - width: 0 !important; - display: none; -} diff --git a/src/css/site.css b/src/css/site.css deleted file mode 100644 index 6491799117..0000000000 --- a/src/css/site.css +++ /dev/null @@ -1,87 +0,0 @@ -body, -html { - margin: 0; - padding: 0; - height: 100% -} - -.backgroundContainer { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - contain: strict -} - -html { - line-height: 1.35 -} - -.layout-mobile, -.layout-tv { - user-select: none -} - -body { - overflow-x: hidden; - background-color: transparent !important; -} - -.mainAnimatedPage { - contain: style size !important -} - -.pageContainer { - overflow-x: visible !important -} - -.bodyWithPopupOpen { - overflow-y: hidden !important -} - -div[data-role=page] { - outline: 0 -} - -.pageTitle { - margin-top: 0; - font-family: inherit -} - -.fieldDescription { - padding-left: .15em; - font-weight: 400; - white-space: normal !important -} - -.fieldDescription+.fieldDescription { - margin-top: .3em -} - -.content-primary, -.padded-bottom-page, -.page, -.pageWithAbsoluteTabs .pageTabContent { - /* provides room for the music controls */ - padding-bottom: 5em !important; -} - -@media all and (min-width:50em) { - .readOnlyContent, - form { - max-width: 54em - } -} - -.headerHelpButton { - margin-left: 1.25em !important; - padding-bottom: .4em !important; - padding-top: .4em !important -} - -.mediaInfoContent { - margin-left: auto; - margin-right: auto; - width: 85% -} diff --git a/src/css/videoosd.css b/src/css/videoosd.css deleted file mode 100644 index f20abf9d07..0000000000 --- a/src/css/videoosd.css +++ /dev/null @@ -1,222 +0,0 @@ -.chapterThumbTextContainer, -.videoOsdBottom { - user-select: none; -} - -.osdPoster img, -.pageContainer, -.videoOsdBottom { - bottom: 0; - left: 0; - right: 0 -} - -.osdHeader { - transition: opacity .3s ease-out; - position: relative; - z-index: 1; - background: rgba(0, 0, 0, 0.7) !important; - backdrop-filter: none !important; - color: #eee !important; -} - -.osdHeader-hidden { - opacity: 0 -} - -.osdHeader .headerButton:not(.headerBackButton):not(.headerCastButton) { - display: none -} - -.chapterThumbContainer { - box-shadow: 0 0 1.9vh #000; - flex-grow: 1; - position: relative -} - -.chapterThumb { - background-position: center center; - background-size: contain; - background-repeat: no-repeat; - border: 0; - height: 20vh; - min-width: 20vh -} - -@media all and (orientation:portrait) { - .chapterThumb { - height: 30vw; - min-width: 30vw - } -} - -@media all and (max-height:50em) and (orientation:landscape) { - .chapterThumb { - height: 30vh; - min-width: 30vh - } -} - -.chapterThumbTextContainer { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: rgba(0, 0, 0, .7); - padding: .25em .5em; - user-select: none -} - -.chapterThumbText { - padding: .25em 0; - margin: 0; - opacity: 1 -} - -.chapterThumbText-dim { - opacity: .6 -} - -.videoOsdBottom { - position: fixed; - background-color: rgba(0, 0, 0, 0.7); - padding: 1%; - display: flex; - flex-direction: row; - will-change: opacity; - transition: opacity 0.3s ease-out; - color: #fff; - user-select: none -} - -.videoOsdBottom-hidden { - opacity: 0 -} - -.osdControls { - flex-grow: 1 -} - -.videoOsdBottom .buttons { - padding: .25em 0 0; - display: flex; - flex-wrap: wrap; - align-items: center -} - -.osdVolumeSliderContainer { - width: 9em; - flex-grow: 1 -} - -.osdMediaInfo, -.volumeButtons { - display: flex; - align-items: center; -} - -.volumeButtons { - margin: 0 .5em 0 auto; - display: flex; - align-items: center -} - -.osdTimeText { - margin-left: 1em; - user-select: none -} - -.osdPoster { - width: 10%; - position: relative; - margin-right: .5em -} - -.osdPoster img { - position: absolute; - height: auto; - width: 100%; - box-shadow: 0 0 1.9vh #000; - border: .08em solid #222; - user-drag: none; - user-select: none -} - -.osdTitle, -.osdTitleSmall { - margin: 0 1em 0 0 -} - -.osdMediaInfo { - display: flex; - align-items: center -} - -.osdSecondaryMediaInfo { - padding-left: .6em !important -} - -.osdTextContainer { - display: flex; - align-items: center; - user-select: none; - margin-bottom: .7em; - padding-left: .5em -} - -.osdMainTextContainer { - align-items: baseline -} - -.osdMediaStatus { - margin-left: auto; -} - -@keyframes spin { - 100% { - transform:rotate(360deg); - } -} - -.osdMediaStatus .animate { - animation:spin 4s linear infinite; -} - -.pageContainer { - top: 0; - position: fixed -} - -@media all and (max-width:30em) { - - .btnFastForward, - .btnRewind, - .osdMediaInfo, - .osdPoster { - display: none !important - } -} - -@media all and (max-width:33.75em) { - .videoOsdBottom .paper-icon-button-light { - margin: 0 - } -} - -@media all and (max-width:43em) { - .videoOsdBottom .volumeButtons, - .osdMediaStatus span { - display: none !important - } -} -@media all and (max-width:50em) { - .videoOsdBottom .btnFastForward, .videoOsdBottom .btnRewind { - display: none !important - } -} - -@media all and (max-width:75em) { - .videoOsdBottom .endsAtText { - display: none !important - } -} diff --git a/src/dashboard.html b/src/dashboard.html index b724ebff46..adb38a9ad3 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -2,10 +2,10 @@
-
+ -
+
@@ -118,5 +116,4 @@
-
diff --git a/src/dashboardgeneral.html b/src/dashboardgeneral.html index 91708f382a..d0ef17385f 100644 --- a/src/dashboardgeneral.html +++ b/src/dashboardgeneral.html @@ -1,10 +1,7 @@
-
-
-

${TabSettings}

@@ -31,9 +28,7 @@ ${LaunchWebAppOnStartup} -
- ${LaunchWebAppOnStartupHelp} -
+
${LaunchWebAppOnStartupHelp}
@@ -44,7 +39,7 @@
- +
${LabelCachePathHelp}
@@ -54,28 +49,13 @@
- +
${LabelMetadataPathHelp}
-
-

${HeaderAutomaticUpdates}

- -
- -
${LabelAllowServerAutoRestartHelp}
-
-
-

${HeaderBranding}

@@ -94,7 +74,6 @@
-
diff --git a/src/device.html b/src/device.html index b63d298ca6..11fc9671b1 100644 --- a/src/device.html +++ b/src/device.html @@ -1,11 +1,7 @@
-
- -
-

@@ -18,10 +14,11 @@
- +
-
-
\ No newline at end of file +
diff --git a/src/devices.html b/src/devices.html index b05f10fa19..4e6552f05e 100644 --- a/src/devices.html +++ b/src/devices.html @@ -7,9 +7,7 @@ ${Help}
- -
-
+
-
\ No newline at end of file +
diff --git a/src/dlnaprofile.html b/src/dlnaprofile.html index 2054bce3db..2420ab4c35 100644 --- a/src/dlnaprofile.html +++ b/src/dlnaprofile.html @@ -98,7 +98,7 @@

${HeaderHttpHeaders}

@@ -221,7 +221,7 @@

${HeaderXmlDocumentAttributes}

diff --git a/src/dlnaprofiles.html b/src/dlnaprofiles.html index ac9e961370..c1ae38609c 100644 --- a/src/dlnaprofiles.html +++ b/src/dlnaprofiles.html @@ -9,7 +9,7 @@

${HeaderCustomDlnaProfiles}

- add + add ${Help}
diff --git a/src/dlnasettings.html b/src/dlnasettings.html index 8c44f751a5..8068acf5ab 100644 --- a/src/dlnasettings.html +++ b/src/dlnasettings.html @@ -8,7 +8,7 @@

${TabSettings}

- ${Help} + ${Help}
diff --git a/src/components/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css similarity index 72% rename from src/components/emby-button/emby-button.css rename to src/elements/emby-button/emby-button.css index 38d62b1299..a19ce571e2 100644 --- a/src/components/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -8,20 +8,26 @@ font-size: inherit; font-family: inherit; color: inherit; + + /* These are getting an outline in opera tv browsers, which run chrome 30 */ + outline: none !important; outline-width: 0; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; user-select: none; cursor: pointer; z-index: 0; padding: 0.9em 1em; vertical-align: middle; border: 0; - vertical-align: middle; border-radius: 0.2em; - /* These are getting an outline in opera tv browsers, which run chrome 30 */ - outline: none !important; - position: relative; font-weight: 600; + + /* Disable webkit tap highlighting */ + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-decoration: none; + /* Not crazy about this but it normalizes heights between anchors and buttons */ line-height: 1.35; transform-origin: center; @@ -29,7 +35,7 @@ } .emby-button.show-focus:focus { - transform: scale(1.4); + transform: scale(1.2); z-index: 1; } @@ -41,10 +47,6 @@ background: transparent; } -.button-flat:hover { - opacity: .5; -} - .button-link { background: transparent; margin: 0; @@ -79,7 +81,7 @@ display: block; align-items: center; justify-content: center; - margin: .25em 0; + margin: 0.25em 0; width: 100%; } @@ -88,12 +90,15 @@ display: inline-flex; align-items: center; box-sizing: border-box; - margin: 0 .29em; + margin: 0 0.29em; background: transparent; text-align: center; font-size: inherit; font-family: inherit; color: inherit; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; user-select: none; cursor: pointer; z-index: 0; @@ -101,51 +106,54 @@ min-height: initial; width: auto; height: auto; - padding: .556em; + padding: 0.556em; vertical-align: middle; border: 0; - vertical-align: middle; + /* These are getting an outline in opera tv browsers, which run chrome 30 */ outline: none !important; - position: relative; overflow: hidden; border-radius: 50%; + + /* Disable webkit tap highlighting */ + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); justify-content: center; transform-origin: center; transition: 0.2s; } .paper-icon-button-light.show-focus:focus { - transform: scale(1.6); + transform: scale(1.3); z-index: 1; } - .paper-icon-button-light::-moz-focus-inner { - border: 0; - } +.paper-icon-button-light::-moz-focus-inner { + border: 0; +} - .paper-icon-button-light:disabled { - opacity: 0.3; - cursor: default; - } +.paper-icon-button-light:disabled { + opacity: 0.3; + cursor: default; +} - .paper-icon-button-light > i { - font-size: 1.66956521739130434em; - /* Make sure its on top of the ripple */ - position: relative; - z-index: 1; - vertical-align: middle; - } +.paper-icon-button-light > i { + font-size: 1.66956521739130434em; - .paper-icon-button-light > div { - max-height: 100%; - transform: scale(1.8); - position: relative; - z-index: 1; - vertical-align: middle; - display: inline; - margin: 0 auto; - } + /* Make sure its on top of the ripple */ + position: relative; + z-index: 1; + vertical-align: middle; +} + +.paper-icon-button-light > div { + max-height: 100%; + transform: scale(1.8); + position: relative; + z-index: 1; + vertical-align: middle; + display: inline; + margin: 0 auto; +} .emby-button-foreground { position: relative; @@ -159,7 +167,6 @@ .filterButtonBubble { color: #fff; position: absolute; - background: #444; top: 0; right: 0; width: 1.6em; @@ -170,7 +177,7 @@ justify-content: center; font-size: 82%; border-radius: 100em; - box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px -1px rgba(0, 0, 0, 0.2); - background: #03A9F4; + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); + background: #03a9f4; font-weight: bold; } diff --git a/src/components/emby-button/emby-button.js b/src/elements/emby-button/emby-button.js similarity index 100% rename from src/components/emby-button/emby-button.js rename to src/elements/emby-button/emby-button.js diff --git a/src/components/emby-button/paper-icon-button-light.js b/src/elements/emby-button/paper-icon-button-light.js similarity index 100% rename from src/components/emby-button/paper-icon-button-light.js rename to src/elements/emby-button/paper-icon-button-light.js diff --git a/src/components/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css similarity index 81% rename from src/components/emby-checkbox/emby-checkbox.css rename to src/elements/emby-checkbox/emby-checkbox.css index 4e27928e2a..42a9207560 100644 --- a/src/components/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -32,12 +32,16 @@ .emby-checkbox { position: absolute; + /* This is for focusing purposes, so the focusManager doesn't skip over it */ width: 1px; height: 1px; margin: 0; padding: 0; opacity: 0; + -ms-appearance: none; + -moz-appearance: none; + -webkit-appearance: none; appearance: none; border: none; } @@ -46,14 +50,13 @@ position: absolute; top: 3px; left: 0; - display: inline-block; box-sizing: border-box; width: 1.83em; height: 1.83em; margin: 0; overflow: hidden; border: 2px solid currentcolor; - border-radius: .14em; + border-radius: 0.14em; z-index: 2; display: flex; align-items: center; @@ -65,7 +68,8 @@ color: #fff; } -.checkboxIcon-checked { +.checkboxIcon-checked, +.emby-checkbox-label .checkboxIcon-checked { display: none; } @@ -98,18 +102,18 @@ flex-wrap: wrap; } - .checkboxList-verticalwrap > .emby-checkbox-label { - display: inline-flex; - margin: .3em 0 .3em 0; - width: 12em; - } +.checkboxList-verticalwrap > .emby-checkbox-label { + display: inline-flex; + margin: 0.3em 0 0.3em 0; + width: 12em; +} .checkboxList-paperList { padding: 1em !important; } .checkboxListLabel { - margin-bottom: .25em; + margin-bottom: 0.25em; } @keyframes repaintChrome { @@ -121,3 +125,13 @@ padding: 0; } } + +@-webkit-keyframes repaintChrome { + from { + padding: 0; + } + + to { + padding: 0; + } +} diff --git a/src/components/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js similarity index 90% rename from src/components/emby-checkbox/emby-checkbox.js rename to src/elements/emby-checkbox/emby-checkbox.js index d6276e826c..b5e587d5a6 100644 --- a/src/components/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -5,7 +5,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b function onKeyDown(e) { // Don't submit form on enter - if (e.keyCode === 13) { + // Real (non-emulator) Tizen does nothing on Space + if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault(); this.checked = !this.checked; @@ -56,8 +57,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b var checkedIcon = this.getAttribute('data-checkedicon') || 'check'; var uncheckedIcon = this.getAttribute('data-uncheckedicon') || ''; - var checkHtml = '' + checkedIcon + ''; - var uncheckedHtml = '' + uncheckedIcon + ''; + var checkHtml = '' + checkedIcon + ''; + var uncheckedHtml = '' + uncheckedIcon + ''; labelElement.insertAdjacentHTML('beforeend', '' + checkHtml + uncheckedHtml + ''); labelTextElement.classList.add('checkboxLabel'); diff --git a/src/components/emby-collapse/emby-collapse.css b/src/elements/emby-collapse/emby-collapse.css similarity index 85% rename from src/components/emby-collapse/emby-collapse.css rename to src/elements/emby-collapse/emby-collapse.css index 0a982e975d..dd22c20b5b 100644 --- a/src/components/emby-collapse/emby-collapse.css +++ b/src/elements/emby-collapse/emby-collapse.css @@ -1,5 +1,5 @@ .emby-collapse { - margin: .5em 0; + margin: 0.5em 0; } .collapseContent { @@ -18,10 +18,9 @@ text-transform: none; width: 100%; text-align: left; - text-transform: none; - border-width: 0 0 .1em 0; + border-width: 0 0 0.1em 0; border-style: solid; - padding-left: .1em; + padding-left: 0.1em; background: transparent; box-shadow: none; } @@ -30,7 +29,7 @@ transform-origin: 50% 50%; transition: transform 180ms ease-out; position: absolute; - right: .5em; + right: 0.5em; font-size: 1.5em; } diff --git a/src/components/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js similarity index 96% rename from src/components/emby-collapse/emby-collapse.js rename to src/elements/emby-collapse/emby-collapse.js index 09b8c70d8f..fdd77adf0b 100644 --- a/src/components/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -80,7 +80,7 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun var title = this.getAttribute('title'); - var html = ''; + var html = ''; this.insertAdjacentHTML('afterbegin', html); @@ -97,4 +97,4 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun prototype: EmbyButtonPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css new file mode 100644 index 0000000000..18ad37a87a --- /dev/null +++ b/src/elements/emby-input/emby-input.css @@ -0,0 +1,44 @@ +.emby-input { + display: block; + margin: 0; + margin-bottom: 0 !important; + font-family: inherit; + font-weight: inherit; + padding: 0.4em 0.25em; + + /* must the 16px or larger to prevent iOS page zoom on focus */ + font-size: 110%; + + /* prevent padding from causing width overflow */ + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: none !important; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + width: 100%; +} + +.emby-input::-moz-focus-inner { + border: 0; +} + +.emby-input:required { + box-shadow: none; +} + +.inputContainer { + margin-bottom: 1.8em; +} + +.inputLabel { + display: inline-block; + margin-bottom: 0.25em; +} + +.emby-input + .fieldDescription { + margin-top: 0.25em; +} + +.emby-input-iconbutton { + -webkit-align-self: flex-end; + align-self: flex-end; +} diff --git a/src/components/emby-input/emby-input.js b/src/elements/emby-input/emby-input.js similarity index 99% rename from src/components/emby-input/emby-input.js rename to src/elements/emby-input/emby-input.js index 7d2ea63a0d..03ba2b93aa 100644 --- a/src/components/emby-input/emby-input.js +++ b/src/elements/emby-input/emby-input.js @@ -123,4 +123,4 @@ define(['layoutManager', 'browser', 'dom', 'css!./emby-input', 'registerElement' prototype: EmbyInputPrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-progressring/emby-progressring.css b/src/elements/emby-progressring/emby-progressring.css similarity index 94% rename from src/components/emby-progressring/emby-progressring.css rename to src/elements/emby-progressring/emby-progressring.css index 7bef7c35f7..014db3aedf 100644 --- a/src/components/emby-progressring/emby-progressring.css +++ b/src/elements/emby-progressring/emby-progressring.css @@ -11,9 +11,9 @@ width: 100%; height: 100%; border-radius: 50%; - border: .25em solid rgba(0, 0, 0, 1); + border: 0.25em solid rgba(0, 0, 0, 1); box-sizing: border-box; - background: rgba(0, 0, 0, .9); + background: rgba(0, 0, 0, 0.9); display: flex; align-items: center; justify-content: center; @@ -51,7 +51,7 @@ width: 200%; height: 200%; border-radius: 50%; - border-width: .25em; + border-width: 0.25em; border-style: solid; box-sizing: border-box; } diff --git a/src/components/emby-progressring/emby-progressring.js b/src/elements/emby-progressring/emby-progressring.js similarity index 99% rename from src/components/emby-progressring/emby-progressring.js rename to src/elements/emby-progressring/emby-progressring.js index 80c5458528..edc635947c 100644 --- a/src/components/emby-progressring/emby-progressring.js +++ b/src/elements/emby-progressring/emby-progressring.js @@ -98,4 +98,4 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ }); return EmbyProgressRing; -}); \ No newline at end of file +}); diff --git a/src/components/emby-progressring/emby-progressring.template.html b/src/elements/emby-progressring/emby-progressring.template.html similarity index 99% rename from src/components/emby-progressring/emby-progressring.template.html rename to src/elements/emby-progressring/emby-progressring.template.html index bebefe5f51..a1be620b33 100644 --- a/src/components/emby-progressring/emby-progressring.template.html +++ b/src/elements/emby-progressring/emby-progressring.template.html @@ -20,4 +20,4 @@
-
\ No newline at end of file +
diff --git a/src/components/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css similarity index 78% rename from src/components/emby-radio/emby-radio.css rename to src/elements/emby-radio/emby-radio.css index 6b8575bc86..6db3c39e4d 100644 --- a/src/components/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -4,29 +4,29 @@ display: inline-block; box-sizing: border-box; margin: 0; - padding-left: 0; + padding-left: 24px; } .radio-label-block { display: flex; align-items: center; - margin-top: .5em; - margin-bottom: .5em; -} - -.mdl-radio { - padding-left: 24px; + margin-top: 0.5em; + margin-bottom: 0.5em; } .mdl-radio__button { line-height: 24px; position: absolute; + /* 1px is for focusing purposes, so the focusManager doesn't skip over it */ width: 1px; height: 1px; margin: 0; padding: 0; opacity: 0; + -ms-appearance: none; + -moz-appearance: none; + -webkit-appearance: none; appearance: none; border: none; } @@ -51,7 +51,7 @@ } .mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle { - border: 2px solid rgba(0,0,0, 0.26); + border: 2px solid rgba(0, 0, 0, 0.26); cursor: auto; } @@ -67,27 +67,31 @@ cursor: pointer; transition-duration: 0.28s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-property: -webkit-transform; transition-property: transform; + transition-property: transform, -webkit-transform; + -webkit-transform: scale3d(0, 0, 0); transform: scale3d(0, 0, 0); border-radius: 50%; background: #00a4dc; } .mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { + -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } .mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - background: rgba(0,0,0, 0.26); + background: rgba(0, 0, 0, 0.26); cursor: auto; } .mdl-radio__button:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0px 10px rgba(255, 255, 255, 0.76); + box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.76); } .mdl-radio__button:checked:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0 10px rgba(0, 164, 220, 0.26) + box-shadow: 0 0 0 10px rgba(0, 164, 220, 0.26); } .mdl-radio__label { @@ -95,6 +99,6 @@ } .mdl-radio__button:disabled + .mdl-radio__label { - color: rgba(0,0,0, 0.26); + color: rgba(0, 0, 0, 0.26); cursor: auto; } diff --git a/src/components/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js similarity index 80% rename from src/components/emby-radio/emby-radio.js rename to src/elements/emby-radio/emby-radio.js index 3c72f91521..000c656822 100644 --- a/src/components/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -6,10 +6,17 @@ define(['css!./emby-radio', 'registerElement'], function () { function onKeyDown(e) { // Don't submit form on enter - if (e.keyCode === 13) { + // Real (non-emulator) Tizen does nothing on Space + if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault(); - this.checked = true; + if (!this.checked) { + this.checked = true; + + this.dispatchEvent(new CustomEvent('change', { + bubbles: true + })); + } return false; } @@ -45,4 +52,4 @@ define(['css!./emby-radio', 'registerElement'], function () { prototype: EmbyRadioPrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css similarity index 63% rename from src/components/emby-select/emby-select.css rename to src/elements/emby-select/emby-select.css index 4aff8cab92..9f07ca3f65 100644 --- a/src/components/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -2,52 +2,60 @@ display: block; margin: 0; margin-bottom: 0 !important; + /* Remove select styling */ + /* Font size must the 16px or larger to prevent iOS page zoom on focus */ font-size: 110%; + /* General select styles: change as needed */ font-family: inherit; font-weight: inherit; - padding: .5em 1.9em .5em .5em; + padding: 0.5em 1.9em 0.5em 0.5em; + /* Prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 100%; } - .emby-select[disabled] { - background: none !important; - border-color: transparent !important; - color: inherit !important; - appearance: none; - } - -.selectContainer-inline > .emby-select { - padding: .3em 1.9em .3em .5em; - font-size: inherit; +.emby-select[disabled] { + background: none !important; + border-color: transparent !important; + color: inherit !important; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } - .selectContainer-inline > .emby-select[disabled] { - padding-left: 0; - padding-right: 0; - } - .emby-select::-moz-focus-inner { border: 0; } +.selectContainer-inline > .emby-select { + padding: 0.3em 1.9em 0.3em 0.5em; + font-size: inherit; +} + +.selectContainer-inline > .emby-select[disabled] { + padding-left: 0; + padding-right: 0; +} + .emby-select-focusscale { transition: transform 180ms ease-out !important; + -webkit-transform-origin: center center; transform-origin: center center; } - .emby-select-focusscale:focus { - transform: scale(1.04); - z-index: 1; - } +.emby-select-focusscale:focus { + transform: scale(1.04); + z-index: 1; +} .emby-select + .fieldDescription { - margin-top: .25em; + margin-top: 0.25em; } .selectContainer { @@ -63,31 +71,36 @@ .selectLabel { display: block; - margin-bottom: .25em; + margin-bottom: 0.25em; } .selectContainer-inline > .selectLabel { margin-bottom: 0; - margin-right: .5em; + margin-right: 0.5em; flex-shrink: 0; } +.trackSelections > .selectContainer { + margin: 0.4em 0; +} + .emby-select-withcolor { + -webkit-appearance: none; appearance: none; - border-radius: .2em; + border-radius: 0.2em; } .selectArrowContainer { position: absolute; - right: .3em; - top: .2em; + right: 0.3em; + top: 0.2em; color: inherit; pointer-events: none; } .selectContainer-inline > .selectArrowContainer { top: initial; - bottom: .24em; + bottom: 0.24em; font-size: 90%; } @@ -96,7 +109,7 @@ } .selectArrow { - margin-top: .35em; + margin-top: 0.35em; font-size: 1.7em; } diff --git a/src/components/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js similarity index 98% rename from src/components/emby-select/emby-select.js rename to src/elements/emby-select/emby-select.js index 248e7ce570..02818c6630 100644 --- a/src/components/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
keyboard_arrow_down
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css new file mode 100644 index 0000000000..f59c2a3cd0 --- /dev/null +++ b/src/elements/emby-slider/emby-slider.css @@ -0,0 +1,236 @@ +:-ms-input-placeholder { + appearance: none; + -ms-appearance: none; + height: 2.223em; + margin: 0; +} + +.mdl-slider { + width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + height: 150%;/* 150% is needed, else ie and edge won't display the thumb properly */ + background: transparent; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: 0; + color: #00a4dc; + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; + z-index: 1; + cursor: pointer; + margin: 0; + + /* Disable webkit tap highlighting */ + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + display: block; + + font-size: inherit; /* Chrome and Firefox override font size for 'input' */ +} + +.mdl-slider::-moz-focus-outer { + border: 0; +} + +.mdl-slider::-ms-tooltip { + display: none; +} + +.mdl-slider::-webkit-slider-runnable-track { + background: transparent; +} + +.mdl-slider::-ms-track { + background: none; + color: transparent; + height: 0.2em; + width: 100%; + border: none; +} + +.mdl-slider::-ms-fill-lower { + display: none; +} + +.mdl-slider::-ms-fill-upper { + display: none; +} + +.slider-browser-edge { + margin-left: -0.16em; + margin-right: -0.16em; + width: 150%; /* need to occupy space */ +} + +.mdl-slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 1.08em; + height: 1.08em; + box-sizing: border-box; + border-radius: 50%; + background: #00a4dc; + border: none; + transition: 0.2s; + pointer-events: none; +} + +.mdl-slider-hoverthumb:hover::-webkit-slider-thumb { + transform: scale(1.3); +} + +.mdl-slider.show-focus:focus::-webkit-slider-thumb { + transform: scale(1.3); +} + +.slider-no-webkit-thumb::-webkit-slider-thumb { + opacity: 0 !important; +} + +.mdl-slider::-moz-range-thumb { + -moz-appearance: none; + width: 1.08em; + height: 1.08em; + box-sizing: border-box; + border-radius: 50%; + background: #00a4dc; + background-image: none; + border: none; + transition: 0.2s; +} + +.mdl-slider-hoverthumb:hover::-moz-range-thumb { + transform: scale(1.3); +} + +.mdl-slider.show-focus:focus::-moz-range-thumb { + transform: scale(1.3); +} + +.mdl-slider::-ms-thumb { + -webkit-appearance: none; + width: 1.4em; + height: 1.4em; + box-sizing: border-box; + border-radius: 50%; + background: #00a4dc; + border: none; + transform: scale(0.771429); + transition: 0.2s; +} + +.mdl-slider-hoverthumb:hover::-ms-thumb { + transform: none; +} + +.mdl-slider.show-focus:focus::-ms-thumb { + transform: none; +} + +.mdl-slider[disabled]::-webkit-slider-thumb { + display: none; +} + +.mdl-slider[disabled]::-moz-range-thumb { + display: none; +} + +.mdl-slider[disabled]::-ms-thumb { + display: none; +} + +.mdl-slider-container { + height: 1.25em; + position: relative; + background: none; + display: flex; + flex-direction: row; +} + +.mdl-slider-background-flex-container { + width: 100%; + box-sizing: border-box; + top: 50%; + left: 0; + position: absolute; + padding: 0 0.54em; /* half of slider thumb size */ +} + +.mdl-slider-background-flex { + background: #333; + height: 0.2em; + margin-top: -0.1em; + width: 100%; + top: 50%; + left: 0; + display: flex; + overflow: hidden; + border: 0; + padding: 0; +} + +.mdl-slider-background-flex-inner { + position: relative; + width: 100%; +} + +.mdl-slider-background-lower { + /* transition: width 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ + position: absolute; + left: 0; + width: 0; + top: 0; + bottom: 0; + background-color: #00a4dc; +} + +.mdl-slider-background-lower-clear { + background-color: transparent; +} + +.mdl-slider-background-lower-withtransform { + width: 100%; + + /* transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ + transform-origin: left center; + transform: scaleX(0); +} + +.mdl-slider-background-upper { + /* transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1), width 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ + background: #666; + background: rgba(255, 255, 255, 0.4); + position: absolute; + left: 0; + width: 0; + top: 0; + bottom: 0; +} + +.sliderBubbleTrack { + position: absolute; + left: 0; + right: 0; + margin: 0 0.54em; /* half of slider thumb size */ +} + +.sliderBubble { + position: absolute; + top: 0; + left: 0; + transform: translate3d(-50%, -120%, 0); + background: #282828; + color: #fff; + display: flex; + align-items: center; + justify-content: center; +} + +.sliderBubbleText { + margin: 0; + padding: 0.5em 0.75em; +} diff --git a/src/components/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js similarity index 58% rename from src/components/emby-slider/emby-slider.js rename to src/elements/emby-slider/emby-slider.js index c340e79359..12177fb60b 100644 --- a/src/components/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -1,9 +1,8 @@ -define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement', 'emby-input'], function (browser, dom, layoutManager) { +define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-slider', 'registerElement', 'emby-input'], function (browser, dom, layoutManager, keyboardnavigation) { 'use strict'; var EmbySliderPrototype = Object.create(HTMLInputElement.prototype); - var supportsNativeProgressStyle = browser.firefox; var supportsValueSetOverride = false; var enableWidthWithTransform; @@ -17,10 +16,71 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement } } - function updateValues() { + /** + * Returns slider fraction corresponding to client position. + * + * @param {Object} range slider itself + * @param {number} clientX client X-coordinate + * @return {number} slider fraction + */ + function mapClientToFraction(range, clientX) { + var rect = range.sliderBubbleTrack.getBoundingClientRect(); - // Do not update values when dragging with keyboard to keep current progress for reference - if (!!this.keyboardDragging) { + var fraction = (clientX - rect.left) / rect.width; + + // Snap to step + var valueRange = range.max - range.min; + if (range.step !== 'any' && valueRange !== 0) { + var step = (range.step || 1) / valueRange; + fraction = Math.round(fraction / step) * step; + } + + return Math.min(Math.max(fraction, 0), 1); + } + + /** + * Returns slider value corresponding to slider fraction. + * + * @param {Object} range slider itself + * @param {number} fraction slider fraction + * @return {number} slider value + */ + function mapFractionToValue(range, fraction) { + var value = (range.max - range.min) * fraction; + + // Snap to step + if (range.step !== 'any') { + var step = range.step || 1; + value = Math.round(value / step) * step; + } + + value += parseFloat(range.min); + + return Math.min(Math.max(value, range.min), range.max); + } + + /** + * Returns slider fraction corresponding to slider value. + * + * @param {Object} range slider itself + * @param {number} value slider value (snapped to step) + * @return {number} slider fraction + */ + function mapValueToFraction(range, value) { + var valueRange = range.max - range.min; + var fraction = valueRange !== 0 ? (value - range.min) / valueRange : 0; + return Math.min(Math.max(fraction, 0), 1); + } + + /** + * Updates progress bar. + * + * @param {boolean} [isValueSet] update by 'valueset' event or by timer + */ + function updateValues(isValueSet) { + + // Do not update values by 'valueset' in case of soft-implemented dragging + if (!!isValueSet && (!!this.keyboardDragging || !!this.touched)) { return; } @@ -28,7 +88,9 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement var value = range.value; // put this on a callback. Doing it within the event sometimes causes the slider to get hung up and not respond - requestAnimationFrame(function () { + // Keep only one per slider frame request + cancelAnimationFrame(range.updateValuesFrame); + range.updateValuesFrame = requestAnimationFrame(function () { var backgroundLower = range.backgroundLower; @@ -48,8 +110,13 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement function updateBubble(range, value, bubble, bubbleText) { requestAnimationFrame(function () { + var bubbleTrackRect = range.sliderBubbleTrack.getBoundingClientRect(); + var bubbleRect = bubble.getBoundingClientRect(); - bubble.style.left = value + '%'; + var bubblePos = bubbleTrackRect.width * value / 100; + bubblePos = Math.min(Math.max(bubblePos, bubbleRect.width / 2), bubbleTrackRect.width - bubbleRect.width / 2); + + bubble.style.left = bubblePos + 'px'; if (range.getBubbleHtml) { value = range.getBubbleHtml(value); @@ -57,7 +124,7 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement if (range.getBubbleText) { value = range.getBubbleText(value); } else { - value = Math.round(value); + value = mapFractionToValue(range, value / 100).toLocaleString(); } value = '

' + value + '

'; } @@ -84,6 +151,9 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement if (browser.noFlex) { this.classList.add('slider-no-webkit-thumb'); } + if (browser.edge || browser.msie) { + this.classList.add('slider-browser-edge'); + } if (!layoutManager.mobile) { this.classList.add('mdl-slider-hoverthumb'); } @@ -96,29 +166,28 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement var htmlToInsert = ''; - if (!supportsNativeProgressStyle) { - htmlToInsert += '
'; - htmlToInsert += '
'; - htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; - // the more of these, the more ranges we can display - htmlToInsert += '
'; + // the more of these, the more ranges we can display + htmlToInsert += '
'; - if (enableWidthWithTransform) { - htmlToInsert += '
'; - } else { - htmlToInsert += '
'; - } - - htmlToInsert += '
'; - htmlToInsert += '
'; - htmlToInsert += '
'; + if (enableWidthWithTransform) { + htmlToInsert += '
'; + } else { + htmlToInsert += '
'; } - htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + + htmlToInsert += '
'; containerElement.insertAdjacentHTML('beforeend', htmlToInsert); + this.sliderBubbleTrack = containerElement.querySelector('.sliderBubbleTrack'); this.backgroundLower = containerElement.querySelector('.mdl-slider-background-lower'); this.backgroundUpper = containerElement.querySelector('.mdl-slider-background-upper'); var sliderBubble = containerElement.querySelector('.sliderBubble'); @@ -128,7 +197,12 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement dom.addEventListener(this, 'input', function (e) { this.dragging = true; - updateBubble(this, this.value, sliderBubble); + if (this.dataset.sliderKeepProgress !== 'true') { + updateValues.call(this); + } + + var bubbleValue = mapValueToFraction(this, this.value) * 100; + updateBubble(this, bubbleValue, sliderBubble); if (hasHideClass) { sliderBubble.classList.remove('hide'); @@ -140,7 +214,10 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement dom.addEventListener(this, 'change', function () { this.dragging = false; - updateValues.call(this); + + if (this.dataset.sliderKeepProgress === 'true') { + updateValues.call(this); + } sliderBubble.classList.add('hide'); hasHideClass = true; @@ -152,10 +229,8 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement dom.addEventListener(this, (window.PointerEvent ? 'pointermove' : 'mousemove'), function (e) { if (!this.dragging) { - var rect = this.getBoundingClientRect(); - var clientX = e.clientX; - var bubbleValue = (clientX - rect.left) / rect.width; - bubbleValue *= 100; + var bubbleValue = mapClientToFraction(this, e.clientX) * 100; + updateBubble(this, bubbleValue, sliderBubble); if (hasHideClass) { @@ -175,13 +250,66 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement passive: true }); - if (!supportsNativeProgressStyle) { + // HACK: iPhone/iPad do not change input by touch + if (browser.iOS) { + dom.addEventListener(this, 'touchstart', function (e) { + if (e.targetTouches.length !== 1) { + return; + } - if (supportsValueSetOverride) { - this.addEventListener('valueset', updateValues); - } else { - startInterval(this); - } + this.touched = true; + + var fraction = mapClientToFraction(this, e.targetTouches[0].clientX); + this.value = mapFractionToValue(this, fraction); + + this.dispatchEvent(new Event('input', { + bubbles: true, + cancelable: false + })); + + // Prevent 'pointermove' and 'click' after 'touch*' + // FIXME: Still have some 'pointermove' and 'click' that bypass 'touchstart' + e.preventDefault(); + }, { + capture: true + }); + + dom.addEventListener(this, 'touchmove', function (e) { + if (!this.touched || e.targetTouches.length !== 1) { + return; + } + + var fraction = mapClientToFraction(this, e.targetTouches[0].clientX); + this.value = mapFractionToValue(this, fraction); + + this.dispatchEvent(new Event('input', { + bubbles: true, + cancelable: false + })); + }, { + passive: true + }); + + dom.addEventListener(this, 'touchend', function (e) { + var range = this; + + setTimeout(function () { + range.touched = false; + + range.dispatchEvent(new Event('change', { + bubbles: true, + cancelable: false + })); + }, 0); + }, { + passive: true + }); + } + + if (supportsValueSetOverride) { + this.addEventListener('valueset', updateValues.bind(this, true)); + } else { + startInterval(this); } }; @@ -250,7 +378,7 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement * Handle KeyDown event */ function onKeyDown(e) { - switch (e.key) { + switch (keyboardnavigation.getKeyName(e)) { case 'ArrowLeft': case 'Left': stepKeyboard(this, -this.keyboardStepDown || -1); @@ -358,7 +486,7 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement if (interval) { clearInterval(interval); } - range.interval = setInterval(updateValues.bind(range), 100); + range.interval = setInterval(updateValues.bind(range, true), 100); } EmbySliderPrototype.detachedCallback = function () { diff --git a/src/components/emby-textarea/emby-textarea.css b/src/elements/emby-textarea/emby-textarea.css similarity index 71% rename from src/components/emby-textarea/emby-textarea.css rename to src/elements/emby-textarea/emby-textarea.css index 0dab1b1ece..0866664914 100644 --- a/src/components/emby-textarea/emby-textarea.css +++ b/src/elements/emby-textarea/emby-textarea.css @@ -2,30 +2,35 @@ display: block; margin: 0; margin-bottom: 0 !important; + /* Remove select styling */ + /* Font size must the 16px or larger to prevent iOS page zoom on focus */ font-size: inherit; + /* General select styles: change as needed */ font-family: inherit; font-weight: inherit; color: inherit; - padding: .35em .25em; + padding: 0.35em 0.25em; + /* Prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 100%; } - .emby-textarea::-moz-focus-inner { - border: 0; - } +.emby-textarea::-moz-focus-inner { + border: 0; +} .textareaLabel { display: inline-block; - transition: all .2s ease-out; - margin-bottom: .25em; + transition: all 0.2s ease-out; + margin-bottom: 0.25em; } .emby-textarea + .fieldDescription { - margin-top: .25em; + margin-top: 0.25em; } diff --git a/src/components/emby-textarea/emby-textarea.js b/src/elements/emby-textarea/emby-textarea.js similarity index 99% rename from src/components/emby-textarea/emby-textarea.js rename to src/elements/emby-textarea/emby-textarea.js index c500db6e1f..e0ce77aa51 100644 --- a/src/components/emby-textarea/emby-textarea.js +++ b/src/elements/emby-textarea/emby-textarea.js @@ -135,4 +135,4 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e prototype: EmbyTextAreaPrototype, extends: 'textarea' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-toggle/emby-toggle.css b/src/elements/emby-toggle/emby-toggle.css similarity index 81% rename from src/components/emby-toggle/emby-toggle.css rename to src/elements/emby-toggle/emby-toggle.css index 3b14b8cf09..3b5c5a5f64 100644 --- a/src/components/emby-toggle/emby-toggle.css +++ b/src/elements/emby-toggle/emby-toggle.css @@ -9,6 +9,10 @@ margin: 0; padding: 0; overflow: visible; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; user-select: none; flex-direction: row-reverse; justify-content: flex-end; @@ -24,6 +28,9 @@ margin: 0; padding: 0; opacity: 0; + -ms-appearance: none; + -moz-appearance: none; + -webkit-appearance: none; appearance: none; border: none; } @@ -34,7 +41,7 @@ } .mdl-switch__track { - background: rgba(128,128,128, 0.5); + background: rgba(128, 128, 128, 0.5); height: 1em; border-radius: 1em; cursor: pointer; @@ -45,7 +52,7 @@ } .mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__track { - background: rgba(0,0,0, 0.12); + background: rgba(0, 0, 0, 0.12); cursor: auto; } @@ -53,7 +60,7 @@ background: #999; position: absolute; left: 0; - top: -.25em; + top: -0.25em; height: 1.44em; width: 1.44em; border-radius: 50%; @@ -70,11 +77,11 @@ .mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { background: #00a4dc; left: 1.466em; - box-shadow: 0 3px 0.28em 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px .56em 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 3px 0.28em 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 0.56em 0 rgba(0, 0, 0, 0.12); } .mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { - background: rgb(189,189,189); + background: rgb(189, 189, 189); cursor: auto; } @@ -82,17 +89,18 @@ position: absolute; top: 50%; left: 50%; + -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); display: inline-block; box-sizing: border-box; - width: .6em; - height: .6em; + width: 0.6em; + height: 0.6em; border-radius: 50%; background-color: transparent; } .mdl-switch__input:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { - box-shadow: 0 0 0 1.39em rgba(0, 0, 0, .05); + box-shadow: 0 0 0 1.39em rgba(0, 0, 0, 0.05); } .mdl-switch__input:checked:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { @@ -105,10 +113,10 @@ margin: 0; display: inline-flex; align-items: center; - margin-left: .7em; + margin-left: 0.7em; } .mdl-switch__input[disabled] .mdl-switch__label { - color: rgb(189,189,189); + color: rgb(189, 189, 189); cursor: auto; } diff --git a/src/components/emby-toggle/emby-toggle.js b/src/elements/emby-toggle/emby-toggle.js similarity index 99% rename from src/components/emby-toggle/emby-toggle.js rename to src/elements/emby-toggle/emby-toggle.js index 08597164b2..bd7eba3078 100644 --- a/src/components/emby-toggle/emby-toggle.js +++ b/src/elements/emby-toggle/emby-toggle.js @@ -47,4 +47,4 @@ define(['css!./emby-toggle', 'registerElement'], function () { prototype: EmbyTogglePrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/encodingsettings.html b/src/encodingsettings.html index da7f6c9c6c..bcdd86544e 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -20,8 +20,11 @@ -
${LabelHardwareAccelerationTypeHelp}
+
+
${LabelVaapiDeviceHelp}
@@ -93,7 +96,7 @@
- +
${LabelffmpegPathHelp}
@@ -104,7 +107,7 @@
- +
${LabelTranscodingTempPathHelp}
@@ -114,7 +117,7 @@
- @@ -126,7 +129,7 @@ -
${H264EncodingPresetHelp}
+
${EncoderPresetHelp}
@@ -141,10 +144,20 @@
${AllowOnTheFlySubtitleExtractionHelp}
+
+ +
${AllowFfmpegThrottlingHelp}
+
+
- +
-
\ No newline at end of file +
diff --git a/src/forgotpassword.html b/src/forgotpassword.html index aac53ed296..d4ed0d4170 100644 --- a/src/forgotpassword.html +++ b/src/forgotpassword.html @@ -1,9 +1,6 @@
-
-
-

${HeaderForgotPassword}

@@ -23,6 +20,5 @@
-
-
\ No newline at end of file +
diff --git a/src/forgotpasswordpin.html b/src/forgotpasswordpin.html index 0eb8b8a1a5..3b1ba0d37b 100644 --- a/src/forgotpasswordpin.html +++ b/src/forgotpasswordpin.html @@ -1,9 +1,6 @@
-
-
-

${HeaderPasswordReset}

@@ -22,6 +19,5 @@
-
-
\ No newline at end of file +
diff --git a/src/img/devices/kodi.svg b/src/img/devices/kodi.svg deleted file mode 100644 index 20a10194f6..0000000000 --- a/src/img/devices/kodi.svg +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/src/index.html b/src/index.html index ad42c2618a..624be19360 100644 --- a/src/index.html +++ b/src/index.html @@ -22,44 +22,44 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -105,5 +105,8 @@
+ + + diff --git a/src/installedplugins.html b/src/installedplugins.html index 633df2df29..d2b11592e9 100644 --- a/src/installedplugins.html +++ b/src/installedplugins.html @@ -4,4 +4,4 @@
-
\ No newline at end of file +
diff --git a/src/itemdetails.html b/src/itemdetails.html index 2a29cce96b..672d0b65a6 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,292 +1,235 @@ -
- - - -
-
-
- +
+
+
- -
- +
-
+
+
+
+
-
- -
- -
+
+ -
- + -
- + -
- + -
- + -
- + -
-
- + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+ + +
+
+
+ +

+

+

+

+

+

+

+ +
+ +
-
- -
-
- -
-
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
-
+
+

${HeaderSchedule}

+
+
+ +
+ +
+

${HeaderNextUp}

+
+
+ +
+
+
+ +
+

+ +

+
+
+
-
-
+
+

${HeaderAdditionalParts}

+
+
-

-

-

-

-

-

-

+
+

+
+
+
+
-
-
+
+

+
+
+
+
- +
+

${HeaderCastCrew}

+
+
+
+
-
-
+
+

${HeaderUpcomingOnTV}

+
+
+ +
+

${HeaderSpecialFeatures}

+
+
+ +
+

${HeaderMusicVideos}

+
+
+ +
+

${HeaderScenes}

+
+
+
+
+ +
+

${HeaderMoreLikeThis}

+
+
-
-

- ${HeaderSchedule} -

-
-
-
-
-
-

${HeaderNextUp}

-
-
-
-
-
-
-

- -

-
-
-
-
-
-

${HeaderAdditionalParts}

-
-
-
-

-
-
-
-
-
-

-
-
-
-
-
-

${HeaderCastCrew}

-
-
-
-
-
-

${HeaderUpcomingOnTV}

-
-
- -
-

${HeaderSpecialFeatures}

-
-
-
-

${HeaderMusicVideos}

-
-
- -
-

${HeaderScenes}

-
-
-
-
- -
-

${HeaderMoreLikeThis}

-
-
-
-
diff --git a/src/legacy/dashboard.js b/src/legacy/dashboard.js index 11ba3177b7..0268806f21 100644 --- a/src/legacy/dashboard.js +++ b/src/legacy/dashboard.js @@ -17,4 +17,4 @@ Dashboard.confirm = function(message, title, callback) { require(["loading"], function(loading) { loading.hide() }) -}; \ No newline at end of file +}; diff --git a/src/legacy/fnchecked.js b/src/legacy/fnchecked.js index 120f6e148a..4f24990f46 100644 --- a/src/legacy/fnchecked.js +++ b/src/legacy/fnchecked.js @@ -7,4 +7,4 @@ define(["jQuery"], function($) { }, $.fn.checkboxradio = function() { return this } -}); \ No newline at end of file +}); diff --git a/src/legacy/selectmenu.js b/src/legacy/selectmenu.js index bc211b9664..ba8c688511 100644 --- a/src/legacy/selectmenu.js +++ b/src/legacy/selectmenu.js @@ -3,4 +3,4 @@ define(["jQuery"], function($) { $.fn.selectmenu = function() { return this } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/apiclient.js b/src/libraries/apiclient/apiclient.js index 06d9cf0861..58cfa300b9 100644 --- a/src/libraries/apiclient/apiclient.js +++ b/src/libraries/apiclient/apiclient.js @@ -59,8 +59,8 @@ define(["libraries/apiclient/apiclientcore", "localassetmanager"], function(ApiC }) } - function ApiClientEx(serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio) { - ApiClient.call(this, serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio) + function ApiClientEx(serverAddress, clientName, applicationVersion, deviceName, deviceId) { + ApiClient.call(this, serverAddress, clientName, applicationVersion, deviceName, deviceId) } var localPrefix = "local:", localViewPrefix = "localview:"; @@ -233,4 +233,4 @@ define(["libraries/apiclient/apiclientcore", "localassetmanager"], function(ApiC } return ApiClient.prototype.getItemDownloadUrl.call(this, itemId) }, ApiClientEx -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index b6c98ebbd9..557a4e1033 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -58,9 +58,23 @@ define(["events", "appStorage"], function(events, appStorage) { return request.data && ("string" == typeof request.data ? fetchRequest.body = request.data : (fetchRequest.body = paramsToString(request.data), contentType = contentType || "application/x-www-form-urlencoded; charset=UTF-8")), contentType && (headers["Content-Type"] = contentType), request.timeout ? fetchWithTimeout(request.url, fetchRequest, request.timeout) : fetch(request.url, fetchRequest) } - function ApiClient(serverAddress, appName, appVersion, deviceName, deviceId, devicePixelRatio) { - if (!serverAddress) throw new Error("Must supply a serverAddress"); - console.log("ApiClient serverAddress: " + serverAddress), console.log("ApiClient appName: " + appName), console.log("ApiClient appVersion: " + appVersion), console.log("ApiClient deviceName: " + deviceName), console.log("ApiClient deviceId: " + deviceId), this._serverInfo = {}, this._serverAddress = serverAddress, this._deviceId = deviceId, this._deviceName = deviceName, this._appName = appName, this._appVersion = appVersion, this._devicePixelRatio = devicePixelRatio + function ApiClient(serverAddress, appName, appVersion, deviceName, deviceId) { + if (!serverAddress) { + throw new Error("Must supply a serverAddress"); + } + + console.debug("ApiClient serverAddress: " + serverAddress); + console.debug("ApiClient appName: " + appName); + console.debug("ApiClient appVersion: " + appVersion); + console.debug("ApiClient deviceName: " + deviceName); + console.debug("ApiClient deviceId: " + deviceId); + + this._serverInfo = {}; + this._serverAddress = serverAddress; + this._deviceId = deviceId; + this._deviceName = deviceName; + this._appName = appName; + this._appVersion = appVersion; } function setSavedEndpointInfo(instance, info) { @@ -68,13 +82,14 @@ define(["events", "appStorage"], function(events, appStorage) { } function getTryConnectPromise(instance, url, state, resolve, reject) { - console.log("getTryConnectPromise " + url), fetchWithTimeout(instance.getUrl("system/info/public", null, url), { + console.debug("getTryConnectPromise " + url); + fetchWithTimeout(instance.getUrl("system/info/public", null, url), { method: "GET", accept: "application/json" }, 15e3).then(function() { - state.resolved || (state.resolved = !0, console.log("Reconnect succeeded to " + url), instance.serverAddress(url), resolve()) + state.resolved || (state.resolved = !0, console.debug("Reconnect succeeded to " + url), instance.serverAddress(url), resolve()) }, function() { - state.resolved || (console.log("Reconnect failed to " + url), ++state.rejects >= state.numAddresses && reject()) + state.resolved || (console.error("Reconnect failed to " + url), ++state.rejects >= state.numAddresses && reject()) }) } @@ -91,7 +106,7 @@ define(["events", "appStorage"], function(events, appStorage) { }), addressesStrings.push(addresses[addresses.length - 1].url)), serverInfo.RemoteAddress && -1 === addressesStrings.indexOf(serverInfo.RemoteAddress) && (addresses.push({ url: serverInfo.RemoteAddress, timeout: 200 - }), addressesStrings.push(addresses[addresses.length - 1].url)), console.log("tryReconnect: " + addressesStrings.join("|")), new Promise(function(resolve, reject) { + }), addressesStrings.push(addresses[addresses.length - 1].url)), console.debug("tryReconnect: " + addressesStrings.join("|")), new Promise(function(resolve, reject) { var state = {}; state.numAddresses = addresses.length, state.rejects = 0, addresses.map(function(url) { setTimeout(function() { @@ -103,7 +118,7 @@ define(["events", "appStorage"], function(events, appStorage) { function tryReconnect(instance, retryCount) { return retryCount = retryCount || 0, retryCount >= 20 ? Promise.reject() : tryReconnectInternal(instance).catch(function(err) { - return console.log("error in tryReconnectInternal: " + (err || "")), new Promise(function(resolve, reject) { + return console.error("error in tryReconnectInternal: " + (err || "")), new Promise(function(resolve, reject) { setTimeout(function() { tryReconnect(instance, retryCount + 1).then(resolve, reject) }, 500) @@ -139,7 +154,7 @@ define(["events", "appStorage"], function(events, appStorage) { function onWebSocketOpen() { var instance = this; - console.log("web socket connection opened"), events.trigger(instance, "websocketopen") + console.debug("web socket connection opened"), events.trigger(instance, "websocketopen") } function onWebSocketError() { @@ -149,7 +164,12 @@ define(["events", "appStorage"], function(events, appStorage) { function setSocketOnClose(apiClient, socket) { socket.onclose = function() { - console.log("web socket closed"), apiClient._webSocket === socket && (console.log("nulling out web socket"), apiClient._webSocket = null), setTimeout(function() { + console.debug("web socket closed"); + if (apiClient._webSocket === socket) { + console.debug("nulling out web socket"); + apiClient._webSocket = null; + } + setTimeout(function() { events.trigger(apiClient, "websocketclose") }, 0) } @@ -197,7 +217,7 @@ define(["events", "appStorage"], function(events, appStorage) { } function normalizeImageOptions(instance, options) { - var ratio = instance._devicePixelRatio || 1; + var ratio = window.devicePixelRatio; ratio && (options.minScale && (ratio = Math.max(options.minScale, ratio)), options.width && (options.width = Math.round(options.width * ratio)), options.height && (options.height = Math.round(options.height * ratio)), options.maxWidth && (options.maxWidth = Math.round(options.maxWidth * ratio)), options.maxHeight && (options.maxHeight = Math.round(options.maxHeight * ratio))), options.quality = options.quality || instance.getDefaultImageQuality(options.type), instance.normalizeImageOptions && instance.normalizeImageOptions(options) } @@ -244,24 +264,24 @@ define(["events", "appStorage"], function(events, appStorage) { var lowered = url.toLowerCase(); return "/" !== name.charAt(0) && (url += "/"), url += name, params && (params = paramsToString(params)) && (url += "?" + params), url }, ApiClient.prototype.fetchWithFailover = function(request, enableReconnection) { - console.log("Requesting " + request.url), request.timeout = 3e4; + console.debug("Requesting " + request.url), request.timeout = 3e4; var instance = this; return getFetchPromise(request).then(function(response) { return instance.lastFetch = (new Date).getTime(), response.status < 400 ? "json" === request.dataType || "application/json" === request.headers.accept ? response.json() : "text" === request.dataType || 0 === (response.headers.get("Content-Type") || "").toLowerCase().indexOf("text/") ? response.text() : response : (onFetchFail(instance, request.url, response), Promise.reject(response)) }, function(error) { - if (error ? console.log("Request failed to " + request.url + " " + (error.status || "") + " " + error.toString()) : console.log("Request timed out to " + request.url), error && error.status || !enableReconnection) throw console.log("Reporting request failure"), onFetchFail(instance, request.url, {}), error; - console.log("Attempting reconnection"); + if (error ? console.error("Request failed to " + request.url + " " + (error.status || "") + " " + error.toString()) : console.error("Request timed out to " + request.url), error && error.status || !enableReconnection) throw console.error("Reporting request failure"), onFetchFail(instance, request.url, {}), error; + console.debug("Attempting reconnection"); var previousServerAddress = instance.serverAddress(); return tryReconnect(instance).then(function() { - return console.log("Reconnect succeesed"), request.url = request.url.replace(previousServerAddress, instance.serverAddress()), instance.fetchWithFailover(request, !1) + return console.debug("Reconnect succeesed"), request.url = request.url.replace(previousServerAddress, instance.serverAddress()), instance.fetchWithFailover(request, !1) }, function(innerError) { - throw console.log("Reconnect failed"), onFetchFail(instance, request.url, {}), innerError + throw console.error("Reconnect failed"), onFetchFail(instance, request.url, {}), innerError }) }) }, ApiClient.prototype.fetch = function(request, includeAuthorization) { if (!request) throw new Error("Request cannot be null"); if (request.headers = request.headers || {}, !1 !== includeAuthorization && this.setRequestHeaders(request.headers), !1 === this.enableAutomaticNetworking || "GET" !== request.type) { - console.log("Requesting url without automatic networking: " + request.url); + console.debug("Requesting url without automatic networking: " + request.url); var instance = this; return getFetchPromise(request).then(function(response) { return instance.lastFetch = (new Date).getTime(), response.status < 400 ? "json" === request.dataType || "application/json" === request.headers.accept ? response.json() : "text" === request.dataType || 0 === (response.headers.get("Content-Type") || "").toLowerCase().indexOf("text/") ? response.text() : response : (onFetchFail(instance, request.url, response), Promise.reject(response)) @@ -340,7 +360,7 @@ define(["events", "appStorage"], function(events, appStorage) { if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try { this.openWebSocket() } catch (err) { - console.log("Error opening web socket: " + err) + console.error("error opening web socket: " + err) } }; var messageIdsReceived = {}; @@ -348,14 +368,14 @@ define(["events", "appStorage"], function(events, appStorage) { var accessToken = this.accessToken(); if (!accessToken) throw new Error("Cannot open web socket without access token."); var url = this.getUrl("socket"); - url = replaceAll(url, "emby/socket", "embywebsocket"), url = replaceAll(url, "https:", "wss:"), url = replaceAll(url, "http:", "ws:"), url += "?api_key=" + accessToken, url += "&deviceId=" + this.deviceId(), console.log("opening web socket with url: " + url); + url = replaceAll(url, "emby/socket", "embywebsocket"), url = replaceAll(url, "https:", "wss:"), url = replaceAll(url, "http:", "ws:"), url += "?api_key=" + accessToken, url += "&deviceId=" + this.deviceId(), console.debug("opening web socket with url: " + url); var webSocket = new WebSocket(url); webSocket.onmessage = onWebSocketMessage.bind(this), webSocket.onopen = onWebSocketOpen.bind(this), webSocket.onerror = onWebSocketError.bind(this), setSocketOnClose(this, webSocket), this._webSocket = webSocket }, ApiClient.prototype.closeWebSocket = function() { var socket = this._webSocket; socket && socket.readyState === WebSocket.OPEN && socket.close() }, ApiClient.prototype.sendWebSocketMessage = function(name, data) { - console.log("Sending web socket message: " + name); + console.debug("Sending web socket message: " + name); var msg = { MessageType: name }; @@ -387,7 +407,7 @@ define(["events", "appStorage"], function(events, appStorage) { }, ApiClient.prototype.updateServerInfo = function(server, serverUrl) { if (null == server) throw new Error("server cannot be null"); if (this.serverInfo(server), !serverUrl) throw new Error("serverUrl cannot be null. serverInfo: " + JSON.stringify(server)); - console.log("Setting server address to " + serverUrl), this.serverAddress(serverUrl) + console.debug("Setting server address to " + serverUrl), this.serverAddress(serverUrl) }, ApiClient.prototype.isWebSocketSupported = function() { try { return null != WebSocket diff --git a/src/libraries/apiclient/appStorage.js b/src/libraries/apiclient/appStorage.js index 6083bb4953..dacf38822f 100644 --- a/src/libraries/apiclient/appStorage.js +++ b/src/libraries/apiclient/appStorage.js @@ -2,7 +2,7 @@ define([], function() { "use strict"; function onCachePutFail(e) { - console.log(e); + console.error("cannot put to a cache: " + e); } function updateCache(instance) { @@ -45,9 +45,9 @@ define([], function() { self.caches.open("embydata").then(onCacheOpened.bind(this)); } } catch (err) { - console.log("Error opening cache: " + err); + console.error("error opening cache: " + err); } } return new MyStore; -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/connectionmanager.js b/src/libraries/apiclient/connectionmanager.js index 7e7d578cba..dc5ef406e5 100644 --- a/src/libraries/apiclient/connectionmanager.js +++ b/src/libraries/apiclient/connectionmanager.js @@ -95,18 +95,18 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } function fetchWithTimeout(url, options, timeoutMs) { - console.log("fetchWithTimeout: timeoutMs: " + timeoutMs + ", url: " + url); + console.debug("fetchWithTimeout: timeoutMs: " + timeoutMs + ", url: " + url); return new Promise(function (resolve, reject) { var timeout = setTimeout(reject, timeoutMs); options = options || {}; options.credentials = "same-origin"; fetch(url, options).then(function (response) { clearTimeout(timeout); - console.log("fetchWithTimeout: succeeded connecting to url: " + url); + console.debug("fetchWithTimeout: succeeded connecting to url: " + url); resolve(response); }, function (error) { clearTimeout(timeout); - console.log("fetchWithTimeout: timed out connecting to url: " + url); + console.error("fetchWithTimeout: timed out connecting to url: " + url); reject(); }); }); @@ -118,9 +118,9 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } request.headers = request.headers || {}; - console.log("ConnectionManager requesting url: " + request.url); + console.debug("ConnectionManager requesting url: " + request.url); return getFetchPromise(request).then(function (response) { - console.log("ConnectionManager response status: " + response.status + ", url: " + request.url); + console.debug("ConnectionManager response status: " + response.status + ", url: " + request.url); if (response.status < 400) { if ("json" === request.dataType || "application/json" === request.headers.accept) { @@ -132,7 +132,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory return Promise.reject(response); }, function (err) { - console.log("ConnectionManager request failed to url: " + request.url); + console.error("ConnectionManager request failed to url: " + request.url); throw err; }); } @@ -186,7 +186,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory Manual: 2 }; - var ConnectionManager = function (credentialProvider, appName, appVersion, deviceName, deviceId, capabilities, devicePixelRatio) { + var ConnectionManager = function (credentialProvider, appName, appVersion, deviceName, deviceId, capabilities) { function onAuthenticated(apiClient, result, options, saveCredentials) { var credentials = credentialProvider.credentials(); @@ -227,7 +227,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory apiClient.enableAutomaticBitrateDetection = options.enableAutomaticBitrateDetection; if (false !== options.enableWebSocket) { - console.log("calling apiClient.ensureWebSocket"); + console.debug("calling apiClient.ensureWebSocket"); apiClient.ensureWebSocket(); } } @@ -333,7 +333,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } function getTryConnectPromise(url, connectionMode, state, resolve, reject) { - console.log("getTryConnectPromise " + url); + console.debug("getTryConnectPromise " + url); ajax({ url: getEmbyServerUrl(url, "system/info/public"), timeout: defaultTimeout, @@ -342,7 +342,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }).then(function (result) { if (!state.resolved) { state.resolved = true; - console.log("Reconnect succeeded to " + url); + console.debug("Reconnect succeeded to " + url); resolve({ url: url, connectionMode: connectionMode, @@ -351,7 +351,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } }, function () { if (!state.resolved) { - console.log("Reconnect failed to " + url); + console.error("Reconnect failed to " + url); if (++state.rejects >= state.numAddresses) { reject(); @@ -391,7 +391,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory addressesStrings.push(addresses[addresses.length - 1].url); } - console.log("tryReconnect: " + addressesStrings.join("|")); + console.debug("tryReconnect: " + addressesStrings.join("|")); return new Promise(function (resolve, reject) { var state = {}; state.numAddresses = addresses.length; @@ -458,7 +458,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } } - console.log("Begin ConnectionManager constructor"); + console.debug("Begin ConnectionManager constructor"); var self = this; this._apiClients = []; self._minServerVersion = "3.2.33"; @@ -530,7 +530,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.clearData = function () { - console.log("connection manager clearing data"); + console.debug("connection manager clearing data"); var credentials = credentialProvider.credentials(); credentials.Servers = []; credentialProvider.credentials(credentials); @@ -540,7 +540,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory var apiClient = self.getApiClient(server.Id); if (!apiClient) { - apiClient = new apiClientFactory(serverUrl, appName, appVersion, deviceName, deviceId, devicePixelRatio); + apiClient = new apiClientFactory(serverUrl, appName, appVersion, deviceName, deviceId); self._apiClients.push(apiClient); apiClient.serverInfo(server); apiClient.onAuthenticated = function (instance, result) { @@ -550,7 +550,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory events.trigger(self, "apiclientcreated", [apiClient]); } - console.log("returning instance from getOrAddApiClient"); + console.debug("returning instance from getOrAddApiClient"); return apiClient; }; @@ -592,7 +592,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.logout = function () { - console.log("begin connectionManager loguot"); + console.debug("begin connectionManager loguot"); var promises = []; for (var i = 0, length = self._apiClients.length; i < length; i++) { @@ -628,7 +628,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.getAvailableServers = function () { - console.log("Begin getAvailableServers"); + console.debug("begin getAvailableServers"); var credentials = credentialProvider.credentials(); return Promise.all([findServers()]).then(function (responses) { var foundServers = responses[0]; @@ -644,7 +644,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.connectToServers = function (servers, options) { - console.log("Begin connectToServers, with " + servers.length + " servers"); + console.debug("begin connectToServers, with " + servers.length + " servers"); var firstServer = servers.length ? servers[0] : null; if (firstServer) { @@ -653,7 +653,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory result.State = "ServerSelection"; } - console.log("resolving connectToServers with result.State: " + result.State); + console.debug("resolving connectToServers with result.State: " + result.State); return result; }); } @@ -665,7 +665,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.connectToServer = function (server, options) { - console.log("begin connectToServer"); + console.debug("begin connectToServer"); return new Promise(function (resolve, reject) { options = options || {}; tryReconnect(server).then(function (result) { @@ -674,14 +674,14 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory result = result.data; if (1 === compareVersions(self.minServerVersion(), result.Version)) { - console.log("minServerVersion requirement not met. Server version: " + result.Version); + console.debug("minServerVersion requirement not met. Server version: " + result.Version); resolve({ State: "ServerUpdateNeeded", Servers: [server] }); } else { if (server.Id && result.Id !== server.Id) { - console.log("http request succeeded, but found a different server Id than what was expected"); + console.debug("http request succeeded, but found a different server Id than what was expected"); resolveFailure(self, resolve); } else { onSuccessfulConnection(server, result, connectionMode, serverUrl, options, resolve); @@ -695,7 +695,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory self.connectToAddress = function (address, options) { function onFail() { - console.log("connectToAddress " + address + " failed"); + console.error("connectToAddress " + address + " failed"); return Promise.resolve({ State: "Unavailable", }); @@ -741,7 +741,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; ConnectionManager.prototype.connect = function (options) { - console.log("Begin connect"); + console.debug("begin connect"); var instance = this; return instance.getAvailableServers().then(function (servers) { return instance.connectToServers(servers, options); diff --git a/src/libraries/apiclient/credentialprovider.js b/src/libraries/apiclient/credentialprovider.js index 471f2b5ef1..4ae809cace 100644 --- a/src/libraries/apiclient/credentialprovider.js +++ b/src/libraries/apiclient/credentialprovider.js @@ -4,7 +4,7 @@ define(["events", "appStorage"], function(events, appStorage) { function ensure(instance, data) { if (!instance._credentials) { var json = appStorage.getItem(instance.key) || "{}"; - console.log("credentials initialized with: " + json), instance._credentials = JSON.parse(json), instance._credentials.Servers = instance._credentials.Servers || [] + console.debug("credentials initialized with: " + json), instance._credentials = JSON.parse(json), instance._credentials.Servers = instance._credentials.Servers || [] } } @@ -26,4 +26,4 @@ define(["events", "appStorage"], function(events, appStorage) { })[0]; return existing ? (existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0), existing.UserLinkType = server.UserLinkType, server.AccessToken && (existing.AccessToken = server.AccessToken, existing.UserId = server.UserId), server.ExchangeToken && (existing.ExchangeToken = server.ExchangeToken), server.RemoteAddress && (existing.RemoteAddress = server.RemoteAddress), server.ManualAddress && (existing.ManualAddress = server.ManualAddress), server.LocalAddress && (existing.LocalAddress = server.LocalAddress), server.Name && (existing.Name = server.Name), null != server.LastConnectionMode && (existing.LastConnectionMode = server.LastConnectionMode), server.ConnectServerId && (existing.ConnectServerId = server.ConnectServerId), existing) : (list.push(server), server) }, Credentials -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/events.js b/src/libraries/apiclient/events.js index 6204dc4d4f..c109ee9c48 100644 --- a/src/libraries/apiclient/events.js +++ b/src/libraries/apiclient/events.js @@ -27,4 +27,4 @@ define([], function() { }) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/localassetmanager.js b/src/libraries/apiclient/localassetmanager.js index fbe74aae51..6fb1d4722d 100644 --- a/src/libraries/apiclient/localassetmanager.js +++ b/src/libraries/apiclient/localassetmanager.js @@ -2,7 +2,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman "use strict"; function getLocalItem(serverId, itemId) { - return console.log("[lcoalassetmanager] Begin getLocalItem"), itemrepository.get(serverId, itemId) + return console.debug("localassetmanager: begin getLocalItem"), itemrepository.get(serverId, itemId) } function recordUserAction(action) { @@ -25,7 +25,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman } function getServerItems(serverId) { - return console.log("[localassetmanager] Begin getServerItems"), itemrepository.getAll(serverId) + return console.debug("localassetmanager: begin getServerItems"), itemrepository.getAll(serverId) } function getItemsFromIds(serverId, ids) { diff --git a/src/libraries/apiclient/package.json b/src/libraries/apiclient/package.json index 0069cfc6bf..67f9d49756 100644 --- a/src/libraries/apiclient/package.json +++ b/src/libraries/apiclient/package.json @@ -1,3 +1,3 @@ { "main": "apiclient.js" -} \ No newline at end of file +} diff --git a/src/libraries/apiclient/sync/filerepository.js b/src/libraries/apiclient/sync/filerepository.js index 198967469d..5b7088af31 100644 --- a/src/libraries/apiclient/sync/filerepository.js +++ b/src/libraries/apiclient/sync/filerepository.js @@ -42,4 +42,4 @@ define([], function() { getItemFileSize: getItemFileSize, getImageUrl: getImageUrl } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/itemrepository.js b/src/libraries/apiclient/sync/itemrepository.js index 5330d5d1a2..db1f962876 100644 --- a/src/libraries/apiclient/sync/itemrepository.js +++ b/src/libraries/apiclient/sync/itemrepository.js @@ -120,4 +120,4 @@ define([], function() { getAll: getAll, getServerItemTypes: getServerItemTypes } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/localsync.js b/src/libraries/apiclient/sync/localsync.js index cea244de08..14e9ff9c0f 100644 --- a/src/libraries/apiclient/sync/localsync.js +++ b/src/libraries/apiclient/sync/localsync.js @@ -3,7 +3,7 @@ define(["connectionManager"], function(connectionManager) { var isSyncing; return { sync: function(options) { - return console.log("localSync.sync starting..."), isSyncing ? Promise.resolve() : (isSyncing = !0, new Promise(function(resolve, reject) { + return console.debug("localSync.sync starting..."), isSyncing ? Promise.resolve() : (isSyncing = !0, new Promise(function(resolve, reject) { require(["multiserversync", "appSettings"], function(MultiServerSync, appSettings) { options = options || {}, options.cameraUploadServers = appSettings.cameraUploadServers(), (new MultiServerSync).sync(connectionManager, options).then(function() { isSyncing = null, resolve() @@ -14,4 +14,4 @@ define(["connectionManager"], function(connectionManager) { })) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/mediasync.js b/src/libraries/apiclient/sync/mediasync.js index 24220561ad..e6d9e781f3 100644 --- a/src/libraries/apiclient/sync/mediasync.js +++ b/src/libraries/apiclient/sync/mediasync.js @@ -2,9 +2,9 @@ define(["localassetmanager"], function(localassetmanager) { "use strict"; function processDownloadStatus(apiClient, serverInfo, options) { - return console.log("[mediasync] Begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { + return console.debug("mediasync: begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { return localassetmanager.getServerItems(serverInfo.Id).then(function(items) { - console.log("[mediasync] Begin processDownloadStatus getServerItems completed"); + console.debug("mediasync: begin processDownloadStatus getServerItems completed"); var p = Promise.resolve(), cnt = 0; return items.filter(function(item) { @@ -14,7 +14,9 @@ define(["localassetmanager"], function(localassetmanager) { return reportTransfer(apiClient, item) }), cnt++ }), p.then(function() { - return console.log("[mediasync] Exit processDownloadStatus. Items reported: " + cnt.toString()), Promise.resolve() + console.debug("mediasync: exit processDownloadStatus"); + console.debug("items reported: " + cnt.toString()); + return Promise.resolve(); }) }) }) @@ -23,39 +25,39 @@ define(["localassetmanager"], function(localassetmanager) { function reportTransfer(apiClient, item) { return localassetmanager.getItemFileSize(item.LocalPath).then(function(size) { return size > 0 ? apiClient.reportSyncJobItemTransferred(item.SyncJobItemId).then(function() { - return item.SyncStatus = "synced", console.log("[mediasync] reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) + return item.SyncStatus = "synced", console.debug("mediasync: reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) }, function(error) { - return console.error("[mediasync] Mediasync error on reportSyncJobItemTransferred", error), item.SyncStatus = "error", localassetmanager.addOrUpdateLocalItem(item) + return console.error("mediasync: mediasync error on reportSyncJobItemTransferred", error), item.SyncStatus = "error", localassetmanager.addOrUpdateLocalItem(item) }) : localassetmanager.isDownloadFileInQueue(item.LocalPath).then(function(result) { - return result ? Promise.resolve() : (console.log("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { - return console.log("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return result ? Promise.resolve() : (console.debug("mediasync: reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { + return console.debug("mediasync: reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.log("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.debug("mediasync: reportTransfer: Failed to delete item.", err2), Promise.resolve() })) }) }, function(error) { - return console.error("[mediasync] reportTransfer: error on getItemFileSize. Deleting item.", error), localassetmanager.removeLocalItem(item).then(function() { - return console.log("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return console.error("mediasync: reportTransfer: error on getItemFileSize. Deleting item.", error), localassetmanager.removeLocalItem(item).then(function() { + return console.debug("mediasync: reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.log("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.error("mediasync: reportTransfer: Failed to delete item.", err2), Promise.resolve() }) }) } function reportOfflineActions(apiClient, serverInfo) { - return console.log("[mediasync] Begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { + return console.debug("mediasync: begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { return actions.length ? apiClient.reportOfflineActions(actions).then(function() { return localassetmanager.deleteUserActions(actions).then(function() { - return console.log("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() + return console.debug("mediasync: exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() }) }, function(err) { - return console.error("[mediasync] error on apiClient.reportOfflineActions: " + err.toString()), localassetmanager.deleteUserActions(actions) - }) : (console.log("[mediasync] Exit reportOfflineActions (no actions)"), Promise.resolve()) + return console.error("mediasync: error on apiClient.reportOfflineActions: " + err.toString()), localassetmanager.deleteUserActions(actions) + }) : (console.debug("mediasync: exit reportOfflineActions (no actions)"), Promise.resolve()) }) } function syncData(apiClient, serverInfo) { - return console.log("[mediasync] Begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return console.debug("mediasync: begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -67,16 +69,16 @@ define(["localassetmanager"], function(localassetmanager) { }; return apiClient.syncData(request).then(function(result) { return afterSyncData(apiClient, serverInfo, result).then(function() { - return console.log("[mediasync] Exit syncData"), Promise.resolve() + return console.debug("mediasync: exit syncData"), Promise.resolve() }, function(err) { - return console.error("[mediasync] Error in syncData: " + err.toString()), Promise.resolve() + return console.error("mediasync: error in syncData: " + err.toString()), Promise.resolve() }) }) }) } function afterSyncData(apiClient, serverInfo, syncDataResult) { - console.log("[mediasync] Begin afterSyncData"); + console.debug("mediasync: begin afterSyncData"); var p = Promise.resolve(); return syncDataResult.ItemIdsToRemove && syncDataResult.ItemIdsToRemove.length > 0 && syncDataResult.ItemIdsToRemove.forEach(function(itemId) { p = p.then(function() { @@ -85,25 +87,25 @@ define(["localassetmanager"], function(localassetmanager) { }), p = p.then(function() { return removeObsoleteContainerItems(serverInfo.Id) }), p.then(function() { - return console.log("[mediasync] Exit afterSyncData"), Promise.resolve() + return console.debug("mediasync: exit afterSyncData"), Promise.resolve() }) } function removeObsoleteContainerItems(serverId) { - return console.log("[mediasync] Begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) + return console.debug("mediasync: begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) } function removeLocalItem(itemId, serverId) { - return console.log("[mediasync] Begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { + return console.debug("mediasync: begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { return item ? localassetmanager.removeLocalItem(item) : Promise.resolve() }, function(err2) { - return console.error("[mediasync] removeLocalItem: Failed: ", err2), Promise.resolve() + return console.error("mediasync: removeLocalItem: Failed: ", err2), Promise.resolve() }) } function getNewMedia(apiClient, downloadCount) { - return console.log("[mediasync] Begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { - console.log("[mediasync] getReadySyncItems returned " + jobItems.length + " items"); + return console.debug("mediasync: begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { + console.debug("mediasync: getReadySyncItems returned " + jobItems.length + " items"); var p = Promise.resolve(), currentCount = downloadCount; return jobItems.forEach(function(jobItem) { @@ -111,15 +113,15 @@ define(["localassetmanager"], function(localassetmanager) { return getNewItem(jobItem, apiClient) })) }), p.then(function() { - return console.log("[mediasync] Exit getNewMedia"), Promise.resolve() + return console.debug("mediasync: exit getNewMedia"), Promise.resolve() }) }, function(err) { - return console.error("[mediasync] getReadySyncItems: Failed: ", err), Promise.resolve() + return console.error("mediasync: getReadySyncItems: Failed: ", err), Promise.resolve() }) } function afterMediaDownloaded(apiClient, jobItem, localItem) { - return console.log("[mediasync] Begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { + return console.debug("mediasync: begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { var libraryItem = jobItem.Item; return downloadParentItems(apiClient, jobItem, libraryItem).then(function() { return getSubtitles(apiClient, jobItem, localItem) @@ -128,21 +130,21 @@ define(["localassetmanager"], function(localassetmanager) { } function createLocalItem(libraryItem, jobItem) { - console.log("[localassetmanager] Begin createLocalItem"); + console.debug("localassetmanager: begin createLocalItem"); var item = { Item: libraryItem, ItemId: libraryItem.Id, ServerId: libraryItem.ServerId, Id: libraryItem.Id }; - return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.log("[localassetmanager] End createLocalItem"), item + return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.debug("localassetmanager: end createLocalItem"), item } function getNewItem(jobItem, apiClient) { - console.log("[mediasync] Begin getNewItem"); + console.debug("mediasync: begin getNewItem"); var libraryItem = jobItem.Item; return localassetmanager.getLocalItem(libraryItem.ServerId, libraryItem.Id).then(function(existingItem) { - if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.log("[mediasync] getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); + if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.debug("mediasync: getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); libraryItem.CanDelete = !1, libraryItem.CanDownload = !1, libraryItem.SupportsSync = !1, libraryItem.People = [], libraryItem.Chapters = [], libraryItem.Studios = [], libraryItem.SpecialFeatureCount = null, libraryItem.LocalTrailerCount = null, libraryItem.RemoteTrailers = []; var localItem = createLocalItem(libraryItem, jobItem); return localItem.SyncStatus = "queued", downloadMedia(apiClient, jobItem, localItem) @@ -169,7 +171,7 @@ define(["localassetmanager"], function(localassetmanager) { return localassetmanager.addOrUpdateLocalItem(localItem).then(function() { return Promise.resolve(localItem) }, function(err) { - return console.error("[mediasync] downloadItem failed: " + err.toString()), Promise.resolve(null) + return console.error("mediasync: downloadItem failed: " + err.toString()), Promise.resolve(null) }) }) } @@ -183,12 +185,12 @@ define(["localassetmanager"], function(localassetmanager) { } function downloadMedia(apiClient, jobItem, localItem) { - console.log("[mediasync] downloadMedia: start."); + console.debug("mediasync: downloadMedia: start."); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/File", { api_key: apiClient.accessToken() }); return ensureLocalPathParts(localItem, jobItem), localassetmanager.downloadFile(url, localItem).then(function(result) { - console.log("[mediasync] downloadMedia-downloadFile returned path: " + result.path); + console.debug("mediasync: downloadMedia-downloadFile returned path: " + result.path); var localPath = result.path, libraryItem = localItem.Item; if (localPath && libraryItem.MediaSources) @@ -200,18 +202,18 @@ define(["localassetmanager"], function(localassetmanager) { return afterMediaDownloaded(apiClient, jobItem, localItem).then(function() { return result.isComplete ? (localItem.SyncStatus = "synced", reportTransfer(apiClient, localItem)) : Promise.resolve() }, function(err) { - return console.log("[mediasync] downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) + return console.debug("mediasync: downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) }) }, function(err) { - return console.log("[mediasync] downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) + return console.debug("mediasync: downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) }) }, function(err) { - return console.log("[mediasync] downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) + return console.debug("mediasync: downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) }) } function getImages(apiClient, jobItem, localItem) { - console.log("[mediasync] Begin getImages"); + console.debug("mediasync: begin getImages"); var p = Promise.resolve(), libraryItem = localItem.Item, serverId = libraryItem.ServerId, @@ -249,15 +251,15 @@ define(["localassetmanager"], function(localassetmanager) { })), libraryItem.ParentPrimaryImageItemId && libraryItem.ParentPrimaryImageTag && (p = p.then(function() { return downloadImage(localItem, apiClient, serverId, libraryItem.ParentPrimaryImageItemId, libraryItem.ParentPrimaryImageTag, "Primary") })), p.then(function() { - return console.log("[mediasync] Finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) + return console.debug("mediasync: finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) }, function(err) { - return console.log("[mediasync] Error getImages: " + err.toString()), Promise.resolve() + return console.error("mediasync: error getImages: " + err.toString()), Promise.resolve() }) } function downloadImage(localItem, apiClient, serverId, itemId, imageTag, imageType, index) { return index = index || 0, localassetmanager.hasImage(serverId, itemId, imageType, index).then(function(hasImage) { - if (hasImage) return console.log("[mediasync] downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); + if (hasImage) return console.debug("mediasync: downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); var maxWidth = 400; "backdrop" === imageType && (maxWidth = null); var imageUrl = apiClient.getScaledImageUrl(itemId, { @@ -266,18 +268,18 @@ define(["localassetmanager"], function(localassetmanager) { maxWidth: maxWidth, api_key: apiClient.accessToken() }); - return console.log("[mediasync] downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { + return console.debug("mediasync: downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { return Promise.resolve(result) }, function(err) { - return console.log("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("mediasync: error downloadImage: " + err.toString()), Promise.resolve() }) }, function(err) { - return console.log("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("mediasync: error downloadImage: " + err.toString()), Promise.resolve() }) } function getSubtitles(apiClient, jobItem, localItem) { - if (console.log("[mediasync] Begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.log("[mediasync] Cannot download subtitles because video has no media source info."), Promise.resolve(); + if (console.debug("mediasync: begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.debug("mediasync: cannot download subtitles because video has no media source info."), Promise.resolve(); var files = jobItem.AdditionalFiles.filter(function(f) { return "Subtitles" === f.Type }), @@ -288,16 +290,16 @@ define(["localassetmanager"], function(localassetmanager) { return getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) }) }), p.then(function() { - return console.log("[mediasync] Exit getSubtitles"), Promise.resolve() + return console.debug("mediasync: exit getSubtitles"), Promise.resolve() }) } function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) { - console.log("[mediasync] Begin getItemSubtitle"); + console.debug("mediasync: begin getItemSubtitle"); var subtitleStream = mediaSource.MediaStreams.filter(function(m) { return "Subtitle" === m.Type && m.Index === file.Index })[0]; - if (!subtitleStream) return console.log("[mediasync] Cannot download subtitles because matching stream info was not found."), Promise.resolve(); + if (!subtitleStream) return console.debug("mediasync: cannot download subtitles because matching stream info was not found."), Promise.resolve(); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/AdditionalFiles", { Name: file.Name, api_key: apiClient.accessToken() @@ -311,7 +313,7 @@ define(["localassetmanager"], function(localassetmanager) { } function checkLocalFileExistence(apiClient, serverInfo, options) { - return options.checkFileExistence ? (console.log("[mediasync] Begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return options.checkFileExistence ? (console.debug("mediasync: begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -332,13 +334,13 @@ define(["localassetmanager"], function(localassetmanager) { return function() { var self = this; "string" == typeof webWorkerBaseUrl && -1 !== webWorkerBaseUrl.indexOf("ms-appx://") ? self.sync = function(apiClient, serverInfo, options) { - return console.log("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("mediasync: start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { return !0 === options.syncCheckProgressOnly && downloadCount > 2 ? Promise.resolve() : reportOfflineActions(apiClient, serverInfo).then(function() { return getNewMedia(apiClient, downloadCount).then(function() { return syncData(apiClient, serverInfo).then(function() { - return console.log("[mediasync]************************************* Exit sync"), Promise.resolve() + return console.debug("mediasync: Exit sync"), Promise.resolve() }) }) }) @@ -348,7 +350,7 @@ define(["localassetmanager"], function(localassetmanager) { console.error(err.toString()) }) } : self.sync = function(apiClient, serverInfo, options) { - return console.log("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("mediasync: Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return syncData(apiClient, serverInfo).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { @@ -365,4 +367,4 @@ define(["localassetmanager"], function(localassetmanager) { }) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/multiserversync.js b/src/libraries/apiclient/sync/multiserversync.js index 0654b5615d..ff01a5ad1d 100644 --- a/src/libraries/apiclient/sync/multiserversync.js +++ b/src/libraries/apiclient/sync/multiserversync.js @@ -3,20 +3,20 @@ define(["serversync"], function(ServerSync) { function syncNext(connectionManager, servers, index, options, resolve, reject) { var length = servers.length; - if (index >= length) return console.log("MultiServerSync.sync complete"), void resolve(); + if (index >= length) return console.debug("MultiServerSync.sync complete"), void resolve(); var server = servers[index]; - console.log("Creating ServerSync to server: " + server.Id), (new ServerSync).sync(connectionManager, server, options).then(function() { - console.log("ServerSync succeeded to server: " + server.Id), syncNext(connectionManager, servers, index + 1, options, resolve, reject) + console.debug("Creating ServerSync to server: " + server.Id), (new ServerSync).sync(connectionManager, server, options).then(function() { + console.debug("ServerSync succeeded to server: " + server.Id), syncNext(connectionManager, servers, index + 1, options, resolve, reject) }, function(err) { - console.log("ServerSync failed to server: " + server.Id + ". " + err), syncNext(connectionManager, servers, index + 1, options, resolve, reject) + console.error("ServerSync failed to server: " + server.Id + ". " + err), syncNext(connectionManager, servers, index + 1, options, resolve, reject) }) } function MultiServerSync() {} return MultiServerSync.prototype.sync = function(connectionManager, options) { - return console.log("MultiServerSync.sync starting..."), new Promise(function(resolve, reject) { + return console.debug("MultiServerSync.sync starting..."), new Promise(function(resolve, reject) { var servers = connectionManager.getSavedServers(); syncNext(connectionManager, servers, 0, options, resolve, reject) }) }, MultiServerSync -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/serversync.js b/src/libraries/apiclient/sync/serversync.js index 34a1b11e8e..887b829cee 100644 --- a/src/libraries/apiclient/sync/serversync.js +++ b/src/libraries/apiclient/sync/serversync.js @@ -2,11 +2,11 @@ define([], function() { "use strict"; function performSync(connectionManager, server, options) { - console.log("ServerSync.performSync to server: " + server.Id), options = options || {}; + console.debug("ServerSync.performSync to server: " + server.Id), options = options || {}; var cameraUploadServers = options.cameraUploadServers || []; - console.log("ServerSync cameraUploadServers: " + JSON.stringify(cameraUploadServers)); + console.debug("ServerSync cameraUploadServers: " + JSON.stringify(cameraUploadServers)); var uploadPhotos = -1 !== cameraUploadServers.indexOf(server.Id); - return console.log("ServerSync uploadPhotos: " + uploadPhotos), (uploadPhotos ? uploadContent(connectionManager, server, options) : Promise.resolve()).then(function() { + return console.debug("ServerSync uploadPhotos: " + uploadPhotos), (uploadPhotos ? uploadContent(connectionManager, server, options) : Promise.resolve()).then(function() { return syncMedia(connectionManager, server, options) }) } @@ -26,7 +26,7 @@ define([], function() { function ServerSync() {} return ServerSync.prototype.sync = function(connectionManager, server, options) { - if (!server.AccessToken && !server.ExchangeToken) return console.log("Skipping sync to server " + server.Id + " because there is no saved authentication information."), Promise.resolve(); + if (!server.AccessToken && !server.ExchangeToken) return console.debug("Skipping sync to server " + server.Id + " because there is no saved authentication information."), Promise.resolve(); var connectionOptions = { updateDateLastAccessed: !1, enableWebSocket: !1, @@ -34,9 +34,9 @@ define([], function() { enableAutomaticBitrateDetection: !1 }; return connectionManager.connectToServer(server, connectionOptions).then(function(result) { - return "SignedIn" === result.State ? performSync(connectionManager, server, options) : (console.log("Unable to connect to server id: " + server.Id), Promise.reject()) + return "SignedIn" === result.State ? performSync(connectionManager, server, options) : (console.error("Unable to connect to server id: " + server.Id), Promise.reject()) }, function(err) { - throw console.log("Unable to connect to server id: " + server.Id), err + throw console.error("Unable to connect to server id: " + server.Id), err }) }, ServerSync -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/transfermanager.js b/src/libraries/apiclient/sync/transfermanager.js index 162a6a1226..d9889fffbd 100644 --- a/src/libraries/apiclient/sync/transfermanager.js +++ b/src/libraries/apiclient/sync/transfermanager.js @@ -27,4 +27,4 @@ define([], function() { resyncTransfers: resyncTransfers, getDownloadItemCount: getDownloadItemCount } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/useractionrepository.js b/src/libraries/apiclient/sync/useractionrepository.js index 8612b05bea..7b33ba1c35 100644 --- a/src/libraries/apiclient/sync/useractionrepository.js +++ b/src/libraries/apiclient/sync/useractionrepository.js @@ -105,4 +105,4 @@ define([], function() { getAll: getAll, getByServerId: getByServerId } -}); \ No newline at end of file +}); diff --git a/src/libraries/pagejs/page.js b/src/libraries/pagejs/page.js deleted file mode 100644 index ce96fd185e..0000000000 --- a/src/libraries/pagejs/page.js +++ /dev/null @@ -1,1077 +0,0 @@ -define([], function () { - - 'use strict'; - - /** - * Detect click event - */ - var clickEvent = ('undefined' !== typeof document) && document.ontouchstart ? 'touchstart' : 'click'; - - /** - * To work properly with the URL - * history.location generated polyfill in https://github.com/devote/HTML5-History-API - */ - - var location = ('undefined' !== typeof window) && (window.history.location || window.location); - - /** - * Perform initial dispatch. - */ - - var dispatch = true; - - - /** - * Decode URL components (query string, pathname, hash). - * Accommodates both regular percent encoding and x-www-form-urlencoded format. - */ - var decodeURLComponents = true; - - /** - * Base path. - */ - - var base = ''; - - /** - * Running flag. - */ - - var running; - - /** - * HashBang option - */ - - var hashbang = false; - - var enableHistory = false; - - /** - * Previous context, for capturing - * page exit events. - */ - - var prevContext; - - var prevPageContext; - - /** - * Register `path` with callback `fn()`, - * or route `path`, or redirection, - * or `page.start()`. - * - * page(fn); - * page('*', fn); - * page('/user/:id', load, user); - * page('/user/' + user.id, { some: 'thing' }); - * page('/user/' + user.id); - * page('/from', '/to') - * page(); - * - * @param {String|Function} path - * @param {Function} fn... - * @api public - */ - - function page(path, fn) { - // - if ('function' === typeof path) { - return page('*', path); - } - - // route to - if ('function' === typeof fn) { - var route = new Route(path); - for (var i = 1; i < arguments.length; ++i) { - page.callbacks.push(route.middleware(arguments[i])); - } - // show with [state] - } else if ('string' === typeof path) { - page['string' === typeof fn ? 'redirect' : 'show'](path, fn); - // start [options] - } else { - page.start(path); - } - } - - /** - * Callback functions. - */ - - page.callbacks = []; - page.exits = []; - - /** - * Current path being processed - * @type {String} - */ - page.current = ''; - - /** - * Number of pages navigated to. - * @type {number} - * - * page.len == 0; - * page('/login'); - * page.len == 1; - */ - - page.len = 0; - - /** - * Get or set basepath to `path`. - * - * @param {String} path - * @api public - */ - - page.base = function (path) { - if (0 === arguments.length) { - return base; - } - base = path; - }; - - /** - * Bind with the given `options`. - * - * Options: - * - * - `click` bind to click events [true] - * - `popstate` bind to popstate [true] - * - `dispatch` perform initial dispatch [true] - * - * @param {Object} options - * @api public - */ - - page.start = function (options) { - options = options || {}; - if (running) { - return; - } - running = true; - if (false === options.dispatch) { - dispatch = false; - } - if (false === options.decodeURLComponents) { - decodeURLComponents = false; - } - if (false !== options.popstate) { - window.addEventListener('popstate', onpopstate, false); - } - if (false !== options.click) { - document.addEventListener(clickEvent, onclick, false); - } - if (options.enableHistory != null) { - enableHistory = options.enableHistory; - } - if (true === options.hashbang) { - hashbang = true; - } - if (!dispatch) { - return; - } - - var url; - - if (hashbang && ~location.hash.indexOf('#!')) { - - url = location.hash.substr(2); - - var href = location.href.toString(); - if (href.indexOf('?') >= href.indexOf('#!')) { - url += location.search; - } - } - else { - url = location.pathname + location.search + location.hash; - } - - page.replace(url, null, true, dispatch); - }; - - /** - * Unbind click and popstate event handlers. - * - * @api public - */ - - page.stop = function () { - if (!running) { - return; - } - page.current = ''; - page.len = 0; - running = false; - document.removeEventListener(clickEvent, onclick, false); - window.removeEventListener('popstate', onpopstate, false); - }; - - /** - * Show `path` with optional `state` object. - * - * @param {String} path - * @param {Object} state - * @param {Boolean} dispatch - * @return {Context} - * @api public - */ - - page.show = function (path, state, dispatch, push, isBack) { - var ctx = new Context(path, state); - ctx.isBack = isBack; - page.current = ctx.path; - if (false !== dispatch) { - page.dispatch(ctx); - } - if (false !== ctx.handled && false !== push) { - ctx.pushState(); - } - return ctx; - }; - - page.restorePreviousState = function () { - - prevContext = prevPageContext; - page.show(prevContext.pathname, prevContext.state, false, true, false); - }; - - /** - * Goes back in the history - * Back should always let the current route push state and then go back. - * - * @param {String} path - fallback path to go back if no more history exists, if undefined defaults to page.base - * @param {Object} [state] - * @api public - */ - - page.back = function (path, state) { - - if (enableHistory) { - // Keep it simple and mimic browser back - history.back(); - return; - } - - if (page.len > 0) { - // this may need more testing to see if all browsers - // wait for the next tick to go back in history - if (enableHistory) { - history.back(); - } else { - - if (backStack.length > 2) { - backStack.length--; - var previousState = backStack[backStack.length - 1]; - page.show(previousState.path, previousState.state, true, false, true); - } - } - page.len--; - } else if (path) { - setTimeout(function () { - page.show(path, state); - }); - } else { - setTimeout(function () { - page.show(base, state); - }); - } - }; - - page.enableNativeHistory = function () { - return enableHistory; - }; - - page.canGoBack = function () { - if (enableHistory) { - return history.length > 1; - } - return (page.len || 0) > 0; - }; - - /** - * Register route to redirect from one path to other - * or just redirect to another route - * - * @param {String} from - if param 'to' is undefined redirects to 'from' - * @param {String} [to] - * @api public - */ - page.redirect = function (from, to) { - // Define route from a path to another - if ('string' === typeof from && 'string' === typeof to) { - page(from, function (e) { - setTimeout(function () { - page.replace(to); - }, 0); - }); - } - - // Wait for the push state and replace it with another - if ('string' === typeof from && 'undefined' === typeof to) { - setTimeout(function () { - page.replace(from); - }, 0); - } - }; - - /** - * Replace `path` with optional `state` object. - * - * @param {String} path - * @param {Object} state - * @return {Context} - * @api public - */ - - - page.replace = function (path, state, init, dispatch, isBack) { - var ctx = new Context(path, state); - ctx.isBack = isBack; - page.current = ctx.path; - ctx.init = init; - ctx.save(); // save before dispatching, which may redirect - if (false !== dispatch) { - page.dispatch(ctx); - } - return ctx; - }; - - /** - * Dispatch the given `ctx`. - * - * @param {Object} ctx - * @api private - */ - - page.dispatch = function (ctx) { - var prev = prevContext, - i = 0, - j = 0; - - prevPageContext = prevContext; - prevContext = ctx; - - function nextExit() { - var fn = page.exits[j++]; - if (!fn) { - return nextEnter(); - } - fn(prev, nextExit); - } - - function nextEnter() { - var fn = page.callbacks[i++]; - - if (ctx.path !== page.current) { - ctx.handled = false; - return; - } - if (!fn) { - return unhandled(ctx); - } - fn(ctx, nextEnter); - } - - if (prev) { - nextExit(); - } else { - nextEnter(); - } - }; - - /** - * Unhandled `ctx`. When it's not the initial - * popstate then redirect. If you wish to handle - * 404s on your own use `page('*', callback)`. - * - * @param {Context} ctx - * @api private - */ - - function unhandled(ctx) { - if (ctx.handled) { - return; - } - var current; - - if (hashbang) { - current = base + location.hash.replace('#!', ''); - } else { - current = location.pathname + location.search; - } - - if (current === ctx.canonicalPath) { - return; - } - page.stop(); - ctx.handled = false; - location.href = ctx.canonicalPath; - } - - /** - * Register an exit route on `path` with - * callback `fn()`, which will be called - * on the previous context when a new - * page is visited. - */ - page.exit = function (path, fn) { - if (typeof path === 'function') { - return page.exit('*', path); - } - - var route = new Route(path); - for (var i = 1; i < arguments.length; ++i) { - page.exits.push(route.middleware(arguments[i])); - } - }; - - /** - * Remove URL encoding from the given `str`. - * Accommodates whitespace in both x-www-form-urlencoded - * and regular percent-encoded form. - * - * @param {str} URL component to decode - */ - function decodeURLEncodedURIComponent(val) { - if (typeof val !== 'string') { return val; } - return decodeURLComponents ? decodeURIComponent(val.replace(/\+/g, ' ')) : val; - } - - /** - * Initialize a new "request" `Context` - * with the given `path` and optional initial `state`. - * - * @param {String} path - * @param {Object} state - * @api public - */ - - function Context(path, state) { - if ('/' === path[0] && 0 !== path.indexOf(base)) { - path = base + (hashbang ? '#!' : '') + path; - } - var i = path.indexOf('?'); - - this.canonicalPath = path; - this.path = path.replace(base, '') || '/'; - if (hashbang) { - this.path = this.path.replace('#!', '') || '/'; - } - - this.title = document.title; - this.state = state || {}; - this.state.path = path; - this.querystring = ~i ? decodeURLEncodedURIComponent(path.slice(i + 1)) : ''; - this.pathname = decodeURLEncodedURIComponent(~i ? path.slice(0, i) : path); - this.params = {}; - - // fragment - this.hash = ''; - if (!hashbang) { - if (!~this.path.indexOf('#')) { - return; - } - var parts = this.path.split('#'); - this.path = parts[0]; - this.hash = decodeURLEncodedURIComponent(parts[1]) || ''; - this.querystring = this.querystring.split('#')[0]; - } - } - - /** - * Expose `Context`. - */ - - page.Context = Context; - var backStack = []; - - /** - * Push state. - * - * @api private - */ - - Context.prototype.pushState = function () { - page.len++; - - if (enableHistory) { - history.pushState(this.state, this.title, hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath); - } else { - backStack.push({ - state: this.state, - title: this.title, - url: (hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath), - path: this.path - }); - } - }; - - /** - * Save the context state. - * - * @api public - */ - - Context.prototype.save = function () { - - if (enableHistory) { - history.replaceState(this.state, this.title, hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath); - } else { - backStack[page.len || 0] = { - state: this.state, - title: this.title, - url: (hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath), - path: this.path - }; - } - }; - - /** - * Initialize `Route` with the given HTTP `path`, - * and an array of `callbacks` and `options`. - * - * Options: - * - * - `sensitive` enable case-sensitive routes - * - `strict` enable strict matching for trailing slashes - * - * @param {String} path - * @param {Object} options. - * @api private - */ - - function Route(path, options) { - options = options || {}; - this.path = (path === '*') ? '(.*)' : path; - this.method = 'GET'; - this.regexp = pathToRegexp(this.path, - this.keys = [], - options.sensitive, - options.strict); - } - - /** - * Expose `Route`. - */ - - page.Route = Route; - - /** - * Return route middleware with - * the given callback `fn()`. - * - * @param {Function} fn - * @return {Function} - * @api public - */ - - Route.prototype.middleware = function (fn) { - var self = this; - return function (ctx, next) { - if (self.match(ctx.path, ctx.params)) { - return fn(ctx, next); - } - next(); - }; - }; - - /** - * Check if this route matches `path`, if so - * populate `params`. - * - * @param {String} path - * @param {Object} params - * @return {Boolean} - * @api private - */ - - Route.prototype.match = function (path, params) { - var keys = this.keys, - qsIndex = path.indexOf('?'), - pathname = ~qsIndex ? path.slice(0, qsIndex) : path, - m = this.regexp.exec(decodeURIComponent(pathname)); - - if (!m) { - return false; - } - - for (var i = 1, len = m.length; i < len; ++i) { - var key = keys[i - 1]; - var val = decodeURLEncodedURIComponent(m[i]); - if (val !== undefined || !(hasOwnProperty.call(params, key.name))) { - params[key.name] = val; - } - } - - return true; - }; - - - var previousPopState = {}; - - function ignorePopState(event) { - - var state = event.state || {}; - - if (previousPopState.navigate === false) { - // Ignore - previousPopState = state; - return true; - } - - previousPopState = state; - return false; - } - - page.pushState = function (state, title, url) { - - if (hashbang) { - url = '#!' + url; - } - - history.pushState(state, title, url); - previousPopState = state; - }; - - /** - * Handle "populate" events. - */ - - var onpopstate = (function () { - var loaded = false; - if ('undefined' === typeof window) { - return; - } - if (document.readyState === 'complete') { - loaded = true; - } else { - window.addEventListener('load', function () { - setTimeout(function () { - loaded = true; - }, 0); - }); - } - return function onpopstate(e) { - if (!loaded) { - return; - } - if (ignorePopState(e)) { - return; - } - if (e.state) { - var path = e.state.path; - page.replace(path, e.state, null, null, true); - } else { - page.show(location.pathname + location.hash, undefined, undefined, false, true); - } - }; - })(); - /** - * Handle "click" events. - */ - - function onclick(e, checkWhich) { - - if (1 !== which(e) && checkWhich !== false) { - return; - } - - if (e.metaKey || e.ctrlKey || e.shiftKey) { - return; - } - if (e.defaultPrevented) { - return; - } - - - // ensure link - var el = e.target; - - while (el && 'A' !== el.nodeName) { - el = el.parentNode; - } - if (!el || 'A' !== el.nodeName) { - return; - } - - - // Ignore if tag has - // 1. "download" attribute - // 2. rel="external" attribute - if (el.hasAttribute('download') || el.getAttribute('rel') === 'external') { - return; - } - - // ensure non-hash for the same path - var link = el.getAttribute('href'); - if (link === '#') { - e.preventDefault(); - return; - } - - if (!hashbang && el.pathname === location.pathname && (el.hash || '#' === link)) { - return; - } - - // check target - if (el.target) { - return; - } - - // x-origin - if (!sameOrigin(el.href)) { - return; - } - - // rebuild path - var path = el.pathname + el.search + (el.hash || ''); - - // same page - var orig = path; - - if (path.indexOf(base) === 0) { - path = path.substr(base.length); - } - - if (hashbang) { - path = path.replace('#!', ''); - } - - if (base && orig === path) { - // This is causing navigation to be canceled in edge uwp - // If needed this can be changed to only be skipped when called via handleAnchorClick - //return; - } - - e.preventDefault(); - page.show(orig); - } - - page.handleAnchorClick = onclick; - - /** - * Event button. - */ - - function which(e) { - e = e || window.event; - return null === e.which ? e.button : e.which; - } - - /** - * Check if `href` is the same origin. - */ - - function sameOrigin(href) { - var origin = location.protocol + '//' + location.hostname; - if (location.port) { - origin += ':' + location.port; - } - return (href && (0 === href.indexOf(origin))); - } - - page.sameOrigin = sameOrigin; - - /** - * The main path matching regexp utility. - * - * @type {RegExp} - */ - var PATH_REGEXP = new RegExp([ - // Match escaped characters that would otherwise appear in future matches. - // This allows the user to escape special characters that won't transform. - '(\\\\.)', - // Match Express-style parameters and un-named parameters with a prefix - // and optional suffixes. Matches appear as: - // - // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] - // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] - // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] - '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^()])+)\\))?|\\(((?:\\\\.|[^()])+)\\))([+*?])?|(\\*))' - ].join('|'), 'g'); - - /** - * Parse a string for the raw tokens. - * - * @param {String} str - * @return {Array} - */ - function parse(str) { - var tokens = []; - var key = 0; - var index = 0; - var path = ''; - var res; - - while ((res = PATH_REGEXP.exec(str)) != null) { - var m = res[0]; - var escaped = res[1]; - var offset = res.index; - path += str.slice(index, offset); - index = offset + m.length; - - // Ignore already escaped sequences. - if (escaped) { - path += escaped[1]; - continue; - } - - // Push the current path onto the tokens. - if (path) { - tokens.push(path); - path = ''; - } - - var prefix = res[2]; - var name = res[3]; - var capture = res[4]; - var group = res[5]; - var suffix = res[6]; - var asterisk = res[7]; - - var repeat = suffix === '+' || suffix === '*'; - var optional = suffix === '?' || suffix === '*'; - var delimiter = prefix || '/'; - var pattern = capture || group || (asterisk ? '.*' : '[^' + delimiter + ']+?'); - - tokens.push({ - name: name || key++, - prefix: prefix || '', - delimiter: delimiter, - optional: optional, - repeat: repeat, - pattern: escapeGroup(pattern) - }); - } - - // Match any characters still remaining. - if (index < str.length) { - path += str.substr(index); - } - - // If the path exists, push it onto the end. - if (path) { - tokens.push(path); - } - - return tokens; - } - - var isarray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; - - /** - * Escape a regular expression string. - * - * @param {String} str - * @return {String} - */ - function escapeString(str) { - return str.replace(/([.+*?=^!:${}()[\]|\/])/g, '\\$1'); - } - - /** - * Escape the capturing group by escaping special characters and meaning. - * - * @param {String} group - * @return {String} - */ - function escapeGroup(group) { - return group.replace(/([=!:$\/()])/g, '\\$1'); - } - - /** - * Attach the keys as a property of the regexp. - * - * @param {RegExp} re - * @param {Array} keys - * @return {RegExp} - */ - function attachKeys(re, keys) { - re.keys = keys; - return re; - } - - /** - * Get the flags for a regexp from the options. - * - * @param {Object} options - * @return {String} - */ - function flags(options) { - return options.sensitive ? '' : 'i'; - } - - /** - * Pull out keys from a regexp. - * - * @param {RegExp} path - * @param {Array} keys - * @return {RegExp} - */ - function regexpToRegexp(path, keys) { - // Use a negative lookahead to match only capturing groups. - var groups = path.source.match(/\((?!\?)/g); - - if (groups) { - for (var i = 0; i < groups.length; i++) { - keys.push({ - name: i, - prefix: null, - delimiter: null, - optional: false, - repeat: false, - pattern: null - }); - } - } - - return attachKeys(path, keys); - } - - /** - * Transform an array into a regexp. - * - * @param {Array} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - */ - function arrayToRegexp(path, keys, options) { - var parts = []; - - for (var i = 0; i < path.length; i++) { - parts.push(pathToRegexp(path[i], keys, options).source); - } - - var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); - - return attachKeys(regexp, keys); - } - - /** - * Create a path regexp from string input. - * - * @param {String} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - */ - function stringToRegexp(path, keys, options) { - var tokens = parse(path); - var re = tokensToRegExp(tokens, options); - - // Attach keys back to the regexp. - for (var i = 0; i < tokens.length; i++) { - if (typeof tokens[i] !== 'string') { - keys.push(tokens[i]); - } - } - - return attachKeys(re, keys); - } - - /** - * Expose a function for taking tokens and returning a RegExp. - * - * @param {Array} tokens - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - */ - function tokensToRegExp(tokens, options) { - options = options || {}; - - var strict = options.strict; - var end = options.end !== false; - var route = ''; - var lastToken = tokens[tokens.length - 1]; - var endsWithSlash = typeof lastToken === 'string' && /\/$/.test(lastToken); - - // Iterate over the tokens and create our regexp string. - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - - if (typeof token === 'string') { - route += escapeString(token); - } else { - var prefix = escapeString(token.prefix); - var capture = token.pattern; - - if (token.repeat) { - capture += '(?:' + prefix + capture + ')*'; - } - - if (token.optional) { - if (prefix) { - capture = '(?:' + prefix + '(' + capture + '))?'; - } else { - capture = '(' + capture + ')?'; - } - } else { - capture = prefix + '(' + capture + ')'; - } - - route += capture; - } - } - - // In non-strict mode we allow a slash at the end of match. If the path to - // match already ends with a slash, we remove it for consistency. The slash - // is valid at the end of a path match, not in the middle. This is important - // in non-ending mode, where "/test/" shouldn't match "/test//route". - if (!strict) { - route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?'; - } - - if (end) { - route += '$'; - } else { - // In non-ending mode, we need the capturing groups to match as much as - // possible by using a positive lookahead to the end or next path segment. - route += strict && endsWithSlash ? '' : '(?=\\/|$)'; - } - - return new RegExp('^' + route, flags(options)); - } - - /** - * Normalize the given path string, returning a regular expression. - * - * An empty array can be passed in for the keys, which will hold the - * placeholder key descriptions. For example, using `/user/:id`, `keys` will - * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. - * - * @param {(String|RegExp|Array)} path - * @param {Array} [keys] - * @param {Object} [options] - * @return {RegExp} - */ - function pathToRegexp(path, keys, options) { - keys = keys || []; - - if (!isarray(keys)) { - options = keys; - keys = []; - } else if (!options) { - options = {}; - } - - if (path instanceof RegExp) { - return regexpToRegexp(path, keys, options); - } - - if (isarray(path)) { - return arrayToRegexp(path, keys, options); - } - - return stringToRegexp(path, keys, options); - } - - return page; - -}); \ No newline at end of file diff --git a/src/libraries/query-string/index.js b/src/libraries/query-string/index.js deleted file mode 100644 index 515b745bf3..0000000000 --- a/src/libraries/query-string/index.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -window.queryString = {}, window.queryString.extract = function(maybeUrl) { - return maybeUrl.split("?")[1] || "" -}, window.queryString.parse = function(str) { - return "string" != typeof str ? {} : (str = str.trim().replace(/^(\?|#|&)/, ""), str ? str.split("&").reduce(function(ret, param) { - var parts = param.replace(/\+/g, " ").split("="), - key = parts[0], - val = parts[1]; - return key = decodeURIComponent(key), val = void 0 === val ? null : decodeURIComponent(val), ret.hasOwnProperty(key) ? Array.isArray(ret[key]) ? ret[key].push(val) : ret[key] = [ret[key], val] : ret[key] = val, ret - }, {}) : {}) -}, window.queryString.stringify = function(obj) { - return obj ? Object.keys(obj).sort().map(function(key) { - var val = obj[key]; - return Array.isArray(val) ? val.sort().map(function(val2) { - return encodeURIComponent(key) + "=" + encodeURIComponent(val2) - }).join("&") : encodeURIComponent(key) + "=" + encodeURIComponent(val) - }).join("&") : "" -}; \ No newline at end of file diff --git a/src/libraries/query-string/test.js b/src/libraries/query-string/test.js deleted file mode 100644 index 4e16ad17c1..0000000000 --- a/src/libraries/query-string/test.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; -var assert = require("assert"), - qs = require("./"); -describe(".parse()", function() { - it("query strings starting with a `?`", function() { - assert.deepEqual(qs.parse("?foo=bar"), { - foo: "bar" - }) - }), it("query strings starting with a `#`", function() { - assert.deepEqual(qs.parse("#foo=bar"), { - foo: "bar" - }) - }), it("query strings starting with a `&", function() { - assert.deepEqual(qs.parse("&foo=bar&foo=baz"), { - foo: ["bar", "baz"] - }) - }), it("parse a query string", function() { - assert.deepEqual(qs.parse("foo=bar"), { - foo: "bar" - }) - }), it("parse multiple query string", function() { - assert.deepEqual(qs.parse("foo=bar&key=val"), { - foo: "bar", - key: "val" - }) - }), it("parse query string without a value", function() { - assert.deepEqual(qs.parse("foo"), { - foo: null - }), assert.deepEqual(qs.parse("foo&key"), { - foo: null, - key: null - }), assert.deepEqual(qs.parse("foo=bar&key"), { - foo: "bar", - key: null - }) - }), it("return empty object if no qss can be found", function() { - assert.deepEqual(qs.parse("?"), {}), assert.deepEqual(qs.parse("&"), {}), assert.deepEqual(qs.parse("#"), {}), assert.deepEqual(qs.parse(" "), {}) - }), it("handle `+` correctly", function() { - assert.deepEqual(qs.parse("foo+faz=bar+baz++"), { - "foo faz": "bar baz " - }) - }), it("handle multiple of the same key", function() { - assert.deepEqual(qs.parse("foo=bar&foo=baz"), { - foo: ["bar", "baz"] - }) - }), it("query strings params including embedded `=`", function() { - assert.deepEqual(qs.parse("?param=http%3A%2F%2Fsomeurl%3Fid%3D2837"), { - param: "http://someurl?id=2837" - }) - }) -}), describe(".stringify()", function() { - it("stringify", function() { - assert.strictEqual(qs.stringify({ - foo: "bar" - }), "foo=bar"), assert.strictEqual(qs.stringify({ - foo: "bar", - bar: "baz" - }), "bar=baz&foo=bar") - }), it("different types", function() { - assert.strictEqual(qs.stringify(), ""), assert.strictEqual(qs.stringify(0), "") - }), it("URI encode", function() { - assert.strictEqual(qs.stringify({ - "foo bar": "baz faz" - }), "foo%20bar=baz%20faz") - }), it("handle array value", function() { - assert.strictEqual(qs.stringify({ - abc: "abc", - foo: ["bar", "baz"] - }), "abc=abc&foo=bar&foo=baz") - }) -}), describe(".extract()", function() { - it("should extract qs from url", function() { - assert.equal(qs.extract("http://foo.bar/?abc=def&hij=klm"), "abc=def&hij=klm"), assert.equal(qs.extract("http://foo.bar/?"), "") - }), it("should handle strings not containing qs", function() { - assert.equal(qs.extract("http://foo.bar/"), ""), assert.equal(qs.extract(""), "") - }), it("should throw for invalid values", function() { - assert.throws(function() { - qs.extract(null) - }, TypeError), assert.throws(function() { - qs.extract(void 0) - }, TypeError) - }) -}); \ No newline at end of file diff --git a/src/library.html b/src/library.html index 7e313c1708..398613f9e6 100644 --- a/src/library.html +++ b/src/library.html @@ -12,4 +12,4 @@
-
\ No newline at end of file +
diff --git a/src/librarydisplay.html b/src/librarydisplay.html index b5510ddb14..25dce48223 100644 --- a/src/librarydisplay.html +++ b/src/librarydisplay.html @@ -47,11 +47,11 @@
${OptionSaveMetadataAsHiddenHelp}
-
+
-
\ No newline at end of file +
diff --git a/src/list.html b/src/list.html index e31efa27e6..375653c12d 100644 --- a/src/list.html +++ b/src/list.html @@ -7,45 +7,45 @@ ${HeaderPlayAll}
diff --git a/src/livetv.html b/src/livetv.html index 2ff8990e4a..9986529b7f 100644 --- a/src/livetv.html +++ b/src/livetv.html @@ -7,7 +7,7 @@
@@ -16,7 +16,7 @@
@@ -25,7 +25,7 @@
@@ -34,7 +34,7 @@
@@ -43,7 +43,7 @@
@@ -52,7 +52,7 @@
@@ -63,7 +63,7 @@
- +
@@ -72,7 +72,7 @@
diff --git a/src/livetvguideprovider.html b/src/livetvguideprovider.html index 86bf3ea7d6..d0d52aac23 100644 --- a/src/livetvguideprovider.html +++ b/src/livetvguideprovider.html @@ -1,11 +1,7 @@
-
- -
- -
+
-
\ No newline at end of file +
diff --git a/src/livetvsettings.html b/src/livetvsettings.html index 044226a085..1b1557889e 100644 --- a/src/livetvsettings.html +++ b/src/livetvsettings.html @@ -34,7 +34,7 @@
- +
${LabelRecordingPathHelp}
@@ -43,7 +43,7 @@
- +
@@ -51,7 +51,7 @@
- +
@@ -84,7 +84,7 @@
- +
@@ -99,4 +99,4 @@
-
\ No newline at end of file + diff --git a/src/livetvstatus.html b/src/livetvstatus.html index 3abd14de34..fc855f32b0 100644 --- a/src/livetvstatus.html +++ b/src/livetvstatus.html @@ -8,7 +8,7 @@ ${HeaderTunerDevices} ${Help} @@ -21,7 +21,7 @@

${HeaderGuideProviders}

diff --git a/src/livetvtuner.html b/src/livetvtuner.html index 53e8f4b01d..fecbda90aa 100644 --- a/src/livetvtuner.html +++ b/src/livetvtuner.html @@ -24,7 +24,7 @@
- + diff --git a/src/log.html b/src/log.html index dd98b0d333..5943f5dc08 100644 --- a/src/log.html +++ b/src/log.html @@ -5,4 +5,4 @@ - \ No newline at end of file + diff --git a/src/login.html b/src/login.html index 629f434313..955ce3879e 100644 --- a/src/login.html +++ b/src/login.html @@ -1,11 +1,7 @@
-
-
-

${HeaderPleaseSignIn}

-
@@ -27,13 +23,14 @@ +
-
-
+
+
@@ -50,12 +47,11 @@ ${ButtonForgotPassword} - +

-
-
\ No newline at end of file +
diff --git a/src/manifest.json b/src/manifest.json index a87b086dac..fed1177e24 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,5 +1,4 @@ { - "name": "Jellyfin", "description": "Jellyfin: the Free Software Media System.", "lang": "en-US", @@ -8,7 +7,8 @@ "theme_color": "#101010", "background_color": "#101010", "display": "standalone", - "icons": [{ + "icons": [ + { "sizes": "72x72", "src": "touchicon72.png", "type": "image/png" diff --git a/src/metadataimages.html b/src/metadataimages.html index 8250572011..8ad129256c 100644 --- a/src/metadataimages.html +++ b/src/metadataimages.html @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/metadatanfo.html b/src/metadatanfo.html index 7263952b42..4005c74f67 100644 --- a/src/metadatanfo.html +++ b/src/metadatanfo.html @@ -46,4 +46,4 @@ - \ No newline at end of file + diff --git a/src/movies.html b/src/movies.html index c211d9686a..e552ca392f 100644 --- a/src/movies.html +++ b/src/movies.html @@ -3,15 +3,15 @@
- - - + + +
-
+
-
+
@@ -46,14 +46,14 @@
- - + +
-
+
@@ -62,7 +62,7 @@
- +
@@ -74,9 +74,9 @@
- - - + + +
@@ -90,4 +90,4 @@
-
\ No newline at end of file +
diff --git a/src/music.html b/src/music.html index e86f179208..9a284a5f8f 100644 --- a/src/music.html +++ b/src/music.html @@ -37,17 +37,17 @@
- - - - - + + + + +
-
+
-
+
@@ -56,14 +56,14 @@
- - + +
-
+
-
+
@@ -72,14 +72,14 @@
- - + +
-
+
-
+
@@ -92,8 +92,8 @@
- - + +
diff --git a/src/mypreferencesdisplay.html b/src/mypreferencesdisplay.html index 799681f061..bee49754af 100644 --- a/src/mypreferencesdisplay.html +++ b/src/mypreferencesdisplay.html @@ -1,4 +1,4 @@
-
\ No newline at end of file +
diff --git a/src/mypreferenceshome.html b/src/mypreferenceshome.html index f45a6478bf..79c5ccc4bd 100644 --- a/src/mypreferenceshome.html +++ b/src/mypreferenceshome.html @@ -1,4 +1,4 @@
-
\ No newline at end of file +
diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 0638a49d9d..41fcd1b75c 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -5,7 +5,7 @@

- person + person
${ButtonProfile}
@@ -14,7 +14,7 @@
- tv + tv
${HeaderDisplay}
@@ -23,7 +23,7 @@
- home + home
${HeaderHome}
@@ -32,7 +32,7 @@
- play_circle_filled +
${TitlePlayback}
@@ -41,7 +41,7 @@
- closed_caption +
${Subtitles}
@@ -52,7 +52,7 @@

${HeaderAdmin}

- dashboard + dashboard
${TabDashboard}
@@ -60,7 +60,7 @@
- mode_edit +
${Metadata}
@@ -69,9 +69,9 @@

${HeaderUser}

-
+
- wifi + wifi
${HeaderSelectServer}
@@ -79,7 +79,7 @@
- exit_to_app +
${ButtonSignOut}
diff --git a/src/networking.html b/src/networking.html index 35468a94c9..1352e0ef5f 100644 --- a/src/networking.html +++ b/src/networking.html @@ -5,7 +5,7 @@
@@ -61,7 +61,7 @@
- +
${LabelCustomCertificatePathHelp}
diff --git a/src/notificationsetting.html b/src/notificationsetting.html index 46c361910d..f982aa29ce 100644 --- a/src/notificationsetting.html +++ b/src/notificationsetting.html @@ -65,4 +65,4 @@
-
\ No newline at end of file +
diff --git a/src/nowplaying.html b/src/nowplaying.html index 44b7e38163..59b6a4b789 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -9,40 +9,40 @@

- +
-
+
@@ -55,15 +55,15 @@
@@ -72,67 +72,72 @@
- -
\ No newline at end of file +
diff --git a/src/usernew.html b/src/usernew.html index 2e091e8d93..bca1e72fea 100644 --- a/src/usernew.html +++ b/src/usernew.html @@ -5,7 +5,7 @@

${HeaderAddUser}

- ${Help} + ${Help}
@@ -59,4 +59,4 @@
-
\ No newline at end of file +
diff --git a/src/userparentalcontrol.html b/src/userparentalcontrol.html index 302969b6c7..4cb5708db7 100644 --- a/src/userparentalcontrol.html +++ b/src/userparentalcontrol.html @@ -4,7 +4,7 @@ @@ -31,7 +31,7 @@

${LabelBlockContentWithTags}

@@ -41,7 +41,7 @@

${HeaderAccessSchedule}

diff --git a/src/userpassword.html b/src/userpassword.html index 3f65c214fc..f38e395999 100644 --- a/src/userpassword.html +++ b/src/userpassword.html @@ -4,7 +4,7 @@ diff --git a/src/userprofiles.html b/src/userprofiles.html index 1272957e57..022e06b95f 100644 --- a/src/userprofiles.html +++ b/src/userprofiles.html @@ -6,7 +6,7 @@

${HeaderUsers}

${Help}
diff --git a/src/videoosd.html b/src/videoosd.html index 0c7a910908..c200360c05 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -1,83 +1,82 @@
-
- -
-
-
- +
+
- -
- -
+
-

- autorenew ${FetchingData} + autorenew + ${FetchingData}
-
-
+
- +
+ -
+
+ + + +
diff --git a/src/wizardfinish.html b/src/wizardfinish.html index e593c430fa..d3a0c4a831 100644 --- a/src/wizardfinish.html +++ b/src/wizardfinish.html @@ -5,11 +5,11 @@

${WizardCompleted}

diff --git a/src/wizardlibrary.html b/src/wizardlibrary.html index 710bf55816..4fad656581 100644 --- a/src/wizardlibrary.html +++ b/src/wizardlibrary.html @@ -3,7 +3,7 @@

${HeaderSetupLibrary}

- +

@@ -11,12 +11,12 @@
diff --git a/src/wizardremoteaccess.html b/src/wizardremoteaccess.html index f0375a4e2d..c7ddfb7e84 100644 --- a/src/wizardremoteaccess.html +++ b/src/wizardremoteaccess.html @@ -21,12 +21,12 @@
diff --git a/src/wizardsettings.html b/src/wizardsettings.html index cced04c5b3..f753919478 100644 --- a/src/wizardsettings.html +++ b/src/wizardsettings.html @@ -16,12 +16,12 @@
diff --git a/src/wizardstart.html b/src/wizardstart.html index 1308fcb2ea..615feb3b04 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -4,7 +4,7 @@

${WelcomeToProject}

- + ${ButtonQuickStartGuide}
@@ -20,7 +20,7 @@
diff --git a/src/wizarduser.html b/src/wizarduser.html index 0a943f81a9..90f492b0fe 100644 --- a/src/wizarduser.html +++ b/src/wizarduser.html @@ -7,8 +7,8 @@

${UserProfilesIntro}


- -
${MoreUsersCanBeAddedLater}
+ +
${SelectAdminUsername}
@@ -17,16 +17,17 @@
+

${MoreUsersCanBeAddedLater}

diff --git a/webpack.common.js b/webpack.common.js index 969c7d6e08..6b357102c0 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -5,7 +5,13 @@ const CopyPlugin = require("copy-webpack-plugin"); const Assets = [ "alameda/alameda.js", - "requirejs/require.js" + "native-promise-only/npo.js", + "libass-wasm/dist/subtitles-octopus-worker.js", + "libass-wasm/dist/subtitles-octopus-worker.data", + "libass-wasm/dist/subtitles-octopus-worker.wasm", + "libass-wasm/dist/subtitles-octopus-worker-legacy.js", + "libass-wasm/dist/subtitles-octopus-worker-legacy.data", + "libass-wasm/dist/subtitles-octopus-worker-legacy.js.mem" ]; module.exports = { @@ -16,12 +22,12 @@ module.exports = { path.resolve(__dirname, "node_modules") ] }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist"), + libraryTarget: "amd-require" + }, plugins: [ - new CleanWebpackPlugin(), - new CopyPlugin([{ - from: "**/*", - to: "." - }]), new CopyPlugin( Assets.map(asset => { return { diff --git a/webpack.dev.js b/webpack.dev.js index d3791e679f..28617f8283 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -1,8 +1,6 @@ const path = require("path"); const common = require("./webpack.common"); const merge = require("webpack-merge"); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const ConcatPlugin = require('webpack-concat-plugin'); module.exports = merge(common, { mode: "development", @@ -13,6 +11,11 @@ module.exports = merge(common, { }, module: { rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: "babel-loader" + }, { test: /\.css$/i, use: ["style-loader", "css-loader", "postcss-loader"] @@ -20,17 +23,13 @@ module.exports = merge(common, { { test: /\.(png|jpg|gif)$/i, use: ["file-loader"] + }, + { + test: /\.(woff|woff2|eot|ttf|otf)$/, + use: [ + 'file-loader', + ] } ] - }, - plugins: [ - new HtmlWebpackPlugin({ - filename: 'index.html', - template: 'index.html' - }), - new ConcatPlugin({ - name: 'scripts/apploader.js', - filesToConcat: ['./standalone.js', './scripts/apploader.js'] - }) - ] + } }); diff --git a/webpack.prod.js b/webpack.prod.js index 319d8f14fc..52d5050c38 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -4,13 +4,13 @@ const merge = require("webpack-merge"); module.exports = merge(common, { mode: "production", - output: { - filename: "bundle.js", - path: path.resolve(__dirname, "dist"), - libraryTarget: "amd-require" - }, module: { rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: "babel-loader" + }, { test: /\.css$/i, use: ["style-loader", "css-loader", "postcss-loader"] @@ -18,6 +18,12 @@ module.exports = merge(common, { { test: /\.(png|jpg|gif)$/i, use: ["file-loader"] + }, + { + test: /\.(woff|woff2|eot|ttf|otf)$/, + use: [ + 'file-loader', + ] } ] } diff --git a/yarn.lock b/yarn.lock index 34c6ad9164..8dee672565 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,22 +2,753 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/compat-data@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" + integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== + dependencies: + browserslist "^4.8.5" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@>=7.2.2", "@babel/core@^7.8.6": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.7" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== + dependencies: + "@babel/types" "^7.8.7" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.7" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" + integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.8.6" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + dependencies: + "@babel/helper-call-delegate" "^7.8.7" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/polyfill@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f" + integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + +"@babel/preset-env@^7.8.6": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" + integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== + dependencies: + "@babel/compat-data" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.6" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.6" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.7" + browserslist "^4.8.5" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" + integrity sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ== + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.6.0" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -26,16 +757,47 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -55,10 +817,30 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + "@types/node@*": - version "12.7.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc" - integrity sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ== + version "13.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" + integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== "@types/source-list-map@*": version "0.1.2" @@ -66,9 +848,9 @@ integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/tapable@*": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.4.tgz#b4ffc7dc97b498c969b360a41eee247f82616370" - integrity sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" + integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== "@types/uglify-js@*": version "3.0.4" @@ -77,19 +859,40 @@ dependencies: source-map "^0.6.1" +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/vfile-message@*": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" + integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== + dependencies: + vfile-message "*" + +"@types/vfile@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" + integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== + dependencies: + "@types/node" "*" + "@types/unist" "*" + "@types/vfile-message" "*" + "@types/webpack-sources@*": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.5.tgz#be47c10f783d3d6efe1471ff7f042611bd464a92" - integrity sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w== + version "0.1.6" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.6.tgz#3d21dfc2ec0ad0c77758e79362426a9ba7d7cbcb" + integrity sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.6.1" "@types/webpack@^4.4.31": - version "4.41.0" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.0.tgz#b813a044d8b0dec7dfcd7622fdbe327bde06eb9a" - integrity sha512-tWkdf9nO0zFgAY/EumUKwrDUhraHKDqCPhwfFR/R8l0qnPdgb9le0Gzhvb7uzVpouuDGBgiE//ZdY+5jcZy2TA== + version "4.41.7" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.7.tgz#22be27dbd4362b01c3954ca9b021dbc9328d9511" + integrity sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -267,15 +1070,38 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn@^6.0.7, acorn@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" - integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +acorn@5.X, acorn@^5.0.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" ajv-errors@^1.0.0: version "1.0.1" @@ -287,30 +1113,61 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.9.1: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -alameda@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.3.0.tgz#6f5a633940440f7adfa7ab4490326c508f7f360e" - integrity sha512-DRhAXboxtfpHTawg5XRH9mJ3soyd5QocfD47BwgvbI5ryxCs+ga6yju2K0bvFRxINzRBnoJVlUIq/ndVBk6w1Q== +alameda@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.4.0.tgz#ca53cad0feb5e24994a9be859e0593e8c2d8f58c" + integrity sha512-d6nIRyg4SD/zBupcfZ3lUis58l4H/3U7c1RBtFkcz/7u1dDIQwx26KUvKJ35esOVP6WsAjmRoP2VQ39kQZT/Gg== + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" ansi-html@0.0.7: version "0.0.7" @@ -332,6 +1189,16 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -339,6 +1206,24 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -347,11 +1232,35 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +arch@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" + integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= + dependencies: + file-type "^4.2.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -372,16 +1281,45 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.1.0: +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.0.0" + arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -392,14 +1330,48 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-union@^1.0.1: +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" -array-uniq@^1.0.1: +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= @@ -409,11 +1381,21 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -423,6 +1405,18 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -441,49 +1435,158 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^1.5.2: +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + +async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -atob@^2.1.1: +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.7.3: - version "9.7.3" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" - integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== +autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.7.4: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: - browserslist "^4.8.0" - caniuse-lite "^1.0.30001012" + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.23" + postcss "^7.0.26" postcss-value-parser "^4.0.2" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axios@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +babel-loader@^8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -502,6 +1605,25 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -512,15 +1634,90 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bin-build@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== + dependencies: + decompress "^4.0.0" + download "^6.2.2" + execa "^0.7.0" + p-map-series "^1.0.0" + tempfile "^2.0.0" + +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + +bin-version-check@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" + integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== + dependencies: + bin-version "^3.0.0" + semver "^5.6.0" + semver-truncate "^1.1.2" + +bin-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839" + integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== + dependencies: + execa "^1.0.0" + find-versions "^3.0.0" + +bin-wrapper@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" + integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== + dependencies: + bin-check "^4.1.0" + bin-version-check "^4.0.0" + download "^7.1.0" + import-lazy "^3.1.0" + os-filter-obj "^2.0.0" + pify "^4.0.1" + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -555,7 +1752,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -584,11 +1781,76 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-sync-client@^2.26.6: + version "2.26.6" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" + integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== + dependencies: + etag "1.8.1" + fresh "0.5.2" + mitt "^1.1.3" + rxjs "^5.5.6" + +browser-sync-ui@^2.26.4: + version "2.26.4" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" + integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1" + immutable "^3" + server-destroy "1.0.1" + socket.io-client "^2.0.4" + stream-throttle "^0.1.3" + +browser-sync@^2.26.7: + version "2.26.7" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" + integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== + dependencies: + browser-sync-client "^2.26.6" + browser-sync-ui "^2.26.4" + bs-recipes "1.3.4" + bs-snippet-injector "^2.0.1" + chokidar "^2.0.4" + connect "3.6.6" + connect-history-api-fallback "^1" + dev-ip "^1.0.1" + easy-extender "^2.3.4" + eazy-logger "^3" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "1.15.2" + immutable "^3" + localtunnel "1.9.2" + micromatch "^3.1.10" + opn "5.3.0" + portscanner "2.1.1" + qs "6.2.3" + raw-body "^2.3.2" + resp-modifier "6.0.2" + rx "4.1.0" + send "0.16.2" + serve-index "1.9.1" + serve-static "1.13.2" + server-destroy "1.0.1" + socket.io "2.1.1" + ua-parser-js "0.7.17" + yargs "6.4.0" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -648,14 +1910,60 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.8.0: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== +browserslist@^1.1.3: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" + integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== + dependencies: + caniuse-lite "^1.0.30001030" + electron-to-chromium "^1.3.363" + node-releases "^1.1.50" + +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + integrity sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU= + +bs-snippet-injector@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" + integrity sha1-YbU5PxH1JVntEgaTEANDtu2wTdU= + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@^1.0.0: version "1.1.1" @@ -673,14 +1981,22 @@ buffer-xor@^1.0.3: integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.2.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" + integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -696,28 +2012,7 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c" - integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^12.0.3: +cacache@^12.0.2, cacache@^12.0.3: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -753,6 +2048,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -772,6 +2080,11 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -790,17 +2103,93 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" -camelcase@^5.0.0, camelcase@^5.2.0: +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + +camelcase-keys@^6.1.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.1.tgz#cd3e2d2d7db767aa3f247e4c2df93b4661008945" + integrity sha512-BPCNVH56RVIxQQIXskp5tLQXUNGQ6sXr7iCv1FHDt81xBOQ/1r6H8SPxf19InVP6DexWar4s87q9thfuk8X9HA== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" - integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: +caniuse-db@^1.0.30000639: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001035.tgz#3a182cab9d556a4a02d945f1f739e81c18e73bfa" + integrity sha512-kLUON4XN3tq5Nwl7ZICDw+7/vMynSpRMVYDRkzLL31lgnpa6M2YXYdjst3h+xbzjMgdcveRTnRGE1h/1IcKK6A== + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +caw@^2.0.0, caw@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + +ccount@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -809,31 +2198,51 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.2: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^2.1.8: +chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -853,9 +2262,9 @@ chokidar@^2.1.8: fsevents "^1.2.7" chownr@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.2" @@ -883,12 +2292,17 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + clean-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" @@ -897,18 +2311,27 @@ clean-webpack-plugin@^3.0.0: "@types/webpack" "^4.4.31" del "^4.1.1" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -927,11 +2350,90 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-regexp@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f" + integrity sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw== + dependencies: + is-regexp "^1.0.0" + is-supported-regexp-flag "^1.0.0" + +clone-regexp@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" + integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== + dependencies: + is-regexp "^2.0.0" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -940,27 +2442,67 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.2.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@~2.13.0: version "2.13.0" @@ -972,22 +2514,44 @@ commander@~2.19.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" @@ -1007,7 +2571,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -1017,36 +2581,57 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -concat-with-sourcemaps@^1.0.5: +concat-with-sourcemaps@^1.0.0, concat-with-sourcemaps@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== dependencies: source-map "^0.6.1" -connect-history-api-fallback@^1.6.0: +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= +connect@3.6.6: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= dependencies: - date-now "^0.1.4" + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@0.5.3: +content-disposition@0.5.3, content-disposition@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== @@ -1058,11 +2643,23 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +convert-source-map@1.X, convert-source-map@^1.5.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" @@ -1085,6 +2682,14 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-props@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + copy-webpack-plugin@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" @@ -1103,7 +2708,25 @@ copy-webpack-plugin@^5.1.1: serialize-javascript "^2.1.2" webpack-log "^2.0.0" -core-util-is@~1.0.0: +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.6.4: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -1118,6 +2741,17 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -1160,6 +2794,23 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -1177,22 +2828,63 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-loader@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.14" + postcss "^7.0.23" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== css-select@^1.1.0: version "1.2.0" @@ -1204,25 +2896,174 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +css@2.X, css@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= + +debug-fabulous@1.X: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg== + dependencies: + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -1231,21 +3072,36 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.2.5, debug@^3.2.6: +debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4.1.1, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.2.0: +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1255,10 +3111,70 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0, decompress@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + deep-equal@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" - integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: is-arguments "^1.0.4" is-date-object "^1.0.1" @@ -1277,6 +3193,13 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -1285,6 +3208,11 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1327,6 +3255,25 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" +del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -1338,9 +3285,9 @@ depd@~1.1.2: integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -1360,11 +3307,21 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA= + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -1382,13 +3339,20 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" -dir-glob@^2.0.0: +dir-glob@^2.0.0, dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== dependencies: path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -1416,10 +3380,12 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -document-register-element@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-0.5.4.tgz#df6b57fbb8e141123e5f61acf382d6bb78c02bce" - integrity sha1-32tX+7jhQRI+X2Gs84LWu3jAK84= +document-register-element@^1.14.3: + version "1.14.3" + resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.14.3.tgz#3335d4578df6a1536a34595b91cca36dd5db61d7" + integrity sha512-SbJTzoQXLTcYxnpdDNRZXu/gwsGSShemXpvj6Pa6ujRwJFpJ41siil4tk4y+cQXnqylS6mc2Rtxp/PkMzfkqyQ== + dependencies: + lightercollective "^0.3.0" dom-converter@^0.2: version "0.2.0" @@ -1436,6 +3402,13 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom7@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/dom7/-/dom7-2.1.3.tgz#a736f9c3bfbc4ca039a81cd095f97d1d7f3de19c" + integrity sha512-QTxHHDox+M6ZFz1zHPAHZKI3JOHY5iY4i9BK2uctlggxKQwRhO3q3HHFq1BKsT25Bm/ySSj70K6Wk/G4bs9rMQ== + dependencies: + ssr-window "^1.0.1" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -1466,7 +3439,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1: +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -1474,6 +3447,60 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +download@^6.2.2: + version "6.2.5" + resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +download@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -1484,20 +3511,50 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +each-props@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +easy-extender@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" + integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== + dependencies: + lodash "^4.17.10" + +eazy-logger@^3: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= + dependencies: + tfunk "^3.0.1" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.363: + version "1.3.376" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz#7cb7b5205564a06c8f8ecfbe832cbd47a1224bb1" + integrity sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw== elliptic@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" - integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -1507,29 +3564,112 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +eme-encryption-scheme-polyfill@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.1.tgz#b080b01bffd74c75c9cf8044c1cabedf3b83954f" + integrity sha512-Wz+Ro1c0/2Wsx2RLFvTOO0m4LvYn+7cSnq3XOvRvLLBq8jbvUACH/zpU9s0/5+mQa5oaelkU69x+q0z/iWYrFA== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= -encodeurl@~1.0.2: +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-client@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" + integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~4.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~6.1.0" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + +enhanced-resolve@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== @@ -1538,6 +3678,15 @@ enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -1555,28 +3704,29 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1: - version "1.16.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" - integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.1.4" - is-regex "^1.0.4" + is-callable "^1.1.5" + is-regex "^1.0.5" object-inspect "^1.7.0" object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -1587,21 +3737,62 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-promise@^4.2.5: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -1610,68 +3801,77 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: - eslint-visitor-keys "^1.0.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" -eslint-visitor-keys@^1.0.0: +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" esprima@^4.0.0: version "4.0.1" @@ -1679,9 +3879,9 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== dependencies: estraverse "^4.0.0" @@ -1693,20 +3893,33 @@ esrecurse@^4.1.0: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: +etag@1.8.1, etag@^1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= + eventemitter3@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -1718,9 +3931,9 @@ eventemitter3@^4.0.0: integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== eventsource@^1.0.7: version "1.0.7" @@ -1737,6 +3950,30 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-buffer@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA== + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -1750,6 +3987,27 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" + integrity sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M= + dependencies: + clone-regexp "^1.0.0" + +execall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" + integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== + dependencies: + clone-regexp "^2.1.0" + +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1806,6 +4064,28 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1821,6 +4101,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -1844,12 +4129,32 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= -fast-glob@^2.0.2: +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fancy-log@^1.1.0, fancy-log@^1.3.2, fancy-log@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -1861,16 +4166,35 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= +fast-glob@^3.0.3, fast-glob@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" -fast-levenshtein@~2.0.4: +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" + integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== + dependencies: + reusify "^1.0.4" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -1885,17 +4209,39 @@ faye-websocket@~0.11.1: dependencies: websocket-driver ">=0.5.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= dependencies: escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" + integrity sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA== + dependencies: + flat-cache "^2.0.1" file-entry-cache@^5.0.1: version "5.0.1" @@ -1904,13 +4250,67 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-5.1.0.tgz#cb56c070efc0e40666424309bd0d9e45ac6f2bb8" + integrity sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.4.0" + schema-utils "^2.5.0" + +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^10.4.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" + integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== + +file-type@^12.0.0: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" fill-range@^4.0.0: version "4.0.0" @@ -1922,6 +4322,26 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -1935,7 +4355,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -1944,6 +4364,21 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -1951,7 +4386,22 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@3.0.0: +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +findup-sync@3.0.0, findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== @@ -1961,6 +4411,32 @@ findup-sync@3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -1975,7 +4451,12 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flush-write-stream@^1.0.0: +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -1991,18 +4472,46 @@ flv.js@^1.5.0: es6-promise "^4.2.5" webworkify "^1.5.0" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== dependencies: debug "^3.0.0" -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -2015,12 +4524,12 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -fresh@0.5.2: +fresh@0.5.2, fresh@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: +from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= @@ -2028,12 +4537,34 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-minipass@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" - integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= dependencies: - minipass "^2.2.1" + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -2051,12 +4582,22 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" function-bind@^1.1.1: version "1.1.1" @@ -2068,6 +4609,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gather-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" + integrity sha1-szmUr0V6gRVwDUEPMXczy+egkEs= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2082,6 +4628,18 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -2092,6 +4650,41 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stdin@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2104,6 +4697,30 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== + dependencies: + isobject "^3.0.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +gifsicle@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.0.0.tgz#d1ca7f223e949966d373eb1fb6e7ce156d257750" + integrity sha512-GZ1ym4uY12FHXsf26Kk1G06Edwago9zctqUqin69pm8ObA13jb3urgHU9PgKmtH6kHaCjEcjoRzNjxUyYvb1Bg== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + execa "^1.0.0" + logalot "^2.0.0" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -2112,15 +4729,50 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.0.0, glob-parent@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2129,7 +4781,7 @@ glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: +global-modules@2.0.0, global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== @@ -2165,11 +4817,44 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@^10.0.0, globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" + integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -2206,26 +4891,378 @@ globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d" - integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw== +globby@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= + +globule@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== + dependencies: + glob "~7.1.1" + lodash "~4.17.12" + minimatch "~3.0.2" + +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + +gonzales-pe@^4.2.3, gonzales-pe@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2" + integrity sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ== + dependencies: + minimist "1.1.x" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + +group-array@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/group-array/-/group-array-1.0.0.tgz#e2e8d8890e5b46f72eb49b71e8af675173a9d0f7" + integrity sha512-PJresALe5TUzSIcdWKLdAKcdUDxv8du2EGueShgAL2xknbcTo5Bk1xbNaNhxpWxxAx/SV7N+5S0UyK7XV0+QhA== + dependencies: + arr-flatten "^1.1.0" + for-own "^1.0.0" + get-value "^3.0.1" + kind-of "^6.0.2" + split-string "^6.1.0" + union-value "^2.0.1" + +gulp-babel@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-8.0.0.tgz#e0da96f4f2ec4a88dd3a3030f476e38ab2126d87" + integrity sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ== + dependencies: + plugin-error "^1.0.1" + replace-ext "^1.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-cli@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp-concat@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-htmlmin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz#90fc5e8ad0425a9e86d5d521427184e7276365e7" + integrity sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA== + dependencies: + html-minifier "^3.5.20" + plugin-error "^1.0.1" + through2 "^2.0.3" + +gulp-imagemin@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-7.1.0.tgz#d1810a908fb64b4fbf15a750d303d988443e68cf" + integrity sha512-6xBTNybmPY2YrvrhhlS8Mxi0zn0ypusLon63p9XXxDtIf7U7c6KcViz94K7Skosucr3378A6IY2kJSjJyuwylQ== + dependencies: + chalk "^3.0.0" + fancy-log "^1.3.2" + imagemin "^7.0.0" + plugin-error "^1.0.1" + plur "^3.0.1" + pretty-bytes "^5.3.0" + through2-concurrent "^2.0.0" + optionalDependencies: + imagemin-gifsicle "^7.0.0" + imagemin-mozjpeg "^8.0.0" + imagemin-optipng "^7.0.0" + imagemin-svgo "^7.0.0" + +gulp-inject@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/gulp-inject/-/gulp-inject-5.0.5.tgz#c23df9cbf331447b6e13a1498cc51b63a7ceef67" + integrity sha512-5bGMjqleXUHPu4CI1pnVzHtwyMy+Zt8EMo1RFwNsOpidPxwjFwyLgmsRZWGMMI8UenJMJRjURqwznfFmqb5wgw== + dependencies: + ansi-colors "^4.1.1" + arrify "^2.0.1" + escape-string-regexp "^2.0.0" + fancy-log "^1.3.3" + group-array "^1.0.0" + plugin-error "^1.0.1" + stream-to-array "^2.3.0" + through2 "^3.0.1" + +gulp-mode@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/gulp-mode/-/gulp-mode-1.0.2.tgz#33c76033491fb71f47f1ebf8c67561ad9da7dfc9" + integrity sha512-i1UqW2NmBkyNirpthzbW1Na7t6JeSttuWjJyX8oY2Xve1Nx9tGhscoFgv1I/EOEsRcxGmhGyIRvpiKKL1d918A== + dependencies: + gulp-util "^3.0.8" + +gulp-postcss@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-8.0.0.tgz#8d3772cd4d27bca55ec8cb4c8e576e3bde4dc550" + integrity sha512-Wtl6vH7a+8IS/fU5W9IbOpcaLqKxd5L1DUOzaPmlnCbX1CrG0aWdwVnC3Spn8th0m8D59YbysV5zPUe1n/GJYg== + dependencies: + fancy-log "^1.3.2" + plugin-error "^1.0.1" + postcss "^7.0.2" + postcss-load-config "^2.0.0" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-sass@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-4.0.2.tgz#cfb1e3eff2bd9852431c7ce87f43880807d8d505" + integrity sha512-q8psj4+aDrblJMMtRxihNBdovfzGrXJp1l4JU0Sz4b/Mhsi2DPrKFYCGDwjIWRENs04ELVHxdOJQ7Vs98OFohg== + dependencies: + chalk "^2.3.0" + lodash.clonedeep "^4.3.2" + node-sass "^4.8.3" + plugin-error "^1.0.1" + replace-ext "^1.0.0" + strip-ansi "^4.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-sourcemaps@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" + integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg== + dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" + acorn "5.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "1.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom-string "1.X" + through2 "2.X" + +gulp-terser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.2.0.tgz#41df2a1d0257d011ba8b05efb2568432ecd0495b" + integrity sha512-lf+jE2DALg2w32p0HRiYMlFYRYelKZPNunHp2pZccCYrrdCLOs0ItbZcN63yr2pbz116IyhUG9mD/QbtRO1FKA== + dependencies: + plugin-error "^1.0.1" + terser "^4.0.0" + through2 "^3.0.1" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-util@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +hard-rejection@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.1: +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= + dependencies: + sparkles "^1.0.0" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2262,7 +5299,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -2290,10 +5327,15 @@ he@1.2.x: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hls.js@^0.12.4: - version "0.12.4" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.12.4.tgz#c155b7b2825a11117c111b781973c0ffa759006b" - integrity sha512-e8OPxQ60dBVsdkv4atdxR21KzC1mgwspM41qpozpj3Uv1Fz4CaeQy3FWoaV2O+QKKbNRvV5hW+/LipCWdrwnMQ== +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hls.js@^0.13.1: + version "0.13.2" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.13.2.tgz#3e7dd28e3787c69c6aba42b64b11eb2c3c8c29f1" + integrity sha512-sIg2t4uGpWQLzuK1Iid9614WOKqxj4OYg+EbFbhhTDCsxpENBN+Du3yBFnoi+a83DuOOHdiQd1ydnti9loSGXw== dependencies: eventemitter3 "3.1.0" url-toolkit "^2.1.6" @@ -2314,10 +5356,15 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -howler@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.2.tgz#8433a09d8fe84132a3e726e05cb2bd352ef8bd49" - integrity sha512-oKrTFaVXsDRoB/jik7cEpWKTj7VieoiuzMYJ7E/EU5ayvmpRhumCv3YQ3823zi9VTJkSWAhbryHnlZAionGAJg== +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +howler@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.3.tgz#07c88618f8767e879407a4d647fe2d6d5f15f121" + integrity sha512-PSGbOi1EYgw80C5UQbxtJM7TmzD+giJunIMBYyH3RVzHZx2fZLYBoes0SpVVHi/SFa1GoNtgXj/j6I7NOKYBxQ== hpack.js@^2.1.6: version "2.1.6" @@ -2329,12 +5376,27 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0, html-comment-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-minifier@^3.2.3: +html-minifier@^3.2.3, html-minifier@^3.5.20: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== @@ -2347,6 +5409,16 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + html-webpack-plugin@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -2360,7 +5432,7 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.3.0: +htmlparser2@^3.10.0, htmlparser2@^3.3.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -2372,6 +5444,11 @@ htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -2388,17 +5465,7 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: +http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== @@ -2409,6 +5476,16 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + "http-parser-js@>=0.4.0 <0.4.11": version "0.4.10" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" @@ -2424,6 +5501,14 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" +http-proxy@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" + integrity sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE= + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + http-proxy@^1.17.0: version "1.18.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" @@ -2433,6 +5518,15 @@ http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -2445,12 +5539,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -2468,9 +5557,9 @@ iferr@^0.1.5: integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" @@ -2479,11 +5568,69 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +imagemin-gifsicle@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz#1a7ab136a144c4678657ba3b6c412f80805d26b0" + integrity sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA== + dependencies: + execa "^1.0.0" + gifsicle "^5.0.0" + is-gif "^3.0.0" + +imagemin-mozjpeg@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.0.tgz#d2ca4e8c982c7c6eda55069af89dee4c1cebcdfd" + integrity sha512-+EciPiIjCb8JWjQNr1q8sYWYf7GDCNDxPYnkD11TNIjjWNzaV+oTg4DpOPQjl5ZX/KRCPMEgS79zLYAQzLitIA== + dependencies: + execa "^1.0.0" + is-jpg "^2.0.0" + mozjpeg "^6.0.0" + +imagemin-optipng@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-7.1.0.tgz#2225c82c35e5c29b7fa98d4f9ecee1161a68e888" + integrity sha512-JNORTZ6j6untH7e5gF4aWdhDCxe3ODsSLKs/f7Grewy3ebZpl1ZsU+VUTPY4rzeHgaFA8GSWOoA8V2M3OixWZQ== + dependencies: + exec-buffer "^3.0.0" + is-png "^2.0.0" + optipng-bin "^6.0.0" + +imagemin-svgo@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-7.1.0.tgz#528a42fd3d55eff5d4af8fd1113f25fb61ad6d9a" + integrity sha512-0JlIZNWP0Luasn1HT82uB9nU9aa+vUj6kpT+MjPW11LbprXC+iC4HDwn1r4Q2/91qj4iy9tRZNsFySMlEpLdpg== + dependencies: + is-svg "^4.2.1" + svgo "^1.3.2" + +imagemin@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-7.0.1.tgz#f6441ca647197632e23db7d971fffbd530c87dbf" + integrity sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w== + dependencies: + file-type "^12.0.0" + globby "^10.0.0" + graceful-fs "^4.2.2" + junk "^3.1.0" + make-dir "^3.0.0" + p-pipe "^3.0.0" + replace-ext "^1.0.0" + +immutable@^3: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -2499,10 +5646,10 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" - integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -2514,6 +5661,16 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -2527,11 +5684,38 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -2545,7 +5729,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2565,23 +5749,23 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.2.2: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" through "^2.3.6" internal-ip@^4.3.0: @@ -2592,11 +5776,31 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@1.2.0: +interpret@1.2.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -2612,21 +5816,39 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +irregular-plurals@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" + integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y= + +irregular-plurals@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872" + integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2641,6 +5863,24 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumeric@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" + integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arguments@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" @@ -2651,6 +5891,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2663,10 +5908,27 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-buffer@^2.0.0, is-buffer@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -2683,9 +5945,14 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== is-descriptor@^0.1.0: version "0.1.6" @@ -2727,6 +5994,11 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -2739,6 +6011,18 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-gif@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1" + integrity sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw== + dependencies: + file-type "^10.4.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2753,6 +6037,33 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-jpg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" + integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + +is-number-like@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== + dependencies: + lodash.isfinite "^3.3.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2760,7 +6071,27 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-path-cwd@^2.0.0: +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== @@ -2779,30 +6110,91 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-promise@^2.1.0: +is-png@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-2.0.0.tgz#ee8cbc9e9b050425cedeeb4a6fb74a649b0a4a8d" + integrity sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g== + +is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" -is-stream@^1.1.0: +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-regexp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" + integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-supported-regexp-flag@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" + integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-svg@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-4.2.1.tgz#095b496e345fec9211c2a7d5d021003e040d6f81" + integrity sha512-PHx3ANecKsKNl5y5+Jvt53Y4J7MfMpbNZkv384QNiswMKAWIbvcqbPz+sYbFKJI8Xv3be01GSFniPmoaP+Ai5A== + dependencies: + html-comment-regex "^1.1.2" + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -2810,21 +6202,63 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2842,17 +6276,39 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +"jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": + version "1.0.2" + resolved "https://github.com/jellyfin/jellyfin-noto#a441b179c833288fc372cadb408d32a76c5479f1" + jquery@>=1.9.1, jquery@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== -js-tokens@^4.0.0: +js-base64@^2.1.8, js-base64@^2.1.9: + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -2860,6 +6316,26 @@ js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -2870,11 +6346,21 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + json3@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -2892,13 +6378,54 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + jstree@^3.3.7: - version "3.3.8" - resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.8.tgz#8d0f506028d65e5207efa7b78e6541cbe35622c1" - integrity sha512-0/nhGxVLSGfGQyVg+q59ocqSEKWRDKHoA8wNrcOIvlzCCw19tzvcMNGJ19hf+U0b7fycABowkny7fQPcLgUwwA== + version "3.3.9" + resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.9.tgz#62b47cad3c4fda390d021e5c4f98ee5b3365198a" + integrity sha512-jRIbhg+BHrIs1Wm6oiJt3oKTVBE6sWS0PCp2/RlkIUqsLUPWUYgV3q8LfKoi1/E+YMzGtP6BuK4okk+0mwfmhQ== dependencies: jquery ">=1.9.1" +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== + +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -2918,15 +6445,47 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +known-css-properties@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" + integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== + +known-css-properties@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.18.0.tgz#d6e00b56ee1d5b0d171fd86df1583cfb012c521f" + integrity sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw== + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" lcid@^2.0.0: version "2.0.0" @@ -2935,6 +6494,30 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2943,17 +6526,71 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": + version "3.0.2" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7f331237026db75af2441717a4132d2398e96735" + libjass@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/libjass/-/libjass-0.11.0.tgz#bff1f464a2428c3bddfb68e4503b2d52afe3d6e6" integrity sha1-v/H0ZKJCjDvd+2jkUDstUq/j1uY= +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +lightercollective@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/lightercollective/-/lightercollective-0.3.0.tgz#1f07638642ec645d70bdb69ab2777676f35a28f0" + integrity sha512-RFOLSUVvwdK3xA0P8o6G7QGXLIyy1L2qv5caEI7zXN5ciaEjbAriRF182kbsoJ1S1TgvpyGcN485fMky6qxOPw== + +limiter@^1.0.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -2972,6 +6609,33 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +localtunnel@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" + integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== + dependencies: + axios "0.19.0" + debug "4.1.1" + openurl "1.1.1" + yargs "6.6.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -2980,21 +6644,254 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3: +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= + +lodash.clone@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.isfinite@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + +lodash.some@^4.2.2: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@~4.17.12: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -loglevel@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" - integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.0.0, log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +logalot@^2.0.0, logalot@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI= + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== + +longest-streak@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + +longest@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4= + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -3002,6 +6899,20 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -3010,6 +6921,20 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" @@ -3022,11 +6947,26 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.2: +map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + +map-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -3034,6 +6974,36 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +markdown-table@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + +material-design-icons-iconfont@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" + integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== + +mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" + integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -3043,6 +7013,18 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-util-compact@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" + integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== + dependencies: + unist-util-visit "^1.1.0" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -3057,6 +7039,20 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoizee@0.4.X: + version "0.4.14" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== + dependencies: + d "1" + es5-ext "^0.10.45" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "^0.1.5" + memory-fs@^0.4.0, memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -3065,12 +7061,68 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + +meow@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.1.tgz#f9b3f912c9aa039142cebcf74315129f4cd1ce1c" + integrity sha512-kxGTFgT/b7/oSRSQsJ0qsT5IMU+bgZ1eAdSA3kIV7onkW0QWo/hL5RbGlMfvBjHJKPE1LaPX0kdecYFiqYWjUw== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.1.1" + decamelize-keys "^1.1.0" + hard-rejection "^2.0.0" + minimist-options "^4.0.1" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.0" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.8.1" + yargs-parser "^16.1.0" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== @@ -3099,6 +7151,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -3107,22 +7167,22 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== -"mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.40.0" + mime-db "1.43.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== mime@1.6.0: version "1.6.0" @@ -3134,16 +7194,21 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-indent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" + integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -3154,37 +7219,58 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + +minimist-options@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" + integrity sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@1.1.x: + version "1.1.3" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" + integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= -minipass@^2.2.1, minipass@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -3202,6 +7288,11 @@ mississippi@^3.0.0: stream-each "^1.1.0" through2 "^2.0.0" +mitt@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -3210,7 +7301,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -3229,6 +7320,15 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mozjpeg@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-6.0.1.tgz#56969dddb5741ef2bcb1af066cae21e61a91a27b" + integrity sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.1.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3257,12 +7357,24 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= + dependencies: + duplexer2 "0.0.2" -nan@^2.12.1: +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1, nan@^2.13.2: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -3295,9 +7407,9 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== dependencies: debug "^3.2.6" iconv-lite "^0.4.4" @@ -3313,6 +7425,16 @@ neo-async@^2.5.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +next-tick@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -3330,6 +7452,24 @@ node-forge@0.9.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" @@ -3359,10 +7499,10 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -3373,24 +7513,64 @@ node-pre-gyp@^0.12.0: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4" + tar "^4.4.2" -node-releases@^1.1.42: - version "1.1.44" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" - integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== +node-releases@^1.1.50: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== dependencies: semver "^6.3.0" +node-sass@^4.13.1, node-sass@^4.8.3: + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== dependencies: abbrev "1" osenv "^0.1.4" -normalize-path@^2.1.1: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -3407,18 +7587,60 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-packlist@^1.1.6: - version "1.4.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" - integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" npm-run-path@^2.0.0: version "2.0.2" @@ -3427,7 +7649,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -3437,7 +7659,7 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@~1.0.1: +nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -3454,11 +7676,26 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -3474,15 +7711,20 @@ object-inspect@^1.7.0: integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + integrity sha1-D9mnT8X60a45aLWGvaXGMr1sBaU= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -3490,21 +7732,67 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +object.assign@^4.0.4, object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" - es-abstract "^1.5.1" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" -object.pick@^1.3.0: +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -3522,19 +7810,31 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" + +openurl@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + integrity sha1-OHW0sO96UsFW8NtB1GCduw+Us4c= + +opn@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + dependencies: + is-wsl "^1.1.0" opn@^5.5.0: version "5.5.0" @@ -3543,17 +7843,33 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" + +optipng-bin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-6.0.0.tgz#376120fa79d5e71eee2f524176efdd3a5eabd316" + integrity sha512-95bB4y8IaTsa/8x6QH4bLUuyvyOoGBCLDA7wOgDL8UFqJpSUh1Hob8JRJhit+wC1ZLN3tQ7mFt7KuBj0x8F2Wg== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.0.0" + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" original@^1.0.0: version "1.0.2" @@ -3567,11 +7883,25 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== + dependencies: + arch "^2.1.0" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -3586,7 +7916,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: +osenv@0, osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -3594,34 +7924,70 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU= + dependencies: + p-timeout "^1.1.1" + +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" -p-limit@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: - p-try "^2.0.0" + p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" @@ -3630,11 +7996,42 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.0.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.0.0.tgz#ab1fb87c0b8dd79b3bb03a8a23680fc9d054e132" + integrity sha512-gwwdRFmaxsT3IU+Tl3vYKVRdjfhg8Bbdjw7B+E0y6F7Yz6l+eaQLn0BRmGMXIhcPDONPtOkMoNwx1etZh4zPJA== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -3642,22 +8039,48 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +page@^1.11.5: + version "1.11.5" + resolved "https://registry.yarnpkg.com/page/-/page-1.11.5.tgz#0cfc8608be337f26f4377f31df0787aef0ca1af7" + integrity sha512-0JXUHc7Y8p1cPJQbhZSwaKO3p+bU3Rgny+OM5gJMKHWHvJKan/fsE5RUzEjRQolv9DzPOSVWfSOHz0lLxK19eA== + dependencies: + path-to-regexp "~1.2.1" + pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - cyclist "~0.2.2" + cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" @@ -3676,9 +8099,9 @@ parent-module@^1.0.0: callsites "^3.0.0" parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -3687,6 +8110,34 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^1.0.2, parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -3695,11 +8146,40 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -3720,11 +8200,23 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3740,11 +8232,44 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.2.1.tgz#b33705c140234d873c8721c7b9fd8b541ed3aff9" + integrity sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k= + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -3752,6 +8277,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -3763,7 +8293,22 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pify@^2.0.0: +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -3773,7 +8318,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.1: +pify@^4.0.0, pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== @@ -3797,20 +8342,279 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -portfinder@^1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + +plur@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + integrity sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo= + dependencies: + irregular-plurals "^1.0.0" + +plur@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b" + integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w== + dependencies: + irregular-plurals "^2.0.0" + +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +portscanner@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" + integrity sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y= + dependencies: + async "1.5.2" + is-number-like "^1.0.3" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-html@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" + integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== + dependencies: + htmlparser2 "^3.10.0" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-jsx@^0.36.0, postcss-jsx@^0.36.4: + version "0.36.4" + resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" + integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== + dependencies: + "@babel/core" ">=7.2.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-less@^3.1.0, postcss-less@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" + integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== + dependencies: + postcss "^7.0.14" + postcss-load-config@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" @@ -3829,6 +8633,95 @@ postcss-loader@^3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-markdown@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" + integrity sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ== + dependencies: + remark "^10.0.1" + unist-util-find-all-after "^1.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -3836,32 +8729,328 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" -postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== +postcss-modules-scope@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" + integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^2.0.0: +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: - icss-replace-symbols "^1.1.0" - postcss "^7.0.6" + postcss "^7.0.2" -postcss-selector-parser@^6.0.0: +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-reporter@^1.3.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-1.4.1.tgz#c136f0a5b161915f379dd3765c61075f7e7b9af2" + integrity sha1-wTbwpbFhkV83ndN2XGEHX357mvI= + dependencies: + chalk "^1.0.0" + lodash "^4.1.0" + log-symbols "^1.0.2" + postcss "^5.0.0" + +postcss-reporter@^6.0.0, postcss-reporter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" + integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== + dependencies: + chalk "^2.4.1" + lodash "^4.17.11" + log-symbols "^2.2.0" + postcss "^7.0.7" + +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= + +postcss-safe-parser@^4.0.0, postcss-safe-parser@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-sass@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.3.5.tgz#6d3e39f101a53d2efa091f953493116d32beb68c" + integrity sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A== + dependencies: + gonzales-pe "^4.2.3" + postcss "^7.0.1" + +postcss-sass@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.2.tgz#7d1f8ddf6960d329de28fb3ff43c9c42013646bc" + integrity sha512-hcRgnd91OQ6Ot9R90PE/khUDCJHG8Uxxd3F7Y0+9VHjBiJgNv7sK5FxyHMCBtoLmmkzVbSj3M3OlqUfLJpq0CQ== + dependencies: + gonzales-pe "^4.2.4" + postcss "^7.0.21" + +postcss-scss@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz#248b0a28af77ea7b32b1011aba0f738bda27dea1" + integrity sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^2.0.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -3870,29 +9059,79 @@ postcss-selector-parser@^6.0.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: +postcss-sorting@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-4.1.0.tgz#a107f0bf3852977fa64e4442bc340c88d5aacdb3" + integrity sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw== + dependencies: + lodash "^4.17.4" + postcss "^7.0.0" + +postcss-sorting@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-5.0.1.tgz#10d5d0059eea8334dacc820c0121864035bc3f11" + integrity sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA== + dependencies: + lodash "^4.17.14" + postcss "^7.0.17" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-syntax@^0.36.2: + version "0.36.2" + resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" + integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" - integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== -postcss@^7.0.0, postcss@^7.0.23: - version "7.0.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" - integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" -postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" - integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== +postcss@^5.0.0, postcss@^5.0.18: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6, postcss@^7.0.7: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -3903,6 +9142,21 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +pretty-bytes@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -3911,7 +9165,17 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -process-nextick-args@~2.0.0: +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -3931,19 +9195,34 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.9.0" + ipaddr.js "1.9.1" prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -3972,7 +9251,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: +pumpify@^1.3.3, pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -3991,16 +9270,40 @@ punycode@^1.2.4: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -4016,6 +9319,16 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4031,7 +9344,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -4046,6 +9359,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@^2.3.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -4056,10 +9379,70 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +read-file-stdin@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" + integrity sha1-JezP86FTtoCa+ssj7hU4fbng7mE= + dependencies: + gather-stream "^1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -4069,15 +9452,25 @@ rc@^1.2.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== +"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -4087,6 +9480,62 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.3.tgz#54aebff2ef58c0ae61e695ad1b9a9d65995fff78" + integrity sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -4096,23 +9545,115 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" - integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - define-properties "^1.1.2" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -remove-trailing-separator@^1.0.1: +remark-parse@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" + integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + +remark-stringify@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" + integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^1.1.0" + mdast-util-compact "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^1.0.1" + unherit "^1.0.4" + xtend "^4.0.1" + +remark@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" + integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== + dependencies: + remark-parse "^6.0.0" + remark-stringify "^6.0.0" + unified "^7.0.0" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -4133,11 +9674,63 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= + +replace-ext@1.0.0, replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4153,12 +9746,7 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requirejs@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" - integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg== - -requires-port@^1.0.0: +requires-port@1.x.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= @@ -4193,17 +9781,51 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: - onetime "^2.0.0" + path-parse "^1.0.6" + +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + integrity sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08= + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -4216,13 +9838,42 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= -rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -4231,13 +9882,18 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= +run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== dependencies: is-promise "^2.1.0" +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -4245,10 +9901,22 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== +rx@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= + +rxjs@^5.5.6: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" @@ -4269,12 +9937,22 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -4296,6 +9974,29 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -4308,16 +10009,64 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" -semver@^6.3.0: +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver-truncate@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g= + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -4337,17 +10086,12 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-index@^1.9.1: +serve-index@1.9.1, serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -4360,6 +10104,16 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" @@ -4370,6 +10124,11 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0= + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4385,6 +10144,13 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +set-value@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.1.tgz#52c82af7653ba69eb1db92e81f5cdb32739b9e95" + integrity sha512-w6n3GUPYAWQj4ZyHWzD7K2FnFXHx9OTwJYbWg+6nXjG8sCLfs9DGv+KlqglKIIJx+ks7MlFuwFW2RBPb+8V+xg== + dependencies: + is-plain-object "^2.0.4" + setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -4408,10 +10174,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shaka-player@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.5.tgz#81e7265f28f631afd3837c06ec6637824bda71e4" - integrity sha512-YEWBFapWKjwy2+wIgH9NqoFW9A14LIYNAoJ9cQr3c9BGS7qjqxeiYM/H1BJ8so1FQexpsWUdyjwHvcspdc7/nw== +shaka-player@^2.5.9: + version "2.5.9" + resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.9.tgz#007dc19df2bb5d3d959d278b2d894af05adffe38" + integrity sha512-XavLBqxvIbvLOPfk7VKZu5fbMJyVko9bBfzxmMWdX5bvQwUSjU7ZhV8v2tHqXQYafpHml1hlGHzKkLs7idouNQ== + dependencies: + eme-encryption-scheme-polyfill "^2.0.0" shebang-command@^1.2.0: version "1.2.0" @@ -4430,11 +10198,28 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -4474,6 +10259,81 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-client@^2.0.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~4.1.0" + engine.io-client "~3.4.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" + sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -4494,31 +10354,52 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -sortablejs@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.0.tgz#0ebc054acff2486569194a2f975b2b145dd5e7d6" - integrity sha512-+e0YakK1BxgEZpf9l9UiFaiQ8ZOBn1p/4qkkXr8QDVmYyCrUDTyDRRGm0AgW4E4cD0wtgxJ6yzIRkSPUwqhuhg== +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +sortablejs@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" + integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" source-map-support@~0.5.12: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -4528,7 +10409,14 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6: +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -4538,6 +10426,37 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -4561,6 +10480,11 @@ spdy@^4.0.1: select-hose "^2.0.0" spdy-transport "^3.0.0" +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -4568,11 +10492,45 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split-string@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-6.1.0.tgz#e9cedcf94cdab077d9b5528927894dec4b0f42ab" + integrity sha512-9UBdnmnvx2NLLd4bMs7CEKK+wSzbujVv3ONyorkP1o8M3pVJQtXDO1cN19xD1JJs6ltOrtPrkUND0HzLSinUcA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM= + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssr-window@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-1.0.1.tgz#30752a6a4666e7767f0b7e6aa6fc2fdbd0d9b369" + integrity sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg== + ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" @@ -4580,6 +10538,21 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -4593,6 +10566,23 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -4609,6 +10599,11 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -4621,11 +10616,31 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -string-width@^1.0.1: +stream-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + integrity sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM= + dependencies: + commander "^2.2.0" + limiter "^1.0.5" + +stream-to-array@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" + integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M= + dependencies: + any-promise "^1.1.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -4634,7 +10649,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -4651,36 +10666,43 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" -string_decoder@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== - dependencies: - safe-buffer "~5.1.0" - -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -4688,6 +10710,16 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-entities@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" + integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-hexadecimal "^1.0.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -4709,23 +10741,264 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + escape-string-regexp "^1.0.2" + +style-loader@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.6.4" + +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= + +stylehacks@^2.3: + version "2.3.2" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.2.tgz#64c83e0438a68c9edf449e8c552a7d9ab6009b0b" + integrity sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws= + dependencies: + browserslist "^1.1.3" + chalk "^1.1.1" + log-symbols "^1.0.2" + minimist "^1.2.0" + plur "^2.1.2" + postcss "^5.0.18" + postcss-reporter "^1.3.3" + postcss-selector-parser "^2.0.0" + read-file-stdin "^0.2.1" + text-table "^0.2.0" + write-file-stdout "0.0.2" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +stylelint-config-rational-order@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/stylelint-config-rational-order/-/stylelint-config-rational-order-0.1.2.tgz#4e98e390783d437f0ec41fb73bc41992e78d02a0" + integrity sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew== + dependencies: + stylelint "^9.10.1" + stylelint-order "^2.2.1" + +stylelint-no-browser-hacks@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/stylelint-no-browser-hacks/-/stylelint-no-browser-hacks-1.2.1.tgz#c6ae1a53d04d3a8d32de40b6e9b6dec3ec607dea" + integrity sha512-lPcqHx3e/WnrXdw0wdnKtcjcSCAYEXjwSitXRw0OQ2qPF+iLyDFoarbn4qcw38Uuu7q29fhj+w2mECLM0fUOlw== + dependencies: + stylehacks "^2.3" + stylelint "^9.1" + +stylelint-order@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-2.2.1.tgz#cd2d4a0d81d91c705f1d275a58487e5ad5aa5828" + integrity sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg== + dependencies: + lodash "^4.17.10" + postcss "^7.0.2" + postcss-sorting "^4.1.0" + +stylelint-order@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-4.0.0.tgz#2a945c2198caac3ff44687d7c8582c81d044b556" + integrity sha512-bXV0v+jfB0+JKsqIn3mLglg1Dj2QCYkFHNfL1c+rVMEmruZmW5LUqT/ARBERfBm8SFtCuXpEdatidw/3IkcoiA== + dependencies: + lodash "^4.17.15" + postcss "^7.0.26" + postcss-sorting "^5.0.1" + +stylelint@^13.1.0: + version "13.2.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.2.1.tgz#9101fcd70791856530049816ff53d980ecd561df" + integrity sha512-461ZV4KpUe7pEHHgMOsH4kkjF7qsjkCIMJYOf7QQC4cvgPUJ0z4Nj+ah5fvKl1rzqBqc5EZa6P0nna4CGoJX+A== + dependencies: + autoprefixer "^9.7.4" + balanced-match "^1.0.0" + chalk "^3.0.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" + execall "^2.0.0" + file-entry-cache "^5.0.1" + get-stdin "^7.0.0" + global-modules "^2.0.0" + globby "^11.0.0" + globjoin "^0.1.4" + html-tags "^3.1.0" + ignore "^5.1.4" + import-lazy "^4.0.0" + imurmurhash "^0.1.4" + known-css-properties "^0.18.0" + leven "^3.1.0" + lodash "^4.17.15" + log-symbols "^3.0.0" + mathml-tag-names "^2.1.3" + meow "^6.0.1" + micromatch "^4.0.2" + normalize-selector "^0.2.0" + postcss "^7.0.27" + postcss-html "^0.36.0" + postcss-jsx "^0.36.4" + postcss-less "^3.1.4" + postcss-markdown "^0.36.0" + postcss-media-query-parser "^0.2.3" + postcss-reporter "^6.0.1" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^4.0.1" + postcss-sass "^0.4.2" + postcss-scss "^2.0.0" + postcss-selector-parser "^6.0.2" + postcss-syntax "^0.36.2" + postcss-value-parser "^4.0.3" + resolve-from "^5.0.0" + slash "^3.0.0" + specificity "^0.4.1" + string-width "^4.2.0" + strip-ansi "^6.0.0" + style-search "^0.1.0" + sugarss "^2.0.0" + svg-tags "^1.0.0" + table "^5.4.6" + v8-compile-cache "^2.1.0" + write-file-atomic "^3.0.3" + +stylelint@^9.1, stylelint@^9.10.1: + version "9.10.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-9.10.1.tgz#5f0ee3701461dff1d68284e1386efe8f0677a75d" + integrity sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ== + dependencies: + autoprefixer "^9.0.0" + balanced-match "^1.0.0" + chalk "^2.4.1" + cosmiconfig "^5.0.0" + debug "^4.0.0" + execall "^1.0.0" + file-entry-cache "^4.0.0" + get-stdin "^6.0.0" + global-modules "^2.0.0" + globby "^9.0.0" + globjoin "^0.1.4" + html-tags "^2.0.0" + ignore "^5.0.4" + import-lazy "^3.1.0" + imurmurhash "^0.1.4" + known-css-properties "^0.11.0" + leven "^2.1.0" + lodash "^4.17.4" + log-symbols "^2.0.0" + mathml-tag-names "^2.0.1" + meow "^5.0.0" + micromatch "^3.1.10" + normalize-selector "^0.2.0" + pify "^4.0.0" + postcss "^7.0.13" + postcss-html "^0.36.0" + postcss-jsx "^0.36.0" + postcss-less "^3.1.0" + postcss-markdown "^0.36.0" + postcss-media-query-parser "^0.2.3" + postcss-reporter "^6.0.0" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^4.0.0" + postcss-sass "^0.3.5" + postcss-scss "^2.0.0" + postcss-selector-parser "^3.1.0" + postcss-syntax "^0.36.2" + postcss-value-parser "^3.3.0" + resolve-from "^4.0.0" + signal-exit "^3.0.2" + slash "^2.0.0" + specificity "^0.4.1" + string-width "^3.0.0" + style-search "^0.1.0" + sugarss "^2.0.0" + svg-tags "^1.0.0" + table "^5.0.0" + +sugarss@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" + integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== + dependencies: + postcss "^7.0.2" supports-color@6.1.0, supports-color@^6.1.0: version "6.1.0" @@ -4734,22 +11007,81 @@ supports-color@6.1.0, supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^5.3.0: +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -swiper@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-3.4.2.tgz#39d6b410b1a39833e1f72d3b72999df5f5e38392" - integrity sha1-Oda0ELGjmDPh9y07cpmd9fXjg5I= +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" -table@^5.2.3: - version "5.4.5" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.5.tgz#c8f4ea2d8fee08c0027fac27b0ec0a4fe01dfa42" - integrity sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA== +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0, svgo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +swiper@^5.3.1: + version "5.3.6" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-5.3.6.tgz#102b7f8145d734ec4c30e04602160382356b5948" + integrity sha512-FUz50g6RuvGAuXQWmR5lRPoA129leRUZ/p57ckr8+P5kR7VktElVQ47JGmWD86mOJCFfvMhUf0hinyC5UFL5iw== + dependencies: + dom7 "^2.1.3" + ssr-window "^1.0.1" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + +table@^5.0.0, table@^5.2.3, table@^5.4.6: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: ajv "^6.10.2" lodash "^4.17.14" @@ -4761,38 +11093,73 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" - integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.3.tgz#6074fbcf3517561c3272ea885f422c7a8c32d689" - integrity sha512-on13d+cnpn5bMouZu+J8tPYQecsdRJCJuxFJ+FVoPBoLJgk5bCBkp+Uen2hWyi0KIUm6eDarnlAlH+KgIx/PuQ== +terser@^4.0.0, terser@^4.1.2: + version "4.6.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.6.tgz#da2382e6cafbdf86205e82fb9a115bd664d54863" + integrity sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -4803,7 +11170,30 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.0: +tfunk@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" + integrity sha1-OORBT8ZJd9h6/apy+sttKfgve1s= + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" + +through2-concurrent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-concurrent/-/through2-concurrent-2.0.0.tgz#c9dd2c146504ec9962dbc86a5168b63d662669fa" + integrity sha512-R5/jLkfMvdmDD+seLwN7vB+mhbqzWop5fAjx5IX8/yQq7VhBhzDmhXgaHAOnhnWkCpRMM7gToYHycB0CS/pd+A== + dependencies: + through2 "^2.0.0" + +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -4811,23 +11201,53 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: +through2@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4835,11 +11255,34 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -4855,6 +11298,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -4865,6 +11315,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -4875,16 +11332,80 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + +trim-trailing-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -4892,6 +11413,21 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -4900,11 +11436,33 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@0.7.17: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== + uglify-es@^3.3.9: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -4921,6 +11479,89 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbzip2-stream@^1.0.9: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" + integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unified@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" + integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== + dependencies: + "@types/unist" "^2.0.0" + "@types/vfile" "^3.0.0" + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^3.0.0" + x-is-string "^0.1.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -4931,11 +11572,24 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +union-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-2.0.1.tgz#4e1ab0f99ab52c52a53e14d8039b5130fef682b8" + integrity sha512-NmcRHHhUy1qWmp6yYWsaURV2qwfS24TmTtO9S9x0L41wCNNVBQFD3toOzO0cd8SsNrFhbw/O0iYO5uffXGYocw== + dependencies: + get-value "^3.0.1" + set-value "^3.0.0" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -4950,11 +11604,74 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unist-util-find-all-after@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899" + integrity sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw== + dependencies: + unist-util-is "^3.0.0" + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-remove-position@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -4963,16 +11680,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.0: +upath@^1.1.0, upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== - upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" @@ -4990,6 +11702,20 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + url-parse@^1.4.3: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" @@ -4998,6 +11724,11 @@ url-parse@^1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + url-toolkit@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.1.6.tgz#6d03246499e519aad224c44044a4ae20544154f2" @@ -5029,6 +11760,16 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -5053,30 +11794,158 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +v8flags@^3.0.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vm-browserify@^1.0.1: +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@*: + version "2.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.3.tgz#0dd4f6879fb240a8099b22bd3755536c92e59ba5" + integrity sha512-qQg/2z8qnnBHL0psXyF72kCjb9YioIynvyltuNKFaUhRtqTIcIMP3xnBaPzirVZNuBrUe1qwFciSx2yApa4byw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile-message@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" + integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" + integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== + dependencies: + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= + dependencies: + source-map "^0.5.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0, vinyl@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== watchpack@^1.6.0: version "1.6.0" @@ -5099,10 +11968,10 @@ webcomponents.js@^0.7.24: resolved "https://registry.yarnpkg.com/webcomponents.js/-/webcomponents.js-0.7.24.tgz#2116fbfa1468ec416a7befdaa333e1d118f69c04" integrity sha1-IRb7+hRo7EFqe+/aozPh0Rj2nAQ= -webpack-cli@^3.3.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.9.tgz#79c27e71f94b7fe324d594ab64a8e396b9daa91a" - integrity sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A== +webpack-cli@^3.3.10: + version "3.3.11" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" + integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== dependencies: chalk "2.4.2" cross-spawn "6.0.5" @@ -5138,10 +12007,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.8.1: - version "3.8.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.8.2.tgz#3292427bf6510da9a3ac2d500b924a4197667ff9" - integrity sha512-0xxogS7n5jHDQWy0WST0q6Ykp7UGj4YvWh+HVN71JoE7BwPxMZrwgraBvmdEMbDVMBzF0u+mEzn8TQzBm5NYJQ== +webpack-dev-server@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -5158,10 +12027,10 @@ webpack-dev-server@^3.8.1: ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.4" + loglevel "^1.6.6" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.24" + portfinder "^1.0.25" schema-utils "^1.0.0" selfsigned "^1.10.7" semver "^6.3.0" @@ -5200,10 +12069,25 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" - integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== +webpack-stream@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-5.2.1.tgz#35c992161399fe8cad9c10d4a5c258f022629b39" + integrity sha512-WvyVU0K1/VB1NZ7JfsaemVdG0PXAQUqbjUNW4A58th4pULvKMQxG+y33HXTL02JvD56ko2Cub+E2NyPwrLBT/A== + dependencies: + fancy-log "^1.3.3" + lodash.clone "^4.3.2" + lodash.some "^4.2.2" + memory-fs "^0.4.1" + plugin-error "^1.0.1" + supports-color "^5.5.0" + through "^2.3.8" + vinyl "^2.1.0" + webpack "^4.26.1" + +webpack@^4.26.1, webpack@^4.41.5: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -5225,7 +12109,7 @@ webpack@^4.41.0: node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" + terser-webpack-plugin "^1.4.3" watchpack "^1.6.0" webpack-sources "^1.4.1" @@ -5248,17 +12132,22 @@ webworkify@^1.5.0: resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== -whatwg-fetch@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" - integrity sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk= +whatwg-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -5272,10 +12161,15 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== worker-farm@^1.7.0: version "1.7.0" @@ -5306,6 +12200,21 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write-file-stdout@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" + integrity sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE= + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -5320,20 +12229,70 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -xtend@^4.0.0, xtend@~4.0.1: +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.7.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + dependencies: + "@babel/runtime" "^7.8.7" + +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" yargs-parser@^11.1.1: version "11.1.1" @@ -5344,13 +12303,35 @@ yargs-parser@^11.1.1: decamelize "^1.2.0" yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^4.1.0, yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= + dependencies: + camelcase "^3.0.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -5385,3 +12366,74 @@ yargs@13.2.4: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^13.1.0" + +yargs@6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" + integrity sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^4.1.0" + +yargs@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^7.0.0, yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=