aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAjay Ramachandran <[email protected]>2020-12-24 12:41:40 -0500
committerAjay Ramachandran <[email protected]>2020-12-24 12:41:40 -0500
commit73b81424b1ab6272943242e2e522ce49be710135 (patch)
tree5a9b58686f7a4e930a20bfe13a506aae5e66aa9b
parent120642667dabaadd4c38c9d14768f2ff867dfdc1 (diff)
parentbd12ccb6f447c60fe728b6e44cf292ff1ab1dad7 (diff)
downloadSponsorBlock-73b81424b1ab6272943242e2e522ce49be710135.tar.gz
SponsorBlock-73b81424b1ab6272943242e2e522ce49be710135.zip
Merge branch 'master' of https://github.com/ajayyy/SponsorBlock into feat/preview-bar-cleanup
# Conflicts: # src/content.ts # src/js-components/previewBar.ts
-rw-r--r--.eslintrc.js6
-rw-r--r--manifest/manifest.json2
-rw-r--r--package-lock.json1195
-rw-r--r--package.json2
-rw-r--r--public/_locales/bg/messages.json15
-rw-r--r--public/_locales/cs/messages.json36
-rw-r--r--public/_locales/de/messages.json38
-rw-r--r--public/_locales/en/messages.json8
-rw-r--r--public/_locales/es/messages.json40
-rw-r--r--public/_locales/fa/messages.json15
-rw-r--r--public/_locales/fi/messages.json39
-rw-r--r--public/_locales/fr/messages.json38
-rw-r--r--public/_locales/hr/messages.json24
-rw-r--r--public/_locales/hu/messages.json39
-rw-r--r--public/_locales/id/messages.json39
-rw-r--r--public/_locales/it/messages.json42
-rw-r--r--public/_locales/ja/messages.json15
-rw-r--r--public/_locales/ko/messages.json39
-rw-r--r--public/_locales/ml/messages.json39
-rw-r--r--public/_locales/ms/messages.json39
-rw-r--r--public/_locales/nl/messages.json32
-rw-r--r--public/_locales/pl/messages.json30
-rw-r--r--public/_locales/pt_BR/messages.json39
-rw-r--r--public/_locales/pt_PT/messages.json18
-rw-r--r--public/_locales/ro/messages.json42
-rw-r--r--public/_locales/ru/messages.json34
-rw-r--r--public/_locales/sk/messages.json6
-rw-r--r--public/_locales/sv/messages.json32
-rw-r--r--public/_locales/ta/messages.json39
-rw-r--r--public/_locales/te/messages.json39
-rw-r--r--public/_locales/tr/messages.json39
-rw-r--r--public/_locales/uk/messages.json39
-rw-r--r--public/_locales/vi/messages.json39
-rw-r--r--public/_locales/zh_CN/messages.json36
-rw-r--r--public/_locales/zh_TW/messages.json42
-rw-r--r--public/popup.css16
-rw-r--r--public/popup.html8
-rw-r--r--src/background.ts8
-rw-r--r--src/components/CategoryChooserComponent.tsx1
-rw-r--r--src/components/CategorySkipOptionsComponent.tsx3
-rw-r--r--src/components/NoticeComponent.tsx2
-rw-r--r--src/components/NoticeTextSectionComponent.tsx2
-rw-r--r--src/components/SkipNoticeComponent.tsx26
-rw-r--r--src/components/SponsorTimeEditComponent.tsx45
-rw-r--r--src/config.ts27
-rw-r--r--src/content.ts118
-rw-r--r--src/globals.d.ts19
-rw-r--r--src/messageTypes.ts63
-rw-r--r--src/options.ts14
-rw-r--r--src/popup.ts41
-rw-r--r--src/types.ts88
-rw-r--r--src/utils.ts24
52 files changed, 1129 insertions, 1592 deletions
diff --git a/.eslintrc.js b/.eslintrc.js
index ad68956e..64b64a12 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -20,10 +20,8 @@ module.exports = {
plugins: ["react", "@typescript-eslint"],
rules: {
// TODO: Remove warn rules when not needed anymore
- "@typescript-eslint/no-this-alias": "warn",
- "no-self-assign": "warn",
- "@typescript-eslint/no-empty-interface": "warn",
- "@typescript-eslint/ban-types": "warn",
+ "no-self-assign": "off",
+ "@typescript-eslint/no-empty-interface": "off",
},
settings: {
react: {
diff --git a/manifest/manifest.json b/manifest/manifest.json
index 2cfd9bce..32aefd3b 100644
--- a/manifest/manifest.json
+++ b/manifest/manifest.json
@@ -1,7 +1,7 @@
{
"name": "__MSG_fullName__",
"short_name": "SponsorBlock",
- "version": "2.0.9",
+ "version": "2.0.10.1",
"default_locale": "en",
"description": "__MSG_Description__",
"content_scripts": [{
diff --git a/package-lock.json b/package-lock.json
index 16885c02..961ca2ac 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -318,9 +318,9 @@
}
},
"@babel/polyfill": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz",
- "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==",
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz",
+ "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==",
"dev": true,
"requires": {
"core-js": "^2.6.5",
@@ -328,9 +328,9 @@
}
},
"@babel/runtime": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz",
- "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==",
+ "version": "7.12.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
+ "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
"dev": true,
"requires": {
"regenerator-runtime": "^0.13.4"
@@ -419,6 +419,53 @@
}
}
},
+ "@devicefarmer/adbkit": {
+ "version": "2.11.3",
+ "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz",
+ "integrity": "sha512-rsgWREAvSRQjdP9/3GoAV6Tq+o97haywgbTfCgt5yUqiDpaaq3hlH9FTo9XsdG8x+Jd0VQ9nTC2IXsDu8JGRSA==",
+ "dev": true,
+ "requires": {
+ "@devicefarmer/adbkit-logcat": "^1.1.0",
+ "@devicefarmer/adbkit-monkey": "~1.0.1",
+ "bluebird": "~2.9.24",
+ "commander": "^2.3.0",
+ "debug": "~2.6.3",
+ "node-forge": "^0.10.0",
+ "split": "~0.3.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "@devicefarmer/adbkit-logcat": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz",
+ "integrity": "sha512-K90P5gUXM/w+yzLvJIRQ+tJooNU6ipUPPQkljtPJ0laR66TGtpt4Gqsjm0n9dPHK1W5KGgU1R5wnCd6RTSlPNA==",
+ "dev": true
+ },
+ "@devicefarmer/adbkit-monkey": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz",
+ "integrity": "sha512-HilPrVrCosYWqSyjfpDtaaN1kJwdlBpS+IAflP3z+e7nsEgk3JGJf1Vg0NgHJooTf5HDfXSyZqMVg+5jvXCK0g==",
+ "dev": true,
+ "requires": {
+ "async": "~0.2.9"
+ }
+ },
"@eslint/eslintrc": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz",
@@ -1551,6 +1598,15 @@
"@types/yargs": "^13.0.0"
}
},
+ "@mdn/browser-compat-data": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-2.0.7.tgz",
+ "integrity": "sha512-GeeM827DlzFFidn1eKkMBiqXFD2oLsnZbaiGhByPl0vcapsRzUL+t9hDoov1swc9rB2jw64R+ihtzC8qOE9wXw==",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.2"
+ }
+ },
"@nodelib/fs.scandir": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
@@ -1835,6 +1891,15 @@
"integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==",
"dev": true
},
+ "@types/yauzl": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz",
+ "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@typescript-eslint/eslint-plugin": {
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.1.tgz",
@@ -2224,9 +2289,9 @@
}
},
"acorn-jsx": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
- "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
+ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
"dev": true
},
"acorn-walk": {
@@ -2235,100 +2300,51 @@
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
"dev": true
},
- "adbkit": {
- "version": "2.11.1",
- "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.1.tgz",
- "integrity": "sha512-hDTiRg9NX3HQt7WoDAPCplUpvzr4ZzQa2lq7BdTTJ/iOZ6O7YNAs6UYD8sFAiBEcYHDRIyq3cm9sZP6uZnhvXw==",
- "dev": true,
- "requires": {
- "adbkit-logcat": "^1.1.0",
- "adbkit-monkey": "~1.0.1",
- "bluebird": "~2.9.24",
- "commander": "^2.3.0",
- "debug": "~2.6.3",
- "node-forge": "^0.7.1",
- "split": "~0.3.3"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "adbkit-logcat": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz",
- "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=",
- "dev": true
- },
- "adbkit-monkey": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz",
- "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=",
- "dev": true,
- "requires": {
- "async": "~0.2.9"
- }
- },
"addons-linter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-2.1.0.tgz",
- "integrity": "sha512-ISCPobK6VdQ+5btMf1abkuD/9V+6RjnpJAVmEzjxDitk7HY03mLXVhA8SoD0XgngrI6cFlM2/i4OxfY4dHokpw==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-2.13.1.tgz",
+ "integrity": "sha512-OWMuABpZRNeru38oOjn7QYOF0JOXJQXG9c3r4ILTRwTBeSu3LtfgCh9/7zLVgTYPbTs7Qy6h23u4Sel65uSnUQ==",
"dev": true,
"requires": {
- "@babel/runtime": "7.10.5",
- "ajv": "6.12.3",
+ "@babel/runtime": "7.12.5",
+ "@mdn/browser-compat-data": "2.0.7",
+ "addons-scanner-utils": "4.0.0",
+ "ajv": "6.12.6",
"ajv-merge-patch": "4.1.0",
"chalk": "4.1.0",
"cheerio": "1.0.0-rc.3",
"columnify": "1.5.4",
"common-tags": "1.8.0",
"deepmerge": "4.2.2",
- "dispensary": "0.52.0",
- "es6-promisify": "6.1.1",
- "eslint": "7.5.0",
- "eslint-plugin-no-unsanitized": "3.1.2",
- "eslint-visitor-keys": "1.3.0",
- "espree": "7.2.0",
+ "dispensary": "0.59.0",
+ "eslint": "7.14.0",
+ "eslint-plugin-no-unsanitized": "3.1.4",
+ "eslint-visitor-keys": "2.0.0",
+ "espree": "7.3.0",
"esprima": "4.0.1",
- "first-chunk-stream": "4.0.0",
"fluent-syntax": "0.13.0",
- "fsevents": "2.1.3",
+ "fsevents": "2.2.1",
"glob": "7.1.6",
"is-mergeable-object": "1.1.1",
"jed": "1.1.1",
- "mdn-browser-compat-data": "1.0.31",
"os-locale": "5.0.0",
- "pino": "6.4.0",
- "postcss": "7.0.32",
+ "pino": "6.7.0",
+ "postcss": "8.1.10",
"probe-image-size": "5.0.0",
"relaxed-json": "1.0.3",
"semver": "7.3.2",
"source-map-support": "0.5.19",
- "strip-bom-stream": "4.0.0",
"tosource": "1.0.0",
- "upath": "1.2.0",
- "whatwg-url": "8.1.0",
- "yargs": "15.4.1",
+ "upath": "2.0.1",
+ "whatwg-url": "8.4.0",
+ "yargs": "16.1.1",
"yauzl": "2.10.0"
},
"dependencies": {
"ajv": {
- "version": "6.12.3",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
- "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -2338,12 +2354,11 @@
}
},
"ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -2357,6 +2372,17 @@
"supports-color": "^7.1.0"
}
},
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -2384,22 +2410,23 @@
}
},
"eslint": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz",
- "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz",
+ "integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
+ "@eslint/eslintrc": "^0.2.1",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.0.1",
"doctrine": "^3.0.0",
"enquirer": "^2.3.5",
- "eslint-scope": "^5.1.0",
+ "eslint-scope": "^5.1.1",
"eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^1.3.0",
- "espree": "^7.2.0",
+ "eslint-visitor-keys": "^2.0.0",
+ "espree": "^7.3.0",
"esquery": "^1.2.0",
"esutils": "^2.0.2",
"file-entry-cache": "^5.0.1",
@@ -2437,6 +2464,12 @@
"estraverse": "^4.1.1"
}
},
+ "eslint-visitor-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz",
+ "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==",
+ "dev": true
+ },
"esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -2486,6 +2519,13 @@
"integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
"dev": true
},
+ "fsevents": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz",
+ "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==",
+ "dev": true,
+ "optional": true
+ },
"globals": {
"version": "12.4.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
@@ -2593,9 +2633,9 @@
}
},
"supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
@@ -2610,6 +2650,23 @@
"prelude-ls": "^1.2.1"
}
},
+ "upath": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz",
+ "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^2.0.2",
+ "webidl-conversions": "^6.1.0"
+ }
+ },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -2618,6 +2675,66 @@
"requires": {
"isexe": "^2.0.0"
}
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
+ "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.1.tgz",
+ "integrity": "sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "dev": true
+ }
+ }
+ },
+ "addons-scanner-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-4.0.0.tgz",
+ "integrity": "sha512-+BfePzqoo/7Nhum9LONGsga2xhNJYb+6k6j819pzcd2tqaaqDUJu+3lz4CQQYFcD8QoolB3ksfZcCPymleFq0A==",
+ "dev": true,
+ "requires": {
+ "@types/yauzl": "2.9.1",
+ "common-tags": "1.8.0",
+ "first-chunk-stream": "3.0.0",
+ "strip-bom-stream": "4.0.0",
+ "upath": "2.0.1",
+ "yauzl": "2.10.0"
+ },
+ "dependencies": {
+ "upath": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
+ "dev": true
}
}
},
@@ -2765,76 +2882,52 @@
"dev": true
},
"archiver": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz",
- "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.0.2.tgz",
+ "integrity": "sha512-Tq3yV/T4wxBsD2Wign8W9VQKhaUxzzRmjEiSoOK0SLqPgDP/N1TKdYyBeIEu56T4I9iO4fKTTR0mN9NWkBA0sg==",
"dev": true,
"requires": {
- "archiver-utils": "^1.3.0",
- "async": "^2.0.0",
+ "archiver-utils": "^2.1.0",
+ "async": "^3.2.0",
"buffer-crc32": "^0.2.1",
- "glob": "^7.0.0",
- "lodash": "^4.8.0",
- "readable-stream": "^2.0.0",
- "tar-stream": "^1.5.0",
- "zip-stream": "^1.2.0"
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.0.0",
+ "tar-stream": "^2.1.4",
+ "zip-stream": "^4.0.0"
},
"dependencies": {
"async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
"dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
}
}
},
"archiver-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
- "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
"dev": true,
"requires": {
- "glob": "^7.0.0",
- "graceful-fs": "^4.1.0",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
- "lodash": "^4.8.0",
- "normalize-path": "^2.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
"readable-stream": "^2.0.0"
},
"dependencies": {
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -4129,55 +4222,14 @@
}
},
"bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
+ "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
"dev": true,
"requires": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- }
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- }
- }
- }
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
}
},
"bluebird": {
@@ -4215,12 +4267,11 @@
},
"dependencies": {
"ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -4256,9 +4307,9 @@
"dev": true
},
"supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
@@ -4415,31 +4466,15 @@
}
},
"buffer": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
- "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
}
},
- "buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "dev": true,
- "requires": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
- }
- },
- "buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
- "dev": true
- },
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
@@ -4452,12 +4487,6 @@
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
"dev": true
},
- "buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
- "dev": true
- },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -4819,9 +4848,9 @@
"dev": true
},
"cli-boxes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz",
- "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
"dev": true
},
"cliui": {
@@ -4896,6 +4925,12 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
+ "colorette": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
+ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
+ "dev": true
+ },
"colors": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
@@ -4962,46 +4997,22 @@
"dev": true
},
"compress-commons": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
- "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.2.tgz",
+ "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==",
"dev": true,
"requires": {
- "buffer-crc32": "^0.2.1",
- "crc32-stream": "^2.0.0",
- "normalize-path": "^2.0.0",
- "readable-stream": "^2.0.0"
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^4.0.1",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
},
"dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
}
}
},
@@ -5505,55 +5516,24 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
- "crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "crc-32": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
+ "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
"dev": true,
"requires": {
- "buffer": "^5.1.0"
+ "exit-on-epipe": "~1.0.1",
+ "printj": "~1.1.0"
}
},
"crc32-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
- "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.1.tgz",
+ "integrity": "sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw==",
"dev": true,
"requires": {
- "crc": "^3.4.4",
- "readable-stream": "^2.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "crc-32": "^1.2.0",
+ "readable-stream": "^3.4.0"
}
},
"create-ecdh": {
@@ -5784,9 +5764,9 @@
"dev": true
},
"deepcopy": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.0.0.tgz",
- "integrity": "sha512-d5ZK7pJw7F3k6M5vqDjGiiUS9xliIyWkdzBjnPhnSeRGjkYOGZMCFkdKVwV/WiHOe0NwzB8q+iDo7afvSf0arA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz",
+ "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==",
"dev": true,
"requires": {
"type-detect": "^4.0.8"
@@ -5926,25 +5906,107 @@
}
},
"dispensary": {
- "version": "0.52.0",
- "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.52.0.tgz",
- "integrity": "sha512-A13TTo/2yaK/Z3So4OdzodBTbyTMpqVOH15cbmUuKvl+T1cOLn0VGQjibrG9cELa9mkLfhjFodqYQWkOGkG9Ig==",
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.59.0.tgz",
+ "integrity": "sha512-JSnh4AhtYgwoyUHtunZbAhklkD9IeNacK1IDlrAJSZjzBMGFoTp9+Nggg+ITJ+F1geXc04DZ55ixnjFr5Ozknw==",
"dev": true,
"requires": {
"async": "~3.2.0",
"natural-compare-lite": "~1.4.0",
- "pino": "~6.4.0",
+ "pino": "~6.7.0",
"request": "~2.88.0",
"sha.js": "~2.4.4",
"source-map-support": "~0.5.4",
- "yargs": "~15.4.0"
+ "yargs": "~16.1.0"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
"async": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
"dev": true
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
+ "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.1.tgz",
+ "integrity": "sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "dev": true
}
}
},
@@ -6016,9 +6078,9 @@
}
},
"dot-prop": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
- "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
"dev": true,
"requires": {
"is-obj": "^2.0.0"
@@ -6240,6 +6302,12 @@
"integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==",
"dev": true
},
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
"escape-goat": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
@@ -6547,9 +6615,9 @@
}
},
"eslint-plugin-no-unsanitized": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.2.tgz",
- "integrity": "sha512-KPShfliA3Uy9qqwQx35P1fwIOeJjZkb0FbMMUFztRYRposzaynsM8JCEb952fqkidROl1kpqY80uSvn+TcWkQQ==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.4.tgz",
+ "integrity": "sha512-WF1+eZo2Sh+bQNjZuVNwT0dA61zuJORsLh+1Sww7+O6GOPw+WPWIIRfTWNqrmaXaDMhM4SXAqYPcNlhRMiH13g==",
"dev": true
},
"eslint-plugin-react": {
@@ -6618,12 +6686,12 @@
"dev": true
},
"espree": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz",
- "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
+ "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
"dev": true,
"requires": {
- "acorn": "^7.3.1",
+ "acorn": "^7.4.0",
"acorn-jsx": "^5.2.0",
"eslint-visitor-keys": "^1.3.0"
}
@@ -6720,6 +6788,12 @@
"integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
"dev": true
},
+ "exit-on-epipe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+ "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+ "dev": true
+ },
"expand-brackets": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
@@ -7067,9 +7141,9 @@
"dev": true
},
"fast-redact": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.0.0.tgz",
- "integrity": "sha512-zxpkULI9W9MNTK2sJ3BpPQrTEXFNESd2X6O1tXMFpK/XM0G5c5Rll2EVYZH2TqI3xRGK/VaJ+eEOt7pnENJpeA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.0.tgz",
+ "integrity": "sha512-a/S/Hp6aoIjx7EmugtzLqXmcNsyFszqbt6qQ99BdG61QjBZF6shNis0BYR6TsZOQ1twYc0FN2Xdhwwbv6+KD0w==",
"dev": true
},
"fast-safe-stringify": {
@@ -7181,13 +7255,13 @@
}
},
"firefox-profile": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-2.0.0.tgz",
- "integrity": "sha512-BPfcUISOV6+UwF6uqo5QS8iuFL6XZvHCm+1iuynIJ7fe1zea69Is77/n/098fp0a9sZ94lvT8rpYB15S/riSaA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.0.0.tgz",
+ "integrity": "sha512-Vw31AsjfLDbcApMDwwnhZcz3tWjV6lxB9BNf84FaV44rZXtU87cVbFMBzPEtrJdUDbwPYiuYzprp6yksYGwjSw==",
"dev": true,
"requires": {
"adm-zip": "~0.4.x",
- "archiver": "~2.1.0",
+ "archiver": "~5.0.2",
"async": "~2.5.0",
"fs-extra": "~4.0.2",
"ini": "~1.3.3",
@@ -7228,9 +7302,9 @@
}
},
"first-chunk-stream": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-4.0.0.tgz",
- "integrity": "sha512-8TOz/mJp7+zc2HN63vnJHotwceq4gQI1+/gdJVnJcG4dEB96oUxw7wV9We4QKjSFWUc/V0ADDfaGba5cDoG6EA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz",
+ "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==",
"dev": true
},
"flat-cache": {
@@ -7407,13 +7481,21 @@
},
"dependencies": {
"jsonfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
- "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6",
- "universalify": "^1.0.0"
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
}
},
"universalify": {
@@ -7619,12 +7701,20 @@
}
},
"global-dirs": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz",
- "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
+ "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
"dev": true,
"requires": {
- "ini": "^1.3.5"
+ "ini": "1.3.7"
+ },
+ "dependencies": {
+ "ini": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
+ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
+ "dev": true
+ }
}
},
"global-modules": {
@@ -8116,10 +8206,13 @@
}
},
"is-arguments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
- "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
- "dev": true
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
+ "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0"
+ }
},
"is-arrayish": {
"version": "0.2.1",
@@ -8278,9 +8371,9 @@
"dev": true
},
"is-npm": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
- "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
"dev": true
},
"is-number": {
@@ -11595,6 +11688,24 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
},
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
+ "dev": true
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "dev": true
+ },
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
@@ -11649,6 +11760,12 @@
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
"dev": true
},
+ "lodash.union": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
+ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
+ "dev": true
+ },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -11750,15 +11867,6 @@
"safe-buffer": "^5.1.2"
}
},
- "mdn-browser-compat-data": {
- "version": "1.0.31",
- "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.31.tgz",
- "integrity": "sha512-GVQQYWgoH3jbBaIy8M4hrg34qaNpPedtZvwAjUmkpHq4FXKKCea8Ji5rlS32YJSU9dt7TPvuWWX7Cce5mZyFPA==",
- "dev": true,
- "requires": {
- "extend": "3.0.2"
- }
- },
"mem": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz",
@@ -12017,9 +12125,9 @@
}
},
"moment": {
- "version": "2.27.0",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
- "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==",
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+ "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
"dev": true,
"optional": true
},
@@ -12123,6 +12231,12 @@
"dev": true,
"optional": true
},
+ "nanoid": {
+ "version": "3.1.20",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
+ "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
+ "dev": true
+ },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -12180,9 +12294,9 @@
"dev": true
},
"node-forge": {
- "version": "0.7.6",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
- "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==",
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
"dev": true
},
"node-int64": {
@@ -12284,6 +12398,7 @@
"resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-7.0.2.tgz",
"integrity": "sha512-ux+n4hPVETuTL8+daJXTOC6uKLgMsl1RYfFv7DKRzyvzBapqco0rZZ9g72ZN8VS6V+gvNYHYa/ofcCY8fkJWsA==",
"dev": true,
+ "optional": true,
"requires": {
"growly": "^1.3.0",
"is-wsl": "^2.2.0",
@@ -12297,13 +12412,15 @@
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
+ "optional": true,
"requires": {
"isexe": "^2.0.0"
}
@@ -12416,13 +12533,13 @@
"dev": true
},
"object-is": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
- "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz",
+ "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
}
},
"object-keys": {
@@ -12636,9 +12753,9 @@
}
},
"open": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz",
- "integrity": "sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz",
+ "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==",
"dev": true,
"requires": {
"is-docker": "^2.0.0",
@@ -12693,9 +12810,9 @@
}
},
"execa": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz",
- "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
"dev": true,
"requires": {
"cross-spawn": "^7.0.0",
@@ -13024,23 +13141,23 @@
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
},
"pino": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/pino/-/pino-6.4.0.tgz",
- "integrity": "sha512-TRDp5fJKRBtVlxd4CTox3rJL+TzwQztB/VNmT5n87zFgKVU7ztnmZkcX1zypPP+3ZZcveOTYKJy74UXdVBaXFQ==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/pino/-/pino-6.7.0.tgz",
+ "integrity": "sha512-vPXJ4P9rWCwzlTJt+f0Ni4THc3DWyt8iDDCO4edQ8narTu6hnpzdXu8FqeSJCGndl1W6lfbYQUQihUO54y66Lw==",
"dev": true,
"requires": {
- "fast-redact": "^2.0.0",
+ "fast-redact": "^3.0.0",
"fast-safe-stringify": "^2.0.7",
"flatstr": "^1.0.12",
"pino-std-serializers": "^2.4.2",
"quick-format-unescaped": "^4.0.1",
- "sonic-boom": "^1.0.0"
+ "sonic-boom": "^1.0.2"
}
},
"pino-std-serializers": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz",
- "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz",
+ "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==",
"dev": true
},
"pirates": {
@@ -13067,25 +13184,15 @@
"dev": true
},
"postcss": {
- "version": "7.0.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "version": "8.1.10",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.1.10.tgz",
+ "integrity": "sha512-iBXEV5VTTYaRRdxiFYzTtuv2lGMQBExqkZKSzkJe+Fl6rvQrA/49UVGKqB+LG54hpW/TtDBMGds8j33GFNW7pg==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
+ "colorette": "^1.2.1",
+ "nanoid": "^3.1.18",
"source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "vfile-location": "^3.2.0"
}
},
"prelude-ls": {
@@ -13120,6 +13227,12 @@
}
}
},
+ "printj": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
+ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
+ "dev": true
+ },
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
@@ -13248,9 +13361,9 @@
"dev": true
},
"pupa": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz",
- "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+ "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
"dev": true,
"requires": {
"escape-goat": "^2.0.0"
@@ -13435,6 +13548,15 @@
"util-deprecate": "^1.0.1"
}
},
+ "readdir-glob": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz",
+ "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
"readdirp": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
@@ -13503,9 +13625,9 @@
}
},
"registry-auth-token": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz",
- "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+ "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
"dev": true,
"requires": {
"rc": "^1.2.8"
@@ -14032,14 +14154,14 @@
}
},
"sign-addon": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-2.0.6.tgz",
- "integrity": "sha512-/8SQPNCrrZKMthdDf1IfI4XMbq8k9YsiiMyVeQL8xhhQSsZho6ZvEUBFSA70N0eznLZyab3k1d2CNOchYRYA6Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.1.0.tgz",
+ "integrity": "sha512-zZ7nKc5/3QWM3skYBosGDvYQf2jkKhW2u8BELrZoN1wgCSOnwsV9T47Vx9uaNbA3CyZ+V9XSA0tDVHoV1QfVPw==",
"dev": true,
"requires": {
"common-tags": "1.8.0",
"core-js": "3.6.5",
- "deepcopy": "2.0.0",
+ "deepcopy": "2.1.0",
"es6-error": "4.1.1",
"es6-promisify": "6.1.1",
"jsonwebtoken": "8.5.1",
@@ -14245,9 +14367,9 @@
}
},
"sonic-boom": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.1.0.tgz",
- "integrity": "sha512-JyOf+Xt7GBN4tAic/DD1Bitw6OMgSHAnswhPeOiLpfRoSjPNjEIi73UF3OxHzhSNn9WavxGuCZzprFCGFSNwog==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.3.0.tgz",
+ "integrity": "sha512-4nX6OYvOYr6R76xfQKi6cZpTO3YSWe/vd+QdIfoH0lBy0MnPkeAbb2rRWgmgADkXUeCKPwO1FZAKlAVWAadELw==",
"dev": true,
"requires": {
"atomic-sleep": "^1.0.0",
@@ -14733,14 +14855,6 @@
"requires": {
"first-chunk-stream": "^3.0.0",
"strip-bom-buf": "^2.0.0"
- },
- "dependencies": {
- "first-chunk-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz",
- "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==",
- "dev": true
- }
}
},
"strip-eof": {
@@ -14880,56 +14994,22 @@
}
},
"tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz",
+ "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==",
"dev": true,
"requires": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
}
},
"term-size": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz",
- "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
+ "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
"dev": true
},
"terminal-link": {
@@ -15106,12 +15186,6 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
- "to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "dev": true
- },
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -15597,43 +15671,44 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"update-notifier": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz",
- "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.0.tgz",
+ "integrity": "sha512-8tqsiVrMv7aZsKNSjqA6DdBLKJpZG1hRpkj1RbOJu1PgyP69OX+EInAnP1EK/ShX5YdPFgwWdk19oquZ0HTM8g==",
"dev": true,
"requires": {
"boxen": "^4.2.0",
- "chalk": "^3.0.0",
+ "chalk": "^4.1.0",
"configstore": "^5.0.1",
"has-yarn": "^2.1.0",
"import-lazy": "^2.1.0",
"is-ci": "^2.0.0",
"is-installed-globally": "^0.3.1",
- "is-npm": "^4.0.0",
+ "is-npm": "^5.0.0",
"is-yarn-global": "^0.3.0",
"latest-version": "^5.0.0",
"pupa": "^2.0.1",
+ "semver": "^7.3.2",
"semver-diff": "^3.1.1",
"xdg-basedir": "^4.0.0"
},
"dependencies": {
"ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
@@ -15661,14 +15736,38 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
"supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
}
}
},
@@ -15794,6 +15893,12 @@
"extsprintf": "^1.2.0"
}
},
+ "vfile-location": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz",
+ "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==",
+ "dev": true
+ },
"vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
@@ -15985,17 +16090,17 @@
}
},
"web-ext": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-5.0.0.tgz",
- "integrity": "sha512-K5rzVijxNbOjxv+au1Sj7J82s1/CCyBQ9bhJE9TWdOD3OLELhC3bWJHyNJ1u2sT+kf8guaJjFvPnd6WG67PHtw==",
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-5.4.1.tgz",
+ "integrity": "sha512-AnTjSFtvidZfmVYzvceM/XixsigiWU3l66UzcxgXxXhOoEQU5ZHlXFGVJdHEYfkI5SnEyDG+WlhsdTUHNLOXJw==",
"dev": true,
"requires": {
- "@babel/polyfill": "7.10.4",
- "@babel/runtime": "7.10.5",
+ "@babel/polyfill": "7.12.1",
+ "@babel/runtime": "7.12.5",
"@cliqz-oss/firefox-client": "0.3.1",
"@cliqz-oss/node-firefox-connect": "1.2.1",
- "adbkit": "2.11.1",
- "addons-linter": "2.1.0",
+ "@devicefarmer/adbkit": "2.11.3",
+ "addons-linter": "2.13.1",
"bunyan": "1.8.14",
"camelcase": "6.0.0",
"chrome-launcher": "0.13.4",
@@ -16003,22 +16108,22 @@
"decamelize": "4.0.0",
"es6-error": "4.1.1",
"event-to-promise": "0.8.0",
- "firefox-profile": "2.0.0",
+ "firefox-profile": "4.0.0",
"fs-extra": "9.0.1",
"fx-runner": "1.0.13",
"import-fresh": "3.2.1",
"mkdirp": "1.0.4",
"multimatch": "4.0.0",
"mz": "2.7.0",
- "node-notifier": "7.0.2",
- "open": "7.1.0",
+ "node-notifier": "8.0.0",
+ "open": "7.3.0",
"parse-json": "5.0.1",
- "sign-addon": "2.0.6",
+ "sign-addon": "3.1.0",
"source-map-support": "0.5.19",
"strip-bom": "4.0.0",
"strip-json-comments": "3.1.1",
"tmp": "0.2.1",
- "update-notifier": "4.1.0",
+ "update-notifier": "5.0.0",
"watchpack": "1.7.4",
"ws": "7.3.1",
"yargs": "15.4.1",
@@ -16037,12 +16142,35 @@
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true
},
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
"mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true
},
+ "node-notifier": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz",
+ "integrity": "sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==",
+ "dev": true,
+ "requires": {
+ "growly": "^1.3.0",
+ "is-wsl": "^2.2.0",
+ "semver": "^7.3.2",
+ "shellwords": "^0.1.1",
+ "uuid": "^8.3.0",
+ "which": "^2.0.2"
+ }
+ },
"parse-json": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
@@ -16055,6 +16183,15 @@
"lines-and-columns": "^1.1.6"
}
},
+ "semver": {
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
"source-map-support": {
"version": "0.5.19",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
@@ -16064,6 +16201,21 @@
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
}
}
},
@@ -16678,47 +16830,14 @@
}
},
"zip-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
- "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.4.tgz",
+ "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==",
"dev": true,
"requires": {
- "archiver-utils": "^1.3.0",
- "compress-commons": "^1.2.0",
- "lodash": "^4.8.0",
- "readable-stream": "^2.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "archiver-utils": "^2.1.0",
+ "compress-commons": "^4.0.2",
+ "readable-stream": "^3.6.0"
}
}
}
diff --git a/package.json b/package.json
index c47b602e..36161a3d 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,7 @@
"ts-jest": "^26.2.0",
"ts-loader": "^6.2.1",
"typescript": "~3.7.3",
- "web-ext": "^5.0.0",
+ "web-ext": "^5.4.1",
"webpack": "~4.41.2",
"webpack-cli": "~3.3.10",
"webpack-merge": "~4.2.2"
diff --git a/public/_locales/bg/messages.json b/public/_locales/bg/messages.json
index 228216f7..8ea6ea2a 100644
--- a/public/_locales/bg/messages.json
+++ b/public/_locales/bg/messages.json
@@ -70,9 +70,6 @@
"sponsorEnd": {
"message": "Сегментът Свършва Сега"
},
- "noVideoID": {
- "message": "Не е намерено YouTube видео в този раздел. Ако сте сигурни, че това е YouTube раздел, затворете този изскачащ прозорец и го отворете отново. Ако това не проработи, опитайте се да презаредите раздела."
- },
"success": {
"message": "Успешно!"
},
@@ -91,18 +88,6 @@
"submitCheck": {
"message": "Сигурни ли сте, че искате да подадете това?"
},
- "whitelistChannel": {
- "message": "Добавяне на канала към Whitelist"
- },
- "removeFromWhitelist": {
- "message": "Премахване на канала от Whitelist"
- },
- "savedPeopleFrom": {
- "message": "Вие сте помогнали на хора да пропуснат "
- },
- "viewLeaderboard": {
- "message": "Вижте leaderboard-а"
- },
"here": {
"message": "тук"
},
diff --git a/public/_locales/cs/messages.json b/public/_locales/cs/messages.json
index d7dfdfda..d0dbcc81 100644
--- a/public/_locales/cs/messages.json
+++ b/public/_locales/cs/messages.json
@@ -86,7 +86,7 @@
"message": "Segment nyní končí"
},
"noVideoID": {
- "message": "Na této záložce nebylo nalezeno žádné YouTube video. Pokud jste si jistí, že tato záložka je YouTube, zavřete toto vyskakovací okno a znovu jej otevřete. Pokud to nepomůže, zkuste záložku znovu načíst."
+ "message": "Nebylo nalezeno žádné YouTube video.\nPokud je to nesprávně, obnovte záložku."
},
"success": {
"message": "Úspěch!"
@@ -121,32 +121,30 @@
"submitCheck": {
"message": "Opravdu to chcete odeslat?"
},
- "whitelistChannel": {
- "message": "Přidat kanál do výjimek"
- },
- "removeFromWhitelist": {
- "message": "Odebrat kanál z výjimek"
- },
"voteOnTime": {
"message": "Hlasovat pro segment"
},
- "soFarUHSubmited": {
- "message": "Zatím jste přidali"
+ "Submissions": {
+ "message": "Příspěvky"
},
"savedPeopleFrom": {
- "message": "Lidem jste ušetřili "
+ "message": "Ušetřili jste lidem "
},
"viewLeaderboard": {
- "message": "Zobrazit žebříček"
+ "message": "Žebříček"
},
"here": {
"message": "zde"
},
"recordTimesDescription": {
- "message": "Stiskněte tlačítko níže, když segment začne a skončí, k nahrání a uložení do databáze."
+ "message": "Odeslat"
+ },
+ "submissionEditHint": {
+ "message": "Úpravy sekcí se objeví po odeslání",
+ "description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
- "message": "Tip: Pokud je video aktivní, stiskněte středník pro nahlášení začátku/konce segmentu, a apostrof pro odeslání. (Klávesy lze změnit v nastavení)"
+ "message": "Tip: V možnostech můžete nastavit klávesové zkratky pro odeslání"
},
"clearTimesButton": {
"message": "Vymazat časy"
@@ -157,6 +155,9 @@
"publicStats": {
"message": "Toto se používá ve veřejném žebříčku k ukázání jak moc jste přispěli. Podívejte se na něj"
},
+ "Username": {
+ "message": "Uživatelské jméno"
+ },
"setUsername": {
"message": "Nastavit uživatelské jméno"
},
@@ -253,10 +254,10 @@
"message": "Vypršel časový limit připojení. Zkontrolujte vaše připojení k internetu. Pokud váš internet funguje, server je nejspíš přetížený nebo spadnul."
},
"disableSkipping": {
- "message": "Zakázat SponsorBlock"
+ "message": "Přeskakování je povoleno"
},
"enableSkipping": {
- "message": "Povolit SponsorBlock"
+ "message": "Přeskakování je zakázáno"
},
"yourWork": {
"message": "Vaše práce",
@@ -317,7 +318,7 @@
"message": "Ušetřili jste lidem"
},
"youHaveSavedTimeEnd": {
- "message": " jejich života."
+ "message": " jejich života"
},
"statusReminder": {
"message": "Podívejte se na status.sponsor.ajay.app pro stav serverů."
@@ -634,5 +635,8 @@
},
"unsubmittedWarningDescription": {
"message": "Odeslat upozornění, když opustíte video s nenahranými segmenty"
+ },
+ "help": {
+ "message": "Nápověda"
}
}
diff --git a/public/_locales/de/messages.json b/public/_locales/de/messages.json
index 7f140882..cc1c9ab1 100644
--- a/public/_locales/de/messages.json
+++ b/public/_locales/de/messages.json
@@ -86,7 +86,7 @@
"message": "Segment endet jetzt"
},
"noVideoID": {
- "message": "Keine YouTube-Videos in diesem Tab gefunden. Wenn dies ein Youtube-Tab ist, schließe dieses Pop-up und öffne es erneut. Wenn das nicht hilft, versuche den Tab neu zu laden."
+ "message": "Kein YouTube-Video gefunden.\nWenn dies falsch ist, aktualisieren Sie den Tab."
},
"success": {
"message": "Geschafft!"
@@ -121,33 +121,12 @@
"submitCheck": {
"message": "Bist du sicher, dass du dies übermitteln willst?"
},
- "whitelistChannel": {
- "message": "Kanal zur Whitelist hinzufügen"
- },
- "removeFromWhitelist": {
- "message": "Kanal von der Whitelist entfernen"
- },
"voteOnTime": {
"message": "Über ein Segment abstimmen"
},
- "soFarUHSubmited": {
- "message": "Von dir bisher gemeldet:"
- },
- "savedPeopleFrom": {
- "message": "\nDamit hast du anderen Nutzer folgendes erspart:"
- },
- "viewLeaderboard": {
- "message": "Wirf einen Blick auf die Rangliste:"
- },
"here": {
"message": "hier"
},
- "recordTimesDescription": {
- "message": "Klicke beim Start und am Ende des Segments auf den Knopf unten, um es in die Datenbank zu übermitteln."
- },
- "popupHint": {
- "message": "Hinweis: Du kannst auch alternativ eine Taste in den Optionen festlegen, welche du drücken kannst, während du das Video guckst, um die Start- und Endpunkte des Segments zu markieren."
- },
"clearTimesButton": {
"message": "Zeiten löschen"
},
@@ -252,12 +231,6 @@
"0": {
"message": "Zeitüberschreibung. Überprüfe deine Internetverbindung. Bist du mit dem Internet verbunden, ist der Server wahrscheinlich offline."
},
- "disableSkipping": {
- "message": "SponsorBlock deaktivieren"
- },
- "enableSkipping": {
- "message": "SponsorBlock aktivieren"
- },
"yourWork": {
"message": "Deine Statistik",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +268,6 @@
"showTimeWithSkipsDescription": {
"message": "Diese Zeit wird in Klammern neben der kompletten Videodauer im YouTube-Videoplayer angezeigt. Dies betrifft auch Segmente, die als \"In Suchleiste anzeigen\" markiert sind."
},
- "youHaveSkipped": {
- "message": "Du übersprangst bisher "
- },
"youHaveSaved": {
"message": " und erspartest dir damit "
},
@@ -313,12 +283,6 @@
"hoursLower": {
"message": "Stunden"
},
- "youHaveSavedTime": {
- "message": "\nAndere haben dank dir"
- },
- "youHaveSavedTimeEnd": {
- "message": " ihrer wertvollen Zeit gespart."
- },
"statusReminder": {
"message": "Du kannst den Serverstatus auf https://status.sponsor.ajay.app überprüfen."
},
diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json
index a13a3165..b14c5be0 100644
--- a/public/_locales/en/messages.json
+++ b/public/_locales/en/messages.json
@@ -122,10 +122,10 @@
"message": "Are you sure you want to submit this?"
},
"whitelistChannel": {
- "message": "Add to whitelist"
+ "message": "Whitelist channel"
},
"removeFromWhitelist": {
- "message": "Remove from whitelist"
+ "message": "Remove channel from whitelist"
},
"voteOnTime": {
"message": "Vote On A Segment"
@@ -581,6 +581,10 @@
"chooseACategory": {
"message": "Choose a Category"
},
+ "enableThisCategoryFirst": {
+ "message": "To submit segments with the category of \"{0}\", you must enable it in the options. You will be redirected to the options now.",
+ "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
+ },
"youMustSelectACategory": {
"message": "You must select a category for all segments you are submitting!"
},
diff --git a/public/_locales/es/messages.json b/public/_locales/es/messages.json
index df21f1f4..6ba74da4 100644
--- a/public/_locales/es/messages.json
+++ b/public/_locales/es/messages.json
@@ -86,7 +86,7 @@
"message": "El segmento termina ahora"
},
"noVideoID": {
- "message": "Ningún video de YouTube se encontró en esta pestaña. Si sabes que esto es una pestaña de YouTube, cierra esta ventana y ábrela otra vez. Si eso no funciona, intenta recargar la pestaña."
+ "message": "No se encontró vídeo de YouTube.\nSi esto es incorrecto, actualice la pestaña."
},
"success": {
"message": "¡Completado!"
@@ -121,32 +121,30 @@
"submitCheck": {
"message": "¿Estás seguro de que quieres enviar esto?"
},
- "whitelistChannel": {
- "message": "Permitir Canal"
- },
- "removeFromWhitelist": {
- "message": "Parar De Permitir Canal"
- },
"voteOnTime": {
"message": "Vote En Un Segmento"
},
- "soFarUHSubmited": {
- "message": "Hasta ahora, has enviado"
+ "Submissions": {
+ "message": "Solicitudes"
},
"savedPeopleFrom": {
- "message": "Has salvado personas de "
+ "message": "Has salvado a gente de "
},
"viewLeaderboard": {
- "message": "Ver la tabla de clasificación"
+ "message": "Tablas de clasificación"
},
"here": {
"message": "aquí"
},
"recordTimesDescription": {
- "message": "Haga clic en el botón de abajo cuando el segmento comience y termine para grabarlo y enviarlo a la base de datos."
+ "message": "Enviar"
+ },
+ "submissionEditHint": {
+ "message": "La edición de la sección aparecerá después de hacer clic en enviar",
+ "description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
- "message": "Pista: Presione la tecla de punto y coma mientras está enfocado en un video para indicar el comienzo/final de un segmento y citación para enviarlo. (Esto puede cambiarse en opciones)"
+ "message": "Sugerencia: puede configurar los teclas para enviar en las opciones"
},
"clearTimesButton": {
"message": "Eliminar Tiempos"
@@ -157,6 +155,9 @@
"publicStats": {
"message": "Esto se utiliza en la página de estadísticas públicas para mostrar cuánto has contribuido. Véala"
},
+ "Username": {
+ "message": "Nombre de usario"
+ },
"setUsername": {
"message": "Escoger Nombre De Usuario"
},
@@ -253,10 +254,10 @@
"message": "Tiempo de espera agotado. Compruebe su conexión a Internet. Si su internet está funcionando, el servidor probablemente esta sobrecargado o desconectado."
},
"disableSkipping": {
- "message": "Desactivar SponsorBlock"
+ "message": "Saltar está activado"
},
"enableSkipping": {
- "message": "Activar SponsorBlock"
+ "message": "Saltar está desactivado"
},
"yourWork": {
"message": "Tu trabajo",
@@ -296,7 +297,7 @@
"message": "Esta duración aparece entre paréntesis junto al tiempo actual del video, debajo de la barra de navegación. Esta muestra la duración total del vídeo menos cualquier segmento eliminado. Esto incluye los segmentos marcados como solo \"Mostrar en la barra de navegación\"."
},
"youHaveSkipped": {
- "message": "Has omitido "
+ "message": "Lo has saltado "
},
"youHaveSaved": {
"message": "Te has ahorrado "
@@ -314,10 +315,10 @@
"message": "horas"
},
"youHaveSavedTime": {
- "message": "Has ahorrado a otras personas"
+ "message": "Has salvado personas"
},
"youHaveSavedTimeEnd": {
- "message": " de sus vidas."
+ "message": " de sus vidas"
},
"statusReminder": {
"message": "Comprueba status.sponsor.ajay.app para ver el estado del servidor."
@@ -634,5 +635,8 @@
},
"unsubmittedWarningDescription": {
"message": "Envía una notificación cuando dejas un vídeo con segmentos que no se suben"
+ },
+ "help": {
+ "message": "Ayuda"
}
}
diff --git a/public/_locales/fa/messages.json b/public/_locales/fa/messages.json
index 2e890f8d..c842c6ab 100644
--- a/public/_locales/fa/messages.json
+++ b/public/_locales/fa/messages.json
@@ -99,24 +99,9 @@
"submitCheck": {
"message": "مطمئن هستید که میخواهید این را ثبت کنید؟"
},
- "whitelistChannel": {
- "message": "قرار دادن کانال در لیست سفید"
- },
- "removeFromWhitelist": {
- "message": "حذف کانال از لیست سفید"
- },
"voteOnTime": {
"message": "رأی دهی به یک بخش"
},
- "soFarUHSubmited": {
- "message": "شما تا اینجا، ثبت کرده اید"
- },
- "savedPeopleFrom": {
- "message": "شما دیگران را نجات دادید از "
- },
- "viewLeaderboard": {
- "message": "نمایش لیست امتیاز ها"
- },
"here": {
"message": "اینجا"
},
diff --git a/public/_locales/fi/messages.json b/public/_locales/fi/messages.json
index c7f8f19c..4d21be54 100644
--- a/public/_locales/fi/messages.json
+++ b/public/_locales/fi/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Segmentti Päättyy Nyt"
},
- "noVideoID": {
- "message": "Välilehdeltä ei löytynyt YouTube-videota. Jos olet varma, että tämä on YouTube-välilehti, sulje tämä ponnahdusikkuna ja avaa se uudelleen. Jos sekään ei toimi, yritä ladata välilehti uudelleen."
- },
"success": {
"message": "Onnistui!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Haluatko varmasti lähettää tämän?"
},
- "whitelistChannel": {
- "message": "Lisää kanava valkoiselle listalle"
- },
- "removeFromWhitelist": {
- "message": "Poista kanava valkoiselta listalta"
- },
"voteOnTime": {
"message": "Äänestä Segmenttiä"
},
- "soFarUHSubmited": {
- "message": "Tähän mennessä, olet lähettänyt"
- },
- "savedPeopleFrom": {
- "message": "Olet säästänyt ihmisiltä "
- },
- "viewLeaderboard": {
- "message": "Näytä tulostaulukko"
- },
"here": {
"message": "tässä"
},
- "recordTimesDescription": {
- "message": "Napsauta alla olevaa painiketta, kun segmentti alkaa ja päättyy tallentaaksesi ja lähettääksesi sen tietokantaan."
- },
- "popupHint": {
- "message": "Vihje: Paina puolipisteen näppäintä kun video on kohdennettu ilmoittaaksesi segmentin alku/loppu ja viesti lähetettäväksi. (Tämän voi muuttaa asetuksissa)"
- },
"clearTimesButton": {
"message": "Tyhjennä ajat"
},
@@ -233,12 +209,6 @@
"0": {
"message": "Yhteyden aikakatkaisu. Tarkista internet-yhteytesi. Jos internetyhteytesi toimii, palvelin on todennäköisesti ylikuormittunut tai alhaalla."
},
- "disableSkipping": {
- "message": "Poista Sponsorblock käytöstä"
- },
- "enableSkipping": {
- "message": "Ota SponsorBlock käyttöön"
- },
"yourWork": {
"message": "Sinun työsi",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -267,9 +237,6 @@
"audioNotificationDescription": {
"message": "Ääni-ilmoitus ohittaessa toistaa äänen kun segmentti ohitetaan. Jos asetus on pois päältä (tai automaattinen ohitus on pois käytöstä), ääntä ei soiteta."
},
- "youHaveSkipped": {
- "message": "Olet ohittanut "
- },
"youHaveSaved": {
"message": "Olet säästänyt itseltäsi "
},
@@ -285,12 +252,6 @@
"hoursLower": {
"message": "tuntia"
},
- "youHaveSavedTime": {
- "message": "Olet säästänyt ihmisiltä"
- },
- "youHaveSavedTimeEnd": {
- "message": " heidän elämästään."
- },
"statusReminder": {
"message": "Tarkista palvelimen tila osoitteessa status.sponsor.ajay.app."
},
diff --git a/public/_locales/fr/messages.json b/public/_locales/fr/messages.json
index 871c1bb8..6ea0935a 100644
--- a/public/_locales/fr/messages.json
+++ b/public/_locales/fr/messages.json
@@ -86,7 +86,7 @@
"message": "Fin du segment"
},
"noVideoID": {
- "message": "Ceci n'est pas un onglet YouTube, ou vous avez cliqué trop tôt. \n Si vous êtes sûr(e) que c'est un onglet YouTube, fermez cette fenêtre et réessayez."
+ "message": "Aucune vidéo Youtube trouvée.\nActualisez l'onglet si il est censé y en avoir une."
},
"success": {
"message": "Succès !"
@@ -121,33 +121,12 @@
"submitCheck": {
"message": "Êtes-vous sûr de vouloir soumettre ces segments?"
},
- "whitelistChannel": {
- "message": "Ajouter la chaîne à la liste blanche"
- },
- "removeFromWhitelist": {
- "message": "Supprimer la chaîne de la liste blanche"
- },
"voteOnTime": {
"message": "Voter pour un segment"
},
- "soFarUHSubmited": {
- "message": "Vous avez soumis jusqu'à présent"
- },
- "savedPeopleFrom": {
- "message": "Vous avez permis aux autres de passer "
- },
- "viewLeaderboard": {
- "message": "Consulter le classement"
- },
"here": {
"message": "ici"
},
- "recordTimesDescription": {
- "message": "Cliquez sur le bouton ci-dessous quand le segment commence puis quand il finit pour l'enregistrer et le soumettre à la base de données."
- },
- "popupHint": {
- "message": "Astuce : utilisez la touche point-virgule lorsque la vidéo est sélectionnée pour enregistrer le début et la fin d'un segment commercial; utilisez la touche guillemet pour le soumettre. (Les touches peuvent être modifiées dans les options)"
- },
"clearTimesButton": {
"message": "Supprimer les temps"
},
@@ -157,6 +136,9 @@
"publicStats": {
"message": "Votre pseudo est inscrit dans le classement public pour afficher vos contributions. Le consulter"
},
+ "Username": {
+ "message": "Pseudonyme"
+ },
"setUsername": {
"message": "Choisir un pseudonyme"
},
@@ -252,12 +234,6 @@
"0": {
"message": "Délai de connexion dépassé. Vérifiez votre connexion internet. Si votre connexion internet fonctionne, le serveur est probablement surchargé ou hors service."
},
- "disableSkipping": {
- "message": "Désactiver SponsorBlock"
- },
- "enableSkipping": {
- "message": "Activer SponsorBlock"
- },
"yourWork": {
"message": "Votre travail",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -313,12 +289,6 @@
"hoursLower": {
"message": "heures"
},
- "youHaveSavedTime": {
- "message": "Vous avez économisé"
- },
- "youHaveSavedTimeEnd": {
- "message": " aux autres."
- },
"statusReminder": {
"message": "Vérifiez status.sponsor.ajay.app pour le status du serveur."
},
diff --git a/public/_locales/hr/messages.json b/public/_locales/hr/messages.json
index 65c65e49..1a84577d 100644
--- a/public/_locales/hr/messages.json
+++ b/public/_locales/hr/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Isječak završava sada"
},
- "noVideoID": {
- "message": "YouTube video nije pronađen na ovoj kartici. Ako si siguran da je ovo YouTube kartica, zatvori ovaj okvir i ponovno ga otvori. Ako to ne radi, probaj ponovno učitati karticu."
- },
"success": {
"message": "Uspjeh!"
},
@@ -118,33 +115,12 @@
"submitCheck": {
"message": "Jesi li siguran da želiš unijeti ovo?"
},
- "whitelistChannel": {
- "message": "Dodaj kanal na popis dopuštenih"
- },
- "removeFromWhitelist": {
- "message": "Makni kanal s popisa dopuštenih"
- },
"voteOnTime": {
"message": "Glasaj za isječak"
},
- "soFarUHSubmited": {
- "message": "Do sada si podnio"
- },
- "savedPeopleFrom": {
- "message": "Sačuvao si ljude od "
- },
- "viewLeaderboard": {
- "message": "Pregledaj tablicu bodova"
- },
"here": {
"message": "ovdje"
},
- "recordTimesDescription": {
- "message": "Klikni gumb ispod kada isječak započinje i završava kako bi ga zabilježio i unio u bazu podataka."
- },
- "popupHint": {
- "message": "Savjet: Pritisni tipku točka-zarez dok si fokusiran na video kako bi zabilježio početak i kraj isječka te podnio isječak. (Ovo se može promijeniti u postavkama)"
- },
"clearTimesButton": {
"message": "Očisti vremena"
},
diff --git a/public/_locales/hu/messages.json b/public/_locales/hu/messages.json
index 08d936a6..d85b805e 100644
--- a/public/_locales/hu/messages.json
+++ b/public/_locales/hu/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Szegmens vége"
},
- "noVideoID": {
- "message": "Nem található YouTube videó ezen a fülön. Ha ez biztosan egy YouTube fül, csukja be ezt az ablakot, és nyissa meg újra. Amennyiben nem működik, próbája újratölteni a fület."
- },
"success": {
"message": "Siker!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Biztosan be akarja küldeni?"
},
- "whitelistChannel": {
- "message": "Csatorna engedélyezőlistára helyezése"
- },
- "removeFromWhitelist": {
- "message": "Csatorna eltávolítása az engedélyezőlistáról"
- },
"voteOnTime": {
"message": "Szavazzon a szegmensről"
},
- "soFarUHSubmited": {
- "message": "Eddig beküldött"
- },
- "savedPeopleFrom": {
- "message": "Megspórolt másoknak "
- },
- "viewLeaderboard": {
- "message": "Ranglista megtekintése"
- },
"here": {
"message": "itt"
},
- "recordTimesDescription": {
- "message": "Kattintson az alábbi gombra a szegmens kezdeténél és végénél megjelöléshez, és adja hozzá az adatbázishoz."
- },
- "popupHint": {
- "message": "Tipp: Nyomja le a pontosvessző gombot, hogy megjelölje egy szegmens kezdetét/végét és beküldhesse. (Változtatható a beállításokban)"
- },
"clearTimesButton": {
"message": "Időpontok törlése"
},
@@ -252,12 +228,6 @@
"0": {
"message": "Kapcsolati időtúllépés. Ellenőrizze az internetkapcsolatot. Ha az internet működik, a kiszolgáló valószínűleg túlterhelt vagy leállt."
},
- "disableSkipping": {
- "message": "SponsorBlock kikapcsolása"
- },
- "enableSkipping": {
- "message": "SponsorBlock bekapcsolása"
- },
"yourWork": {
"message": "Te munkád",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "Ez az idő zárójelben jelenik meg az aktuális idő mellett a keresősáv alatt. Megmutatja a videó teljes időtartamát, levonva a szegmenseket. Beletartoznak a csak \"Megjelenítés a keresősávban\" jelöléssel ellátott szegmensek is."
},
- "youHaveSkipped": {
- "message": "Ön átugrott "
- },
"youHaveSaved": {
"message": "Megtakarított magának "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "óra"
},
- "youHaveSavedTime": {
- "message": "Megspórolt másoknak"
- },
- "youHaveSavedTimeEnd": {
- "message": " az életükből."
- },
"statusReminder": {
"message": "A szerver állapotához tekintse meg a status.sponsor.ajay.app oldalt."
},
diff --git a/public/_locales/id/messages.json b/public/_locales/id/messages.json
index 26258a36..82b8a82b 100644
--- a/public/_locales/id/messages.json
+++ b/public/_locales/id/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Segmen Berakhir Sekarang"
},
- "noVideoID": {
- "message": "Tidak ada video YouTube yang ditemukan di tab ini. Jika anda tahu ini merupakan tab YouTube, tutup popup ini dan buka lagi. Jika masih tidak berfungsi, coba muat ulang tab."
- },
"success": {
"message": "Sukses!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Apakah anda yakin ingin mengirim ini?"
},
- "whitelistChannel": {
- "message": "Daftar-putihkan Channel"
- },
- "removeFromWhitelist": {
- "message": "Hapus Channel Dari Daftar Putih"
- },
"voteOnTime": {
"message": "Beri Segmen Vote"
},
- "soFarUHSubmited": {
- "message": "Sejauh ini, anda sudah mengirim"
- },
- "savedPeopleFrom": {
- "message": "Anda sudah menghemat waktu orang dari "
- },
- "viewLeaderboard": {
- "message": "Lihat papan peringkat"
- },
"here": {
"message": "disini"
},
- "recordTimesDescription": {
- "message": "Klik tombol dibawah saat segmen dimulai dan berakhir untuk direkam lalu dikirim ke basis data."
- },
- "popupHint": {
- "message": "Petunjuk: Tekan tombol titik koma saat terfokus pada video untuk melaporkan awal/akhir dari segmen untuk dikirim. (Bisa diganti di pengaturan)"
- },
"clearTimesButton": {
"message": "Hapus Waktu"
},
@@ -252,12 +228,6 @@
"0": {
"message": "Koneksi Timeout. Cek koneksi internet anda. Jika internet anda berfungsi, server mungkin kewalahan atau down."
},
- "disableSkipping": {
- "message": "Nonaktifkan SponsorBlock"
- },
- "enableSkipping": {
- "message": "Aktifkan SponsorBlock"
- },
"yourWork": {
"message": "Hasil Kerja Anda",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "Waktu ini muncul di dalam kurung disamping waktu asli di bilah waktu. Ini menunjukkan durasi total video yang tidak termasuk segmen apapun. Ini termasuk segmen yang ditandai hanya \"Tampilkan Di Bilah Waktu\"."
},
- "youHaveSkipped": {
- "message": "Anda sudah melewati "
- },
"youHaveSaved": {
"message": "Anda sudah menghemat waktu "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "jam"
},
- "youHaveSavedTime": {
- "message": "Anda sudah menghemat waktu orang lain"
- },
- "youHaveSavedTimeEnd": {
- "message": " dari hidup mereka."
- },
"statusReminder": {
"message": "Cek status.sponsor.ajay.app untuk status server."
},
diff --git a/public/_locales/it/messages.json b/public/_locales/it/messages.json
index 75e37262..9b270b0a 100644
--- a/public/_locales/it/messages.json
+++ b/public/_locales/it/messages.json
@@ -86,7 +86,7 @@
"message": "Il Segmento Termina Ora"
},
"noVideoID": {
- "message": "Probabilmente questa non è una scheda di YouTube, oppure hai cliccato troppo presto. \nSe sei sicuro di essere in una scheda di YouTube,\n riapri questo popup."
+ "message": "Nessun video YouTube trovato.\nSe questo non è corretto, ricarica la scheda."
},
"success": {
"message": "Successo!"
@@ -121,32 +121,30 @@
"submitCheck": {
"message": "Sei sicuro di volerlo inviare?"
},
- "whitelistChannel": {
- "message": "Aggiungi Canale alla Whitelist"
- },
- "removeFromWhitelist": {
- "message": "Rimuovi Canale dalla Whitelist"
- },
"voteOnTime": {
"message": "Vota un Segmento"
},
- "soFarUHSubmited": {
- "message": "Fino ad ora hai inviato"
+ "Submissions": {
+ "message": "Iscrizioni"
},
"savedPeopleFrom": {
"message": "Hai salvato le persone da "
},
"viewLeaderboard": {
- "message": "Guarda la classifica"
+ "message": "Classifica"
},
"here": {
"message": "qui"
},
"recordTimesDescription": {
- "message": "Premi il pulsante in basso quando il segmento inizia e finisce per registrarlo ed inviarlo al database."
+ "message": "Invia"
+ },
+ "submissionEditHint": {
+ "message": "La modifica della sezione comparirà dopo aver cliccato Iscriviti",
+ "description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
- "message": "Suggerimento: Premi il pulsante 'punto e virgola' mentre sei concentrato su un video, per segnalare l'inizio e la fine di un segmento e la relativa citazione da inviare. (Questo può essere modificato nelle opzioni)"
+ "message": "Suggerimento: Puoi configurare combinazioni di tasti per l'inserimento nelle opzioni"
},
"clearTimesButton": {
"message": "Cancella Minutaggi"
@@ -157,6 +155,9 @@
"publicStats": {
"message": "Viene utilizzato nelle pagine delle statistiche pubbliche che mostrano quanto hai contribuito. Vedi"
},
+ "Username": {
+ "message": "Nome Utente"
+ },
"setUsername": {
"message": "Imposta Username"
},
@@ -206,13 +207,13 @@
"message": "Ricerca tramite prefisso hash"
},
"whatQueryByHashPrefix": {
- "message": "Invece di richiedere i segmenti dal server usando il videoID, i primi 4 caratteri dell'hash del videoID sono inviati. Questo server reinvierà i dati per tutti i video con hash simili."
+ "message": "Invece di richiedere segmenti dal server utilizzando l'Id video, vengono inviati i primi 4 caratteri dell'hash dell'ID video. Questo server invierà i dati per tutti i video con hash simili."
},
"enableRefetchWhenNotFound": {
- "message": "Riprendi Segmenti Sui Nuovi Video"
+ "message": "Ricarica I Segmenti Su Nuovi Video"
},
"whatRefetchWhenNotFound": {
- "message": "Se il video è nuovo e non ci sono segmenti al suo interno, continuerà a recuperare ogni qualche minuto mentre lo guardi."
+ "message": "Se il video è nuovo, e non risultano esserci segmenti, questi continueranno ad essere ricaricati dopo pochi minuti mentre guardi il video."
},
"showNotice": {
"message": "Mostra di Nuovo l'Avviso"
@@ -253,10 +254,10 @@
"message": "Timeout della connessione. Controlla la tua connessione a Internet. Se internet sta funzionando, il server è probabilmente sovraccarico oppure giù."
},
"disableSkipping": {
- "message": "Disabilita SponsorBlock"
+ "message": "Salta abilitato"
},
"enableSkipping": {
- "message": "Abilita SponsorBlock"
+ "message": "Salta disabilitato"
},
"yourWork": {
"message": "Il Tuo Lavoro",
@@ -314,10 +315,10 @@
"message": "ore"
},
"youHaveSavedTime": {
- "message": "Hai salvato alle persone"
+ "message": "Hai salvato le persone"
},
"youHaveSavedTimeEnd": {
- "message": " delle loro vite."
+ "message": " delle loro vite"
},
"statusReminder": {
"message": "Controlla status.sponsor.ajay.app per lo stato del server."
@@ -634,5 +635,8 @@
},
"unsubmittedWarningDescription": {
"message": "Invia una notifica quando lasci un video con segmenti non caricati"
+ },
+ "help": {
+ "message": "Aiuto"
}
}
diff --git a/public/_locales/ja/messages.json b/public/_locales/ja/messages.json
index 1f18ef46..d55ab42d 100644
--- a/public/_locales/ja/messages.json
+++ b/public/_locales/ja/messages.json
@@ -39,12 +39,6 @@
"closePopup": {
"message": "ポップアップを閉じる"
},
- "removeFromWhitelist": {
- "message": "ホワイトリストからチャンネルを削除"
- },
- "viewLeaderboard": {
- "message": "リーダーボードを表示"
- },
"here": {
"message": "こちら"
},
@@ -71,12 +65,6 @@
"message": "ソースコード",
"description": "Used on Firefox Store Page"
},
- "disableSkipping": {
- "message": "SponsorBlock を無効にする"
- },
- "enableSkipping": {
- "message": "SponsorBlock を有効にする"
- },
"errorCode": {
"message": "エラーコード: "
},
@@ -98,9 +86,6 @@
"audioNotification": {
"message": "オーディオ通知をスキップ"
},
- "youHaveSkipped": {
- "message": "スキップしました "
- },
"minLower": {
"message": "分"
},
diff --git a/public/_locales/ko/messages.json b/public/_locales/ko/messages.json
index 31b15b40..707c30d8 100644
--- a/public/_locales/ko/messages.json
+++ b/public/_locales/ko/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "광고 구간 끝"
},
- "noVideoID": {
- "message": "현재 페이지에서 YouTube 영상을 찾지 못하였습니다. 이 페이지에 YouTube 영상이 있는 경우, 이 팝업을 닫고 다시 열어주세요. 그래도 이 팝업이 바뀌지 않는 경우, 페이지를 새로고침하세요."
- },
"success": {
"message": "성공!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "정말로 제출하시겠습니까?"
},
- "whitelistChannel": {
- "message": "채널을 화이트리스트에 추가하기"
- },
- "removeFromWhitelist": {
- "message": "채널을 화이트리스트에서 삭제하기"
- },
"voteOnTime": {
"message": "구간 투표"
},
- "soFarUHSubmited": {
- "message": "지금까지 제출한 구간:"
- },
- "savedPeopleFrom": {
- "message": "사람을 다음에서 구했습니다 "
- },
- "viewLeaderboard": {
- "message": "리더보드 보기"
- },
"here": {
"message": "링크"
},
- "recordTimesDescription": {
- "message": "구간이 시작 및 종료될 때 아래의 버튼을 눌러 구간을 기록하고 데이터베이스에 제출하세요."
- },
- "popupHint": {
- "message": "참고: 영상 내에서 쉼표 키를 눌러서 초점을 맞추어서 시작/끝을 제보하고 따옴표로 제출하세요. (설정에서 변경 가능)"
- },
"clearTimesButton": {
"message": "시간 초기화"
},
@@ -252,12 +228,6 @@
"0": {
"message": "연결 타임아웃 오류입니다. 인터넷이 연결되어 있는지 확인해주세요. 인터넷이 연결되어 있는 경우, 서버가 과부하되어 있거나 다운되어 있어서 오류가 발생하는 것일 수도 있습니다."
},
- "disableSkipping": {
- "message": "SponsorBlock 비활성화"
- },
- "enableSkipping": {
- "message": "SponsorBlock 활성화"
- },
"yourWork": {
"message": "지금까지 한 일",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "이 시간은 탐색 막대 아래의 현재 시간 옆에 있는 괄호 안에 표시되며 부분을 제외한 총 동영상 길이를 보여줍니다. 여기에는 \"슬라이드바에 표시\"로만 표시된 부분도 포함됩니다."
},
- "youHaveSkipped": {
- "message": "지금까지 스킵한 구간: "
- },
"youHaveSaved": {
"message": "지금까지 절약한 시간: "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "시간"
},
- "youHaveSavedTime": {
- "message": "사람들"
- },
- "youHaveSavedTimeEnd": {
- "message": "의 시간을 아꼈습니다."
- },
"statusReminder": {
"message": "Status.sponsor.ajay.app 사이트를 확인하여 서버 상태를 확인하세요."
},
diff --git a/public/_locales/ml/messages.json b/public/_locales/ml/messages.json
index f53fc807..89bba4c9 100644
--- a/public/_locales/ml/messages.json
+++ b/public/_locales/ml/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "സെഗ്മെന്റ് ഇപ്പോൾ അവസാനിക്കുന്നു"
},
- "noVideoID": {
- "message": "ഈ ടാബിൽ YouTube വീഡിയോകളൊന്നും കണ്ടെത്തിയില്ല. ഇതൊരു YouTube ടാബാണെന്ന് നിങ്ങൾക്കറിയാമെങ്കിൽ, ഈ പോപ്പ്അപ്പ് അടച്ച് വീണ്ടും തുറക്കുക. അത് പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, ടാബ് വീണ്ടും ലോഡുചെയ്യാൻ ശ്രമിക്കുക."
- },
"success": {
"message": "വിജയം!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "ഇത് സമർപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?"
},
- "whitelistChannel": {
- "message": "വൈറ്റ്‌ലിസ്റ്റ് ചാനൽ"
- },
- "removeFromWhitelist": {
- "message": "വൈറ്റ്‌ലിസ്റ്റിൽ നിന്ന് ചാനൽ നീക്കംചെയ്യുക"
- },
"voteOnTime": {
"message": "ഒരു സെഗ്‌മെന്റിൽ വോട്ടുചെയ്യുക"
},
- "soFarUHSubmited": {
- "message": "ഇതുവരെ, നിങ്ങൾ സമർപ്പിച്ചു"
- },
- "savedPeopleFrom": {
- "message": "നിങ്ങൾ ആളുകളെ രക്ഷിച്ചു "
- },
- "viewLeaderboard": {
- "message": "ലീഡർബോർഡ് കാണുക"
- },
"here": {
"message": "ഇവിടെ"
},
- "recordTimesDescription": {
- "message": "സെഗ്‌മെന്റ് ആരംഭിച്ച് അവസാനിക്കുമ്പോൾ ചുവടെയുള്ള ബട്ടൺ ക്ലിക്കുചെയ്‌ത് റെക്കോർഡുചെയ്‌ത് ഡാറ്റാബേസിൽ സമർപ്പിക്കുക."
- },
- "popupHint": {
- "message": "സൂചന: ഒരു സെഗ്‌മെന്റിന്റെ ആരംഭം / അവസാനം റിപ്പോർട്ടുചെയ്യുന്നതിന് ഒരു വീഡിയോയിൽ ഫോക്കസ് ചെയ്യുമ്പോൾ അർദ്ധവിരാമ കീ അമർത്തുക, സമർപ്പിക്കാനുള്ള ഉദ്ധരണി. (ഓപ്ഷനുകളിൽ ഇത് മാറ്റാം)"
- },
"clearTimesButton": {
"message": "ടൈംസ് മായ്‌ക്കുക"
},
@@ -252,12 +228,6 @@
"0": {
"message": "കണക്ഷൻ കാലഹരണപ്പെട്ടു. നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക. നിങ്ങളുടെ ഇൻറർനെറ്റ് പ്രവർത്തിക്കുന്നുണ്ടെങ്കിൽ, സെർവർ ഓവർലോഡ് അല്ലെങ്കിൽ ഡ. ൺ ആയിരിക്കാം."
},
- "disableSkipping": {
- "message": "സ്പോൺസർബ്ലോക്ക് അപ്രാപ്തമാക്കുക"
- },
- "enableSkipping": {
- "message": "സ്പോൺസർബ്ലോക്ക് പ്രാപ്തമാക്കുക"
- },
"yourWork": {
"message": "നിങ്ങളുടെ ജോലി",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "സീക്ക്ബാറിന് താഴെയുള്ള നിലവിലെ സമയത്തിന് അടുത്തുള്ള ബ്രാക്കറ്റുകളിൽ ഈ സമയം ദൃശ്യമാകുന്നു. ഏത് സെഗ്‌മെന്റുകളുടെയും മൈനസ് മൊത്തം വീഡിയോ ദൈർഘ്യം ഇത് കാണിക്കുന്നു. \"സീക്ക്ബാറിൽ കാണിക്കുക\" എന്ന് മാത്രം അടയാളപ്പെടുത്തിയ സെഗ്‌മെന്റുകൾ ഇതിൽ ഉൾപ്പെടുന്നു."
},
- "youHaveSkipped": {
- "message": "നിങ്ങൾ ഒഴിവാക്കി "
- },
"youHaveSaved": {
"message": "നിങ്ങൾ സ്വയം രക്ഷിച്ചു "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "മണിക്കൂറുകൾ"
},
- "youHaveSavedTime": {
- "message": "നിങ്ങൾ ആളുകളെ രക്ഷിച്ചു"
- },
- "youHaveSavedTimeEnd": {
- "message": " അവരുടെ ജീവിതത്തിന്റെ."
- },
"statusReminder": {
"message": "സെർവർ നിലയ്ക്കായി status.sponsor.ajay.app പരിശോധിക്കുക."
},
diff --git a/public/_locales/ms/messages.json b/public/_locales/ms/messages.json
index da72ba94..b0c946f4 100644
--- a/public/_locales/ms/messages.json
+++ b/public/_locales/ms/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Segmen Berakhir Sekarang"
},
- "noVideoID": {
- "message": "Tidak terdapat video YouTube di tab ini. Sekiranya anda tahu ini adalah tab YouTube, tutup pop timbul ini dan buka lagi. Sekiranya tidak berjaya, cuba muat semula tab."
- },
"success": {
"message": "Berjaya!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Adakah anda pasti mahu menghantarnya?"
},
- "whitelistChannel": {
- "message": "Saluran Senarai Putih"
- },
- "removeFromWhitelist": {
- "message": "Alih keluar Saluran Dari Senarai Putih"
- },
"voteOnTime": {
"message": "Undi Segmen"
},
- "soFarUHSubmited": {
- "message": "Setakat ini, anda telah menghantar"
- },
- "savedPeopleFrom": {
- "message": "Anda telah menyelamatkan orang dari "
- },
- "viewLeaderboard": {
- "message": "Lihat papan pendahulu"
- },
"here": {
"message": "di sini"
},
- "recordTimesDescription": {
- "message": "Klik butang di bawah apabila segmen bermula dan berakhir untuk merekod dan menyerahkannya ke pangkalan data."
- },
- "popupHint": {
- "message": "Petunjuk: Tekan kekunci titik koma sambil fokus pada video untuk melaporkan permulaan / akhir segmen dan petikan untuk dihantar. (Ini boleh diubah dalam pilihan)"
- },
"clearTimesButton": {
"message": "Jelas Masa"
},
@@ -252,12 +228,6 @@
"0": {
"message": "Masa sambungan telah tamat. Periksa sambungan internet anda. Sekiranya internet anda berfungsi, pelayan mungkin berlebihan atau tidak berfungsi."
},
- "disableSkipping": {
- "message": "Lumpuhkan SponsorBlock"
- },
- "enableSkipping": {
- "message": "Dayakan SponsorBlock"
- },
"yourWork": {
"message": "Kerja awak",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "Kali ini muncul dalam tanda kurung di sebelah waktu semasa di bawah bar carian. Ini menunjukkan jumlah durasi video tolak segmen mana pun. Ini merangkumi segmen yang ditandai sebagai \"Show In Seekbar\" sahaja."
},
- "youHaveSkipped": {
- "message": "Anda telah melangkau "
- },
"youHaveSaved": {
"message": "Anda telah menyelamatkan diri "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "jam"
},
- "youHaveSavedTime": {
- "message": "Anda telah menyelamatkan orang"
- },
- "youHaveSavedTimeEnd": {
- "message": " kehidupan mereka."
- },
"statusReminder": {
"message": "Periksa status.sponsor.ajay.app untuk status pelayan."
},
diff --git a/public/_locales/nl/messages.json b/public/_locales/nl/messages.json
index 8d1132ea..94821d0d 100644
--- a/public/_locales/nl/messages.json
+++ b/public/_locales/nl/messages.json
@@ -86,7 +86,7 @@
"message": "Segment eindigt nu"
},
"noVideoID": {
- "message": "Er is geen YouTube-video gevonden op dit tabblad. Als u weet dat dit een YouTube-tabblad is, sluit dan deze pop-up en open hem opnieuw. Als dat niet werkt, probeer dan het tabblad opnieuw te laden."
+ "message": "Geen YouTube-video gevonden.\nVernieuw het tabblad als dit onjuist is."
},
"success": {
"message": "Gelukt!"
@@ -130,23 +130,27 @@
"voteOnTime": {
"message": "Stemmen op een segment"
},
- "soFarUHSubmited": {
- "message": "Tot nu toe heeft u ingediend:"
+ "Submissions": {
+ "message": "Inzendingen"
},
"savedPeopleFrom": {
- "message": "U heeft mensen geholpen met het vermijden van "
+ "message": "U heeft mensen gered van "
},
"viewLeaderboard": {
- "message": "Bekijk de ranglijst"
+ "message": "Ranglijst"
},
"here": {
"message": "hier"
},
"recordTimesDescription": {
- "message": "Klik op de knop hieronder wanneer het segment begint en eindigt om het te registreren en te verzenden naar de database."
+ "message": "Indienen"
+ },
+ "submissionEditHint": {
+ "message": "Sectiebewerking verschijnt nadat u op verzenden hebt geklikt",
+ "description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
- "message": "Tip: druk op de puntkomma-toets terwijl een video in focus is om het begin/einde van een segment te registreren en op de aanhalingsteken-toets om het in te dienen (dit kan worden gewijzigd in de opties)."
+ "message": "Tip: u kunt sneltoetsen voor het indienen instellen in de opties"
},
"clearTimesButton": {
"message": "Tijdstippen wissen"
@@ -157,6 +161,9 @@
"publicStats": {
"message": "Dit wordt gebruikt op de publieke statistiekenpagina om te laten zien hoeveel u heeft bijgedragen. Bekijk het"
},
+ "Username": {
+ "message": "Gebruikersnaam"
+ },
"setUsername": {
"message": "Gebruikersnaam instellen"
},
@@ -253,10 +260,10 @@
"message": "Time-out van de verbinding. Controleer uw internetverbinding. Als uw internet werkt, is de server waarschijnlijk overbelast of offline."
},
"disableSkipping": {
- "message": "SponsorBlock uitschakelen"
+ "message": "Overslaan is ingeschakeld"
},
"enableSkipping": {
- "message": "SponsorBlock inschakelen"
+ "message": "Overslaan is uitgeschakeld"
},
"yourWork": {
"message": "Uw werk",
@@ -314,10 +321,10 @@
"message": "uren"
},
"youHaveSavedTime": {
- "message": "U heeft andere mensen bespaard:"
+ "message": "U heeft mensen bespaard:"
},
"youHaveSavedTimeEnd": {
- "message": " van hun leven."
+ "message": " van hun leven"
},
"statusReminder": {
"message": "Controleer status.sponsor.ajay.app voor de serverstatus."
@@ -634,5 +641,8 @@
},
"unsubmittedWarningDescription": {
"message": "Een melding sturen wanneer u een video verlaat met segmenten die niet zijn geüpload"
+ },
+ "help": {
+ "message": "Help"
}
}
diff --git a/public/_locales/pl/messages.json b/public/_locales/pl/messages.json
index f3d874e6..3ca776e6 100644
--- a/public/_locales/pl/messages.json
+++ b/public/_locales/pl/messages.json
@@ -86,7 +86,7 @@
"message": "Koniec segmentu"
},
"noVideoID": {
- "message": "Nie znaleziono filmu na tej karcie. Jeśli wiesz, że to karta YouTube'a, zamknij to okienko i otwórz je ponownie. Jeśli to nie zadziała, spróbuj odświeżyć stronę."
+ "message": "Nie znaleziono filmu YouTube.\nJeśli jest to niepoprawne, odśwież stronę."
},
"success": {
"message": "Sukces!"
@@ -130,23 +130,27 @@
"voteOnTime": {
"message": "Oceń segment"
},
- "soFarUHSubmited": {
- "message": "Do tej pory zgłosiłeś"
+ "Submissions": {
+ "message": "Zgłoszenia"
},
"savedPeopleFrom": {
- "message": "Ocaliłeś ludzi przed "
+ "message": "Oszczędziłeś innym "
},
"viewLeaderboard": {
- "message": "Zobacz ranking użytkowników"
+ "message": "Ranking"
},
"here": {
"message": "tutaj"
},
"recordTimesDescription": {
- "message": "Kliknij przycisk poniżej, gdy segment zaczyna się i kończy, by oznaczyć go i przesłać do bazy danych."
+ "message": "Wyślij"
+ },
+ "submissionEditHint": {
+ "message": "Edycja sekcji pojawi się po kliknięciu wyślij",
+ "description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
- "message": "Podpowiedź: Wciśnij średnik, koncentrując się na filmie, aby oznaczyć początek/koniec segmentu, i cudzysłów, by go wysłać. (Klawisze można zmienić w opcjach)"
+ "message": "Wskazówka: Możesz skonfigurować skróty klawiszowe do zatwierdzania w opcjach"
},
"clearTimesButton": {
"message": "Usuń czasy"
@@ -157,6 +161,9 @@
"publicStats": {
"message": "Ten dane są używane na naszej stronie żeby pokazać twój wkład. Zobacz to"
},
+ "Username": {
+ "message": "Nazwa użytkownika"
+ },
"setUsername": {
"message": "Ustaw nazwę użytkownika"
},
@@ -253,10 +260,10 @@
"message": "Połączenie przerwane z powodu braku odpowiedzi. Sprawdź swoje połączenie z internetem. Jeśli wszystko z nim w porządku oznacza to, że serwer jest prawdopodobnie przeciążony lub nie działa."
},
"disableSkipping": {
- "message": "Wyłącz SponsorBlock"
+ "message": "Pomijanie jest włączone"
},
"enableSkipping": {
- "message": "Włącz SponsorBlock"
+ "message": "Pomijanie jest wyłączone"
},
"yourWork": {
"message": "Twój wkład",
@@ -317,7 +324,7 @@
"message": "Oszczędziłeś ludziom"
},
"youHaveSavedTimeEnd": {
- "message": " czasu."
+ "message": " ich życia"
},
"statusReminder": {
"message": "Sprawdź status serwera na status.sponsor.ajay.app"
@@ -634,5 +641,8 @@
},
"unsubmittedWarningDescription": {
"message": "Wyślij powiadomienie po opuszczeniu filmu z segmentami, które nie zostały przesłane"
+ },
+ "help": {
+ "message": "Pomoc"
}
}
diff --git a/public/_locales/pt_BR/messages.json b/public/_locales/pt_BR/messages.json
index d9577277..56f1e7b5 100644
--- a/public/_locales/pt_BR/messages.json
+++ b/public/_locales/pt_BR/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "O segmento termina agora"
},
- "noVideoID": {
- "message": "Nenhum vídeo do YouTube foi encontrado nesta aba. Se você sabe que esta é uma aba do YouTube, feche este pop-up e abra-o novamente. Se isso não funcionar, tente recarregar a aba."
- },
"success": {
"message": "Sucesso!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Você tem certeza que deseja enviar isto?"
},
- "whitelistChannel": {
- "message": "Colocar canal na lista branca"
- },
- "removeFromWhitelist": {
- "message": "Remover canal da lista branca"
- },
"voteOnTime": {
"message": "Votar Em Um Segmento"
},
- "soFarUHSubmited": {
- "message": "Até agora, você já enviou"
- },
- "savedPeopleFrom": {
- "message": "Poupaste a outros de "
- },
- "viewLeaderboard": {
- "message": "Ver a leaderboard"
- },
"here": {
"message": "aqui"
},
- "recordTimesDescription": {
- "message": "Clique no botão abaixo quando o segmento começa e termina para gravar e enviá-lo para o banco de dados."
- },
- "popupHint": {
- "message": "Dica: Aperte a tecla ponto e vírgula com a janela focada em um vídeo para reportar o começo/fim de um segmento e aspas para enviar. (Esta configuração pode ser mudada nas opções)"
- },
"clearTimesButton": {
"message": "Limpar Intervalos"
},
@@ -252,12 +228,6 @@
"0": {
"message": "Tempo limite de conexão excedida. Cheque a sua conexão de internet. Se a sua internet estiver funcionando, o servidor está sobrecarregado ou fora do ar."
},
- "disableSkipping": {
- "message": "Desativar SponsorBlock"
- },
- "enableSkipping": {
- "message": "Ativar SponsorBlock"
- },
"yourWork": {
"message": "Suas submissões",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "Esta vez aparece em parênteses ao lado da hora atual abaixo da barra de procura. Isto mostra a duração total do vídeo menos qualquer segmento. Isto inclui segmentos marcados como apenas \"Mostrar em Seekbar\"."
},
- "youHaveSkipped": {
- "message": "Você pulou "
- },
"youHaveSaved": {
"message": "Você poupou "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "horas"
},
- "youHaveSavedTime": {
- "message": "Você poupou outros"
- },
- "youHaveSavedTimeEnd": {
- "message": " de suas vidas."
- },
"statusReminder": {
"message": "Verifique status.sponsor.ajay.app para o status do servidor."
},
diff --git a/public/_locales/pt_PT/messages.json b/public/_locales/pt_PT/messages.json
index 10057e0b..5fe21149 100644
--- a/public/_locales/pt_PT/messages.json
+++ b/public/_locales/pt_PT/messages.json
@@ -54,9 +54,6 @@
"Unknown": {
"message": "Erro ao enviar os seus segmentos, tente novamente mais tarde."
},
- "noVideoID": {
- "message": "Isto provavelmente não é uma tab do YouTube, ou pode ter clicado muito cedo. \n Se sabe que é uma tab do YouTube,\n feche este popup e abra de novo."
- },
"success": {
"message": "Sucesso!"
},
@@ -72,21 +69,6 @@
"submitCheck": {
"message": "Tem a certeza que pretende submeter?"
},
- "whitelistChannel": {
- "message": "Meter canal na Whitelist"
- },
- "removeFromWhitelist": {
- "message": "Remover canal da Whitelist"
- },
- "soFarUHSubmited": {
- "message": "Até agora submeteu"
- },
- "savedPeopleFrom": {
- "message": "Poupaste a outros de "
- },
- "viewLeaderboard": {
- "message": "Ver a leaderboard"
- },
"here": {
"message": "aqui"
},
diff --git a/public/_locales/ro/messages.json b/public/_locales/ro/messages.json
index 69ce6728..ed4b270c 100644
--- a/public/_locales/ro/messages.json
+++ b/public/_locales/ro/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Segmentul se termină acum"
},
- "noVideoID": {
- "message": "Nu există niciun videoclip YouTube în aceast tab. Dacă știți că acesta este un tab YouTube, închideți acest popup și deschideți-l din nou. Daca nici asta nu merge, încercați să reîncărcați pagina."
- },
"success": {
"message": "Succes!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Sunteți sigur că doriți să trimiteți asta?"
},
- "whitelistChannel": {
- "message": "Adaugă Canalul La Excepții"
- },
- "removeFromWhitelist": {
- "message": "Șterge Canalul De La Excepții"
- },
"voteOnTime": {
"message": "Votează pe un Segment"
},
- "soFarUHSubmited": {
- "message": "Până acum, ai trimis"
- },
- "savedPeopleFrom": {
- "message": "Ai salvat alte persoane de la "
- },
- "viewLeaderboard": {
- "message": "Vezi clasamentul"
- },
"here": {
"message": "aici"
},
- "recordTimesDescription": {
- "message": "Faceţi clic pe butonul de mai jos atunci când segmentul începe şi se termină pentru a înregistra şi trimite-l în baza de date."
- },
- "popupHint": {
- "message": "Indiciu: Apasă pe tasta punct și virgulă în timp ce ești centrat pe videoclip pentru a raporta începutul/finalul unei sponsorizări și apasă pe ghilimele pentru a o trimite. (Acest lucru poate fi schimbat din opțiuni)"
- },
"clearTimesButton": {
"message": "Șterge Timpii"
},
@@ -227,12 +203,6 @@
"0": {
"message": "Eroare de Conexiune. Verifică-ți conexiunea la internet. Daca internetul functionează, serverul este probabil supraîncărcat sau a căzut."
},
- "disableSkipping": {
- "message": "Dezactivează SponsorBlock"
- },
- "enableSkipping": {
- "message": "Activează SponsorBlock"
- },
"yourWork": {
"message": "Munca Ta",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -246,9 +216,6 @@
"skip": {
"message": "Sari"
},
- "skip_category": {
- "message": "Sari {0}?"
- },
"skipped": {
"message": "Sărit"
},
@@ -267,9 +234,6 @@
"showTimeWithSkipsDescription": {
"message": "Acest timp apare în paranteze lângă ora curentă sub bara de progres. Aceasta arată durata totală a videoclipului minus orice segment. Aceasta include segmente marcate doar ca \"Afișare în Seekbar\"."
},
- "youHaveSkipped": {
- "message": "Ai sărit peste "
- },
"youHaveSaved": {
"message": "V-ați salvat "
},
@@ -285,12 +249,6 @@
"hoursLower": {
"message": "ore"
},
- "youHaveSavedTime": {
- "message": "Ai salvat alte persoane"
- },
- "youHaveSavedTimeEnd": {
- "message": " din viața lor."
- },
"statusReminder": {
"message": "Verificați status.sponsor.ajay.app pentru starea serverului."
},
diff --git a/public/_locales/ru/messages.json b/public/_locales/ru/messages.json
index 502b8692..0f901b3b 100644
--- a/public/_locales/ru/messages.json
+++ b/public/_locales/ru/messages.json
@@ -86,7 +86,7 @@
"message": "Сегмент заканчивается здесь"
},
"noVideoID": {
- "message": "Видео YouTube не найдено на этой вкладке. Если вы уверены, что это вкладка YouTube, закройте это всплывающее окно и откройте его снова. Если это не поможет, перезагрузите вкладку."
+ "message": "Видео YouTube не найдено.\nЕсли это не так, обновите вкладку."
},
"success": {
"message": "Успех!"
@@ -121,32 +121,30 @@
"submitCheck": {
"message": "Вы уверены, что хотите отправить эту информацию?"
},
- "whitelistChannel": {
- "message": "Добавить канал в белый список"
- },
- "removeFromWhitelist": {
- "message": "Удалить канал из белого списка"
- },
"voteOnTime": {
"message": "Проголосовать за сегмент"
},
- "soFarUHSubmited": {
- "message": "На данный момент Вы отправили"
+ "Submissions": {
+ "message": "Отправлено сегментов"
},
"savedPeopleFrom": {
"message": "Вы помогли людям пропустить "
},
"viewLeaderboard": {
- "message": "Посмотреть доску почёта"
+ "message": "Доска почёта"
},
"here": {
"message": "здесь"
},
"recordTimesDescription": {
- "message": "Нажмите кнопку ниже, когда сегмент начинается и заканчивается, чтобы записать и отправить его в базу."
+ "message": "Отправить"
+ },
+ "submissionEditHint": {
+ "message": "Редактирование сегментов появится после нажатия на кнопку \"Отправить\"",
+ "description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
- "message": "Подсказка: нажмите на кнопку \"Ж\" во время воспроизведения, чтобы сообщить о начале/конце сегмента, и \"Э\", чтобы отправить его. (Это можно изменить в настройках)"
+ "message": "Подсказка: Вы можете настроить сочетания клавиш для отправки в опциях"
},
"clearTimesButton": {
"message": "Очистить время"
@@ -157,6 +155,9 @@
"publicStats": {
"message": "Оно используется на публичной странице статистики, чтобы показать Ваш вклад. Её можно посмотреть "
},
+ "Username": {
+ "message": "Имя пользователя"
+ },
"setUsername": {
"message": "Установить имя пользователя"
},
@@ -253,10 +254,10 @@
"message": "Таймаут подключения. Проверьте ваше соединение с интернетом. Если ваш интернет работает, сервер, скорее всего, перегружен или лежит."
},
"disableSkipping": {
- "message": "Отключить SponsorBlock"
+ "message": "Пропуск включен"
},
"enableSkipping": {
- "message": "Включить SponsorBlock"
+ "message": "Пропуск выключен"
},
"yourWork": {
"message": "Ваша работа",
@@ -317,7 +318,7 @@
"message": "Вы сэкономили людям"
},
"youHaveSavedTimeEnd": {
- "message": " их жизней."
+ "message": " их жизней"
},
"statusReminder": {
"message": "Смотрите состояние сервера на status.sponsor.ajay.app."
@@ -634,5 +635,8 @@
},
"unsubmittedWarningDescription": {
"message": "Отправлять уведомление, когда вы уходите со страницы видео, сегменты к которому Вы не отправили"
+ },
+ "help": {
+ "message": "Помощь"
}
}
diff --git a/public/_locales/sk/messages.json b/public/_locales/sk/messages.json
index e05c256a..5af1c183 100644
--- a/public/_locales/sk/messages.json
+++ b/public/_locales/sk/messages.json
@@ -101,12 +101,6 @@
"0": {
"message": "Spojenie vypršalo. Skontrolujte svoje internetové pripojenie. Ak váš internet funguje, server je pravdepodobne preťažený alebo nefunkčný."
},
- "disableSkipping": {
- "message": "Vypnúť SponsorBlock"
- },
- "enableSkipping": {
- "message": "Zapnúť SponsorBlock"
- },
"yourWork": {
"message": "Vaša Práca",
"description": "Used to describe the section that will show you the statistics from your submissions."
diff --git a/public/_locales/sv/messages.json b/public/_locales/sv/messages.json
index 341a36a1..4aedc8ed 100644
--- a/public/_locales/sv/messages.json
+++ b/public/_locales/sv/messages.json
@@ -86,7 +86,7 @@
"message": "Segmentet slutar nu"
},
"noVideoID": {
- "message": "Kunde inte hitta någon YouTube-video i denna tab. Om du är säker på att detta är en Youtube-flik, stäng den här rutan och öppna den igen. Ladda om fliken om inte det funkar."
+ "message": "Hittade ingen YouTube-video.\nUppdatera fliken om detta är felaktigt."
},
"success": {
"message": "Lyckades!"
@@ -121,32 +121,20 @@
"submitCheck": {
"message": "Är du säker på att du vill rapportera detta?"
},
- "whitelistChannel": {
- "message": "Vitlista Kanal"
- },
- "removeFromWhitelist": {
- "message": "Ta bort kanal från vitlistan"
- },
"voteOnTime": {
"message": "Rösta på ett segment"
},
- "soFarUHSubmited": {
- "message": "Hitills har du rapporterat"
- },
"savedPeopleFrom": {
- "message": "Du har sparat andra "
+ "message": "Du har sparat andra från "
},
"viewLeaderboard": {
- "message": "Se leaderboarden"
+ "message": "Topplista"
},
"here": {
"message": "här"
},
"recordTimesDescription": {
- "message": "Klicka på knappen nedan när segmentet startar och slutar för att spela in och skicka in det till databasen."
- },
- "popupHint": {
- "message": "Tips: Tryck på tangenten semikolon medan du fokuserar på en video för att rapportera början/slutet av ett segment för att skicka in. (Detta kan ändras i alternativen)"
+ "message": "Skicka"
},
"clearTimesButton": {
"message": "Rensa Tider"
@@ -157,6 +145,9 @@
"publicStats": {
"message": "Detta kommer att användas på den publika statistiksidan för att visa hur mycket du har bidragit. Spana in den"
},
+ "Username": {
+ "message": "Användarnamn"
+ },
"setUsername": {
"message": "Ange Användarnamn"
},
@@ -244,10 +235,10 @@
"message": "Anslutningsfel. Se över din internetanslutning. Om du kan komma åt internet så är servern förmodligen överbelastad eller nere."
},
"disableSkipping": {
- "message": "Avaktivera SponsorBlock"
+ "message": "Hoppa över är aktiverat"
},
"enableSkipping": {
- "message": "Aktivera SponsorBlock"
+ "message": "Hoppa över är inaktiverat"
},
"yourWork": {
"message": "Ditt Bidrag",
@@ -308,7 +299,7 @@
"message": "Du har sparat andra"
},
"youHaveSavedTimeEnd": {
- "message": " av deras liv."
+ "message": " av deras liv"
},
"statusReminder": {
"message": "Gå till status.sponsor.ajay.app för serverstatus."
@@ -592,5 +583,8 @@
},
"unsubmittedWarningDescription": {
"message": "Visa en avisering när du lämnar en video med segment som inte har laddats upp"
+ },
+ "help": {
+ "message": "Hjälp"
}
}
diff --git a/public/_locales/ta/messages.json b/public/_locales/ta/messages.json
index a45725bc..704cf680 100644
--- a/public/_locales/ta/messages.json
+++ b/public/_locales/ta/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "பிரிவு இப்போது முடிகிறது"
},
- "noVideoID": {
- "message": "இந்த தாவலில் YouTube வீடியோ எதுவும் இல்லை. இது ஒரு YouTube தாவல் என்று உங்களுக்குத் தெரிந்தால், இந்த பாப்அப்பை மூடிவிட்டு மீண்டும் திறக்கவும். அது வேலை செய்யவில்லை என்றால், தாவலை மீண்டும் ஏற்ற முயற்சிக்கவும்."
- },
"success": {
"message": "வெற்றி!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "இதை நிச்சயமாக சமர்ப்பிக்க விரும்புகிறீர்களா?"
},
- "whitelistChannel": {
- "message": "அனுமதிப்பட்டியல் சேனல்"
- },
- "removeFromWhitelist": {
- "message": "அனுமதிப்பட்டியலில் இருந்து சேனலை அகற்று"
- },
"voteOnTime": {
"message": "ஒரு பிரிவில் வாக்களியுங்கள்"
},
- "soFarUHSubmited": {
- "message": "இதுவரை, நீங்கள் சமர்ப்பித்தீர்கள்"
- },
- "savedPeopleFrom": {
- "message": "நீங்கள் மக்களை காப்பாற்றியுள்ளீர்கள் "
- },
- "viewLeaderboard": {
- "message": "லீடர்போர்டைக் காண்க"
- },
"here": {
"message": "இங்கே"
},
- "recordTimesDescription": {
- "message": "பிரிவு துவங்கி முடிவடையும் போது கீழே உள்ள பொத்தானைக் கிளிக் செய்து பதிவுசெய்து தரவுத்தளத்தில் சமர்ப்பிக்கவும்."
- },
- "popupHint": {
- "message": "குறிப்பு: ஒரு பிரிவின் தொடக்க / முடிவைப் புகாரளிக்க ஒரு வீடியோவில் கவனம் செலுத்துகையில் அரைக்காற்பகுதி விசையை அழுத்தி சமர்ப்பிக்க மேற்கோள். (இதை விருப்பங்களில் மாற்றலாம்)"
- },
"clearTimesButton": {
"message": "நேரங்களை அழி"
},
@@ -252,12 +228,6 @@
"0": {
"message": "இணைப்பு நேரம் முடிந்தது. உங்கள் இணைய இணைப்பைச் சரிபார்க்கவும். உங்கள் இணையம் இயங்கினால், சேவையகம் அதிக சுமை அல்லது கீழே இருக்கும்."
},
- "disableSkipping": {
- "message": "ஸ்பான்சர் பிளாக் முடக்கு"
- },
- "enableSkipping": {
- "message": "ஸ்பான்சர் பிளாக் இயக்கவும்"
- },
"yourWork": {
"message": "உங்கள் வேலை",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "இந்த நேரம் தற்போதைய நேரத்திற்கு அடுத்த அடைப்புக்குறிக்குள் தோன்றும். இது எந்தவொரு வீடியோவிற்கும் கழித்த மொத்த வீடியோ கால அளவைக் காட்டுகிறது. இதில் \"சீக்பாரில் காண்பி\" என்று மட்டுமே குறிக்கப்பட்ட பகுதிகள் அடங்கும்."
},
- "youHaveSkipped": {
- "message": "நீங்கள் தவிர்த்துவிட்டீர்கள் "
- },
"youHaveSaved": {
"message": "உங்களை நீங்களே காப்பாற்றிக் கொண்டீர்கள் "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "மணி"
},
- "youHaveSavedTime": {
- "message": "நீங்கள் மக்களைக் காப்பாற்றியுள்ளீர்கள்"
- },
- "youHaveSavedTimeEnd": {
- "message": " அவர்களின் வாழ்க்கையில்."
- },
"statusReminder": {
"message": "சேவையக நிலைக்கு status.sponsor.ajay.app ஐச் சரிபார்க்கவும்."
},
diff --git a/public/_locales/te/messages.json b/public/_locales/te/messages.json
index 0c01162e..b7b49aa4 100644
--- a/public/_locales/te/messages.json
+++ b/public/_locales/te/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "సెగ్మెంట్ ఇప్పుడు ముగుస్తుంది"
},
- "noVideoID": {
- "message": "ఈ ట్యాబ్‌లో YouTube వీడియో ఏదీ కనుగొనబడలేదు. ఇది యూట్యూబ్ ట్యాబ్ అని మీకు తెలిస్తే, ఈ పాపప్‌ను మూసివేసి మళ్ళీ తెరవండి. అది పని చేయకపోతే, టాబ్‌ను మళ్లీ లోడ్ చేయడానికి ప్రయత్నించండి."
- },
"success": {
"message": "విజయం!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "మీరు దీన్ని ఖచ్చితంగా సమర్పించాలనుకుంటున్నారా?"
},
- "whitelistChannel": {
- "message": "వైట్‌లిస్ట్ ఛానల్"
- },
- "removeFromWhitelist": {
- "message": "వైట్లిస్ట్ నుండి ఛానెల్ తొలగించండి"
- },
"voteOnTime": {
"message": "ఒక విభాగంలో ఓటు వేయండి"
},
- "soFarUHSubmited": {
- "message": "ఇప్పటివరకు, మీరు సమర్పించారు"
- },
- "savedPeopleFrom": {
- "message": "మీరు ప్రజలను రక్షించారు "
- },
- "viewLeaderboard": {
- "message": "లీడర్‌బోర్డ్‌ను చూడండి"
- },
"here": {
"message": "ఇక్కడ"
},
- "recordTimesDescription": {
- "message": "సెగ్మెంట్ ప్రారంభమైనప్పుడు మరియు రికార్డ్ చేయడానికి ముగిసినప్పుడు క్రింది బటన్‌ను క్లిక్ చేసి డేటాబేస్కు సమర్పించండి."
- },
- "popupHint": {
- "message": "సూచన: ఒక సెగ్మెంట్ యొక్క ప్రారంభ / ముగింపును నివేదించడానికి వీడియోపై దృష్టి కేంద్రీకరించినప్పుడు సెమికోలన్ కీని నొక్కండి మరియు సమర్పించడానికి కోట్ చేయండి. (దీన్ని ఎంపికలలో మార్చవచ్చు)"
- },
"clearTimesButton": {
"message": "టైమ్స్ క్లియర్"
},
@@ -252,12 +228,6 @@
"0": {
"message": "అనుసంధాన సమయం సమాప్తం. మీ ఇంటర్నెట్ కనెక్షన్‌ను తనిఖీ చేయండి. మీ ఇంటర్నెట్ పనిచేస్తుంటే, సర్వర్ ఓవర్‌లోడ్ లేదా డౌన్ అయి ఉండవచ్చు."
},
- "disableSkipping": {
- "message": "స్పాన్సర్బ్లాక్‌ను ఆపివేయి"
- },
- "enableSkipping": {
- "message": "స్పాన్సర్బ్లాక్‌ని ప్రారంభించండి"
- },
"yourWork": {
"message": "నీ పని",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "ఈ సమయం సీక్ బార్ క్రింద ప్రస్తుత సమయం పక్కన బ్రాకెట్లలో కనిపిస్తుంది. ఇది మొత్తం వీడియో వ్యవధి మైనస్ ఏదైనా విభాగాలను చూపుతుంది. ఇందులో \"సీక్బార్లో చూపించు\" అని మాత్రమే గుర్తించబడిన విభాగాలు ఉన్నాయి."
},
- "youHaveSkipped": {
- "message": "మీరు దాటవేశారు "
- },
"youHaveSaved": {
"message": "మీరు మీరే రక్షించుకున్నారు "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "గంటలు"
},
- "youHaveSavedTime": {
- "message": "మీరు ప్రజలను రక్షించారు"
- },
- "youHaveSavedTimeEnd": {
- "message": " వారి జీవితాల."
- },
"statusReminder": {
"message": "సర్వర్ స్థితి కోసం status.sponsor.ajay.app ని తనిఖీ చేయండి."
},
diff --git a/public/_locales/tr/messages.json b/public/_locales/tr/messages.json
index c9a6f3dc..3a65682a 100644
--- a/public/_locales/tr/messages.json
+++ b/public/_locales/tr/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Kısım Şimdi Bitiyor"
},
- "noVideoID": {
- "message": "Bu sekmede YouTube videosu bulunamadı. Bu sekmenin bir YouTube sekmesi olduğundan eminseniz, bu pencereyi kapatıp, tekrar açın. Eğer o da işe yaramazsa, sekmeyi yenilemeyi deneyin."
- },
"success": {
"message": "Başarılı!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Bunu göndermek istediğinize emin misiniz?"
},
- "whitelistChannel": {
- "message": "Kanalı Beyazlisteye Ekle"
- },
- "removeFromWhitelist": {
- "message": "Kanalı Beyazlisteden Kaldır"
- },
"voteOnTime": {
"message": "Bir Kısmı Oyla"
},
- "soFarUHSubmited": {
- "message": "Şu an kadar yolladığınız"
- },
- "savedPeopleFrom": {
- "message": "İnsanların şu kadar vaktini kurtardınız "
- },
- "viewLeaderboard": {
- "message": "Liderlik tablosunu görüntüle"
- },
"here": {
"message": "burada"
},
- "recordTimesDescription": {
- "message": "Kısmın başladığı ve bittiği yeri kaydetmek ve veri tabanına göndermek için aşağıdaki butona tıklayın."
- },
- "popupHint": {
- "message": "İpucu: Bir kısmın başlangıcını / sonunu seçmek ve göndermek için bir videoyu izlerken noktalı virgül tuşuna basın. (Bu, ayarlardan değiştirilebilir)"
- },
"clearTimesButton": {
"message": "Süreleri Temizle"
},
@@ -252,12 +228,6 @@
"0": {
"message": "Bağlantı zaman aşımına uğradı. İnternet bağlantınızı kontrol ediniz. Eğer internetiniz çalışıyor ise, büyük ihtimalle sunucuya erişilemiyor veya sunucuya aşırı yüklenilmiş olabilir."
},
- "disableSkipping": {
- "message": "SponsorBlock'u Devredışı Bırak"
- },
- "enableSkipping": {
- "message": "SponsorBlock'u Devreye Sok"
- },
"yourWork": {
"message": "Çalışmalarınız",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "Bu süre, video ilerleme çubuğunun altındaki geçerli zamanın yanında parantez içinde görüntülenir. Bu, videodaki kısımların silinmiş toplam video süresini gösterir. Bu, yalnızca \"Video İlerleme Çubuğunda Göster\" olarak işaretlenen kısımları içerir."
},
- "youHaveSkipped": {
- "message": "Bunu atladınız "
- },
"youHaveSaved": {
"message": "Şu kadar süre kazandınız "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "saat"
},
- "youHaveSavedTime": {
- "message": "İnsanların"
- },
- "youHaveSavedTimeEnd": {
- "message": " kadar vaktini kurtardınız."
- },
"statusReminder": {
"message": "Sunucu durumu için status.sponsor.ajay.app kontrol edin."
},
diff --git a/public/_locales/uk/messages.json b/public/_locales/uk/messages.json
index b2b181ef..dadeea83 100644
--- a/public/_locales/uk/messages.json
+++ b/public/_locales/uk/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Сегмент закінчується тут"
},
- "noVideoID": {
- "message": "Можливо, це не вкладка YouTube, або Ви натиснули занадто рано.\n  Якщо це вкладка YouTube,\n  закрийте це спливаюче вікно і відкрийте його знову."
- },
"success": {
"message": "Успіх!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Ви впевнені, що хочете надіслати цю інформацію?"
},
- "whitelistChannel": {
- "message": "Додати канал в білий список"
- },
- "removeFromWhitelist": {
- "message": "Видалити канал з білого списку"
- },
"voteOnTime": {
"message": "Проголосувати за сегмент"
},
- "soFarUHSubmited": {
- "message": "На даний момент Ви надіслали"
- },
- "savedPeopleFrom": {
- "message": "Ви допомогли людям заощадити "
- },
- "viewLeaderboard": {
- "message": "Подивитися дошку пошани"
- },
"here": {
"message": "тут"
},
- "recordTimesDescription": {
- "message": "Натисніть кнопку нижче, коли сегмент починається і закінчується, щоб записати і Надіслати його в базу."
- },
- "popupHint": {
- "message": "Підказка: натисніть на кнопку \"Ж\" під час відтворення, щоб повідомити про початок / кінці сегмента, і \"Е\", щоб надіслати його. (Це можна змінити в налаштуваннях)"
- },
"clearTimesButton": {
"message": "Очистити час"
},
@@ -252,12 +228,6 @@
"0": {
"message": "Таймаут підключення. Перевірте ваше з'єднання з інтернетом. Якщо ваш інтернет працює, сервер, швидше за все, перевантажений або лежить."
},
- "disableSkipping": {
- "message": "Відключити SponsorBlock"
- },
- "enableSkipping": {
- "message": "Увімкнути SponsorBlock"
- },
"yourWork": {
"message": "Ваша робота",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -295,9 +265,6 @@
"showTimeWithSkipsDescription": {
"message": "Ця тривалість відображається в дужках поруч з фактичної під смугою прокрутки. Показує тривалість відео без сегментів. Включає сегменти, для яких вибрано \"Відображати в смузі прокрутки\"."
},
- "youHaveSkipped": {
- "message": "Ви пропустили "
- },
"youHaveSaved": {
"message": "Ви заощадили "
},
@@ -313,12 +280,6 @@
"hoursLower": {
"message": "годин"
},
- "youHaveSavedTime": {
- "message": "Ви заощадили людям"
- },
- "youHaveSavedTimeEnd": {
- "message": " їх життя."
- },
"statusReminder": {
"message": "Дивіться стан сервера на status.sponsor.ajay.app."
},
diff --git a/public/_locales/vi/messages.json b/public/_locales/vi/messages.json
index c43a7651..28c7d6ba 100644
--- a/public/_locales/vi/messages.json
+++ b/public/_locales/vi/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "Đoạn quảng cáo kết thúc vào lúc này"
},
- "noVideoID": {
- "message": "Không tìm thấy video Youtube trong tab này. Nếu bạn chắc chắn đây là tab Youtube, hãy đóng bảng popup này rồi mở lại. Nếu vẫn không được, hãy thử tải lại tab."
- },
"success": {
"message": "Thành công!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "Bạn có chắc là muốn đăng không?"
},
- "whitelistChannel": {
- "message": "Không chặn kênh này"
- },
- "removeFromWhitelist": {
- "message": "Bỏ kênh này khỏi danh sách không chặn"
- },
"voteOnTime": {
"message": "Bầu chọn một đoạn quảng cáo"
},
- "soFarUHSubmited": {
- "message": "Cho tới giờ, bạn đã đăng"
- },
- "savedPeopleFrom": {
- "message": "Bạn đã giúp mọi người bỏ qua "
- },
- "viewLeaderboard": {
- "message": "Xem bảng xếp hạng"
- },
"here": {
"message": "ở đây"
},
- "recordTimesDescription": {
- "message": "Nhấn nút phía dưới khi đoạn quảng cáo bắt đầu và kết thúc để ghi lại và đăng lên kho dữ liệu."
- },
- "popupHint": {
- "message": "Gợi ý: Nhấn phím dấu chấm phẩy khi đang xem video để báo cáo lúc quảng cáo bắt đầu/kết thúc, và nhấn phím ngoặc kép để đăng. (Có thể thay đổi phím trong phần tùy chọn)"
- },
"clearTimesButton": {
"message": "Xóa thời gian"
},
@@ -243,12 +219,6 @@
"0": {
"message": "Kết nối quá hạn thời gian. Hãy kiểm tra đường truyền mạng của bạn. Nếu mạng của bạn vẫn hoạt động, có thể máy chủ đang bị quá tải hoặc không hoạt động."
},
- "disableSkipping": {
- "message": "Tắt SponsorBlock"
- },
- "enableSkipping": {
- "message": "Bật SponsorBlock"
- },
"yourWork": {
"message": "Thành quả của bạn",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -286,9 +256,6 @@
"showTimeWithSkipsDescription": {
"message": "Độ dài này được hiển thị trong ngoặc đơn, bên cạnh độ dài hiện tại, phía dưới thanh tiến trình video. Con số này là độ dài video trừ đi các đoạn quảng cáo, bao gồm cả những đoạn được đánh dấu là chỉ \"Hiển thị trong thanh tiến trình video\"."
},
- "youHaveSkipped": {
- "message": "Bạn đã bỏ qua "
- },
"youHaveSaved": {
"message": "Bạn đã tiết kiệm cho mình "
},
@@ -304,12 +271,6 @@
"hoursLower": {
"message": "giờ"
},
- "youHaveSavedTime": {
- "message": "Bạn đã giúp người khác tiết kiệm"
- },
- "youHaveSavedTimeEnd": {
- "message": " của đời họ."
- },
"statusReminder": {
"message": "Truy cập trang status.sponsor.ajay.app để biết tình trạng máy chủ."
},
diff --git a/public/_locales/zh_CN/messages.json b/public/_locales/zh_CN/messages.json
index ac9b8886..fbdcf951 100644
--- a/public/_locales/zh_CN/messages.json
+++ b/public/_locales/zh_CN/messages.json
@@ -63,9 +63,6 @@
"Unknown": {
"message": "提交您的赞助商广告时间时出错。请稍后再试。"
},
- "noVideoID": {
- "message": "在此标签页未找到 Youtube 视频。如果您确定这是一个 Youtube 页面,请关闭此弹窗并重新打开。如果那没用,请尝试重新加载页面。"
- },
"success": {
"message": "成功 !"
},
@@ -84,21 +81,6 @@
"submitCheck": {
"message": "您确定要提交它吗?"
},
- "whitelistChannel": {
- "message": "白名单频道"
- },
- "removeFromWhitelist": {
- "message": "将频道移出白名单"
- },
- "soFarUHSubmited": {
- "message": "您目前已提交"
- },
- "savedPeopleFrom": {
- "message": "您已为人们节省了 "
- },
- "viewLeaderboard": {
- "message": "查看排行榜"
- },
"here": {
"message": "这里"
},
@@ -181,12 +163,6 @@
"0": {
"message": "连接超时。请检查您的网络连接。如果您的网络运行正常,则可能是服务器过载或宕机。"
},
- "disableSkipping": {
- "message": "禁用 SponsorBlock"
- },
- "enableSkipping": {
- "message": "启用 SponsorBlock"
- },
"yourWork": {
"message": "您的成果",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -200,9 +176,6 @@
"skip": {
"message": "跳过"
},
- "skip_category": {
- "message": "跳过 {0}?"
- },
"skipped": {
"message": "跳过"
},
@@ -215,9 +188,6 @@
"audioNotification": {
"message": "跳过时音频通知"
},
- "youHaveSkipped": {
- "message": "您已跳过 "
- },
"youHaveSaved": {
"message": "您为自己节省了 "
},
@@ -233,12 +203,6 @@
"hoursLower": {
"message": "小时"
},
- "youHaveSavedTime": {
- "message": "您为人们节省了"
- },
- "youHaveSavedTimeEnd": {
- "message": " 的生命。"
- },
"statusReminder": {
"message": "在 status.sponsor.ajay.app 检查服务器状态。"
},
diff --git a/public/_locales/zh_TW/messages.json b/public/_locales/zh_TW/messages.json
index fa030a2f..7d679662 100644
--- a/public/_locales/zh_TW/messages.json
+++ b/public/_locales/zh_TW/messages.json
@@ -85,9 +85,6 @@
"sponsorEnd": {
"message": "片段現在結束"
},
- "noVideoID": {
- "message": "未在這個分頁找到任何YouTube影片。 如果您知道這是個YouTube分頁的話,關閉這個彈出視窗並重新開啟它。如果還是不管用,嘗試重新載入分頁"
- },
"success": {
"message": "成功!"
},
@@ -121,33 +118,12 @@
"submitCheck": {
"message": "您確定要提交這個嗎?"
},
- "whitelistChannel": {
- "message": "將頻道列入白名單"
- },
- "removeFromWhitelist": {
- "message": "將頻道從白名單移除"
- },
"voteOnTime": {
"message": "為分段投票"
},
- "soFarUHSubmited": {
- "message": "您目前已提交"
- },
- "savedPeopleFrom": {
- "message": "您已為大家節省 "
- },
- "viewLeaderboard": {
- "message": "查看排行榜"
- },
"here": {
"message": "這裡"
},
- "recordTimesDescription": {
- "message": "點擊下方的按鈕來錄製分段的始與末"
- },
- "popupHint": {
- "message": "小提醒:在聚焦於影片時按下分號鍵來記錄分段的始與末然後按下冒號鍵來提交(您可以透過選項來更改這項設定)"
- },
"clearTimesButton": {
"message": "清除時間"
},
@@ -252,12 +228,6 @@
"0": {
"message": "連線超時。請檢查您的網路連線。若您的網路運作正常,則可能是伺服器超載或離線"
},
- "disableSkipping": {
- "message": "停用 SponsorBlock"
- },
- "enableSkipping": {
- "message": "啟用 SponsorBlock"
- },
"yourWork": {
"message": "您的成果",
"description": "Used to describe the section that will show you the statistics from your submissions."
@@ -271,9 +241,6 @@
"skip": {
"message": "略過"
},
- "skip_category": {
- "message": "略過 {0}?"
- },
"skipped": {
"message": "已跳過"
},
@@ -295,9 +262,6 @@
"showTimeWithSkipsDescription": {
"message": "這個時間會出現在現在時間旁邊的括號內。這會顯示總影片長度減掉任何片段後的結果。這只會包含標為\"在時間條中顯示\"的片段"
},
- "youHaveSkipped": {
- "message": "您已跳過 "
- },
"youHaveSaved": {
"message": "您為自己節省了 "
},
@@ -313,12 +277,6 @@
"hoursLower": {
"message": "小時"
},
- "youHaveSavedTime": {
- "message": "您已為大家節省"
- },
- "youHaveSavedTimeEnd": {
- "message": " 的生命。"
- },
"statusReminder": {
"message": "在 status.sponsor.ajay.app 檢查伺服器狀態"
},
diff --git a/public/popup.css b/public/popup.css
index 5a9f7b01..2aa096a6 100644
--- a/public/popup.css
+++ b/public/popup.css
@@ -10,6 +10,18 @@
display: none !important;
}
+@media only screen and (max-width: 600px) {
+ #sponsorBlockPopupBody {
+ width: 100%;
+ }
+}
+
+#sponsorBlockPopupBody {
+ margin: auto;
+ width: 374px;
+ background: var(--sb-main-bg-color);
+}
+
#sponsorblockPopup {
color: var(--sb-main-fg-color);
font-family: 'Source Sans Pro', sans-serif;
@@ -18,7 +30,7 @@
flex-flow: column nowrap;
align-items: center;
width: 330px;
- margin: 22px;
+ padding: 22px;
text-align: center;
}
@@ -27,7 +39,7 @@
color: var(--sb-main-fg-color);
background: none;
border: none;
- padding: 10px 8px;
+ padding: 7px;
outline: none;
cursor: pointer;
diff --git a/public/popup.html b/public/popup.html
index 80755e8b..1b472959 100644
--- a/public/popup.html
+++ b/public/popup.html
@@ -2,9 +2,11 @@
<title>__MSG_openPopup__</title>
<link id="sponsorBlockPopupFont" rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css">
<link id="sponsorBlockStyleSheet" rel="stylesheet" type="text/css" href="popup.css">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
-<body style="margin: 0; min-width: 320px; background: var(--sb-main-bg-color);">
+<body id="sponsorBlockPopupBody">
<div id="sponsorblockPopup" class="sponsorBlockPageBody preload">
<div class="logoText bottomSpace">
<img src="icons/IconSponsorBlocker256px.png" height="40px" id="sponsorBlockPopupLogo">
@@ -129,13 +131,13 @@
<span id="sponsorTimeSavedEndWord">__MSG_minsLower__</span></b>).
</div>
<footer id="sbFooter">
- <a href="https://sponsor.ajay.app" target="_blank" rel="noopener">Website</a> |
+ <a href="https://sponsor.ajay.app" target="_blank" rel="noopener">__MSG_website__</a> |
<a href="https://sponsor.ajay.app/stats" target="_blank" rel="noopener">__MSG_viewLeaderboard__</a> |
<a href="https://github.com/ajayyy/SponsorBlock" target="_blank" rel="noopener">GitHub</a>
<br/>
<a href="https://discord.gg/QnmVMpU" target="_blank" rel="noopener">Discord</a> |
<a href="https://matrix.to/#/+sponsorblock:ajay.app" target="_blank" rel="noopener">Matrix</a> |
- <a id="helpButton" href="#">__MSG_help__</a>
+ <a id="helpButton" style="cursor: pointer;">__MSG_help__</a>
</footer>
<button id="showNoticeAgain" style="display: none" class="dangerButton popupElement">__MSG_showNotice__</button>
diff --git a/src/background.ts b/src/background.ts
index 2bab479f..e9643667 100644
--- a/src/background.ts
+++ b/src/background.ts
@@ -2,8 +2,10 @@ import * as CompileConfig from "../config.json";
import Config from "./config";
import { Registration } from "./types";
+
// Make the config public for debugging purposes
-(<any> window).SB = Config;
+
+window.SB = Config;
import Utils from "./utils";
const utils = new Utils({
@@ -33,7 +35,7 @@ chrome.runtime.onMessage.addListener(function (request, sender, callback) {
chrome.runtime.openOptionsPage();
return;
case "openHelp":
- window.open(chrome.runtime.getURL('help/index_en.html'));
+ chrome.tabs.create({url: chrome.runtime.getURL('help/index_en.html')});
return;
case "sendRequest":
sendRequestToCustomServer(request.type, request.url, request.data).then(async (response) => {
@@ -70,7 +72,7 @@ chrome.runtime.onMessage.addListener(function (request, sender, callback) {
});
//add help page on install
-chrome.runtime.onInstalled.addListener(function (object) {
+chrome.runtime.onInstalled.addListener(function () {
// This let's the config sync to run fully before checking.
// This is required on Firefox
setTimeout(function() {
diff --git a/src/components/CategoryChooserComponent.tsx b/src/components/CategoryChooserComponent.tsx
index 19d9d589..bb86e10f 100644
--- a/src/components/CategoryChooserComponent.tsx
+++ b/src/components/CategoryChooserComponent.tsx
@@ -1,6 +1,5 @@
import * as React from "react";
-import Config from "../config"
import * as CompileConfig from "../../config.json";
import CategorySkipOptionsComponent from "./CategorySkipOptionsComponent";
diff --git a/src/components/CategorySkipOptionsComponent.tsx b/src/components/CategorySkipOptionsComponent.tsx
index b190223d..3cc03527 100644
--- a/src/components/CategorySkipOptionsComponent.tsx
+++ b/src/components/CategorySkipOptionsComponent.tsx
@@ -2,9 +2,6 @@ import * as React from "react";
import Config from "../config"
import { CategorySkipOption } from "../types";
-import Utils from "../utils";
-
-const utils = new Utils();
export interface CategorySkipOptionsProps {
category: string;
diff --git a/src/components/NoticeComponent.tsx b/src/components/NoticeComponent.tsx
index 94b3fd56..9fff3be4 100644
--- a/src/components/NoticeComponent.tsx
+++ b/src/components/NoticeComponent.tsx
@@ -28,7 +28,7 @@ export interface NoticeState {
class NoticeComponent extends React.Component<NoticeProps, NoticeState> {
countdownInterval: NodeJS.Timeout;
- idSuffix: any;
+ idSuffix: string;
amountOfPreviousNotices: number;
diff --git a/src/components/NoticeTextSectionComponent.tsx b/src/components/NoticeTextSectionComponent.tsx
index cbcbb7b2..5e74a1d6 100644
--- a/src/components/NoticeTextSectionComponent.tsx
+++ b/src/components/NoticeTextSectionComponent.tsx
@@ -3,7 +3,7 @@ import * as React from "react";
export interface NoticeTextSelectionProps {
text: string,
idSuffix: string,
- onClick?: (event: React.MouseEvent) => any
+ onClick?: (event: React.MouseEvent) => unknown
}
export interface NoticeTextSelectionState {
diff --git a/src/components/SkipNoticeComponent.tsx b/src/components/SkipNoticeComponent.tsx
index 5618c907..aa75a587 100644
--- a/src/components/SkipNoticeComponent.tsx
+++ b/src/components/SkipNoticeComponent.tsx
@@ -2,10 +2,6 @@ import * as React from "react";
import * as CompileConfig from "../../config.json";
import Config from "../config"
import { ContentContainer, SponsorHideType, SponsorTime } from "../types";
-
-import Utils from "../utils";
-const utils = new Utils();
-
import NoticeComponent from "./NoticeComponent";
import NoticeTextSelectionComponent from "./NoticeTextSectionComponent";
@@ -42,7 +38,7 @@ export interface SkipNoticeState {
downvoting: boolean;
choosingCategory: boolean;
- thanksForVotingText: boolean; //null until the voting buttons should be hidden
+ thanksForVotingText: string; //null until the voting buttons should be hidden
actionState: SkipNoticeAction;
}
@@ -447,25 +443,21 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
});
}
- getUnskippedModeInfo(index: number, buttonText: string) {
- const self = this;
- const maxCountdownTime = function() {
- const sponsorTime = self.segments[index];
- const duration = Math.round((sponsorTime.segment[1] - self.contentContainer().v.currentTime) * (1 / self.contentContainer().v.playbackRate));
+ getUnskippedModeInfo(index: number, buttonText: string): SkipNoticeState {
+ const maxCountdownTime = () => {
+ const sponsorTime = this.segments[index];
+ const duration = Math.round((sponsorTime.segment[1] - this.contentContainer().v.currentTime) * (1 / this.contentContainer().v.playbackRate));
return Math.max(duration, 4);
};
return {
unskipText: buttonText,
-
unskipCallback: (index) => this.reskip(index),
-
- //change max duration to however much of the sponsor is left
+ // change max duration to however much of the sponsor is left
maxCountdownTime: maxCountdownTime,
-
countdownTime: maxCountdownTime()
- }
+ } as SkipNoticeState;
}
reskip(index: number): void {
@@ -508,7 +500,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
}
}
- setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => any, ...messages: string[]): void {
+ setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {
this.setState({
messages,
messageOnClick: (event) => onClick(event)
@@ -521,7 +513,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
});
}
- addVoteButtonInfo(message): void {
+ addVoteButtonInfo(message: string): void {
this.setState({
thanksForVotingText: message
});
diff --git a/src/components/SponsorTimeEditComponent.tsx b/src/components/SponsorTimeEditComponent.tsx
index 89b5d48e..e00813ca 100644
--- a/src/components/SponsorTimeEditComponent.tsx
+++ b/src/components/SponsorTimeEditComponent.tsx
@@ -23,6 +23,8 @@ export interface SponsorTimeEditState {
sponsorTimeEdits: [string, string];
}
+const DEFAULT_CATEGORY = "chooseACategory";
+
class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, SponsorTimeEditState> {
idSuffix: string;
@@ -217,27 +219,17 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
getCategoryOptions(): React.ReactElement[] {
const elements = [(
- <option value={"chooseACategory"}
- key={"chooseACategory"}>
- {chrome.i18n.getMessage("chooseACategory")}
+ <option value={DEFAULT_CATEGORY}
+ key={DEFAULT_CATEGORY}>
+ {chrome.i18n.getMessage(DEFAULT_CATEGORY)}
</option>
)];
- for (const category of Config.config.categorySelections) {
- elements.push(
- <option value={category.name}
- key={category.name}>
- {chrome.i18n.getMessage("category_" + category.name)}
- </option>
- );
- }
-
- if (elements.length < CompileConfig.categoryList.length) {
- // Add show more button
+ for (const category of CompileConfig.categoryList) {
elements.push(
- <option value={"moreCategories"}
- key={"moreCategories"}>
- {chrome.i18n.getMessage("moreCategories")}
+ <option value={category}
+ key={category}>
+ {chrome.i18n.getMessage("category_" + category)}
</option>
);
}
@@ -247,15 +239,20 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
categorySelectionChange(event: React.ChangeEvent<HTMLSelectElement>): void {
// See if show more categories was pressed
- if (event.target.value === "moreCategories") {
- // Open options page
- chrome.runtime.sendMessage({"message": "openConfig"});
-
- // Reset option to previous
- event.target.value = this.props.contentContainer().sponsorTimesSubmitting[this.props.index].category;
+ if (!Config.config.categorySelections.some((category) => category.name === event.target.value)) {
+ const chosenCategory = event.target.value;
+ event.target.value = DEFAULT_CATEGORY;
+
+ // Alert that they have to enable this category first
+ if (confirm(chrome.i18n.getMessage("enableThisCategoryFirst")
+ .replace("{0}", chrome.i18n.getMessage("category_" + chosenCategory)))) {
+ // Open options page
+ chrome.runtime.sendMessage({"message": "openConfig"});
+ }
+
return;
}
-
+
this.saveEditTimes();
}
diff --git a/src/config.ts b/src/config.ts
index e622ef05..2a40dbf6 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -1,5 +1,5 @@
import * as CompileConfig from "../config.json";
-import { CategorySelection, CategorySkipOption, PreviewBarOption, SponsorTime } from "./types";
+import { CategorySelection, CategorySkipOption, PreviewBarOption, SponsorTime, StorageChangesObject } from "./types";
import Utils from "./utils";
const utils = new Utils();
@@ -58,8 +58,8 @@ interface SBConfig {
}
}
-interface SBObject {
- configListeners: Array<Function>;
+export interface SBObject {
+ configListeners: Array<(changes: StorageChangesObject) => unknown>;
defaults: SBConfig;
localConfig: SBConfig;
config: SBConfig;
@@ -275,8 +275,8 @@ function decodeStoredItem<T>(id: string, data: T): T | SBMap<string, SponsorTime
return data;
}
-function configProxy(): any {
- chrome.storage.onChanged.addListener((changes, namespace) => {
+function configProxy(): SBConfig {
+ chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}) => {
for (const key in changes) {
Config.localConfig[key] = decodeStoredItem(key, changes[key].newValue);
}
@@ -286,8 +286,8 @@ function configProxy(): any {
}
});
- const handler: ProxyHandler<any> = {
- set(obj, prop, value) {
+ const handler: ProxyHandler<SBConfig> = {
+ set<K extends keyof SBConfig>(obj: SBConfig, prop: K, value: SBConfig[K]) {
Config.localConfig[prop] = value;
chrome.storage.sync.set({
@@ -297,13 +297,13 @@ function configProxy(): any {
return true;
},
- get(obj, prop): any {
+ get<K extends keyof SBConfig>(obj: SBConfig, prop: K): SBConfig[K] {
const data = Config.localConfig[prop];
return obj[prop] || data;
},
- deleteProperty(obj, prop) {
+ deleteProperty(obj: SBConfig, prop: keyof SBConfig) {
chrome.storage.sync.remove(<string> prop);
return true;
@@ -311,11 +311,11 @@ function configProxy(): any {
};
- return new Proxy({handler}, handler);
+ return new Proxy<SBConfig>({handler} as unknown as SBConfig, handler);
}
function fetchConfig(): Promise<void> {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve) => {
chrome.storage.sync.get(null, function(items) {
Config.localConfig = <SBConfig> <unknown> items; // Data is ready
resolve();
@@ -439,11 +439,6 @@ async function setupConfig() {
Config.config = config;
}
-// Reset config
-function resetConfig() {
- Config.config = Config.defaults;
-}
-
function convertJSON(): void {
Object.keys(Config.localConfig).forEach(key => {
Config.localConfig[key] = decodeStoredItem(key, Config.localConfig[key]);
diff --git a/src/content.ts b/src/content.ts
index 2c546620..48b5456e 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -1,6 +1,6 @@
import Config from "./config";
-import { SponsorTime, CategorySkipOption, CategorySelection, VideoID, SponsorHideType, FetchResponse } from "./types";
+import { SponsorTime, CategorySkipOption, VideoID, SponsorHideType, FetchResponse, VideoInfo, StorageChangesObject } from "./types";
import { ContentContainer } from "./types";
import Utils from "./utils";
@@ -12,6 +12,7 @@ import PreviewBar, {PreviewBarSegment} from "./js-components/previewBar";
import SkipNotice from "./render/SkipNotice";
import SkipNoticeComponent from "./components/SkipNoticeComponent";
import SubmissionNotice from "./render/SubmissionNotice";
+import { Message, MessageResponse } from "./messageTypes";
// Hack to get the CSS loaded on permission-based sites (Invidious)
utils.wait(() => Config.config !== null, 5000, 10).then(addCSS);
@@ -25,9 +26,9 @@ let sponsorTimes: SponsorTime[] = null;
let sponsorVideoID: VideoID = null;
// JSON video info
-let videoInfo: any = null;
+let videoInfo: VideoInfo = null;
//the channel this video is about
-let channelID;
+let channelID: string;
// Skips are scheduled to ensure precision.
// Skips are rescheduled every seeking event.
@@ -53,6 +54,9 @@ let durationListenerSetUp = false;
// Is the video currently being switched
let switchingVideos = null;
+// Made true every videoID change
+let firstEvent = false;
+
// Used by the play and playing listeners to make sure two aren't
// called at the same time
let lastCheckTime = 0;
@@ -112,7 +116,7 @@ const skipNoticeContentContainer: ContentContainer = () => ({
//get messages from the background script and the popup
chrome.runtime.onMessage.addListener(messageListener);
-function messageListener(request: any, sender: any, sendResponse: (response: any) => void): void {
+function messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void {
//messages from popup script
switch(request.message){
case "update":
@@ -146,27 +150,6 @@ function messageListener(request: any, sender: any, sendResponse: (response: any
});
break;
- case "getVideoDuration":
- sendResponse({
- duration: video.duration
- });
-
- break;
- case "skipToTime":
- video.currentTime = request.time;
-
- // Unpause the video if needed
- if (video.paused){
- video.play();
- }
-
- return;
- case "getCurrentTime":
- sendResponse({
- currentTime: getRealCurrentTime()
- });
-
- break;
case "getChannelID":
sendResponse({
channelID: channelID
@@ -190,7 +173,6 @@ function messageListener(request: any, sender: any, sendResponse: (response: any
break;
case "submitTimes":
submitSponsorTimes();
-
break;
}
}
@@ -200,7 +182,7 @@ function messageListener(request: any, sender: any, sendResponse: (response: any
*
* @param {String} changes
*/
-function contentConfigUpdateListener(changes) {
+function contentConfigUpdateListener(changes: StorageChangesObject) {
for (const key in changes) {
switch(key) {
case "hideVideoPlayerControls":
@@ -265,6 +247,8 @@ function resetValues() {
switchingVideos = true;
}
+ firstEvent = true;
+
// Reset advert playing flag
isAdPlaying = false;
}
@@ -309,12 +293,18 @@ async function videoIDChange(id) {
if (onMobileYouTube) {
// Mobile YouTube workaround
const observer = new MutationObserver(handleMobileControlsMutations);
-
- observer.observe(document.getElementById("player-control-container"), {
- attributes: true,
- childList: true,
- subtree: true
- });
+ let controlsContainer = null;
+
+ utils.wait(() => {
+ controlsContainer = document.getElementById("player-control-container")
+ return controlsContainer !== null
+ }).then(() => {
+ observer.observe(document.getElementById("player-control-container"), {
+ attributes: true,
+ childList: true,
+ subtree: true
+ });
+ }).catch();
} else {
utils.wait(getControls).then(createPreviewBar);
}
@@ -368,18 +358,6 @@ async function videoIDChange(id) {
}
function handleMobileControlsMutations(): void {
- updateVisibilityOfPlayerControlsButton().then((createdButtons) => {
- if (createdButtons) {
- if (sponsorTimesSubmitting != null && sponsorTimesSubmitting.length > 0 && sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment.length >= 2) {
- changeStartSponsorButton(true, true);
- } else if (sponsorTimesSubmitting != null && sponsorTimesSubmitting.length > 0 && sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment.length < 2) {
- changeStartSponsorButton(false, true);
- } else {
- changeStartSponsorButton(true, false);
- }
- }
- });
-
if (previewBar !== null) {
if (document.body.contains(previewBar.container)) {
const progressBarBackground = document.querySelector<HTMLElement>(".progress-bar-background");
@@ -433,7 +411,7 @@ function createPreviewBar(): void {
* Triggered every time the video duration changes.
* This happens when the resolution changes or at random time to clear memory.
*/
-function durationChangeListener() {
+function durationChangeListener(): void {
updateAdFlag();
updatePreviewBar();
}
@@ -568,6 +546,12 @@ async function sponsorsLookup(id: string) {
video.addEventListener('play', () => {
switchingVideos = false;
+ // If it is not the first event, then the only way to get to 0 is if there is a seek event
+ // This check makes sure that changing the video resolution doesn't cause the extension to think it
+ // gone back to the begining
+ if (!firstEvent && video.currentTime === 0) return;
+ firstEvent = false;
+
// Check if an ad is playing
updateAdFlag();
@@ -601,6 +585,8 @@ async function sponsorsLookup(id: string) {
}
});
video.addEventListener('ratechange', () => startSponsorSchedule());
+ // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)
+ video.addEventListener('videoSpeed_ratechange', () => startSponsorSchedule());
video.addEventListener('pause', () => {
// Reset lastCheckVideoTime
lastCheckVideoTime = -1;
@@ -762,18 +748,18 @@ function startSkipScheduleCheckingForStartSponsors() {
/**
* Get the video info for the current tab from YouTube
*/
-function getVideoInfo() {
- sendRequestToCustomServer('GET', "https://www.youtube.com/get_video_info?video_id=" + sponsorVideoID, function(xmlhttp, error) {
- if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
- const decodedData = decodeURIComponent(xmlhttp.responseText).match(/player_response=([^&]*)/)[1];
- if (!decodedData) {
- console.error("[SB] Failed at getting video info from YouTube.");
- return;
- }
+async function getVideoInfo(): Promise<void> {
+ const result = await utils.asyncRequestToCustomServer("GET", "https://www.youtube.com/get_video_info?video_id=" + sponsorVideoID);
- videoInfo = JSON.parse(decodedData);
+ if (result.ok) {
+ const decodedData = decodeURIComponent(result.responseText).match(/player_response=([^&]*)/)[1];
+ if (!decodedData) {
+ console.error("[SB] Failed at getting video info from YouTube.");
+ return;
}
- });
+
+ videoInfo = JSON.parse(decodedData);
+ }
}
function getYouTubeVideoID(url: string) {
@@ -827,7 +813,7 @@ function updatePreviewBarPositionMobile(parent: HTMLElement) {
}
}
-function updatePreviewBar() {
+function updatePreviewBar(): void {
if (previewBar === null) return;
if (isAdPlaying) {
@@ -1074,6 +1060,8 @@ function unskipSponsorTime(segment: SponsorTime) {
function reskipSponsorTime(segment: SponsorTime) {
video.currentTime = segment.segment[1];
+
+ startSponsorSchedule(true, segment.segment[1], false);
}
function createButton(baseID, title, callback, imageName, isDraggable=false): boolean {
@@ -1086,7 +1074,7 @@ function createButton(baseID, title, callback, imageName, isDraggable=false): bo
newButton.classList.add("playerButton");
newButton.classList.add("ytp-button");
newButton.setAttribute("title", chrome.i18n.getMessage(title));
- newButton.addEventListener("click", (event: Event) => {
+ newButton.addEventListener("click", () => {
callback();
});
@@ -1153,6 +1141,7 @@ async function updateVisibilityOfPlayerControlsButton(): Promise<boolean> {
if (!sponsorVideoID) return false;
const createdButtons = await createButtons();
+ if (!createdButtons) return;
if (Config.config.hideVideoPlayerControls || onInvidious) {
document.getElementById("startSponsorButton").style.display = "none";
@@ -1203,6 +1192,7 @@ function startSponsorClicked() {
if (sponsorTimesSubmitting.length > 0 && sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment.length < 2) {
//it is an end time
sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[1] = getRealCurrentTime();
+ sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment.sort((a, b) => a > b ? 1 : (a < b ? -1 : 0));
} else {
//it is a start time
sponsorTimesSubmitting.push({
@@ -1244,8 +1234,8 @@ function updateSponsorTimesSubmitting(getFromConfig = true) {
}
}
-async function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) {
- if(!sponsorVideoID) return false;
+async function changeStartSponsorButton(showStartSponsor: boolean, uploadButtonVisible: boolean): Promise<boolean> {
+ if(!sponsorVideoID || onMobileYouTube) return false;
//if it isn't visible, there is no data
const shouldHide = (uploadButtonVisible && !(Config.config.hideDeleteButtonPlayerControls || onInvidious)) ? "unset" : "none"
@@ -1445,7 +1435,7 @@ function dontShowNoticeAgain() {
closeAllSkipNotices();
}
-function sponsorMessageStarted(callback) {
+function sponsorMessageStarted(callback: (response: MessageResponse) => void) {
video = document.querySelector('video');
//send back current time
@@ -1470,8 +1460,6 @@ function submitSponsorTimes() {
//it can't update to this info yet
closeInfoMenu();
- const currentVideoID = sponsorVideoID;
-
if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {
submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);
}
@@ -1618,7 +1606,7 @@ function sendRequestToCustomServer(type, fullAddress, callback) {
callback(xmlhttp, false);
};
- xmlhttp.onerror = function(ev) {
+ xmlhttp.onerror = function() {
callback(xmlhttp, true);
};
}
@@ -1630,7 +1618,7 @@ function sendRequestToCustomServer(type, fullAddress, callback) {
/**
* Update the isAdPlaying flag and hide preview bar/controls if ad is playing
*/
-function updateAdFlag() {
+function updateAdFlag(): void {
const wasAdPlaying = isAdPlaying;
isAdPlaying = document.getElementsByClassName('ad-showing').length > 0;
diff --git a/src/globals.d.ts b/src/globals.d.ts
new file mode 100644
index 00000000..ed8547a0
--- /dev/null
+++ b/src/globals.d.ts
@@ -0,0 +1,19 @@
+import { SBObject } from "./config";
+declare global {
+ interface Window { SB: SBObject; }
+ // Remove this once the API becomes stable and types are shipped in @types/chrome
+ namespace chrome {
+ namespace declarativeContent {
+ export interface RequestContentScriptOptions {
+ allFrames?: boolean;
+ css?: string[];
+ instanceType?: "declarativeContent.RequestContentScript";
+ js?: string[];
+ matchAboutBlanck?: boolean;
+ }
+ export class RequestContentScript {
+ constructor(options: RequestContentScriptOptions);
+ }
+ }
+ }
+}
diff --git a/src/messageTypes.ts b/src/messageTypes.ts
new file mode 100644
index 00000000..cd1914a8
--- /dev/null
+++ b/src/messageTypes.ts
@@ -0,0 +1,63 @@
+//
+// Message and Response Types
+//
+
+import { SponsorTime } from "./types";
+
+interface BaseMessage {
+ from?: string;
+}
+
+interface DefaultMessage {
+ message:
+ "update"
+ | "sponsorStart"
+ | "sponsorDataChanged"
+ | "isInfoFound"
+ | "getVideoID"
+ | "getChannelID"
+ | "isChannelWhitelisted"
+ | "submitTimes";
+}
+
+interface BoolValueMessage {
+ message: "whitelistChange";
+ value: boolean;
+}
+
+interface ChangeStartSponsorButtonMessage {
+ message: "changeStartSponsorButton";
+ showStartSponsor: boolean;
+ uploadButtonVisible: boolean;
+}
+
+export type Message = BaseMessage & (DefaultMessage | BoolValueMessage | ChangeStartSponsorButtonMessage);
+
+interface IsInfoFoundMessageResponse {
+ found: boolean;
+ sponsorTimes: SponsorTime[];
+}
+
+interface GetVideoIdResponse {
+ videoID: string;
+}
+
+interface GetChannelIDResponse {
+ channelID: string;
+}
+
+interface SponsorStartResponse {
+ time: number;
+}
+
+interface IsChannelWhitelistedResponse {
+ value: boolean;
+}
+
+export type MessageResponse =
+ IsInfoFoundMessageResponse
+ | GetVideoIdResponse
+ | GetChannelIDResponse
+ | SponsorStartResponse
+ | IsChannelWhitelistedResponse;
+
diff --git a/src/options.ts b/src/options.ts
index 979dac6b..186e442a 100644
--- a/src/options.ts
+++ b/src/options.ts
@@ -2,7 +2,7 @@ import Config from "./config";
import * as CompileConfig from "../config.json";
// Make the config public for debugging purposes
-(<any> window).SB = Config;
+window.SB = Config;
import Utils from "./utils";
import CategoryChooser from "./render/CategoryChooser";
@@ -107,7 +107,7 @@ async function init() {
// Permission needed on Firefox
if (utils.isFirefox()) {
- const permissionSuccess = await new Promise((resolve, reject) => {
+ const permissionSuccess = await new Promise((resolve) => {
chrome.permissions.request({
origins: [textChangeInput.value + "/"],
permissions: []
@@ -202,7 +202,7 @@ async function init() {
*
* @param {String} element
*/
-function optionsConfigUpdateListener(changes) {
+function optionsConfigUpdateListener() {
const optionsContainer = document.getElementById("options");
const optionsElements = optionsContainer.querySelectorAll("*");
@@ -243,7 +243,7 @@ function invidiousInstanceAddInit(element: HTMLElement, option: string) {
const button = element.querySelector(".trigger-button");
const setButton = element.querySelector(".text-change-set");
- setButton.addEventListener("click", async function(e) {
+ setButton.addEventListener("click", async function() {
if (textBox.value == "" || textBox.value.includes("/") || textBox.value.includes("http")) {
alert(chrome.i18n.getMessage("addInvidiousInstanceError"));
} else {
@@ -269,7 +269,7 @@ function invidiousInstanceAddInit(element: HTMLElement, option: string) {
});
const resetButton = element.querySelector(".invidious-instance-reset");
- resetButton.addEventListener("click", function(e) {
+ resetButton.addEventListener("click", function() {
if (confirm(chrome.i18n.getMessage("resetInvidiousInstanceAlert"))) {
// Set to a clone of the default
Config.config[option] = Config.defaults[option].slice(0);
@@ -536,7 +536,7 @@ function copyDebugOutputToClipboard() {
.then(() => {
alert(chrome.i18n.getMessage("copyDebugInformationComplete"));
})
- .catch((err) => {
+ .catch(() => {
alert(chrome.i18n.getMessage("copyDebugInformationFailed"));
});
-} \ No newline at end of file
+}
diff --git a/src/popup.ts b/src/popup.ts
index e92c3c53..db34325c 100644
--- a/src/popup.ts
+++ b/src/popup.ts
@@ -2,11 +2,12 @@ import Config from "./config";
import Utils from "./utils";
import { SponsorTime, SponsorHideType } from "./types";
+import { Message, MessageResponse } from "./messageTypes";
const utils = new Utils();
interface MessageListener {
- (request: any, sender: any, callback: (response: any) => void): void;
-}
+ (request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void;
+}
class MessageHandler {
messageListener: MessageListener;
@@ -15,7 +16,7 @@ class MessageHandler {
this.messageListener = messageListener;
}
- sendMessage(id: number, request, callback?) {
+ sendMessage(id: number, request: Message, callback?) {
if (this.messageListener) {
this.messageListener(request, null, callback);
} else {
@@ -37,6 +38,8 @@ class MessageHandler {
}
}
+
+
//make this a function to allow this to run on the content page
async function runThePopup(messageListener?: MessageListener): Promise<void> {
const messageHandler = new MessageHandler(messageListener);
@@ -45,7 +48,14 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
await utils.wait(() => Config.config !== null);
- const PageElements: any = {};
+ type InputPageElements = {
+ whitelistToggle?: HTMLInputElement,
+ toggleSwitch?: HTMLInputElement,
+ usernameInput?: HTMLInputElement,
+ };
+ type PageElements = { [key: string]: HTMLElement } & InputPageElements
+
+ const PageElements: PageElements = {};
[
"sponsorblockPopup",
@@ -375,7 +385,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
const sponsorTimeButton = document.createElement("button");
sponsorTimeButton.className = "segmentTimeButton popupElement";
- const prefix = chrome.i18n.getMessage("category_" + segmentTimes[i].category) + ": ";
+ const prefix = utils.shortCategoryName(segmentTimes[i].category) + ": ";
let extraInfo = "";
if (segmentTimes[i].hidden === SponsorHideType.Downvoted) {
@@ -584,7 +594,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
}
});
}
-
+
//converts time in seconds to minutes:seconds
function getFormattedTime(seconds) {
const minutes = Math.floor(seconds / 60);
@@ -715,25 +725,6 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
hiddenButton.style.display = "none";
}
- //converts time in seconds to minutes
- function getTimeInMinutes(seconds) {
- const minutes = Math.floor(seconds / 60);
-
- return minutes;
- }
-
- //converts time in seconds to seconds past the last minute
- function getTimeInFormattedSeconds(seconds) {
- const minutes = seconds % 60;
- let secondsFormatted = minutes.toFixed(3);
-
- if (minutes < 10) {
- secondsFormatted = "0" + secondsFormatted;
- }
-
- return secondsFormatted;
- }
-
/**
* Converts time in hours to 5h 25.1
* If less than 1 hour, just returns minutes
diff --git a/src/types.ts b/src/types.ts
index d7818e01..64afe352 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -3,7 +3,7 @@ import SkipNoticeComponent from "./components/SkipNoticeComponent";
interface ContentContainer {
(): {
- vote: (type: any, UUID: any, category?: string, skipNotice?: SkipNoticeComponent) => void,
+ vote: (type: number, UUID: string, category?: string, skipNotice?: SkipNoticeComponent) => void,
dontShowNoticeAgain: () => void,
unskipSponsorTime: (segment: SponsorTime) => void,
sponsorTimes: SponsorTime[],
@@ -15,9 +15,9 @@ interface ContentContainer {
onMobileYouTube: boolean,
sponsorSubmissionNotice: SubmissionNotice,
resetSponsorSubmissionNotice: () => void,
- changeStartSponsorButton: (showStartSponsor: any, uploadButtonVisible: any) => Promise<boolean>,
+ changeStartSponsorButton: (showStartSponsor: boolean, uploadButtonVisible: boolean) => Promise<boolean>,
previewTime: (time: number, unpause?: boolean) => void,
- videoInfo: any,
+ videoInfo: VideoInfo,
getRealCurrentTime: () => number
}
}
@@ -78,8 +78,86 @@ interface BackgroundScriptContainer {
unregisterFirefoxContentScript: (id: string) => void
}
+interface VideoInfo {
+ responseContext: {
+ serviceTrackingParams: Array<{service: string, params: Array<{key: string, value: string}>}>,
+ webResponseContextExtensionData: {
+ hasDecorated: boolean
+ }
+ },
+ playabilityStatus: {
+ status: string,
+ playableInEmbed: boolean,
+ miniplayer: {
+ miniplayerRenderer: {
+ playbackMode: string
+ }
+ }
+ };
+ streamingData: unknown;
+ playbackTracking: unknown;
+ videoDetails: {
+ videoId: string,
+ title: string,
+ lengthSeconds: string,
+ keywords: string[],
+ channelId: string,
+ isOwnerViewing: boolean,
+ shortDescription: string,
+ isCrawlable: boolean,
+ thumbnail: {
+ thumbnails: Array<{url: string, width: number, height: number}>
+ },
+ averageRating: number,
+ allowRatings: boolean,
+ viewCount: string,
+ author: string,
+ isPrivate: boolean,
+ isUnpluggedCorpus: boolean,
+ isLiveContent: boolean,
+ };
+ playerConfig: unknown;
+ storyboards: unknown;
+ microformat: {
+ playerMicroformatRenderer: {
+ thumbnail: {
+ thumbnails: Array<{url: string, width: number, height: number}>
+ },
+ embed: {
+ iframeUrl: string,
+ flashUrl: string,
+ width: number,
+ height: number,
+ flashSecureUrl: string,
+ },
+ title: {
+ simpleText: string,
+ },
+ description: {
+ simpleText: string,
+ },
+ lengthSeconds: string,
+ ownerProfileUrl: string,
+ externalChannelId: string,
+ availableCountries: string[],
+ isUnlisted: boolean,
+ hasYpcMetadata: boolean,
+ viewCount: string,
+ category: string,
+ publishDate: string,
+ ownerChannelName: string,
+ uploadDate: string,
+ }
+ };
+ trackingParams: string;
+ attestation: unknown;
+ messages: unknown;
+}
+
type VideoID = string;
+type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };
+
export {
FetchResponse,
VideoDurationResponse,
@@ -91,5 +169,7 @@ export {
SponsorHideType,
PreviewBarOption,
Registration,
- BackgroundScriptContainer
+ BackgroundScriptContainer,
+ VideoInfo,
+ StorageChangesObject,
};
diff --git a/src/utils.ts b/src/utils.ts
index 1da66f64..6d7af44d 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -54,18 +54,16 @@ class Utils {
setupExtraSitePermissions(callback: (granted: boolean) => void): void {
// Request permission
let permissions = ["declarativeContent"];
- if (this.isFirefox()) permissions = [];
-
- const self = this;
+ if (this.isFirefox()) permissions = [];
chrome.permissions.request({
origins: this.getInvidiousInstancesRegex(),
permissions: permissions
- }, async function (granted) {
+ }, async (granted) => {
if (granted) {
- self.setupExtraSiteContentScripts();
+ this.setupExtraSiteContentScripts();
} else {
- self.removeExtraSiteRegistration();
+ this.removeExtraSiteRegistration();
}
callback(granted);
@@ -80,7 +78,6 @@ class Utils {
* For now, it is just SB.config.invidiousInstances.
*/
setupExtraSiteContentScripts(): void {
- const self = this;
if (this.isFirefox()) {
const firefoxJS = [];
@@ -107,9 +104,9 @@ class Utils {
chrome.runtime.sendMessage(registration);
}
} else {
- chrome.declarativeContent.onPageChanged.removeRules(["invidious"], function() {
+ chrome.declarativeContent.onPageChanged.removeRules(["invidious"], () => {
const conditions = [];
- for (const regex of self.getInvidiousInstancesRegex()) {
+ for (const regex of this.getInvidiousInstancesRegex()) {
conditions.push(new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlMatches: regex }
}));
@@ -119,11 +116,10 @@ class Utils {
const rule = {
id: "invidious",
conditions,
- // This API is experimental and not visible by the TypeScript compiler
- actions: [new (<any> chrome.declarativeContent).RequestContentScript({
+ actions: [new chrome.declarativeContent.RequestContentScript({
allFrames: true,
- js: self.js,
- css: self.css
+ js: this.js,
+ css: this.css
})]
};
@@ -243,7 +239,7 @@ class Utils {
getLocalizedMessage(text: string): string | false {
const valNewH = text.replace(/__MSG_(\w+)__/g, function(match, v1) {
- return v1 ? chrome.i18n.getMessage(v1) : "";
+ return v1 ? chrome.i18n.getMessage(v1).replace("\n", "<br/>") : "";
});
if(valNewH != text) {