diff --git a/.eslintrc.js b/.eslintrc.js
index e97ae69e6cdab..510e38e06c8c5 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -11,13 +11,24 @@ module.exports = {
// https://eslint.org/docs/user-guide/configuring#specifying-parser
parser: 'vue-eslint-parser',
- // https://vuejs.github.io/eslint-plugin-vue/user-guide/#faq
+ // https://eslint.vuejs.org/user-guide/#faq
parserOptions: {
- parser: 'babel-eslint',
- ecmaVersion: 2018,
+ parser: '@babel/eslint-parser',
+ ecmaVersion: 2022,
sourceType: 'module'
},
+ overrides: [
+ {
+ files: ['*.json'],
+ parser: 'jsonc-eslint-parser',
+ rules: {
+ 'no-tabs': 'off',
+ 'comma-spacing': 'off'
+ }
+ }
+ ],
+
// https://eslint.org/docs/user-guide/configuring#extending-configuration-files
// order matters: from least important to most important in terms of overriding
// Prettier + Vue: https://medium.com/@gogl.alex/how-to-properly-set-up-eslint-with-prettier-for-vue-or-nuxt-in-vscode-e42532099a9c
@@ -25,12 +36,13 @@ module.exports = {
'prettier',
'eslint:recommended',
'plugin:vue/recommended',
- 'standard'
+ 'standard',
+ 'plugin:jsonc/recommended-with-json',
// 'plugin:vuejs-accessibility/recommended' // uncomment once issues are fixed
],
// https://eslint.org/docs/user-guide/configuring#configuring-plugins
- plugins: ['vue', 'vuejs-accessibility'],
+ plugins: ['vue', 'vuejs-accessibility', 'n', 'unicorn'],
rules: {
'space-before-function-paren': 'off',
@@ -39,6 +51,7 @@ module.exports = {
'no-console': ['error', { allow: ['warn', 'error'] }],
'no-unused-vars': 'warn',
'no-undef': 'warn',
+ 'object-shorthand': 'off',
'vue/no-template-key': 'warn',
'vue/no-useless-template-attributes': 'off',
'vue/multi-word-component-names': 'off',
@@ -47,6 +60,13 @@ module.exports = {
required: {
some: ['nesting', 'id']
}
- }]
+ }],
+ 'n/no-callback-literal': 'warn',
+ 'n/no-path-concat': 'warn',
+ 'unicorn/better-regex': 'error',
+ 'unicorn/no-array-push-push': 'error',
+ 'unicorn/prefer-keyboard-event-key': 'error',
+ 'unicorn/prefer-regexp-test': 'error',
+ 'unicorn/prefer-string-replace-all': 'error'
}
}
diff --git a/.stylelintignore b/.stylelintignore
new file mode 100644
index 0000000000000..18256bd0f5487
--- /dev/null
+++ b/.stylelintignore
@@ -0,0 +1,7 @@
+src/data/
+src/datastores/
+src/main/
+src/renderer/videoJS.css
+dist/
+static/
+node_modules/
diff --git a/.stylelintrc.json b/.stylelintrc.json
new file mode 100644
index 0000000000000..ea45b8ebd0836
--- /dev/null
+++ b/.stylelintrc.json
@@ -0,0 +1,34 @@
+{
+ "plugins": ["stylelint-high-performance-animation", "@double-great/stylelint-a11y"],
+ "extends": ["stylelint-config-standard", "stylelint-config-sass-guidelines"],
+ "overrides": [
+ {
+ "files": ["**/*.scss"],
+ "customSyntax": "postcss-scss",
+ "rules": {
+ "max-nesting-depth": null,
+ "selector-max-compound-selectors": null
+ }
+ },
+ {
+ "files": ["**/*.css"],
+ "rules": {
+ "a11y/media-prefers-reduced-motion": true,
+ "a11y/no-outline-none": true,
+ "a11y/selector-pseudo-class-focus": true,
+ "a11y/font-size-is-readable": true
+ }
+ }
+ ],
+ "rules": {
+ "selector-class-pattern": null,
+ "selector-id-pattern": null,
+ "plugin/no-low-performance-animation-properties": true,
+ "selector-pseudo-class-no-unknown": [
+ true,
+ {
+ "ignorePseudoClasses": ["deep"]
+ }
+ ]
+ }
+}
diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js
index ecf1249adc2df..723661f8abf87 100644
--- a/_scripts/webpack.renderer.config.js
+++ b/_scripts/webpack.renderer.config.js
@@ -48,7 +48,7 @@ const config = {
loader: 'vue-loader',
},
{
- test: /\.s(c|a)ss$/,
+ test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
@@ -62,11 +62,7 @@ const config = {
{
loader: 'sass-loader',
options: {
- // eslint-disable-next-line
- implementation: require('sass'),
- sassOptions: {
- indentedSyntax: true
- }
+ implementation: require('sass')
}
},
],
diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js
index a18115e95f873..ac15675428feb 100644
--- a/_scripts/webpack.web.config.js
+++ b/_scripts/webpack.web.config.js
@@ -39,7 +39,7 @@ const config = {
loader: 'vue-loader'
},
{
- test: /\.s(c|a)ss$/,
+ test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
@@ -53,11 +53,7 @@ const config = {
{
loader: 'sass-loader',
options: {
- // eslint-disable-next-line
- implementation: require('sass'),
- sassOptions: {
- indentedSyntax: true
- }
+ implementation: require('sass')
}
},
],
diff --git a/lefthook.yml b/lefthook.yml
index 7f6f4e3d68548..6a09c9530afc2 100644
--- a/lefthook.yml
+++ b/lefthook.yml
@@ -1,4 +1,3 @@
-
# Refer for explanation to following link:
# https://github.com/evilmartians/lefthook/blob/master/docs/full_guide.md
pre-commit:
@@ -12,8 +11,6 @@ pre-commit:
skip:
- rebase
-
-
# EXAMPLE USAGE
#
# pre-push:
diff --git a/package.json b/package.json
index b427cb1aad37b..8184e4c69dff7 100644
--- a/package.json
+++ b/package.json
@@ -31,8 +31,15 @@
"dev": "run-s rebuild:electron dev-runner",
"dev:web": "node _scripts/dev-runner.js --web",
"dev-runner": "node _scripts/dev-runner.js",
+ "lint-all": "run-p lint lint-json lint-style",
"lint-fix": "eslint --fix --ext .js,.vue ./",
"lint": "eslint --ext .js,.vue ./",
+ "lint-json": "eslint --ext .json ./",
+ "lint-style": "run-p lint-style:scss lint-style:css",
+ "lint-style:scss": "stylelint \"**/*.scss\"",
+ "lint-style:css": "stylelint \"**/*.css\"",
+ "lint-style-fix:scss": "stylelint --fix \"**/*.scss\"",
+ "lint-style-fix:css": "stylelint --fix \"**/*.css\"",
"pack": "run-p pack:main pack:renderer",
"pack:main": "webpack --mode=production --node-env=production --config _scripts/webpack.main.config.js",
"pack:renderer": "webpack --mode=production --node-env=production --config _scripts/webpack.renderer.config.js",
@@ -81,23 +88,25 @@
},
"devDependencies": {
"@babel/core": "^7.20.7",
+ "@babel/eslint-parser": "^7.19.1",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/preset-env": "^7.20.2",
- "babel-eslint": "^10.1.0",
+ "@double-great/stylelint-a11y": "^2.0.2",
"babel-loader": "^9.1.0",
"copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.7.3",
"css-minimizer-webpack-plugin": "^4.2.2",
"electron": "^22.0.0",
"electron-builder": "^23.6.0",
- "eslint": "^7.32.0",
- "eslint-config-prettier": "^8.3.0",
- "eslint-config-standard": "^16.0.3",
- "eslint-plugin-import": "^2.24.2",
- "eslint-plugin-node": "^11.1.0",
+ "eslint": "^8.31.0",
+ "eslint-config-prettier": "^8.6.0",
+ "eslint-config-standard": "^17.0.0",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-jsonc": "^2.5.0",
+ "eslint-plugin-n": "^15.6.0",
"eslint-plugin-prettier": "^4.2.1",
- "eslint-plugin-promise": "^5.1.0",
- "eslint-plugin-standard": "^5.0.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-unicorn": "^45.0.2",
"eslint-plugin-vue": "^9.8.0",
"eslint-plugin-vuejs-accessibility": "^2.0.0",
"html-webpack-plugin": "^5.3.2",
@@ -106,10 +115,16 @@
"lefthook": "^1.2.4",
"mini-css-extract-plugin": "^2.7.2",
"npm-run-all": "^4.1.5",
+ "postcss": "^8.4.20",
+ "postcss-scss": "^4.0.6",
"prettier": "^2.8.1",
"rimraf": "^3.0.2",
"sass": "^1.57.1",
"sass-loader": "^13.2.0",
+ "stylelint": "^14.16.1",
+ "stylelint-config-sass-guidelines": "^9.0.1",
+ "stylelint-config-standard": "^29.0.0",
+ "stylelint-high-performance-animation": "^1.7.0",
"tree-kill": "1.2.2",
"vue-devtools": "^5.1.4",
"vue-eslint-parser": "^9.1.0",
diff --git a/src/main/ImageCache.js b/src/main/ImageCache.js
index 4a635b7d92e9f..8228f38dc63ed 100644
--- a/src/main/ImageCache.js
+++ b/src/main/ImageCache.js
@@ -51,7 +51,7 @@ export class ImageCache {
* @returns a timestamp in seconds
*/
export function extractExpiryTimestamp(headers) {
- const maxAgeRegex = /max-age=([0-9]+)/
+ const maxAgeRegex = /max-age=(\d+)/
const cacheControl = headers['cache-control']
if (cacheControl && maxAgeRegex.test(cacheControl)) {
diff --git a/src/main/index.js b/src/main/index.js
index c6ca1a703400e..b911fef6f67a5 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -283,7 +283,7 @@ function runApp() {
session.defaultSession.webRequest.onBeforeSendHeaders(innertubeRequestFilter, ({ requestHeaders }, callback) => {
requestHeaders.referer = 'https://www.youtube.com'
- // eslint-disable-next-line node/no-callback-literal
+ // eslint-disable-next-line n/no-callback-literal
callback({ requestHeaders })
})
@@ -298,7 +298,7 @@ function runApp() {
if (imageCache.has(url)) {
const cached = imageCache.get(url)
- // eslint-disable-next-line node/no-callback-literal
+ // eslint-disable-next-line n/no-callback-literal
callback({
mimeType: cached.mimeType,
data: cached.data
@@ -336,7 +336,7 @@ function runApp() {
imageCache.add(url, mimeType, data, expiryTimestamp)
- // eslint-disable-next-line node/no-callback-literal
+ // eslint-disable-next-line n/no-callback-literal
callback({
mimeType,
data: data
@@ -364,7 +364,7 @@ function runApp() {
return value
})
- // eslint-disable-next-line node/no-callback-literal
+ // eslint-disable-next-line n/no-callback-literal
callback({
statusCode: response.statusCode ?? 400,
mimeType: 'application/json',
@@ -385,12 +385,12 @@ function runApp() {
// the requests made by the imagecache:// handler to fetch the image,
// are allowed through, as their resourceType is 'other'
if (details.resourceType === 'image') {
- // eslint-disable-next-line node/no-callback-literal
+ // eslint-disable-next-line n/no-callback-literal
callback({
redirectURL: `imagecache://${encodeURIComponent(details.url)}`
})
} else {
- // eslint-disable-next-line node/no-callback-literal
+ // eslint-disable-next-line n/no-callback-literal
callback({})
}
})
diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js
index ceac3eea40af6..14b7ad9829712 100644
--- a/src/renderer/components/data-settings/data-settings.js
+++ b/src/renderer/components/data-settings/data-settings.js
@@ -228,7 +228,7 @@ export default Vue.extend({
let count = 0
const ytsubs = youtubeSubscriptions.slice(1).map(yt => {
- const splitCSVRegex = /(?:,|\n|^)("(?:(?:"")*[^"]*)*"|[^",\n]*|(?:\n|$))/g
+ const splitCSVRegex = /(?:,|\n|^)("(?:(?:"")*[^"]*)*"|[^\n",]*|(?:\n|$))/g
return [...yt.matchAll(splitCSVRegex)].map(s => {
let newVal = s[1]
if (newVal.startsWith('"')) {
@@ -623,11 +623,11 @@ export default Vue.extend({
this.profileList[0].subscriptions.forEach((channel) => {
const escapedName = channel.name
- .replace(/&/g, '&')
- .replace(//g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, ''')
+ .replaceAll('&', '&')
+ .replaceAll('<', '<')
+ .replaceAll('>', '>')
+ .replaceAll('"', '"')
+ .replaceAll('\'', ''')
const channelOpmlString = ``
opmlData += channelOpmlString
diff --git a/src/renderer/components/download-settings/download-settings.sass b/src/renderer/components/download-settings/download-settings.sass
deleted file mode 100644
index 5d475ff8871e4..0000000000000
--- a/src/renderer/components/download-settings/download-settings.sass
+++ /dev/null
@@ -1,2 +0,0 @@
-.folderDisplay
- width: 50vh
diff --git a/src/renderer/components/download-settings/download-settings.scss b/src/renderer/components/download-settings/download-settings.scss
new file mode 100644
index 0000000000000..0c5ccdad0b5ac
--- /dev/null
+++ b/src/renderer/components/download-settings/download-settings.scss
@@ -0,0 +1,3 @@
+.folderDisplay {
+ width: 50vh;
+}
diff --git a/src/renderer/components/download-settings/download-settings.vue b/src/renderer/components/download-settings/download-settings.vue
index 1620a2134e23f..b4cd9dc1167e9 100644
--- a/src/renderer/components/download-settings/download-settings.vue
+++ b/src/renderer/components/download-settings/download-settings.vue
@@ -44,4 +44,4 @@
-
+
diff --git a/src/renderer/components/ft-age-restricted/ft-age-restricted.sass b/src/renderer/components/ft-age-restricted/ft-age-restricted.sass
deleted file mode 100644
index 58d44107401fc..0000000000000
--- a/src/renderer/components/ft-age-restricted/ft-age-restricted.sass
+++ /dev/null
@@ -1,14 +0,0 @@
-.ft-age-restricted
- color: var(--primary-text-color)
- h2
- width: 100%
- text-align: center
- background-color: var(--card-bg-color)
- padding: 10px 0
- .frown
- width: 100%
- text-align: center
- background-color: var(--card-bg-color)
- font-size: 10em
- padding: 20px 0
- height: 100%
diff --git a/src/renderer/components/ft-age-restricted/ft-age-restricted.scss b/src/renderer/components/ft-age-restricted/ft-age-restricted.scss
new file mode 100644
index 0000000000000..b553283ea2080
--- /dev/null
+++ b/src/renderer/components/ft-age-restricted/ft-age-restricted.scss
@@ -0,0 +1,19 @@
+.ft-age-restricted {
+ color: var(primary-text-color);
+
+ h2 {
+ background-color: var(card-bg-color);
+ padding: 10px 0;
+ text-align: center;
+ width: 100%;
+ }
+
+ .frown {
+ background-color: var(card-bg-color);
+ font-size: 10em;
+ height: 100%;
+ padding: 20px 0;
+ text-align: center;
+ width: 100%;
+ }
+}
diff --git a/src/renderer/components/ft-age-restricted/ft-age-restricted.vue b/src/renderer/components/ft-age-restricted/ft-age-restricted.vue
index abc2eac85c259..e3a5ca8174dfb 100644
--- a/src/renderer/components/ft-age-restricted/ft-age-restricted.vue
+++ b/src/renderer/components/ft-age-restricted/ft-age-restricted.vue
@@ -12,4 +12,4 @@
-
+
diff --git a/src/renderer/components/ft-auto-grid/ft-auto-grid.sass b/src/renderer/components/ft-auto-grid/ft-auto-grid.sass
deleted file mode 100644
index 7bbf3bfca3415..0000000000000
--- a/src/renderer/components/ft-auto-grid/ft-auto-grid.sass
+++ /dev/null
@@ -1,10 +0,0 @@
-.ft-auto-grid
- &.grid
- display: grid
- grid-template-columns: repeat(auto-fill, minmax(262px, 1fr) )
- justify-content: space-evenly
- grid-gap: 8px
-
- &.list
- display: grid
- grid-gap: 4px
diff --git a/src/renderer/components/ft-auto-grid/ft-auto-grid.scss b/src/renderer/components/ft-auto-grid/ft-auto-grid.scss
new file mode 100644
index 0000000000000..6848c82d6a8fc
--- /dev/null
+++ b/src/renderer/components/ft-auto-grid/ft-auto-grid.scss
@@ -0,0 +1,13 @@
+.ft-auto-grid {
+ &.grid {
+ display: grid;
+ grid-gap: 8px;
+ grid-template-columns: repeat(auto-fill, minmax(262px, 1fr));
+ justify-content: space-evenly;
+ }
+
+ &.list {
+ display: grid;
+ grid-gap: 4px;
+ }
+}
diff --git a/src/renderer/components/ft-auto-grid/ft-auto-grid.vue b/src/renderer/components/ft-auto-grid/ft-auto-grid.vue
index 14e2018698d8d..1dd5abc057a0c 100644
--- a/src/renderer/components/ft-auto-grid/ft-auto-grid.vue
+++ b/src/renderer/components/ft-auto-grid/ft-auto-grid.vue
@@ -11,4 +11,4 @@
-
+
diff --git a/src/renderer/components/ft-icon-button/ft-icon-button.sass b/src/renderer/components/ft-icon-button/ft-icon-button.sass
deleted file mode 100644
index ab32c450e1d1a..0000000000000
--- a/src/renderer/components/ft-icon-button/ft-icon-button.sass
+++ /dev/null
@@ -1,103 +0,0 @@
-.ftIconButton
- display: flex
- flex-flow: row wrap
- justify-content: space-evenly
- position: relative
- user-select: none
-
-.iconButton
- width: 1em
- height: 1em
- border-radius: 50%
- cursor: pointer
- transition: background 0.15s ease-out
-
- &.shadow
- box-shadow: 0 1px 2px rgba(0,0,0,.5)
-
- &.base
- background-color: var(--card-bg-color)
- color: var(--primary-text-color)
-
- &:hover
- background-color: var(--side-nav-hover-color)
-
- &:active
- background-color: var(--side-nav-active-color)
-
- &.base-no-default
- &:hover
- background-color: var(--side-nav-hover-color)
-
- &:active
- background-color: var(--side-nav-active-color)
-
- &.primary
- background-color: var(--primary-color)
- color: var(--text-with-main-color)
-
- &:hover
- background-color: var(--primary-color-hover)
-
- &:active
- background-color: var(--primary-color-active)
-
- &.secondary
- background-color: var(--accent-color)
- color: var(--text-with-accent-color)
-
- &:hover
- background-color: var(--accent-color-hover)
-
- &:active
- background-color: var(--accent-color-active)
-
- &.favorite
- color: var(--favorite-icon-color)
-
-.iconDropdown
- display: inline
- position: absolute
- text-align: center
- list-style-type: none
- z-index: 3
- margin-top: 45px
- font-size: 12px
- box-shadow: 0 1px 2px rgba(0,0,0,.5)
- background-color: var(--side-nav-color)
- color: var(--secondary-text-color)
- user-select: none
-
- &.left
- right: calc(50% - 10px)
-
- &.right
- left: calc(50% - 10px)
-
- .list
- margin: 0
- padding: 0
- list-style-type: none
-
- .listItem
- padding: 8px 10px
- margin: 0
- white-space: nowrap
- cursor: pointer
- transition: background 0.2s ease-out
-
- &:hover, &:focus
- background-color: var(--side-nav-hover-color)
- transition: background 0.2s ease-in
-
- &:active
- background-color: var(--side-nav-active-color)
- transition: background 0.1s ease-in
-
- .listItemDivider
- width: 95%
- margin: 1px auto
- border-top: 1px solid var(--tertiary-text-color)
- // Too "visible" with current color
- opacity: 50%
-
diff --git a/src/renderer/components/ft-icon-button/ft-icon-button.scss b/src/renderer/components/ft-icon-button/ft-icon-button.scss
new file mode 100644
index 0000000000000..0ee4f97fa761e
--- /dev/null
+++ b/src/renderer/components/ft-icon-button/ft-icon-button.scss
@@ -0,0 +1,127 @@
+.ftIconButton {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-evenly;
+ position: relative;
+ user-select: none;
+}
+
+.iconButton {
+ border-radius: 50%;
+ cursor: pointer;
+ height: 1em;
+ transition: background 0.15s ease-out;
+ width: 1em;
+
+ &.shadow {
+ box-shadow: 0 1px 2px rgb(0 0 0 / 50%);
+ }
+
+ &.base {
+ background-color: var(card-bg-color);
+ color: var(primary-text-color);
+
+ &:hover {
+ background-color: var(side-nav-hover-color);
+ }
+
+ &:active {
+ background-color: var(side-nav-active-color);
+ }
+ }
+
+ &.base-no-default {
+ &:hover {
+ background-color: var(side-nav-hover-color);
+ }
+
+ &:active {
+ background-color: var(side-nav-active-color);
+ }
+ }
+
+ &.primary {
+ background-color: var(primary-color);
+ color: var(text-with-main-color);
+
+ &:hover {
+ background-color: var(primary-color-hover);
+ }
+
+ &:active {
+ background-color: var(primary-color-active);
+ }
+ }
+
+ &.secondary {
+ background-color: var(accent-color);
+ color: var(text-with-accent-color);
+
+ &:hover {
+ background-color: var(accent-color-hover);
+ }
+
+ &:active {
+ background-color: var(accent-color-active);
+ }
+ }
+
+ &.favorite {
+ color: var(favorite-icon-color);
+ }
+}
+
+.iconDropdown {
+ background-color: var(side-nav-color);
+ box-shadow: 0 1px 2px rgb(0 0 0 / 50%);
+ color: var(secondary-text-color);
+ display: inline;
+ font-size: 12px;
+ list-style-type: none;
+ margin-top: 45px;
+ position: absolute;
+ text-align: center;
+ user-select: none;
+ z-index: 3;
+
+ &.left {
+ right: calc(50% - 10px);
+ }
+
+ &.right {
+ left: calc(50% - 10px);
+ }
+
+ .list {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ }
+
+ .listItem {
+ cursor: pointer;
+ margin: 0;
+ padding: 8px 10px;
+ transition: background 0.2s ease-out;
+ white-space: nowrap;
+
+ &:hover,
+ &:focus {
+ background-color: var(side-nav-hover-color);
+ transition: background 0.2s ease-in;
+ }
+
+ &:active {
+ background-color: var(side-nav-active-color);
+ transition: background 0.1s ease-in;
+ }
+ }
+
+ .listItemDivider {
+ border-top: 1px solid var(tertiary-text-color);
+ margin: 1px auto;
+ // Too "visible" with current color
+ opacity: 0.5;
+ width: 95%;
+ }
+}
diff --git a/src/renderer/components/ft-icon-button/ft-icon-button.vue b/src/renderer/components/ft-icon-button/ft-icon-button.vue
index 27f8c26e20d6b..62dc7b9856977 100644
--- a/src/renderer/components/ft-icon-button/ft-icon-button.vue
+++ b/src/renderer/components/ft-icon-button/ft-icon-button.vue
@@ -61,4 +61,4 @@
-
+
diff --git a/src/renderer/components/ft-list-channel/ft-list-channel.sass b/src/renderer/components/ft-list-channel/ft-list-channel.sass
deleted file mode 100644
index cdebfe2e899aa..0000000000000
--- a/src/renderer/components/ft-list-channel/ft-list-channel.sass
+++ /dev/null
@@ -1 +0,0 @@
-@use "../../sass-partials/_ft-list-item"
diff --git a/src/renderer/components/ft-list-channel/ft-list-channel.scss b/src/renderer/components/ft-list-channel/ft-list-channel.scss
new file mode 100644
index 0000000000000..af386ff4b9119
--- /dev/null
+++ b/src/renderer/components/ft-list-channel/ft-list-channel.scss
@@ -0,0 +1 @@
+@use '../../scss-partials/_ft-list-item';
diff --git a/src/renderer/components/ft-list-channel/ft-list-channel.vue b/src/renderer/components/ft-list-channel/ft-list-channel.vue
index c9c5d08041a7c..3d29d12e3c5c0 100644
--- a/src/renderer/components/ft-list-channel/ft-list-channel.vue
+++ b/src/renderer/components/ft-list-channel/ft-list-channel.vue
@@ -48,4 +48,4 @@
-
+
diff --git a/src/renderer/components/ft-list-playlist/ft-list-playlist.sass b/src/renderer/components/ft-list-playlist/ft-list-playlist.sass
deleted file mode 100644
index cdebfe2e899aa..0000000000000
--- a/src/renderer/components/ft-list-playlist/ft-list-playlist.sass
+++ /dev/null
@@ -1 +0,0 @@
-@use "../../sass-partials/_ft-list-item"
diff --git a/src/renderer/components/ft-list-playlist/ft-list-playlist.scss b/src/renderer/components/ft-list-playlist/ft-list-playlist.scss
new file mode 100644
index 0000000000000..af386ff4b9119
--- /dev/null
+++ b/src/renderer/components/ft-list-playlist/ft-list-playlist.scss
@@ -0,0 +1 @@
+@use '../../scss-partials/_ft-list-item';
diff --git a/src/renderer/components/ft-list-playlist/ft-list-playlist.vue b/src/renderer/components/ft-list-playlist/ft-list-playlist.vue
index e7f38432b67a3..2294832832d9e 100644
--- a/src/renderer/components/ft-list-playlist/ft-list-playlist.vue
+++ b/src/renderer/components/ft-list-playlist/ft-list-playlist.vue
@@ -52,4 +52,4 @@
-
+
diff --git a/src/renderer/components/ft-list-video/ft-list-video.sass b/src/renderer/components/ft-list-video/ft-list-video.sass
deleted file mode 100644
index 9fb776c4b54e8..0000000000000
--- a/src/renderer/components/ft-list-video/ft-list-video.sass
+++ /dev/null
@@ -1,4 +0,0 @@
-@use "../../sass-partials/_ft-list-item"
-
-.thumbnailLink:hover
- outline: 3px solid var(--side-nav-hover-color)
diff --git a/src/renderer/components/ft-list-video/ft-list-video.scss b/src/renderer/components/ft-list-video/ft-list-video.scss
new file mode 100644
index 0000000000000..8f6f167852af2
--- /dev/null
+++ b/src/renderer/components/ft-list-video/ft-list-video.scss
@@ -0,0 +1,5 @@
+@use '../../scss-partials/_ft-list-item';
+
+.thumbnailLink:hover {
+ outline: 3px solid var(side-nav-hover-color);
+}
diff --git a/src/renderer/components/ft-list-video/ft-list-video.vue b/src/renderer/components/ft-list-video/ft-list-video.vue
index 87fb220e1ae38..78c8110d48aff 100644
--- a/src/renderer/components/ft-list-video/ft-list-video.vue
+++ b/src/renderer/components/ft-list-video/ft-list-video.vue
@@ -120,4 +120,4 @@
-
+
diff --git a/src/renderer/components/ft-settings-section/ft-settings-section.sass b/src/renderer/components/ft-settings-section/ft-settings-section.sass
deleted file mode 100644
index 78e4963c61607..0000000000000
--- a/src/renderer/components/ft-settings-section/ft-settings-section.sass
+++ /dev/null
@@ -1,82 +0,0 @@
-.settingsSection
- background-color: var(--card-bg-color)
- width: 85%
- margin: 0 auto
- @media only screen and (max-width: 800px)
- width: 100%
-
- &[open]
- padding-bottom: 15px
-
- > div
- width: 100%
- padding: 0px 20px
- box-sizing: border-box
- > div:not(:last-child):not(.ft-flex-box)
- @media only screen and (max-width: 800px)
- margin-bottom: 20px
-
-.sectionLine
- width: 100%
- height: 2px
- border: 0
- margin-top: -1px
- background-color: var(--primary-color)
-
-.sectionHeader
- display: block
- cursor: pointer
- padding: 1px
-
-.sectionTitle
- margin-left: 2%
-
-:deep(.switchGrid)
- display: grid
- grid-template-columns: auto auto
- justify-content: space-evenly
- align-items: center
-
- @media only screen and (max-width: 680px)
- grid-template-columns: auto
-
-:deep(.switchColumnGrid)
- @extend :deep(.switchGrid)
- align-items: start
-
-:deep(.switchColumn)
- display: flex
- flex-direction: column
- justify-items: start
-
-:deep(.center)
- text-align: center
-
-@media only screen and (max-width: 460px)
- :deep(.settingsFlexStart460px)
- justify-content: flex-start
-
-@media only screen and (max-width: 500px)
- :deep(.settingsFlexStart500px)
- justify-content: flex-start
-
-@media only screen and (max-width: 680px)
- .settingsSection
- > div
- :deep(.text.bottom)
- left: -85px
- :deep(.switch-ctn.containsTooltip)
- left: -10px
- margin-right: 5px
- padding: 0px 10px 0px 10px
- :not(.select, .selectLabel)
- > :deep(.tooltip)
- display: inline-block
- position: absolute
- right: -25px
- top: 12px
- .settingsFlexStart460px :deep(.tooltip)
- right: 0px
- top: -2px
- :deep(.switch-ctn)
- margin: 10px 7px
diff --git a/src/renderer/components/ft-settings-section/ft-settings-section.scss b/src/renderer/components/ft-settings-section/ft-settings-section.scss
new file mode 100644
index 0000000000000..60e91e1e3508a
--- /dev/null
+++ b/src/renderer/components/ft-settings-section/ft-settings-section.scss
@@ -0,0 +1,116 @@
+.settingsSection {
+ background-color: var(card-bg-color);
+ margin: 0 auto;
+ width: 85%;
+
+ @media only screen and (max-width: 800px) {
+ width: 100%;
+ }
+
+ &[open] {
+ padding-bottom: 15px;
+ }
+
+ > div {
+ box-sizing: border-box;
+ padding: 0 20px;
+ width: 100%;
+ }
+
+ > div:not(:last-child, .ft-flex-box) {
+ @media only screen and (max-width: 800px) {
+ margin-bottom: 20px;
+ }
+ }
+}
+
+.sectionLine {
+ background-color: var(primary-color);
+ border: 0;
+ height: 2px;
+ margin-top: -1px;
+ width: 100%;
+}
+
+.sectionHeader {
+ cursor: pointer;
+ display: block;
+ padding: 1px;
+}
+
+.sectionTitle {
+ margin-left: 2%;
+}
+
+:deep(.switchGrid) {
+ align-items: center;
+ display: grid;
+ grid-template-columns: auto auto;
+ justify-content: space-evenly;
+
+ @media only screen and (max-width: 680px) {
+ grid-template-columns: auto;
+ }
+}
+
+:deep(.switchColumnGrid) {
+ @extend :deep(.switchGrid);
+
+ align-items: start;
+}
+
+:deep(.switchColumn) {
+ display: flex;
+ flex-direction: column;
+ justify-items: start;
+}
+
+:deep(.center) {
+ text-align: center;
+}
+
+@media only screen and (max-width: 460px) {
+ :deep(.settingsFlexStart460px) {
+ justify-content: flex-start;
+ }
+}
+
+@media only screen and (max-width: 500px) {
+ :deep(.settingsFlexStart500px) {
+ justify-content: flex-start;
+ }
+}
+
+@media only screen and (max-width: 680px) {
+ .settingsSection {
+ > div {
+ :deep(.text.bottom) {
+ left: -85px;
+ }
+ }
+
+ :deep(.switch-ctn.containsTooltip) {
+ left: -10px;
+ margin-right: 5px;
+ padding: 0 10px;
+ }
+
+ :not(.select, .selectLabel) {
+ > :deep(.tooltip) {
+ display: inline-block;
+ position: absolute;
+ right: -25px;
+ top: 12px;
+ }
+ }
+
+ .settingsFlexStart460px :deep(.tooltip) {
+ right: 0;
+ top: -2px;
+ }
+
+ :deep(.switch-ctn) {
+ margin: 10px 7px;
+ }
+ }
+}
diff --git a/src/renderer/components/ft-settings-section/ft-settings-section.vue b/src/renderer/components/ft-settings-section/ft-settings-section.vue
index 428ae04144949..fda6e472992e3 100644
--- a/src/renderer/components/ft-settings-section/ft-settings-section.vue
+++ b/src/renderer/components/ft-settings-section/ft-settings-section.vue
@@ -11,4 +11,4 @@
-
+
diff --git a/src/renderer/components/ft-share-button/ft-share-button.sass b/src/renderer/components/ft-share-button/ft-share-button.sass
deleted file mode 100644
index 1177db436c713..0000000000000
--- a/src/renderer/components/ft-share-button/ft-share-button.sass
+++ /dev/null
@@ -1,64 +0,0 @@
-.shareLinks
- display: grid
- grid-template-rows: auto auto
- grid-auto-flow: column
- padding: 12px
- width: max-content
-
- .header
- font-size: 18px
- font-weight: bold
- margin: 4px 0px 8px
- color: var(--primary-text-color)
-
- .buttons
- display: flex
- flex-direction: column
-
- .action
- padding: 6px
-
- .divider
- grid-row: span 3
- margin: 0px 12px
- width: 1px
- background: var(--tertiary-text-color)
-
- .youtubeLogo
- height: 18px
- width: auto
-
- @at-root
- .dark &, .system[data-system-theme*='dark'] &
- filter: brightness(0.868)
-
- .black &
- filter: brightness(0.933)
-
- /* no changes for the dracula theme */
-
- .light &, .system[data-system-theme*='light'] &
- filter: invert(0.87)
-
- .invidious
- display: flex
- justify-content: center
- letter-spacing: -0.4px
-
- .invidiousLogo
- display: inline-block
- width: 20px
- height: 20px
- background-size: cover
- margin-right: 2px
-
- @at-root
- .dark &,
- .black &,
- .dracula &,
- .CatppuccinMocha &,
- .system[data-system-theme*='dark'] &
- background-image: url(../../assets/img/invidious-logo-dark.svg)
-
- .light &, .system[data-system-theme*='light'] &
- background-image: url(../../assets/img/invidious-logo-light.svg)
diff --git a/src/renderer/components/ft-share-button/ft-share-button.scss b/src/renderer/components/ft-share-button/ft-share-button.scss
new file mode 100644
index 0000000000000..dde24b4e7fddc
--- /dev/null
+++ b/src/renderer/components/ft-share-button/ft-share-button.scss
@@ -0,0 +1,82 @@
+.shareLinks {
+ display: grid;
+ grid-auto-flow: column;
+ grid-template-rows: auto auto;
+ padding: 12px;
+ width: max-content;
+
+ .header {
+ color: var(primary-text-color);
+ font-size: 18px;
+ font-weight: bold;
+ margin: 4px 0 8px;
+ }
+
+ .buttons {
+ display: flex;
+ flex-direction: column;
+
+ .action {
+ padding: 6px;
+ }
+ }
+
+ .divider {
+ background: var(tertiary-text-color);
+ grid-row: span 3;
+ margin: 0 12px;
+ width: 1px;
+ }
+
+ .youtubeLogo {
+ height: 18px;
+ width: auto;
+
+ @at-root {
+ .dark &,
+ .system[data-system-theme*='dark'] & {
+ filter: brightness(0.868);
+ }
+
+ .black & {
+ filter: brightness(0.933);
+ }
+
+ /* no changes for the dracula theme */
+
+ .light &,
+ .system[data-system-theme*='light'] & {
+ filter: invert(0.87);
+ }
+ }
+ }
+
+ .invidious {
+ display: flex;
+ justify-content: center;
+ letter-spacing: -0.4px;
+
+ .invidiousLogo {
+ background-size: cover;
+ display: inline-block;
+ height: 20px;
+ margin-right: 2px;
+ width: 20px;
+
+ @at-root {
+ .dark &,
+ .black &,
+ .dracula &,
+ .CatppuccinMocha &,
+ .system[data-system-theme*='dark'] & {
+ background-image: url(../../assets/img/invidious-logo-dark.svg);
+ }
+
+ .light &,
+ .system[data-system-theme*='light'] & {
+ background-image: url(../../assets/img/invidious-logo-light.svg);
+ }
+ }
+ }
+ }
+}
diff --git a/src/renderer/components/ft-share-button/ft-share-button.vue b/src/renderer/components/ft-share-button/ft-share-button.vue
index 13d39bcd89c93..bd46ed13baa81 100644
--- a/src/renderer/components/ft-share-button/ft-share-button.vue
+++ b/src/renderer/components/ft-share-button/ft-share-button.vue
@@ -119,4 +119,4 @@
-
+
diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js
index 9ce8ff6f51db2..59d51cefa4f96 100644
--- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js
+++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js
@@ -34,7 +34,7 @@ export default Vue.extend({
colorNames: function () {
return this.colorValues.map(colorVal => {
// add spaces before capital letters
- const colorName = colorVal.replace(/([A-Z])/g, ' $1').trim()
+ const colorName = colorVal.replaceAll(/([A-Z])/g, ' $1').trim()
return this.$t(`Settings.Theme Settings.Main Color Theme.${colorName}`)
})
},
diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.sass b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.sass
deleted file mode 100644
index 5eab71ed9cdd1..0000000000000
--- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.sass
+++ /dev/null
@@ -1,7 +0,0 @@
-.sponsorBlockCategory
- margin-top: 30px
- padding: 0 10px
- @media only screen and (max-width: 680px)
- width: 100%
- .sponsorTitle
- font-size: x-large
diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.scss b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.scss
new file mode 100644
index 0000000000000..9fff4e5cc826b
--- /dev/null
+++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.scss
@@ -0,0 +1,12 @@
+.sponsorBlockCategory {
+ margin-top: 30px;
+ padding: 0 10px;
+
+ @media only screen and (max-width: 680px) {
+ width: 100%;
+ }
+
+ .sponsorTitle {
+ font-size: x-large;
+ }
+}
diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue
index 80d63d1ea7f9b..a0cd6d758a529 100644
--- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue
+++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue
@@ -20,4 +20,4 @@
-
+
diff --git a/src/renderer/components/ft-timestamp-catcher/ft-timestamp-catcher.js b/src/renderer/components/ft-timestamp-catcher/ft-timestamp-catcher.js
index df41cce35cfbe..b093092d43efd 100644
--- a/src/renderer/components/ft-timestamp-catcher/ft-timestamp-catcher.js
+++ b/src/renderer/components/ft-timestamp-catcher/ft-timestamp-catcher.js
@@ -20,7 +20,7 @@ export default Vue.extend({
}
},
detectTimestamps: function (input) {
- return input.replace(/(\d+(:\d+)+)/g, '$1')
+ return input.replaceAll(/(\d+(:\d+)+)/g, '$1')
}
}
})
diff --git a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.sass b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.sass
deleted file mode 100644
index d33e7f66258ac..0000000000000
--- a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.sass
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Thanks to Guus Lieben for the Material Design Switch */
-
-.switch-ctn
- margin: 20px 16px
- position: relative
-
- &.compact
- margin: 0
-
-.disabled
- .switch-label
- cursor: not-allowed
-
- .switch-label-text
- opacity: 0.4
-
-.switch-input
- -moz-appearance: none
- -webkit-appearance: none
- appearance: none
- height: 20px
- left: -3px
- position: absolute
- top: calc(50% - 3px)
- -ms-transform: translate(0, (-50%))
- -webkit-transform: translate(0, -50%)
- transform: translate(0, -50%)
- width: 34px
-
-.switch-label
- position: relative
- display: inline-block
- cursor: pointer
- font-weight: 500
- text-align: left
- padding: 12px 0 12px 44px
-
- &:before, &:after
- content: ""
- position: absolute
- margin: 0
- outline: 0
- top: 50%
- -ms-transform: translate(0, -50%)
- -webkit-transform: translate(0, -50%)
- transform: translate(0, -50%)
- -webkit-transition: all 0.3s ease
- transition: all 0.3s ease
-
- &:before
- left: 1px
- width: 34px
- height: 14px
- background-color: #9E9E9E
- border-radius: 8px
-
- .switch-input:checked + &
- background-color: var(--accent-color-light)
-
- .switch-input:disabled + &
- background-color: #9E9E9E
-
- &:after
- left: 0
- width: 20px
- height: 20px
- background-color: #FAFAFA
- border-radius: 50%
- box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.14), 0 2px 2px 0 rgba(0, 0, 0, 0.098), 0 1px 5px 0 rgba(0, 0, 0, 0.084)
-
- .switch-input:checked + &
- background-color: var(--accent-color)
- -ms-transform: translate(80%, -50%)
- -webkit-transform: translate(80%, -50%)
- transform: translate(80%, -50%)
-
- .switch-input:disabled + &
- background-color: #BDBDBD
-
- @media (max-width: 680px)
- max-width: 250px
diff --git a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.scss b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.scss
new file mode 100644
index 0000000000000..cf9aace811f24
--- /dev/null
+++ b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.scss
@@ -0,0 +1,88 @@
+/* Thanks to Guus Lieben for the Material Design Switch */
+
+.switch-ctn {
+ margin: 20px 16px;
+ position: relative;
+
+ &.compact {
+ margin: 0;
+ }
+}
+
+.switch-input {
+ appearance: none;
+ height: 20px;
+ left: -3px;
+ position: absolute;
+ top: calc(50% - 3px);
+ transform: translate(0, -50%);
+ width: 34px;
+}
+
+.switch-label {
+ cursor: pointer;
+ display: inline-block;
+ font-weight: 500;
+ padding: 12px 0 12px 44px;
+ position: relative;
+ text-align: left;
+
+ &::before,
+ &::after {
+ content: '';
+ margin: 0;
+ outline: 0;
+ position: absolute;
+ top: 50%;
+ transform: translate(0, -50%);
+ transition: all 0.3s ease;
+ }
+
+ &::before {
+ background-color: #9e9e9e;
+ border-radius: 8px;
+ height: 14px;
+ left: 1px;
+ width: 34px;
+
+ .switch-input:checked + & {
+ background-color: var(accent-color-light);
+ }
+
+ .switch-input:disabled + & {
+ background-color: #9e9e9e;
+ }
+ }
+
+ &::after {
+ background-color: #fafafa;
+ border-radius: 50%;
+ box-shadow: 0 3px 1px -2px rgb(0 0 0 / 14%), 0 2px 2px 0 rgb(0 0 0 / 9.8%), 0 1px 5px 0 rgb(0 0 0 / 8.4%);
+ height: 20px;
+ left: 0;
+ width: 20px;
+
+ .switch-input:checked + & {
+ background-color: var(accent-color);
+ transform: translate(80%, -50%);
+ }
+
+ .switch-input:disabled + & {
+ background-color: #bdbdbd;
+ }
+ }
+
+ @media (max-width: 680px) {
+ max-width: 250px;
+ }
+}
+
+.disabled {
+ .switch-label {
+ cursor: not-allowed;
+ }
+
+ .switch-label-text {
+ opacity: 0.4;
+ }
+}
diff --git a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue
index 8b13add4055ea..c57aa4ab054f0 100644
--- a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue
+++ b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue
@@ -35,4 +35,4 @@
-
+
diff --git a/src/renderer/components/general-settings/general-settings.sass b/src/renderer/components/general-settings/general-settings.sass
deleted file mode 100644
index 1a6a14af774ba..0000000000000
--- a/src/renderer/components/general-settings/general-settings.sass
+++ /dev/null
@@ -1,8 +0,0 @@
-.select
- min-width: 240px
- width: auto
-
-// https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors
-.select:deep(.select-text)
- min-width: 240px
- width: auto
diff --git a/src/renderer/components/general-settings/general-settings.scss b/src/renderer/components/general-settings/general-settings.scss
new file mode 100644
index 0000000000000..5e979b7c67f94
--- /dev/null
+++ b/src/renderer/components/general-settings/general-settings.scss
@@ -0,0 +1,9 @@
+.select {
+ min-width: 240px;
+ width: auto;
+}
+// https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors
+.select:deep(.select-text) {
+ min-width: 240px;
+ width: auto;
+}
diff --git a/src/renderer/components/general-settings/general-settings.vue b/src/renderer/components/general-settings/general-settings.vue
index 82f25f6b554cc..1564282747287 100644
--- a/src/renderer/components/general-settings/general-settings.vue
+++ b/src/renderer/components/general-settings/general-settings.vue
@@ -141,4 +141,4 @@
-
+
diff --git a/src/renderer/components/player-settings/player-settings.sass b/src/renderer/components/player-settings/player-settings.sass
deleted file mode 100644
index 7d6b9af53417d..0000000000000
--- a/src/renderer/components/player-settings/player-settings.sass
+++ /dev/null
@@ -1,12 +0,0 @@
-.screenshotFolderContainer
- width: 95%
- margin: 0 auto
- align-items: center
- column-gap: 1rem
-
- .screenshotFolderLabel, .screenshotFolderButton, .screenshotFilenamePatternTitle
- flex-grow: 0
-
- .screenshotFolderPath, .screenshotFilenamePatternInput, .screenshotFilenamePatternExample
- flex-grow: 1
- margin-top: 10px
diff --git a/src/renderer/components/player-settings/player-settings.scss b/src/renderer/components/player-settings/player-settings.scss
new file mode 100644
index 0000000000000..52fa08e2fe9b7
--- /dev/null
+++ b/src/renderer/components/player-settings/player-settings.scss
@@ -0,0 +1,19 @@
+.screenshotFolderContainer {
+ align-items: center;
+ column-gap: 1rem;
+ margin: 0 auto;
+ width: 95%;
+
+ .screenshotFolderLabel,
+ .screenshotFolderButton,
+ .screenshotFilenamePatternTitle {
+ flex-grow: 0;
+ }
+
+ .screenshotFolderPath,
+ .screenshotFilenamePatternInput,
+ .screenshotFilenamePatternExample {
+ flex-grow: 1;
+ margin-top: 10px;
+ }
+}
diff --git a/src/renderer/components/player-settings/player-settings.vue b/src/renderer/components/player-settings/player-settings.vue
index 43fd0cbb34890..1797f461076b0 100644
--- a/src/renderer/components/player-settings/player-settings.vue
+++ b/src/renderer/components/player-settings/player-settings.vue
@@ -246,4 +246,4 @@
-
+
diff --git a/src/renderer/components/playlist-info/playlist-info.sass b/src/renderer/components/playlist-info/playlist-info.sass
deleted file mode 100644
index bb382ccc9035d..0000000000000
--- a/src/renderer/components/playlist-info/playlist-info.sass
+++ /dev/null
@@ -1,45 +0,0 @@
-.playListThumbnail
- width: 100%
-
-.playlistThumbnail img
- width: 100%
- cursor: pointer
-
- @media only screen and (max-width: 800px)
- display: none
-
-.playlistStats
- font-size: 15px
-
-.playlistStats p
- color: var(--secondary-text-color)
- margin: 0
-
-.playlistTitle
- margin-bottom: 0.1em
-
-.playlistDescription
- max-height: 20vh
- overflow-y: auto
- white-space: break-spaces
-
- @media only screen and (max-width: 500px)
- max-height: 10vh
-
-.playlistChannel
- display: flex
- align-items: center
- gap: 8px
- height: 40px
- text-decoration: none
- color: inherit
-
-.channelThumbnail
- width: 40px
- float: left
- border-radius: 200px 200px 200px 200px
- -webkit-border-radius: 200px 200px 200px 200px
-
-.channelName
- margin: 0
- font-size: 15px
diff --git a/src/renderer/components/playlist-info/playlist-info.scss b/src/renderer/components/playlist-info/playlist-info.scss
new file mode 100644
index 0000000000000..2adcb9511c7ee
--- /dev/null
+++ b/src/renderer/components/playlist-info/playlist-info.scss
@@ -0,0 +1,55 @@
+.playListThumbnail {
+ width: 100%;
+}
+
+.playlistThumbnail img {
+ cursor: pointer;
+ width: 100%;
+
+ @media only screen and (max-width: 800px) {
+ display: none;
+ }
+}
+
+.playlistStats {
+ font-size: 15px;
+}
+
+.playlistStats p {
+ color: var(secondary-text-color);
+ margin: 0;
+}
+
+.playlistTitle {
+ margin-bottom: 0.1em;
+}
+
+.playlistDescription {
+ max-height: 20vh;
+ overflow-y: auto;
+ white-space: break-spaces;
+
+ @media only screen and (max-width: 500px) {
+ max-height: 10vh;
+ }
+}
+
+.playlistChannel {
+ align-items: center;
+ color: inherit;
+ display: flex;
+ gap: 8px;
+ height: 40px;
+ text-decoration: none;
+}
+
+.channelThumbnail {
+ border-radius: 200px;
+ float: left;
+ width: 40px;
+}
+
+.channelName {
+ font-size: 15px;
+ margin: 0;
+}
diff --git a/src/renderer/components/playlist-info/playlist-info.vue b/src/renderer/components/playlist-info/playlist-info.vue
index dfb3e98469653..242d44070d9b9 100644
--- a/src/renderer/components/playlist-info/playlist-info.vue
+++ b/src/renderer/components/playlist-info/playlist-info.vue
@@ -66,4 +66,4 @@
-
+
diff --git a/src/renderer/components/theme-settings/theme-settings.js b/src/renderer/components/theme-settings/theme-settings.js
index ea01b57b4e420..b8bc2e16169ef 100644
--- a/src/renderer/components/theme-settings/theme-settings.js
+++ b/src/renderer/components/theme-settings/theme-settings.js
@@ -109,7 +109,7 @@ export default Vue.extend({
colorNames: function () {
return this.colorValues.map(colorVal => {
// add spaces before capital letters
- const colorName = colorVal.replace(/([A-Z])/g, ' $1').trim()
+ const colorName = colorVal.replaceAll(/([A-Z])/g, ' $1').trim()
return this.$t(`Settings.Theme Settings.Main Color Theme.${colorName}`)
})
},
diff --git a/src/renderer/components/top-nav/top-nav.sass b/src/renderer/components/top-nav/top-nav.sass
deleted file mode 100644
index 3d50ae6793715..0000000000000
--- a/src/renderer/components/top-nav/top-nav.sass
+++ /dev/null
@@ -1,166 +0,0 @@
-@mixin top-nav-is-colored
- @at-root
- .topNavBarColor &, .topNavBarColor#{&}
- @content
-
-.topNav
- position: sticky
- z-index: 4
- left: 0
- right: 0
- top: 0
- height: 60px
- width: 100%
- line-height: 60px
- background-color: var(--card-bg-color)
- -webkit-box-shadow: 0px 2px 1px 0px var(--primary-shadow-color)
- display: flex
- align-items: center
- align-content: center
-
- @media only screen and (min-width: 961px)
- display: grid
- grid-template-columns: 1fr 440px 1fr
-
- @include top-nav-is-colored
- background-color: var(--primary-color)
-
- @media only screen and (max-width: 680px)
- position: fixed
-
-.menuIcon // the hamburger button
- @media only screen and (max-width: 680px)
- display: none
-
-.navIcon // all icons in the top navigation
- font-size: 20px
- padding: 10px
- cursor: pointer
- color: var(--primary-text-color)
- border-radius: 50%
- transition: background 0.2s ease-out
- width: 1em
- height: 1em
-
- &.fa-arrow-left, &.fa-arrow-right
- color: gray
- opacity: 0.5
- pointer-events: none
- user-select: none
-
- @include top-nav-is-colored
- color: var(--text-with-main-color)
-
- &:hover
- background-color: var(--primary-color-hover)
-
- &:hover
- background-color: var(--side-nav-hover-color)
- transition: background 0.2s ease-in
-
- &:active
- background-color: var(--tertiary-text-color)
- transition: background 0.2s ease-in
-
- @include top-nav-is-colored
- background-color: var(--primary-color-active)
-
-.navFilterIcon // Filter icon
- $effect-distance: 10px
-
- margin-left: $effect-distance
-
- &.filterChanged // When filter value changed from default
- box-shadow: 0 0 $effect-distance var(--primary-color)
-
- @include top-nav-is-colored
- box-shadow: 0 0 $effect-distance var(--text-with-main-color)
-
-.side // parts of the top nav either side of the search bar
- display: flex
- gap: 3px
- margin: 0 6px
- align-items: center
-
- &.profiles
- justify-content: flex-end
-
- .navSearchIcon
- @media only screen and (min-width: 681px)
- display: none
-
- .navNewWindowIcon
- @media only screen and (max-width: 680px)
- display: none
-
- .logo // parts that make up the logo
- display: flex
- align-items: center
- padding: 0px 25px 0px 10px
- cursor: pointer
-
- &:active
- background-color: var(--tertiary-text-color)
- transition: background 0.2s ease-in
- @include top-nav-is-colored
- background-color: var(--primary-color-active)
- .logoIcon
- background-image: var(--logo-icon)
- background-repeat: no-repeat
- background-position: right top
- background-size: 25px
- width: 25px
- height: 25px
-
- @include top-nav-is-colored
- background-image: var(--logo-icon-bar-color)
-
- .logoText
- margin-left: 5px
- position: relative
- top: -3px
- background-image: var(--logo-text)
- background-repeat: no-repeat
- background-position: right top
- background-size: 100px
- width: 100px
- height: 40px
-
- @media only screen and (max-width: 680px)
- display: none
-
- @include top-nav-is-colored
- background-image: var(--logo-text-bar-color)
-
-.middle // the middle part of the top nav which contains the search bar
- max-width: 440px
- flex: 1
-
- .searchContainer
- display: flex
- align-items: center
-
- @media only screen and (max-width: 680px)
- position: fixed
- left: 0
- right: 0
- top: 60px
- background-color: var(--side-nav-color)
-
- @include top-nav-is-colored
- background-color: var(--primary-color-hover)
-
- .searchInput
- flex: 1
-
- .searchFilters
- position: absolute
- left: 0
- right: 0
- margin: 10px 20px 20px 220px
- transition: margin 150ms ease-in-out
-
- @media only screen and (max-width: 680px)
- left: 0
- right: 0
- margin: 95px 10px 0px
diff --git a/src/renderer/components/top-nav/top-nav.scss b/src/renderer/components/top-nav/top-nav.scss
new file mode 100644
index 0000000000000..d8ccdc28e870d
--- /dev/null
+++ b/src/renderer/components/top-nav/top-nav.scss
@@ -0,0 +1,210 @@
+@mixin top-nav-is-colored {
+ @at-root {
+ .topNavBarColor &,
+ .topNavBarColor#{&} {
+ @content;
+ }
+ }
+}
+
+.topNav {
+ align-content: center;
+ align-items: center;
+ background-color: var(card-bg-color);
+ box-shadow: 0 2px 1px 0 var(primary-shadow-color);
+ display: flex;
+ height: 60px;
+ left: 0;
+ line-height: 60px;
+ position: sticky;
+ right: 0;
+ top: 0;
+ width: 100%;
+ z-index: 4;
+
+ @media only screen and (min-width: 961px) {
+ display: grid;
+ grid-template-columns: 1fr 440px 1fr;
+ }
+
+ @include top-nav-is-colored {
+ background-color: var(primary-color);
+ }
+
+ @media only screen and (max-width: 680px) {
+ position: fixed;
+ }
+}
+
+.menuIcon {
+ @media only screen and (max-width: 680px) {
+ display: none;
+ }
+}
+
+.navIcon {
+ border-radius: 50%;
+ color: var(primary-text-color);
+ cursor: pointer;
+ font-size: 20px;
+ height: 1em;
+ padding: 10px;
+ transition: background 0.2s ease-out;
+ width: 1em;
+
+ @include top-nav-is-colored {
+ color: var(text-with-main-color);
+
+ &:hover {
+ background-color: var(primary-color-hover);
+ }
+ }
+
+ &.fa-arrow-left,
+ &.fa-arrow-right {
+ color: gray;
+ opacity: 0.5;
+ pointer-events: none;
+ user-select: none;
+ }
+
+ &:hover {
+ background-color: var(side-nav-hover-color);
+ transition: background 0.2s ease-in;
+ }
+
+ &:active {
+ background-color: var(tertiary-text-color);
+ transition: background 0.2s ease-in;
+
+ @include top-nav-is-colored {
+ background-color: var(primary-color-active);
+ }
+ }
+}
+
+.navFilterIcon {
+ $effect-distance: 10px;
+
+ margin-left: $effect-distance;
+
+ &.filterChanged {
+ box-shadow: 0 0 $effect-distance var(primary-color);
+
+ @include top-nav-is-colored {
+ box-shadow: 0 0 $effect-distance var(text-with-main-color);
+ }
+ }
+}
+
+.side {
+ align-items: center;
+ display: flex;
+ gap: 3px;
+ margin: 0 6px;
+
+ &.profiles {
+ justify-content: flex-end;
+ }
+
+ .navSearchIcon {
+ @media only screen and (min-width: 681px) {
+ display: none;
+ }
+ }
+
+ .navNewWindowIcon {
+ @media only screen and (max-width: 680px) {
+ display: none;
+ }
+ }
+
+ .logo {
+ align-items: center;
+ cursor: pointer;
+ display: flex;
+ padding: 0 25px 0 10px;
+
+ &:active {
+ background-color: var(tertiary-text-color);
+ transition: background 0.2s ease-in;
+
+ @include top-nav-is-colored {
+ background-color: var(primary-color-active);
+ }
+ }
+
+ .logoIcon {
+ background-image: var(logo-icon);
+ background-position: right top;
+ background-repeat: no-repeat;
+ background-size: 25px;
+ height: 25px;
+ width: 25px;
+
+ @include top-nav-is-colored {
+ background-image: var(logo-icon-bar-color);
+ }
+ }
+
+ .logoText {
+ background-image: var(logo-text);
+ background-position: right top;
+ background-repeat: no-repeat;
+ background-size: 100px;
+ height: 40px;
+ margin-left: 5px;
+ position: relative;
+ top: -3px;
+ width: 100px;
+
+ @media only screen and (max-width: 680px) {
+ display: none;
+ }
+
+ @include top-nav-is-colored {
+ background-image: var(logo-text-bar-color);
+ }
+ }
+ }
+}
+
+.middle {
+ flex: 1;
+ max-width: 440px;
+
+ .searchContainer {
+ align-items: center;
+ display: flex;
+
+ @media only screen and (max-width: 680px) {
+ background-color: var(side-nav-color);
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 60px;
+
+ @include top-nav-is-colored {
+ background-color: var(primary-color-hover);
+ }
+ }
+
+ .searchInput {
+ flex: 1;
+ }
+ }
+
+ .searchFilters {
+ left: 0;
+ margin: 10px 20px 20px 220px;
+ position: absolute;
+ right: 0;
+ transition: margin 150ms ease-in-out;
+
+ @media only screen and (max-width: 680px) {
+ left: 0;
+ margin: 95px 10px 0;
+ right: 0;
+ }
+ }
+}
diff --git a/src/renderer/components/top-nav/top-nav.vue b/src/renderer/components/top-nav/top-nav.vue
index 8aaa2161a6ac7..a29820537da7d 100644
--- a/src/renderer/components/top-nav/top-nav.vue
+++ b/src/renderer/components/top-nav/top-nav.vue
@@ -108,4 +108,4 @@
-
+
diff --git a/src/renderer/components/watch-video-description/watch-video-description.js b/src/renderer/components/watch-video-description/watch-video-description.js
index 3d79c1bc49cab..eb370e175413c 100644
--- a/src/renderer/components/watch-video-description/watch-video-description.js
+++ b/src/renderer/components/watch-video-description/watch-video-description.js
@@ -53,25 +53,25 @@ export default Vue.extend({
this.$emit('timestamp-event', timestamp)
},
parseDescriptionHtml: function (descriptionText) {
- descriptionText = descriptionText.replace(/target="_blank"/g, '')
- descriptionText = descriptionText.replace(/\/redirect.+?(?=q=)/g, '')
- descriptionText = descriptionText.replace(/q=/g, '')
- descriptionText = descriptionText.replace(/rel="nofollow\snoopener"/g, '')
- descriptionText = descriptionText.replace(/class=.+?(?=")./g, '')
- descriptionText = descriptionText.replace(/id=.+?(?=")./g, '')
- descriptionText = descriptionText.replace(/data-target-new-window=.+?(?=")./g, '')
- descriptionText = descriptionText.replace(/data-url=.+?(?=")./g, '')
- descriptionText = descriptionText.replace(/data-sessionlink=.+?(?=")./g, '')
- descriptionText = descriptionText.replace(/&/g, '&')
- descriptionText = descriptionText.replace(/%3A/g, ':')
- descriptionText = descriptionText.replace(/%2F/g, '/')
- descriptionText = descriptionText.replace(/&v.+?(?=")/g, '')
- descriptionText = descriptionText.replace(/&redirect-token.+?(?=")/g, '')
- descriptionText = descriptionText.replace(/&redir_token.+?(?=")/g, '')
- descriptionText = descriptionText.replace(/href="\//g, 'href="https://www.youtube.com/')
+ descriptionText = descriptionText.replaceAll('target="_blank"', '')
+ descriptionText = descriptionText.replaceAll(/\/redirect.+?(?=q=)/g, '')
+ descriptionText = descriptionText.replaceAll('q=', '')
+ descriptionText = descriptionText.replaceAll(/rel="nofollow\snoopener"/g, '')
+ descriptionText = descriptionText.replaceAll(/class=.+?(?=")./g, '')
+ descriptionText = descriptionText.replaceAll(/id=.+?(?=")./g, '')
+ descriptionText = descriptionText.replaceAll(/data-target-new-window=.+?(?=")./g, '')
+ descriptionText = descriptionText.replaceAll(/data-url=.+?(?=")./g, '')
+ descriptionText = descriptionText.replaceAll(/data-sessionlink=.+?(?=")./g, '')
+ descriptionText = descriptionText.replaceAll('&', '&')
+ descriptionText = descriptionText.replaceAll('%3A', ':')
+ descriptionText = descriptionText.replaceAll('%2F', '/')
+ descriptionText = descriptionText.replaceAll(/&v.+?(?=")/g, '')
+ descriptionText = descriptionText.replaceAll(/&redirect-token.+?(?=")/g, '')
+ descriptionText = descriptionText.replaceAll(/&redir_token.+?(?=")/g, '')
+ descriptionText = descriptionText.replaceAll('href="/', 'href="https://www.youtube.com/')
// TODO: Implement hashtag support
- descriptionText = descriptionText.replace(/href="\/hashtag\//g, 'href="freetube://')
- descriptionText = descriptionText.replace(/yt\.www\.watch\.player\.seekTo/g, 'changeDuration')
+ descriptionText = descriptionText.replaceAll('href="/hashtag/', 'href="freetube://')
+ descriptionText = descriptionText.replaceAll('yt.www.watch.player.seekTo', 'changeDuration')
return descriptionText
}
diff --git a/src/renderer/components/watch-video-info/watch-video-info.js b/src/renderer/components/watch-video-info/watch-video-info.js
index 9026038130f90..58e68db6eaef4 100644
--- a/src/renderer/components/watch-video-info/watch-video-info.js
+++ b/src/renderer/components/watch-video-info/watch-video-info.js
@@ -264,7 +264,7 @@ export default Vue.extend({
const locale = this.currentLocale.replace('_', '-')
const localeDateString = new Intl.DateTimeFormat([locale, 'en'], { dateStyle: 'medium' }).format(date)
// replace spaces with no break spaces to make the date act as a single entity while wrapping
- return `${localeDateString}`.replace(/ /g, '\u00A0')
+ return `${localeDateString}`.replaceAll(' ', '\u00A0')
},
publishedString() {
diff --git a/src/renderer/components/watch-video-info/watch-video-info.sass b/src/renderer/components/watch-video-info/watch-video-info.sass
deleted file mode 100644
index 9e8c109698a51..0000000000000
--- a/src/renderer/components/watch-video-info/watch-video-info.sass
+++ /dev/null
@@ -1,97 +0,0 @@
-.watchVideoInfo
- display: grid
- grid-template-columns: auto minmax(min-content, 1fr)
- column-gap: 15px
- padding: 16px
-
- @media screen and (max-width: 680px)
- grid-template-columns: auto
-
-.videoTitle
- font-size: 22px
- margin: 0 0 24px
- word-break: break-word
- display: block
- margin-block-end: 1em
- margin-inline-start: 0px
- margin-inline-end: 0px
- font-weight: normal
-
-.channelInformation
- .profileRow
- display: flex
-
- .channelThumbnail
- border-radius: 50%
- margin-right: 10px
- cursor: pointer
- width: 56px
-
- .channelName
- margin-left: 6px
- cursor: pointer
- position: relative
- top: -2px
- display: block
- color: inherit
- text-decoration: inherit
-
- .subscribeButton
- margin-top: 6px
- margin-left: 6px
- padding: 6px
- font-size: 14px
-
-.viewCount, .datePublished
- color: var(--secondary-text-color)
- text-align: right
- font-size: 15px
-
- @media screen and (max-width: 680px)
- text-align: left
-
-.viewCount
- margin: 18px 0px 0px
-
-.datePublished
- margin: 4px 0px 0px
-
- @media screen and (max-width: 680px)
- margin-top: 16px
-
-.likeSection
- margin-top: 4px
- font-size: 16px
- color: var(--tertiary-text-color)
- display: flex
- flex-direction: column
- margin-left: auto
- text-align: right
- max-width: 210px
-
- @media screen and (max-width: 680px)
- margin-left: 0
- text-align: left
-
- .likeBar
- height: 8px
- border-radius: 4px
- margin-bottom: 4px
-
- .likeCount
- margin-right: 0px
-
-.videoOptions
- margin-top: 16px
- display: flex
- justify-content: flex-end
-
- .option:not(:first-child)
- margin-left: 4px
-
- @media screen and (max-width: 680px)
- justify-content: flex-start
-
- :deep(.iconDropdown)
- left: calc(50% - 20px)
- right: auto
diff --git a/src/renderer/components/watch-video-info/watch-video-info.scss b/src/renderer/components/watch-video-info/watch-video-info.scss
new file mode 100644
index 0000000000000..67f2070e59430
--- /dev/null
+++ b/src/renderer/components/watch-video-info/watch-video-info.scss
@@ -0,0 +1,119 @@
+.watchVideoInfo {
+ column-gap: 15px;
+ display: grid;
+ grid-template-columns: auto minmax(min-content, 1fr);
+ padding: 16px;
+
+ @media screen and (max-width: 680px) {
+ grid-template-columns: auto;
+ }
+}
+
+.videoTitle {
+ display: block;
+ font-size: 22px;
+ font-weight: normal;
+ margin: 0 0 24px;
+ margin-block-end: 1em;
+ margin-inline-end: 0;
+ margin-inline-start: 0;
+ word-break: break-word;
+}
+
+.channelInformation {
+ .profileRow {
+ display: flex;
+ }
+
+ .channelThumbnail {
+ border-radius: 50%;
+ cursor: pointer;
+ margin-right: 10px;
+ width: 56px;
+ }
+
+ .channelName {
+ color: inherit;
+ cursor: pointer;
+ display: block;
+ margin-left: 6px;
+ position: relative;
+ text-decoration: inherit;
+ top: -2px;
+ }
+
+ .subscribeButton {
+ font-size: 14px;
+ margin-left: 6px;
+ margin-top: 6px;
+ padding: 6px;
+ }
+}
+
+.viewCount,
+.datePublished {
+ color: var(secondary-text-color);
+ font-size: 15px;
+ text-align: right;
+
+ @media screen and (max-width: 680px) {
+ text-align: left;
+ }
+}
+
+.viewCount {
+ margin: 18px 0 0;
+}
+
+.datePublished {
+ margin: 4px 0 0;
+
+ @media screen and (max-width: 680px) {
+ margin-top: 16px;
+ }
+}
+
+.likeSection {
+ color: var(tertiary-text-color);
+ display: flex;
+ flex-direction: column;
+ font-size: 16px;
+ margin-left: auto;
+ margin-top: 4px;
+ max-width: 210px;
+ text-align: right;
+
+ @media screen and (max-width: 680px) {
+ margin-left: 0;
+ text-align: left;
+ }
+
+ .likeBar {
+ border-radius: 4px;
+ height: 8px;
+ margin-bottom: 4px;
+ }
+
+ .likeCount {
+ margin-right: 0;
+ }
+}
+
+.videoOptions {
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 16px;
+
+ .option:not(:first-child) {
+ margin-left: 4px;
+ }
+
+ @media screen and (max-width: 680px) {
+ justify-content: flex-start;
+
+ :deep(.iconDropdown) {
+ left: calc(50% - 20px);
+ right: auto;
+ }
+ }
+}
diff --git a/src/renderer/components/watch-video-info/watch-video-info.vue b/src/renderer/components/watch-video-info/watch-video-info.vue
index b0872c6a3cf70..3363551af5682 100644
--- a/src/renderer/components/watch-video-info/watch-video-info.vue
+++ b/src/renderer/components/watch-video-info/watch-video-info.vue
@@ -130,4 +130,4 @@
-
+
diff --git a/src/renderer/helpers/accessibility.js b/src/renderer/helpers/accessibility.js
index 2ff2432bef20a..53ab6f4af62ed 100644
--- a/src/renderer/helpers/accessibility.js
+++ b/src/renderer/helpers/accessibility.js
@@ -40,5 +40,5 @@ export function handleDropdownKeyboardEvent(event, target, afterElement) {
}
export function sanitizeForHtmlId(attribute) {
- return attribute.replace(/\s+/g, '')
+ return attribute.replaceAll(/\s+/g, '')
}
diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js
index 4491f2e468a24..6c9e6dfbfeb25 100644
--- a/src/renderer/helpers/utils.js
+++ b/src/renderer/helpers/utils.js
@@ -361,7 +361,7 @@ export function createWebURL(path) {
// strip html tags but keep
, , , , ,
export function stripHTML(value) {
- return value.replace(/(<(?!br|\/?(?:b|s|i)>)([^>]+)>)/ig, '')
+ return value.replaceAll(/(<(?!br|\/?[bis]>)([^>]+)>)/gi, '')
}
/**
@@ -519,14 +519,14 @@ export function getVideoParamsFromUrl(url) {
},
// youtu.be
function () {
- if (urlObject.host === 'youtu.be' && urlObject.pathname.match(/^\/[A-Za-z0-9_-]+$/)) {
+ if (urlObject.host === 'youtu.be' && /^\/[\w-]+$/.test(urlObject.pathname)) {
extractParams(urlObject.pathname.slice(1))
return paramsObject
}
},
// youtube.com/embed
function () {
- if (urlObject.pathname.match(/^\/embed\/[A-Za-z0-9_-]+$/)) {
+ if (/^\/embed\/[\w-]+$/.test(urlObject.pathname)) {
const urlTail = urlObject.pathname.replace('/embed/', '')
if (urlTail === 'videoseries') {
paramsObject.playlistId = urlObject.searchParams.get('list')
@@ -538,14 +538,14 @@ export function getVideoParamsFromUrl(url) {
},
// youtube.com/shorts
function () {
- if (urlObject.pathname.match(/^\/shorts\/[A-Za-z0-9_-]+$/)) {
+ if (/^\/shorts\/[\w-]+$/.test(urlObject.pathname)) {
extractParams(urlObject.pathname.replace('/shorts/', ''))
return paramsObject
}
},
// cloudtube
function () {
- if (urlObject.host.match(/^cadence\.(gq|moe)$/) && urlObject.pathname.match(/^\/cloudtube\/video\/[A-Za-z0-9_-]+$/)) {
+ if (/^cadence\.(gq|moe)$/.test(urlObject.host) && /^\/cloudtube\/video\/[\w-]+$/.test(urlObject.pathname)) {
extractParams(urlObject.pathname.slice('/cloudtube/video/'.length))
return paramsObject
}
diff --git a/src/renderer/i18n/index.js b/src/renderer/i18n/index.js
index 56c17705d0414..076859297cfa2 100644
--- a/src/renderer/i18n/index.js
+++ b/src/renderer/i18n/index.js
@@ -27,7 +27,7 @@ class CustomVueI18n extends VueI18n {
// locales are only compressed in our production Electron builds
try {
// decompress brotli compressed json file and then load it
- // eslint-disable-next-line node/no-path-concat
+ // eslint-disable-next-line n/no-path-concat
const compressed = await readFile(`${__dirname}/static/locales/${locale}.json.br`)
const decompressed = await brotliDecompressAsync(compressed)
const data = JSON.parse(decompressed.toString())
diff --git a/src/renderer/sass-partials/_ft-list-item.sass b/src/renderer/sass-partials/_ft-list-item.sass
deleted file mode 100644
index ab30ca36cb352..0000000000000
--- a/src/renderer/sass-partials/_ft-list-item.sass
+++ /dev/null
@@ -1,225 +0,0 @@
-$thumbnail-overlay-opacity: 0.85
-$watched-transition-duration: 0.5s
-
-@mixin is-result
- @at-root
- .result#{&}
- @content
-
-@mixin is-watch-playlist-item
- @at-root
- .watchPlaylistItem#{&}
- @content
-
-@mixin is-recommendation
- @at-root
- .recommendation#{&}
- @content
-
-@mixin is-sidebar-item
- @at-root
- .watchPlaylistItem#{&}, .recommendation#{&}
- @content
-
-@mixin low-contrast-when-watched($col)
- color: $col
-
- @at-root
- .watched &, .watched#{&}
- color: var(--tertiary-text-color)
- transition-duration: $watched-transition-duration
-
- .watched:hover &, .watched:hover#{&}
- color: $col
- transition-duration: $watched-transition-duration
-
-.ft-list-item
- padding: 6px
-
- &.watched
- background-color: var(--bg-color)
- @include low-contrast-when-watched(var(--primary-text-color))
-
- .thumbnailImage
- opacity: 0.3
- transition-duration: $watched-transition-duration
-
- &:hover .thumbnailImage
- opacity: 1
- transition-duration: $watched-transition-duration
-
- .videoThumbnail
- position: relative
-
- .thumbnailLink
- display: flex
-
- .thumbnailImage
-
- @include is-sidebar-item
- height: 75px
-
- @include is-recommendation
- width: 163px
- height: auto
-
- .videoWatched
- position: absolute
- top:0
- padding: 2px
- opacity: $thumbnail-overlay-opacity
- color: var(--primary-text-color)
- background-color: var(--bg-color)
- pointer-events: none
-
- .videoDuration
- position: absolute
- bottom: 4px
- right: 4px
- padding: 3px 4px
- line-height: 1.2
- font-size: 15px
- border-radius: 5px
- margin: 0
- opacity: $thumbnail-overlay-opacity
- color: var(--primary-text-color)
- background-color: var(--card-bg-color)
- pointer-events: none
-
- &.live
- background-color: #f22
- color: #fff
-
- @include is-watch-playlist-item
- font-size: 12px
-
- .externalPlayerIcon
- position: absolute
- bottom: 4px
- left: 4px
- font-size: 17px
- opacity: $thumbnail-overlay-opacity
-
- .favoritesIcon
- position: absolute
- top: 3px
- right: 3px
- font-size: 17px
- opacity: $thumbnail-overlay-opacity
-
- .watchedProgressBar
- height: 2px
- position: absolute
- bottom: 0px
- background-color: var(--primary-color)
- z-index: 2
- max-width: 100%
-
- .videoCountContainer
- position: absolute
- right: 0
- top: 0
- bottom: 0
- width: 60px
- font-size: 20px
-
- .background, .inner
- position: absolute
- top: 0
- bottom: 0
- left: 0
- right: 0
-
- .background
- background-color: var(--bg-color)
- opacity: 0.9
-
- .inner
- display: flex
- flex-direction: column
- justify-content: center
- align-items: center
- color: var(--primary-text-color)
-
- .channelThumbnail
- display: flex
- justify-content: center
-
- .channelImage
- height: 130px
- border-radius: 50%
-
- .info
- flex: 1
- position: relative
-
- .optionsButton
- float: right // ohhhh man, float was finally the right choice for something
-
- .externalPlayerButton
- float: right
-
- .title
- font-size: 20px
- @include low-contrast-when-watched(var(--primary-text-color))
- text-decoration: none
- word-wrap: break-word
- word-break: break-word
-
- @include is-sidebar-item
- font-size: 15px
-
- .infoLine
- margin-top: 5px
- font-size: 14px
-
- @include is-sidebar-item
- font-size: 12px
-
- &
- @include low-contrast-when-watched(var(--secondary-text-color))
-
- .channelName
- @include low-contrast-when-watched(var(--secondary-text-color))
-
- .description
- font-size: 14px
- max-height: 50px
- overflow-y: hidden
- @include low-contrast-when-watched(var(--secondary-text-color))
-
- &.list
- display: flex
- align-items: flex-start
-
- .videoThumbnail, .channelThumbnail
- margin-right: 20px
-
- .channelThumbnail
- width: 231px
-
- @include is-sidebar-item
- .videoThumbnail
- margin-right: 10px
-
- &.grid
- display: flex
- flex-direction: column
- min-height: 230px
- padding-bottom: 20px
-
- .videoThumbnail, .channelThumbnail
- margin-bottom: 12px
-
- .thumbnailImage
- width: 100%
-
- .title
- font-size: 18px
-
- .infoLine
- margin-top: 8px
- font-size: 13px
-
-.videoWatched, .live
- text-transform: uppercase
diff --git a/src/renderer/scss-partials/_ft-list-item.scss b/src/renderer/scss-partials/_ft-list-item.scss
new file mode 100644
index 0000000000000..806fdea65f0b0
--- /dev/null
+++ b/src/renderer/scss-partials/_ft-list-item.scss
@@ -0,0 +1,292 @@
+$thumbnail-overlay-opacity: 0.85;
+$watched-transition-duration: 0.5s;
+
+@mixin is-result {
+ @at-root {
+ .result#{&} {
+ @content;
+ }
+ }
+}
+
+@mixin is-watch-playlist-item {
+ @at-root {
+ .watchPlaylistItem#{&} {
+ @content;
+ }
+ }
+}
+
+@mixin is-recommendation {
+ @at-root {
+ .recommendation#{&} {
+ @content;
+ }
+ }
+}
+
+@mixin is-sidebar-item {
+ @at-root {
+ .watchPlaylistItem#{&},
+ .recommendation#{&} {
+ @content;
+ }
+ }
+}
+
+@mixin low-contrast-when-watched($col) {
+ color: $col;
+
+ @at-root {
+ .watched &,
+ .watched#{&} {
+ color: var(tertiary-text-color);
+ transition-duration: $watched-transition-duration;
+ }
+ .watched:hover &,
+ .watched:hover#{&} {
+ color: $col;
+ transition-duration: $watched-transition-duration;
+ }
+ }
+}
+
+.ft-list-item {
+ padding: 6px;
+
+ &.watched {
+ @include low-contrast-when-watched(var(primary-text-color));
+
+ background-color: var(bg-color);
+
+ .thumbnailImage {
+ opacity: 0.3;
+ transition-duration: $watched-transition-duration;
+ }
+
+ &:hover .thumbnailImage {
+ opacity: 1;
+ transition-duration: $watched-transition-duration;
+ }
+ }
+
+ .videoThumbnail {
+ position: relative;
+
+ .thumbnailLink {
+ display: flex;
+ }
+
+ .thumbnailImage {
+ @include is-sidebar-item {
+ height: 75px;
+ }
+
+ @include is-recommendation {
+ height: auto;
+ width: 163px;
+ }
+ }
+
+ .videoWatched {
+ background-color: var(bg-color);
+ color: var(primary-text-color);
+ opacity: $thumbnail-overlay-opacity;
+ padding: 2px;
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ }
+
+ .videoDuration {
+ background-color: var(card-bg-color);
+ border-radius: 5px;
+ bottom: 4px;
+ color: var(primary-text-color);
+ font-size: 15px;
+ line-height: 1.2;
+ margin: 0;
+ opacity: $thumbnail-overlay-opacity;
+ padding: 3px 4px;
+ pointer-events: none;
+ position: absolute;
+ right: 4px;
+
+ @include is-watch-playlist-item {
+ font-size: 12px;
+ }
+
+ &.live {
+ background-color: #f22;
+ color: #fff;
+ }
+ }
+
+ .externalPlayerIcon {
+ bottom: 4px;
+ font-size: 17px;
+ left: 4px;
+ opacity: $thumbnail-overlay-opacity;
+ position: absolute;
+ }
+
+ .favoritesIcon {
+ font-size: 17px;
+ opacity: $thumbnail-overlay-opacity;
+ position: absolute;
+ right: 3px;
+ top: 3px;
+ }
+
+ .watchedProgressBar {
+ background-color: var(primary-color);
+ bottom: 0;
+ height: 2px;
+ max-width: 100%;
+ position: absolute;
+ z-index: 2;
+ }
+
+ .videoCountContainer {
+ bottom: 0;
+ font-size: 20px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 60px;
+
+ .background,
+ .inner {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+
+ .background {
+ background-color: var(bg-color);
+ opacity: 0.9;
+ }
+
+ .inner {
+ align-items: center;
+ color: var(primary-text-color);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ }
+ }
+ }
+
+ .channelThumbnail {
+ display: flex;
+ justify-content: center;
+
+ .channelImage {
+ border-radius: 50%;
+ height: 130px;
+ }
+ }
+
+ .info {
+ flex: 1;
+ position: relative;
+
+ .optionsButton {
+ float: right; // ohhhh man, float was finally the right choice for something;
+ }
+
+ .externalPlayerButton {
+ float: right;
+ }
+
+ .title {
+ @include low-contrast-when-watched(var(primary-text-color));
+
+ font-size: 20px;
+ text-decoration: none;
+ word-break: break-word;
+ word-wrap: break-word;
+
+ @include is-sidebar-item {
+ font-size: 15px;
+ }
+ }
+
+ .infoLine {
+ font-size: 14px;
+ margin-top: 5px;
+
+ @include is-sidebar-item {
+ font-size: 12px;
+ }
+
+ & {
+ @include low-contrast-when-watched(var(secondary-text-color));
+ }
+
+ .channelName {
+ @include low-contrast-when-watched(var(secondary-text-color));
+ }
+ }
+
+ .description {
+ @include low-contrast-when-watched(var(secondary-text-color));
+
+ font-size: 14px;
+ max-height: 50px;
+ overflow-y: hidden;
+ }
+ }
+
+ &.list {
+ align-items: flex-start;
+ display: flex;
+
+ @include is-sidebar-item {
+ .videoThumbnail {
+ margin-right: 10px;
+ }
+ }
+
+ .videoThumbnail,
+ .channelThumbnail {
+ margin-right: 20px;
+ }
+
+ .channelThumbnail {
+ width: 231px;
+ }
+ }
+
+ &.grid {
+ display: flex;
+ flex-direction: column;
+ min-height: 230px;
+ padding-bottom: 20px;
+
+ .videoThumbnail,
+ .channelThumbnail {
+ margin-bottom: 12px;
+
+ .thumbnailImage {
+ width: 100%;
+ }
+ }
+
+ .title {
+ font-size: 18px;
+ }
+
+ .infoLine {
+ font-size: 13px;
+ margin-top: 8px;
+ }
+ }
+}
+
+.videoWatched,
+.live {
+ text-transform: uppercase;
+}
diff --git a/src/renderer/store/modules/index.js b/src/renderer/store/modules/index.js
index 428c6be2e7193..33063f6f39902 100644
--- a/src/renderer/store/modules/index.js
+++ b/src/renderer/store/modules/index.js
@@ -8,7 +8,7 @@ const modules = {}
files.keys().forEach(key => {
if (key === './index.js') return
- modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
+ modules[key.replaceAll(/(\.\/|\.js)/g, '')] = files(key).default
})
export default modules
diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js
index 357416b3039e4..fd2fafc00b2b0 100644
--- a/src/renderer/store/modules/utils.js
+++ b/src/renderer/store/modules/utils.js
@@ -314,7 +314,7 @@ const actions = {
const typePatterns = new Map([
['playlist', /^(\/playlist\/?|\/embed(\/?videoseries)?)$/],
['search', /^\/results\/?$/],
- ['hashtag', /^\/hashtag\/([^/?]+)$/],
+ ['hashtag', /^\/hashtag\/([^#&/?]+)$/],
['channel', channelPattern]
])
diff --git a/src/renderer/views/About/About.sass b/src/renderer/views/About/About.sass
deleted file mode 100644
index d7c1c5e0e2cec..0000000000000
--- a/src/renderer/views/About/About.sass
+++ /dev/null
@@ -1,50 +0,0 @@
-.card
- width: 85%
- margin: 0 auto
- margin-bottom: 60px
-
- @media only screen and (max-width: 680px)
- width: 90%
-
-.brand
- text-align: center
-
-.logo
- width: 500px
- max-width: 100%
-
-.version
- font-size: 2em
-
-.about-chunks
- max-width: 860px
- margin: 80px auto
- display: grid
- grid-template-columns: 1fr 1fr
- grid-gap: 16px
-
- @media only screen and (max-width: 650px)
- grid-template-columns: 1fr
-
-.chunk
- background-color: var(--bg-color)
- margin: 0
- padding: 18px
- border-radius: 8px
- display: grid
- grid-template: "icon title" auto "icon content" 1fr / auto 1fr
- justify-content: start
- align-items: start
- grid-gap: 6px 14px
- word-break: break-word
- box-shadow: 0px 1px 4px -1px rgba(0, 0, 0, 0.5)
-
- @each $area in icon title content
- .#{$area}
- grid-area: $area
-
- .icon
- font-size: 24px
-
- .title
- margin: 0
diff --git a/src/renderer/views/About/About.scss b/src/renderer/views/About/About.scss
new file mode 100644
index 0000000000000..b2499795d39e4
--- /dev/null
+++ b/src/renderer/views/About/About.scss
@@ -0,0 +1,62 @@
+.card {
+ margin: 0 auto;
+ margin-bottom: 60px;
+ width: 85%;
+
+ @media only screen and (max-width: 680px) {
+ width: 90%;
+ }
+}
+
+.brand {
+ text-align: center;
+}
+
+.logo {
+ max-width: 100%;
+ width: 500px;
+}
+
+.version {
+ font-size: 2em;
+}
+
+.about-chunks {
+ display: grid;
+ grid-gap: 16px;
+ grid-template-columns: 1fr 1fr;
+ margin: 80px auto;
+ max-width: 860px;
+
+ @media only screen and (max-width: 650px) {
+ grid-template-columns: 1fr;
+ }
+}
+
+.chunk {
+ align-items: start;
+ background-color: var(bg-color);
+ border-radius: 8px;
+ box-shadow: 0 1px 4px -1px rgb(0 0 0 / 50%);
+ display: grid;
+ grid-gap: 6px 14px;
+ grid-template: 'icon title' auto 'icon content' 1fr / auto 1fr;
+ justify-content: start;
+ margin: 0;
+ padding: 18px;
+ word-break: break-word;
+
+ @each $area in icon title content {
+ .#{$area} {
+ grid-area: $area;
+ }
+ }
+
+ .icon {
+ font-size: 24px;
+ }
+
+ .title {
+ margin: 0;
+ }
+}
diff --git a/src/renderer/views/About/About.vue b/src/renderer/views/About/About.vue
index 2facd59670b21..4c7ba06731c07 100644
--- a/src/renderer/views/About/About.vue
+++ b/src/renderer/views/About/About.vue
@@ -37,4 +37,4 @@
-
+
diff --git a/src/renderer/views/SubscribedChannels/SubscribedChannels.js b/src/renderer/views/SubscribedChannels/SubscribedChannels.js
index b3f142c6f37c6..8a4a66c79f4dd 100644
--- a/src/renderer/views/SubscribedChannels/SubscribedChannels.js
+++ b/src/renderer/views/SubscribedChannels/SubscribedChannels.js
@@ -23,7 +23,7 @@ export default Vue.extend({
subscribedChannels: [],
filteredChannels: [],
re: {
- url: /(.+=\w{1})\d+(.+)/,
+ url: /(.+=\w)\d+(.+)/,
ivToIv: /^.+(ggpht.+)/,
ivToYt: /^.+ggpht\/(.+)/,
ytToIv: /^.+ggpht\.com\/(.+)/
@@ -115,7 +115,7 @@ export default Vue.extend({
return
}
- const escapedQuery = this.query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
+ const escapedQuery = this.query.replaceAll(/[$()*+.?[\\\]^{|}]/g, '\\$&')
const re = new RegExp(escapedQuery, 'i')
this.filteredChannels = this.subscribedChannels.filter(channel => {
return re.test(channel.name)
diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js
index 09cf28686a982..08fc581fded0e 100644
--- a/src/renderer/views/Watch/Watch.js
+++ b/src/renderer/views/Watch/Watch.js
@@ -260,9 +260,9 @@ export default Vue.extend({
let skipIndex
errorScreen.subreason.runs.forEach((message, index) => {
if (index !== skipIndex) {
- if (message.text.match(//)) {
+ if (//.test(message.text)) {
skipIndex = index + 1
- } else if (!message.text.match(/<\/a>/)) {
+ } else if (!/<\/a>/.test(message.text)) {
if (typeof subReason === 'undefined') {
subReason = message.text
} else {
@@ -719,7 +719,7 @@ export default Vue.extend({
// MM:SS - Text
// HH:MM:SS - HH:MM:SS - Text // end timestamp is ignored, separator is one of '-', '–', '—'
// HH:MM - HH:MM - Text // end timestamp is ignored
- const chapterMatches = result.description.matchAll(/^(?((?[0-9]+):)?(?[0-9]+):(?[0-9]+))(\s*[-–—]\s*(?:[0-9]+:)?[0-9]+:[0-9]+)?\s+([-–•—]\s*)?(?.+)$/gm)
+ const chapterMatches = result.description.matchAll(/^(?((?\d+):)?(?\d+):(?\d+))(\s*[–—-]\s*(?:\d+:){1,2}\d+)?\s+([–—•-]\s*)?(?.+)$/gm)
for (const { groups } of chapterMatches) {
let start = 60 * Number(groups.minutes) + Number(groups.seconds)
@@ -860,7 +860,7 @@ export default Vue.extend({
},
processDescriptionPart(part, fallbackDescription) {
- const timestampRegex = /^([0-9]+:)?[0-9]+:[0-9]+$/
+ const timestampRegex = /^(\d+:)?\d+:\d+$/
if (typeof part.navigationEndpoint === 'undefined' || part.navigationEndpoint === null || part.text.startsWith('#')) {
return part.text
@@ -1314,7 +1314,7 @@ export default Vue.extend({
/* eslint-disable-next-line */
const [width, height, count, sWidth, sHeight, interval, _, sigh] = storyboard.split('#')
storyboardArray.push({
- url: baseUrl.replace('$L', i + 1).replace('$N', 'M0').replace(/<\/?sub>/g, '') + '&sigh=' + sigh,
+ url: baseUrl.replace('$L', i + 1).replace('$N', 'M0').replaceAll(/<\/?sub>/g, '') + '&sigh=' + sigh,
width: Number(width), // Width of one sub image
height: Number(height), // Height of one sub image
sWidth: Number(sWidth), // Number of images vertically (if full)
@@ -1412,7 +1412,7 @@ export default Vue.extend({
// The character '#' needs to be percent-encoded in a (data) URI
// because it signals an identifier, which means anything after it
// is automatically removed when the URI is used as a source
- let vtt = text.replace(/#/g, '%23')
+ let vtt = text.replaceAll('#', '%23')
// A lot of videos have messed up caption positions that need to be removed
// This can be either because this format isn't really used by YouTube
@@ -1424,9 +1424,9 @@ export default Vue.extend({
// In addition, all aligns seem to be fixed to "start" when they do pop up in normal captions
// If it's prominent enough that people start to notice, it can be removed then
if (caption.kind === 'asr') {
- vtt = vtt.replace(/ align:start| position:\d{1,3}%/g, '')
+ vtt = vtt.replaceAll(/ align:start| position:\d{1,3}%/g, '')
} else {
- vtt = vtt.replace(/ position:\d{1,3}%/g, '')
+ vtt = vtt.replaceAll(/ position:\d{1,3}%/g, '')
}
caption.baseUrl = `data:${caption.type};${caption.charset},${vtt}`
diff --git a/src/renderer/views/Watch/Watch.sass b/src/renderer/views/Watch/Watch.sass
deleted file mode 100644
index 70915cd56a765..0000000000000
--- a/src/renderer/views/Watch/Watch.sass
+++ /dev/null
@@ -1,109 +0,0 @@
-=dual-column-template
- grid-template: "video video sidebar" 0fr "info info sidebar" auto "info info sidebar" 1fr / 1fr 1fr 1fr
-
-=theatre-mode-template
- grid-template: "video video video" auto "info info sidebar" auto "info info sidebar" auto / 1fr 1fr 1fr
-
-=single-column-template
- grid-template: "video" auto "info" auto "sidebar" auto / auto
-.ageRestricted
- max-width: calc(80vh * 1.78)
- display: inline-block
- +single-column-template
- @media only screen and (min-width: 901px)
- width: 300%
-
-.videoLayout
- display: grid
- align-items: start
- +dual-column-template
-
- @media only screen and (max-width: 1350px)
- +theatre-mode-template
-
- @media only screen and (min-width: 901px)
- &.useTheatreMode
- +theatre-mode-template
-
- @media only screen and (max-width: 900px)
- +single-column-template
-
- &.isLoading, &.noSidebar
- +single-column-template
-
- .videoArea
- grid-area: video
-
- .videoAreaMargin
- margin: 0 0 16px
-
- .videoPlayer
- grid-column: 1
- max-width: calc(80vh * 1.78)
- margin: 0 auto
- position: relative
-
- .upcomingThumbnail
- width: 100%
-
- .premiereDate
- color: #FFFFFF
- background-color: rgba(0, 0, 0, 0.8)
- height: 60px
- border-radius: 5px
- position: absolute
- bottom: 12px
- left: 12px
- display: flex
- align-items: center
- padding: 0 12px
-
- .premiereIcon
- float: left
- font-size: 25px
- margin: 0 12px
-
- .premiereText
- min-width: 200px
- margin: 0 12px
-
- .premiereTextTimestamp
- font-size: 0.85em
- font-weight: bold
-
- .watchVideo
- margin: 0 0 16px
- grid-column: 1
-
- .infoArea
- grid-area: info
- position: relative
-
- @media only screen and (min-width: 901px)
- .infoArea
- scroll-margin-top: 76px
-
- .infoAreaSticky
- position: sticky
- top: 76px
-
- .sidebarArea
- grid-area: sidebar
-
- @media only screen and (min-width: 901px)
- min-width: 380px
-
- @at-root .noSidebar#{&}
- grid-area: auto
-
- .watchVideoPlaylist, .watchVideoSidebar, .theatrePlaylist
- margin: 0 8px 16px
-
- .watchVideoSidebar, .watchVideoPlaylist
- height: 500px
-
- .watchVideoRecommendations, .theatreRecommendations
- margin: 0 0 16px
-
- @media only screen and (min-width: 901px)
- margin: 0 8px 16px
diff --git a/src/renderer/views/Watch/Watch.scss b/src/renderer/views/Watch/Watch.scss
new file mode 100644
index 0000000000000..39948490e3a32
--- /dev/null
+++ b/src/renderer/views/Watch/Watch.scss
@@ -0,0 +1,149 @@
+@mixin dual-column-template {
+ grid-template: 'video video sidebar' 0fr 'info info sidebar' auto 'info info sidebar' 1fr / 1fr 1fr 1fr;
+}
+
+@mixin theatre-mode-template {
+ grid-template: 'video video video' auto 'info info sidebar' auto 'info info sidebar' auto / 1fr 1fr 1fr;
+}
+
+@mixin single-column-template {
+ grid-template: 'video' auto 'info' auto 'sidebar' auto / auto;
+}
+
+.ageRestricted {
+ @include single-column-template;
+
+ display: inline-block;
+ max-width: calc(80vh * 1.78);
+
+ @media only screen and (min-width: 901px) {
+ width: 300%;
+ }
+}
+
+.videoLayout {
+ @include dual-column-template;
+
+ align-items: start;
+ display: grid;
+
+ &.isLoading,
+ &.noSidebar {
+ @include single-column-template;
+ }
+
+ .videoArea {
+ grid-area: video;
+
+ .videoAreaMargin {
+ margin: 0 0 16px;
+ }
+
+ .videoPlayer {
+ grid-column: 1;
+ margin: 0 auto;
+ max-width: calc(80vh * 1.78);
+ position: relative;
+
+ .upcomingThumbnail {
+ width: 100%;
+ }
+
+ .premiereDate {
+ align-items: center;
+ background-color: rgb(0 0 0 / 80%);
+ border-radius: 5px;
+ bottom: 12px;
+ color: #fff;
+ display: flex;
+ height: 60px;
+ left: 12px;
+ padding: 0 12px;
+ position: absolute;
+
+ .premiereIcon {
+ float: left;
+ font-size: 25px;
+ margin: 0 12px;
+ }
+
+ .premiereText {
+ margin: 0 12px;
+ min-width: 200px;
+
+ .premiereTextTimestamp {
+ font-size: 0.85em;
+ font-weight: bold;
+ }
+ }
+ }
+ }
+ }
+
+ .watchVideo {
+ grid-column: 1;
+ margin: 0 0 16px;
+ }
+
+ .infoArea {
+ grid-area: info;
+ position: relative;
+ }
+
+ .sidebarArea {
+ grid-area: sidebar;
+
+ @media only screen and (min-width: 901px) {
+ min-width: 380px;
+ }
+
+ @at-root .noSidebar#{&} {
+ grid-area: auto;
+ }
+ }
+
+ .watchVideoPlaylist,
+ .watchVideoSidebar,
+ .theatrePlaylist {
+ margin: 0 8px 16px;
+ }
+
+ .watchVideoSidebar,
+ .watchVideoPlaylist {
+ height: 500px;
+ }
+
+ .watchVideoRecommendations,
+ .theatreRecommendations {
+ margin: 0 0 16px;
+
+ @media only screen and (min-width: 901px) {
+ margin: 0 8px 16px;
+ }
+ }
+
+ @media only screen and (max-width: 1350px) {
+ @include theatre-mode-template;
+ }
+
+ @media only screen and (min-width: 901px) {
+ &.useTheatreMode {
+ @include theatre-mode-template;
+ }
+ }
+
+ @media only screen and (max-width: 900px) {
+ @include single-column-template;
+ }
+
+ @media only screen and (min-width: 901px) {
+ .infoArea {
+ scroll-margin-top: 76px;
+ }
+
+ .infoAreaSticky {
+ position: sticky;
+ top: 76px;
+ }
+ }
+}
diff --git a/src/renderer/views/Watch/Watch.vue b/src/renderer/views/Watch/Watch.vue
index 8b4d5c384aeb4..879a1db266076 100644
--- a/src/renderer/views/Watch/Watch.vue
+++ b/src/renderer/views/Watch/Watch.vue
@@ -185,4 +185,4 @@
-
+
diff --git a/static/geolocations/bg/countries.json b/static/geolocations/bg/countries.json
index 112be4ff3dd59..2025598369733 100644
--- a/static/geolocations/bg/countries.json
+++ b/static/geolocations/bg/countries.json
@@ -193,5 +193,3 @@
{"id":894,"name":"Замбия","alpha2":"zm","alpha3":"zmb"},
{"id":716,"name":"Зимбабве","alpha2":"zw","alpha3":"zwe"},
{"id":158,"name":"Тайван","alpha2":"tw","alpha3":"twn"}]
-
-
diff --git a/static/geolocations/uk/countries.json b/static/geolocations/uk/countries.json
index a8b8c2c0b58b8..6fda6fd386f99 100644
--- a/static/geolocations/uk/countries.json
+++ b/static/geolocations/uk/countries.json
@@ -191,4 +191,4 @@
{"id":752,"name":"Швеція","alpha2":"se","alpha3":"swe"},
{"id":144,"name":"Шрі-Ланка","alpha2":"lk","alpha3":"lka"},
{"id":388,"name":"Ямайка","alpha2":"jm","alpha3":"jam"},
-{"id":392,"name":"Японія","alpha2":"jp","alpha3":"jpn"}]
\ No newline at end of file
+{"id":392,"name":"Японія","alpha2":"jp","alpha3":"jpn"}]
diff --git a/yarn.lock b/yarn.lock
index 852cbbe30b69e..983d2b80c0d9e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15,13 +15,6 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@babel/code-frame@7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
- integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
@@ -60,6 +53,15 @@
json5 "^2.2.1"
semver "^6.3.0"
+"@babel/eslint-parser@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4"
+ integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==
+ dependencies:
+ "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
+ eslint-visitor-keys "^2.1.0"
+ semver "^6.3.0"
+
"@babel/generator@^7.20.7":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a"
@@ -269,11 +271,6 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
-"@babel/helper-validator-identifier@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
- integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
-
"@babel/helper-validator-identifier@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076"
@@ -308,15 +305,6 @@
"@babel/traverse" "^7.20.7"
"@babel/types" "^7.20.7"
-"@babel/highlight@^7.10.4":
- version "7.17.9"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
- integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
- dependencies:
- "@babel/helper-validator-identifier" "^7.16.7"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
"@babel/highlight@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
@@ -326,7 +314,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.18.4", "@babel/parser@^7.20.7", "@babel/parser@^7.7.0":
+"@babel/parser@^7.18.4", "@babel/parser@^7.20.7":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
@@ -939,7 +927,7 @@
"@babel/parser" "^7.20.7"
"@babel/types" "^7.20.7"
-"@babel/traverse@^7.18.11", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.0":
+"@babel/traverse@^7.18.11", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.7":
version "7.20.10"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.10.tgz#2bf98239597fcec12f842756f186a9dde6d09230"
integrity sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==
@@ -955,7 +943,7 @@
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.4.4":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f"
integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==
@@ -964,6 +952,11 @@
"@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
+"@csstools/selector-specificity@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36"
+ integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==
+
"@develar/schema-utils@~2.6.5":
version "2.6.5"
resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6"
@@ -977,6 +970,13 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
+"@double-great/stylelint-a11y@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@double-great/stylelint-a11y/-/stylelint-a11y-2.0.2.tgz#370a2f6d2e8f552ca741759a0b9c153a3a260e4c"
+ integrity sha512-RYxXkDdOQgIv1UYnc0xst3xaRgtCpYSJu6fIQgc05OwPfvqVyFThfHAt6zYBFYQL67uLYFKi/aQZJpe/6FueIw==
+ dependencies:
+ postcss "^8.4.19"
+
"@electron/get@^2.0.0":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e"
@@ -1005,19 +1005,26 @@
minimatch "^3.0.4"
plist "^3.0.4"
-"@eslint/eslintrc@^0.4.3":
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
- integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+"@eslint-community/eslint-utils@^4.1.2":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.1.2.tgz#14ca568ddaa291dd19a4a54498badc18c6cfab78"
+ integrity sha512-7qELuQWWjVDdVsFQ5+beUl+KPczrEDA7S3zM4QUd/bJl7oXgsmpXaEVqrRTnOBqenOV4rWf2kVZk2Ot085zPWA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint/eslintrc@^1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e"
+ integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==
dependencies:
ajv "^6.12.4"
- debug "^4.1.1"
- espree "^7.3.0"
- globals "^13.9.0"
- ignore "^4.0.6"
+ debug "^4.3.2"
+ espree "^9.4.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
import-fresh "^3.2.1"
- js-yaml "^3.13.1"
- minimatch "^3.0.4"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@fortawesome/fontawesome-common-types@6.2.1":
@@ -1066,16 +1073,21 @@
dependencies:
axios "^0.27.2"
-"@humanwhocodes/config-array@^0.5.0":
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
- integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+"@humanwhocodes/config-array@^0.11.8":
+ version "0.11.8"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
+ integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.0"
+ "@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
- minimatch "^3.0.4"
+ minimatch "^3.0.5"
-"@humanwhocodes/object-schema@^1.2.0":
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
@@ -1174,6 +1186,13 @@
lodash "^4.17.15"
tmp-promise "^3.0.2"
+"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
+ version "5.1.1-v1"
+ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
+ integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==
+ dependencies:
+ eslint-scope "5.1.1"
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -1187,7 +1206,7 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-"@nodelib/fs.walk@^1.2.3":
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
version "1.2.8"
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -1414,6 +1433,11 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+"@types/minimist@^1.2.0":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
+ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
+
"@types/ms@*":
version "0.7.31"
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
@@ -1429,6 +1453,16 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810"
integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ==
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
+ integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
+
+"@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/plist@^3.0.1":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01"
@@ -1748,7 +1782,7 @@ acorn-import-assertions@^1.7.6:
resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
-acorn-jsx@^5.3.1, acorn-jsx@^5.3.2:
+acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
@@ -1767,7 +1801,7 @@ acorn-walk@^7.0.0:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn@^7.0.0, acorn@^7.4.0:
+acorn@^7.0.0:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -1833,11 +1867,6 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0:
require-from-string "^2.0.2"
uri-js "^4.2.2"
-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-html-community@^0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
@@ -1907,13 +1936,6 @@ app-builder-lib@23.6.0:
tar "^6.1.11"
temp-file "^3.4.0"
-argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
@@ -1947,6 +1969,11 @@ array-includes@^3.1.4:
get-intrinsic "^1.1.1"
is-string "^1.0.7"
+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.prototype.flat@^1.2.5:
version "1.3.0"
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b"
@@ -1957,6 +1984,11 @@ array.prototype.flat@^1.2.5:
es-abstract "^1.19.2"
es-shim-unscopables "^1.0.0"
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==
+
asar@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473"
@@ -2070,18 +2102,6 @@ axios@^1.1.2:
form-data "^4.0.0"
proxy-from-env "^1.1.0"
-babel-eslint@^10.1.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
- integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/parser" "^7.7.0"
- "@babel/traverse" "^7.7.0"
- "@babel/types" "^7.7.0"
- eslint-visitor-keys "^1.0.0"
- resolve "^1.12.0"
-
babel-loader@^9.1.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.0.tgz#839e9ae88aea930864ef9ec0f356dfca96ecf238"
@@ -2119,6 +2139,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+balanced-match@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9"
+ integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
+
base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@@ -2472,11 +2497,23 @@ builder-util@23.6.0:
stat-mode "^1.0.0"
temp-file "^3.4.0"
+builtin-modules@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
+ integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
+
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"
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
+builtins@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9"
+ integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==
+ dependencies:
+ semver "^7.0.0"
+
busboy@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
@@ -2538,6 +2575,20 @@ camel-case@^4.1.2:
pascal-case "^3.1.2"
tslib "^2.0.3"
+camelcase-keys@^6.2.2:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
+ integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+ dependencies:
+ camelcase "^5.3.1"
+ map-obj "^4.0.0"
+ quick-lru "^4.0.1"
+
+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-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -2615,6 +2666,11 @@ ci-info@^3.2.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32"
integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==
+ci-info@^3.6.1:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f"
+ integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -2635,6 +2691,13 @@ clean-css@^5.2.2:
dependencies:
source-map "~0.6.0"
+clean-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7"
+ integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
cli-truncate@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
@@ -2692,7 +2755,7 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-colord@^2.9.1:
+colord@^2.9.1, colord@^2.9.3:
version "2.9.3"
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
@@ -2886,6 +2949,17 @@ core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+cosmiconfig@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+ integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
crc@^3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
@@ -2966,6 +3040,11 @@ css-declaration-sorter@^6.3.0:
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec"
integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==
+css-functions-list@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.1.0.tgz#cf5b09f835ad91a00e5959bcfc627cd498e1321b"
+ integrity sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==
+
css-loader@^6.7.3:
version "6.7.3"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd"
@@ -3117,7 +3196,7 @@ debug@2.6.9, debug@^2.6.8, debug@^2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4:
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -3131,6 +3210,19 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
+decamelize-keys@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8"
+ integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==
+ dependencies:
+ decamelize "^1.1.0"
+ map-obj "^1.0.0"
+
+decamelize@^1.1.0, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
@@ -3576,13 +3668,6 @@ enhanced-resolve@^5.10.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
-enquirer@^2.3.5:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
- integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
- dependencies:
- ansi-colors "^4.1.1"
-
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
@@ -3734,15 +3819,15 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-config-prettier@^8.3.0:
- version "8.5.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
- integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
+eslint-config-prettier@^8.6.0:
+ version "8.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207"
+ integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==
-eslint-config-standard@^16.0.3:
- version "16.0.3"
- resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516"
- integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==
+eslint-config-standard@^17.0.0:
+ version "17.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf"
+ integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==
eslint-import-resolver-node@^0.3.6:
version "0.3.6"
@@ -3760,15 +3845,15 @@ eslint-module-utils@^2.7.3:
debug "^3.2.7"
find-up "^2.1.0"
-eslint-plugin-es@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893"
- integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==
+eslint-plugin-es@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9"
+ integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==
dependencies:
eslint-utils "^2.0.0"
regexpp "^3.0.0"
-eslint-plugin-import@^2.24.2:
+eslint-plugin-import@^2.26.0:
version "2.26.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b"
integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==
@@ -3787,17 +3872,28 @@ eslint-plugin-import@^2.24.2:
resolve "^1.22.0"
tsconfig-paths "^3.14.1"
-eslint-plugin-node@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d"
- integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==
+eslint-plugin-jsonc@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.5.0.tgz#b0daea12f0927a3bba99557902ce6e0b48c37b4b"
+ integrity sha512-G257khwkrOQ5MJpSzz4yQh5K12W4xFZRcHmVlhVFWh2GCLDX+JwHnmkQoUoFDbOieSPBMsPFZDTJScwrXiWlIg==
dependencies:
- eslint-plugin-es "^3.0.0"
- eslint-utils "^2.0.0"
+ eslint-utils "^3.0.0"
+ jsonc-eslint-parser "^2.0.4"
+ natural-compare "^1.4.0"
+
+eslint-plugin-n@^15.6.0:
+ version "15.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.6.0.tgz#cfb1d2e2e427d620eb9008f8b3b5a40de0c84120"
+ integrity sha512-Hd/F7wz4Mj44Jp0H6Jtty13NcE69GNTY0rVlgTIj1XBnGGVI6UTdDrpE6vqu3AHo07bygq/N+7OH/lgz1emUJw==
+ dependencies:
+ builtins "^5.0.1"
+ eslint-plugin-es "^4.1.0"
+ eslint-utils "^3.0.0"
ignore "^5.1.1"
- minimatch "^3.0.4"
- resolve "^1.10.1"
- semver "^6.1.0"
+ is-core-module "^2.11.0"
+ minimatch "^3.1.2"
+ resolve "^1.22.1"
+ semver "^7.3.8"
eslint-plugin-prettier@^4.2.1:
version "4.2.1"
@@ -3806,15 +3902,32 @@ eslint-plugin-prettier@^4.2.1:
dependencies:
prettier-linter-helpers "^1.0.0"
-eslint-plugin-promise@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971"
- integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==
+eslint-plugin-promise@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816"
+ integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==
-eslint-plugin-standard@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4"
- integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==
+eslint-plugin-unicorn@^45.0.2:
+ version "45.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-45.0.2.tgz#d6ba704793a6909fe5dfe013900d2b05b715284c"
+ integrity sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.19.1"
+ "@eslint-community/eslint-utils" "^4.1.2"
+ ci-info "^3.6.1"
+ clean-regexp "^1.0.0"
+ esquery "^1.4.0"
+ indent-string "^4.0.0"
+ is-builtin-module "^3.2.0"
+ jsesc "^3.0.2"
+ lodash "^4.17.21"
+ pluralize "^8.0.0"
+ read-pkg-up "^7.0.1"
+ regexp-tree "^0.1.24"
+ regjsparser "^0.9.1"
+ safe-regex "^2.1.1"
+ semver "^7.3.8"
+ strip-indent "^3.0.0"
eslint-plugin-vue@^9.8.0:
version "9.8.0"
@@ -3838,7 +3951,7 @@ eslint-plugin-vuejs-accessibility@^2.0.0:
emoji-regex "^10.0.0"
vue-eslint-parser "^9.0.1"
-eslint-scope@5.1.1, eslint-scope@^5.1.1:
+eslint-scope@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -3854,7 +3967,7 @@ eslint-scope@^7.1.1:
esrecurse "^4.3.0"
estraverse "^5.2.0"
-eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+eslint-utils@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
@@ -3868,75 +3981,74 @@ eslint-utils@^3.0.0:
dependencies:
eslint-visitor-keys "^2.0.0"
-eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+eslint-visitor-keys@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-eslint-visitor-keys@^2.0.0:
+eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-eslint-visitor-keys@^3.3.0:
+eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
-eslint@^7.32.0:
- version "7.32.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
- integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
+eslint@^8.31.0:
+ version "8.31.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524"
+ integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==
dependencies:
- "@babel/code-frame" "7.12.11"
- "@eslint/eslintrc" "^0.4.3"
- "@humanwhocodes/config-array" "^0.5.0"
+ "@eslint/eslintrc" "^1.4.1"
+ "@humanwhocodes/config-array" "^0.11.8"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
- debug "^4.0.1"
+ debug "^4.3.2"
doctrine "^3.0.0"
- enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
- eslint-scope "^5.1.1"
- eslint-utils "^2.1.0"
- eslint-visitor-keys "^2.0.0"
- espree "^7.3.1"
+ eslint-scope "^7.1.1"
+ eslint-utils "^3.0.0"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.4.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
- functional-red-black-tree "^1.0.1"
- glob-parent "^5.1.2"
- globals "^13.6.0"
- ignore "^4.0.6"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ grapheme-splitter "^1.0.4"
+ ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
- js-yaml "^3.13.1"
+ is-path-inside "^3.0.3"
+ js-sdsl "^4.1.4"
+ js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
- minimatch "^3.0.4"
+ minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.1"
- progress "^2.0.0"
- regexpp "^3.1.0"
- semver "^7.2.1"
- strip-ansi "^6.0.0"
+ regexpp "^3.2.0"
+ strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
- table "^6.0.9"
text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
-espree@^7.3.0, espree@^7.3.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
- integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+espree@^9.0.0, espree@^9.4.0:
+ version "9.4.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd"
+ integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
dependencies:
- acorn "^7.4.0"
- acorn-jsx "^5.3.1"
- eslint-visitor-keys "^1.3.0"
+ acorn "^8.8.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.3.0"
espree@^9.3.1:
version "9.4.0"
@@ -3947,11 +4059,6 @@ espree@^9.3.1:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.3.0"
-esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
esquery@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
@@ -4118,6 +4225,17 @@ fast-glob@^3.2.11:
merge2 "^1.3.0"
micromatch "^4.0.4"
+fast-glob@^3.2.12, fast-glob@^3.2.9:
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.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"
@@ -4138,6 +4256,11 @@ fastest-levenshtein@^1.0.12:
resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
+fastest-levenshtein@^1.0.16:
+ version "1.0.16"
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
+ integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
+
fastq@^1.6.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
@@ -4209,7 +4332,7 @@ find-up@^2.1.0:
dependencies:
locate-path "^2.0.0"
-find-up@^4.0.0:
+find-up@^4.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==
@@ -4217,6 +4340,14 @@ find-up@^4.0.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
flat-cache@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
@@ -4350,11 +4481,6 @@ function.prototype.name@^1.1.5:
es-abstract "^1.19.0"
functions-have-names "^1.2.2"
-functional-red-black-tree@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
functions-have-names@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
@@ -4427,7 +4553,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-parent@^6.0.1:
+glob-parent@^6.0.1, glob-parent@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
@@ -4475,6 +4601,22 @@ global-agent@^3.0.0:
semver "^7.3.2"
serialize-error "^7.0.1"
+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==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
global@^4.3.1, global@^4.3.2, global@^4.4.0, global@~4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
@@ -4488,10 +4630,10 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.6.0, globals@^13.9.0:
- version "13.15.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac"
- integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==
+globals@^13.19.0:
+ version "13.19.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8"
+ integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==
dependencies:
type-fest "^0.20.2"
@@ -4502,6 +4644,18 @@ globalthis@^1.0.1:
dependencies:
define-properties "^1.1.3"
+globby@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
globby@^13.1.1:
version "13.1.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515"
@@ -4513,6 +4667,11 @@ globby@^13.1.1:
merge2 "^1.4.1"
slash "^4.0.0"
+globjoin@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
+ integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==
+
gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
@@ -4547,6 +4706,11 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4,
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
handle-thing@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
@@ -4565,6 +4729,11 @@ har-validator@~5.1.3:
ajv "^6.12.3"
har-schema "^2.0.0"
+hard-rejection@^2.1.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-bigints@^1.0.1, has-bigints@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
@@ -4647,7 +4816,7 @@ hosted-git-info@^2.1.4:
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
-hosted-git-info@^4.1.0:
+hosted-git-info@^4.0.1, hosted-git-info@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
@@ -4692,6 +4861,11 @@ html-minifier-terser@^6.0.2:
relateurl "^0.2.7"
terser "^5.10.0"
+html-tags@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961"
+ integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==
+
html-webpack-plugin@^5.3.2:
version "5.5.0"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50"
@@ -4860,16 +5034,16 @@ ieee754@^1.1.13, ieee754@^1.1.4:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-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.1.1, ignore@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+ignore@^5.2.1:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
immediate@~3.0.5:
version "3.0.6"
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
@@ -4888,6 +5062,11 @@ import-fresh@^3.0.0, import-fresh@^3.2.1:
parent-module "^1.0.0"
resolve-from "^4.0.0"
+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@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
@@ -4901,6 +5080,11 @@ imurmurhash@^0.1.4:
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+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==
+
individual@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97"
@@ -4929,6 +5113,11 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
inline-source-map@~0.6.0:
version "0.6.2"
resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
@@ -5021,6 +5210,13 @@ is-buffer@^1.1.0:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+is-builtin-module@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0"
+ integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==
+ dependencies:
+ builtin-modules "^3.3.0"
+
is-callable@^1.1.3, is-callable@^1.2.6:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
@@ -5038,6 +5234,13 @@ is-ci@^3.0.0:
dependencies:
ci-info "^3.2.0"
+is-core-module@^2.11.0, is-core-module@^2.5.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
is-core-module@^2.8.1:
version "2.9.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69"
@@ -5115,7 +5318,12 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-is-plain-obj@^1.0.0:
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+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=
@@ -5132,6 +5340,11 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -5310,19 +5523,16 @@ jintr@^0.3.1:
dependencies:
acorn "^8.8.0"
+js-sdsl@^4.1.4:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0"
+ integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==
+
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.1:
- version "3.14.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
- integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
@@ -5340,6 +5550,11 @@ jsesc@^2.5.1:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
+ integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
+
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
@@ -5362,7 +5577,7 @@ json-parse-better-errors@^1.0.1:
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-json-parse-even-better-errors@^2.3.1:
+json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -5404,6 +5619,16 @@ json5@^2.2.0, json5@^2.2.1:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+jsonc-eslint-parser@^2.0.4:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.1.0.tgz#4c126b530aa583d85308d0b3041ff81ce402bbb2"
+ integrity sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==
+ dependencies:
+ acorn "^8.5.0"
+ eslint-visitor-keys "^3.0.0"
+ espree "^9.0.0"
+ semver "^7.3.5"
+
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -5447,7 +5672,7 @@ keyv@^4.0.0:
dependencies:
json-buffer "3.0.1"
-kind-of@^6.0.2:
+kind-of@^6.0.2, kind-of@^6.0.3:
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==
@@ -5457,6 +5682,11 @@ klona@^2.0.4:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
+known-css-properties@^0.26.0:
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.26.0.tgz#008295115abddc045a9f4ed7e2a84dc8b3a77649"
+ integrity sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==
+
labeled-stream-splicer@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21"
@@ -5544,6 +5774,11 @@ lilconfig@^2.0.3:
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
linkedom@^0.14.12:
version "0.14.19"
resolved "https://registry.yarnpkg.com/linkedom/-/linkedom-0.14.19.tgz#a8e9b91af26d5c631b5b3d21614cef1db8a56fb7"
@@ -5601,6 +5836,13 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -5702,6 +5944,16 @@ make-dir@^3.0.2:
dependencies:
semver "^6.0.0"
+map-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==
+
+map-obj@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a"
+ integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
+
marked@^4.2.5:
version "4.2.5"
resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.5.tgz#979813dfc1252cc123a79b71b095759a32f42a5d"
@@ -5714,6 +5966,11 @@ matcher@^3.0.0:
dependencies:
escape-string-regexp "^4.0.0"
+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"
@@ -5745,6 +6002,24 @@ memorystream@^0.3.1:
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
+meow@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
+ integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
+ dependencies:
+ "@types/minimist" "^1.2.0"
+ camelcase-keys "^6.2.2"
+ decamelize "^1.2.0"
+ decamelize-keys "^1.1.0"
+ hard-rejection "^2.1.0"
+ minimist-options "4.1.0"
+ normalize-package-data "^3.0.0"
+ read-pkg-up "^7.0.1"
+ redent "^3.0.0"
+ trim-newlines "^3.0.0"
+ type-fest "^0.18.0"
+ yargs-parser "^20.2.3"
+
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
@@ -5772,7 +6047,7 @@ methods@~1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-micromatch@^4.0.2, micromatch@^4.0.4:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -5832,6 +6107,11 @@ min-document@^2.19.0:
dependencies:
dom-walk "^0.1.0"
+min-indent@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
+ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
mini-css-extract-plugin@^2.7.2:
version "2.7.2"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz#e049d3ea7d3e4e773aad585c6cb329ce0c7b72d7"
@@ -5871,7 +6151,7 @@ minimatch@3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -5885,6 +6165,15 @@ minimatch@^5.0.1:
dependencies:
brace-expansion "^2.0.1"
+minimist-options@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
+ integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+ kind-of "^6.0.3"
+
minimist@^1.1.0, minimist@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
@@ -6042,7 +6331,7 @@ node-releases@^2.0.6:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
-normalize-package-data@^2.3.2:
+normalize-package-data@^2.3.2, 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==
@@ -6052,6 +6341,16 @@ normalize-package-data@^2.3.2:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
+normalize-package-data@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
+ integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+ dependencies:
+ hosted-git-info "^4.0.1"
+ is-core-module "^2.5.0"
+ semver "^7.3.4"
+ validate-npm-package-license "^3.0.1"
+
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -6229,6 +6528,13 @@ p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -6243,6 +6549,13 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
p-retry@^4.5.0:
version "4.6.2"
resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
@@ -6307,6 +6620,16 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -6445,6 +6768,11 @@ plist@^3.0.1, plist@^3.0.4:
base64-js "^1.5.1"
xmlbuilder "^9.0.7"
+pluralize@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
+ integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
+
postcss-calc@^8.2.3:
version "8.2.4"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
@@ -6491,6 +6819,11 @@ postcss-discard-overridden@^5.1.0:
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e"
integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==
+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 sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==
+
postcss-merge-longhand@^5.1.6:
version "5.1.6"
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce"
@@ -6655,6 +6988,29 @@ postcss-reduce-transforms@^5.1.0:
dependencies:
postcss-value-parser "^4.2.0"
+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 sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==
+
+postcss-safe-parser@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1"
+ integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
+
+postcss-scss@^4.0.2, postcss-scss@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.6.tgz#5d62a574b950a6ae12f2aa89b60d63d9e4432bfd"
+ integrity sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==
+
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.6:
+ version "6.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc"
+ integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
version "6.0.10"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
@@ -6663,6 +7019,11 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector
cssesc "^3.0.0"
util-deprecate "^1.0.2"
+postcss-sorting@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-7.0.1.tgz#923b5268451cf2d93ebf8835e17a6537757049a5"
+ integrity sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==
+
postcss-svgo@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d"
@@ -6691,7 +7052,7 @@ postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.19:
+postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.19, postcss@^8.4.20:
version "8.4.20"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56"
integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==
@@ -6735,7 +7096,7 @@ process@^0.11.10, process@~0.11.0:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
-progress@^2.0.0, progress@^2.0.3:
+progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
@@ -6832,6 +7193,11 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+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==
+
quick-lru@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
@@ -6885,6 +7251,15 @@ read-only-stream@^2.0.0:
dependencies:
readable-stream "^2.0.2"
+read-pkg-up@^7.0.1:
+ 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@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@@ -6894,6 +7269,16 @@ read-pkg@^3.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@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@@ -6930,6 +7315,14 @@ rechoir@^0.8.0:
dependencies:
resolve "^1.20.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@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
@@ -6961,6 +7354,11 @@ regenerator-transform@^0.15.0:
dependencies:
"@babel/runtime" "^7.8.4"
+regexp-tree@^0.1.24, regexp-tree@~0.1.1:
+ version "0.1.24"
+ resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d"
+ integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==
+
regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
@@ -6970,7 +7368,7 @@ regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
-regexpp@^3.0.0, regexpp@^3.1.0:
+regexpp@^3.0.0, regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
@@ -7102,7 +7500,7 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0:
+resolve@^1.1.4, resolve@^1.17.0, resolve@^1.22.1, resolve@^1.4.0:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -7111,7 +7509,7 @@ resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0:
+resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
@@ -7204,6 +7602,13 @@ safe-regex-test@^1.0.0:
get-intrinsic "^1.1.3"
is-regex "^1.1.4"
+safe-regex@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2"
+ integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==
+ dependencies:
+ regexp-tree "~0.1.1"
+
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", 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"
@@ -7279,12 +7684,12 @@ semver-compare@^1.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, 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@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8:
+semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8:
version "7.3.8"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
@@ -7422,7 +7827,7 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
-signal-exit@^3.0.3:
+signal-exit@^3.0.3, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -7439,6 +7844,11 @@ simple-update-notifier@^1.0.7:
dependencies:
semver "~7.0.0"
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
slash@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
@@ -7584,11 +7994,6 @@ sprintf-js@^1.1.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
-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=
-
sshpk@^1.7.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
@@ -7730,11 +8135,23 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+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.1.0, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+style-search@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
+ integrity sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==
+
stylehacks@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520"
@@ -7743,6 +8160,97 @@ stylehacks@^5.1.0:
browserslist "^4.16.6"
postcss-selector-parser "^6.0.4"
+stylelint-config-recommended@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-9.0.0.tgz#1c9e07536a8cd875405f8ecef7314916d94e7e40"
+ integrity sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==
+
+stylelint-config-sass-guidelines@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-9.0.1.tgz#3114ce780f2085ba9ea5da2b7d97a1e85e968fa7"
+ integrity sha512-N06PsVsrgKijQ3YT5hqKA7x3NUkgELTRI1cbWMqcYiCGG6MjzvNk6Cb5YYA1PrvrksBV76BvY9P9bAswojVMqA==
+ dependencies:
+ postcss-scss "^4.0.2"
+ stylelint-order "^5.0.0"
+ stylelint-scss "^4.0.0"
+
+stylelint-config-standard@^29.0.0:
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-29.0.0.tgz#4cc0e0f05512a39bb8b8e97853247d3a95d66fa2"
+ integrity sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==
+ dependencies:
+ stylelint-config-recommended "^9.0.0"
+
+stylelint-high-performance-animation@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/stylelint-high-performance-animation/-/stylelint-high-performance-animation-1.7.0.tgz#c4b7da56e002d33c24328d6173f05e05f8efb0fe"
+ integrity sha512-Gq3tiCAhHU0WZBVwiCYKk+Kdkf1EeHyzDruRvDL9EhqrkpKxkktIzqmX+RM+Jn7s1sN9iAnoYIXPa0Py6d7j/Q==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+stylelint-order@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-5.0.0.tgz#abd20f6b85ac640774cbe40e70d3fe9c6fdf4400"
+ integrity sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==
+ dependencies:
+ postcss "^8.3.11"
+ postcss-sorting "^7.0.1"
+
+stylelint-scss@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.3.0.tgz#638800faf823db11fff60d537c81051fe74c90fa"
+ integrity sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==
+ dependencies:
+ lodash "^4.17.21"
+ postcss-media-query-parser "^0.2.3"
+ postcss-resolve-nested-selector "^0.1.1"
+ postcss-selector-parser "^6.0.6"
+ postcss-value-parser "^4.1.0"
+
+stylelint@^14.16.1:
+ version "14.16.1"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.16.1.tgz#b911063530619a1bbe44c2b875fd8181ebdc742d"
+ integrity sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.2"
+ balanced-match "^2.0.0"
+ colord "^2.9.3"
+ cosmiconfig "^7.1.0"
+ css-functions-list "^3.1.0"
+ debug "^4.3.4"
+ fast-glob "^3.2.12"
+ fastest-levenshtein "^1.0.16"
+ file-entry-cache "^6.0.1"
+ global-modules "^2.0.0"
+ globby "^11.1.0"
+ globjoin "^0.1.4"
+ html-tags "^3.2.0"
+ ignore "^5.2.1"
+ import-lazy "^4.0.0"
+ imurmurhash "^0.1.4"
+ is-plain-object "^5.0.0"
+ known-css-properties "^0.26.0"
+ mathml-tag-names "^2.1.3"
+ meow "^9.0.0"
+ micromatch "^4.0.5"
+ normalize-path "^3.0.0"
+ picocolors "^1.0.0"
+ postcss "^8.4.19"
+ postcss-media-query-parser "^0.2.3"
+ postcss-resolve-nested-selector "^0.1.1"
+ postcss-safe-parser "^6.0.0"
+ postcss-selector-parser "^6.0.11"
+ postcss-value-parser "^4.2.0"
+ resolve-from "^5.0.0"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+ style-search "^0.1.0"
+ supports-hyperlinks "^2.3.0"
+ svg-tags "^1.0.0"
+ table "^6.8.1"
+ v8-compile-cache "^2.3.0"
+ write-file-atomic "^4.0.2"
+
subarg@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
@@ -7764,7 +8272,7 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^7.1.0:
+supports-color@^7.0.0, supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
@@ -7778,11 +8286,24 @@ supports-color@^8.0.0:
dependencies:
has-flag "^4.0.0"
+supports-hyperlinks@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
+ integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
+ dependencies:
+ has-flag "^4.0.0"
+ supports-color "^7.0.0"
+
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
svgo@^2.7.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
@@ -7803,10 +8324,10 @@ syntax-error@^1.1.1:
dependencies:
acorn-node "^1.2.0"
-table@^6.0.9:
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
- integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==
+table@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
+ integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
dependencies:
ajv "^8.0.1"
lodash.truncate "^4.4.2"
@@ -7934,6 +8455,11 @@ tree-kill@1.2.2:
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
+trim-newlines@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
+ integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
+
truncate-utf8-bytes@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
@@ -7990,11 +8516,26 @@ type-fest@^0.13.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
+type-fest@^0.18.0:
+ version "0.18.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
+ integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
+
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+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.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -8187,7 +8728,7 @@ uuid@^8.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-v8-compile-cache@^2.0.3:
+v8-compile-cache@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
@@ -8564,7 +9105,7 @@ which-typed-array@^1.1.8:
has-tostringtag "^1.0.0"
is-typed-array "^1.1.10"
-which@^1.2.9:
+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==
@@ -8602,6 +9143,14 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+write-file-atomic@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
+ integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
+ dependencies:
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.7"
+
ws@^8.4.2:
version "8.6.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23"
@@ -8654,11 +9203,16 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.10.2:
+yaml@^1.10.0, yaml@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yargs-parser@^20.2.3:
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
yargs-parser@^21.0.0:
version "21.0.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35"
@@ -8685,6 +9239,11 @@ yauzl@^2.10.0:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
youtubei.js@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-2.7.0.tgz#2b980f3e97c9b05097d3b387ff4f6a8d42a61e0d"