From 108c6868c86c6cd477cb33736338614610388a6d Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 6 Oct 2022 12:37:07 -0400 Subject: [PATCH 001/367] Setting up the cordova directory --- cordova/package.js | 33 ++ package.json | 1 + yarn.lock | 1314 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 1299 insertions(+), 49 deletions(-) create mode 100644 cordova/package.js diff --git a/cordova/package.js b/cordova/package.js new file mode 100644 index 0000000000000..78061409f6c43 --- /dev/null +++ b/cordova/package.js @@ -0,0 +1,33 @@ + +const pkg = require('../package.json') + +module.exports = { + name: pkg.name, + displayName: pkg.productName, + version: pkg.version, + author: pkg.author, + repository: pkg.repository, + bugs: pkg.bugs, + license: pkg.license, + description: pkg.description, + private: pkg.private, + devDependencies: { + 'cordova-clipboard': '^1.3.0', + 'cordova-plugin-advanced-background-mode': '^1.1.1', + 'cordova-plugin-android-permissions': '^1.1.4', + 'cordova-plugin-music-controls2': 'github:ghenry22/cordova-plugin-music-controls2', + 'cordova-plugin-theme-detection': '^1.3.0' + }, + cordova: { + platforms: [ + 'android' + ], + plugins: { + 'cordova-plugin-android-permissions': {}, + 'cordova-plugin-music-controls2': {}, + 'cordova-clipboard': {}, + 'cordova-plugin-advanced-background-mode': {}, + 'cordova-plugin-theme-detection': {} + } + } +} diff --git a/package.json b/package.json index dc9c5263cb0e2..e9f4d5455a2c6 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "babel-eslint": "^10.1.0", "babel-loader": "^8.2.5", "copy-webpack-plugin": "^11.0.0", + "cordova": "^11.0.0", "css-loader": "^6.7.1", "css-minimizer-webpack-plugin": "^4.1.0", "electron": "^20.3.1", diff --git a/yarn.lock b/yarn.lock index 8e60b4a8947a3..8e049856f8cf2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1167,6 +1167,11 @@ dependencies: axios "^0.27.2" +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -1256,6 +1261,15 @@ lodash "^4.17.15" tmp-promise "^3.0.2" +"@netflix/nerror@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@netflix/nerror/-/nerror-1.1.3.tgz#9d88eccca442f1d544f2761d15ea557dc0a44ed2" + integrity sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg== + dependencies: + assert-plus "^1.0.0" + extsprintf "^1.4.0" + lodash "^4.17.15" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1277,6 +1291,66 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/git@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" + integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== + dependencies: + "@npmcli/promise-spawn" "^1.3.2" + lru-cache "^6.0.0" + mkdirp "^1.0.4" + npm-pick-manifest "^6.1.1" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.6": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/node-gyp@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== + +"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" + integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/run-script@^1.8.2": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" + integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== + dependencies: + "@npmcli/node-gyp" "^1.0.2" + "@npmcli/promise-spawn" "^1.3.2" + node-gyp "^7.1.0" + read-package-json-fast "^2.0.1" + "@seald-io/binary-search-tree@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz#9f0e5cec5e0acf97f1b495f2f6d3476ddb6a94ed" @@ -1781,6 +1855,11 @@ JSONStream@^1.0.3: jsonparse "^1.2.0" through ">=2.2.7 <3" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -1845,6 +1924,23 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" +agentkeepalive@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -1874,7 +1970,7 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0: +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.3, ajv@^8.8.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -1896,11 +1992,31 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1920,6 +2036,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" + integrity sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A== + anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -1965,6 +2086,19 @@ app-builder-lib@23.3.3: tar "^6.1.11" temp-file "^3.4.0" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1977,6 +2111,11 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1998,6 +2137,11 @@ array-includes@^3.1.4: get-intrinsic "^1.1.1" is-string "^1.0.7" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array.prototype.flat@^1.2.5: version "1.3.0" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" @@ -2065,6 +2209,13 @@ async@0.2.10: resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= +async@^2.6.2: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + async@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" @@ -2080,6 +2231,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atomically@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" + integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== + autolinker@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-4.0.0.tgz#aa1f9a52786b727b0ecee8cd7d4a97e0e3ef59f1" @@ -2192,6 +2348,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2276,6 +2437,13 @@ boxen@^5.0.0: widest-line "^3.1.0" wrap-ansi "^7.0.0" +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2548,6 +2716,11 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2558,6 +2731,30 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cacache@^15.0.5, cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -2627,7 +2824,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2636,6 +2833,14 @@ chalk@^2.0.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -2644,6 +2849,11 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: ansi-styles "^4.1.0" supports-color "^7.1.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -2704,11 +2914,23 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -2717,6 +2939,11 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -2742,6 +2969,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2870,6 +3102,22 @@ concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +conf@^10.0.1: + version "10.2.0" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== + dependencies: + ajv "^8.6.3" + ajv-formats "^2.1.1" + atomically "^1.7.0" + debounce-fn "^4.0.0" + dot-prop "^6.0.1" + env-paths "^2.2.1" + json-schema-typed "^7.0.3" + onetime "^5.1.2" + pkg-up "^3.1.0" + semver "^7.3.5" + config-chain@^1.1.11: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" @@ -2900,6 +3148,11 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" @@ -2958,6 +3211,114 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" +cordova-app-hello-world@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cordova-app-hello-world/-/cordova-app-hello-world-6.0.0.tgz#aed3e3334516c1c0717b942ce85bea4f8a57f71a" + integrity sha512-wPZsm+fzNUwdiTRODT+fQuPV410RNmd3Buiw63vT8BPxjC+cn6Bu8emrgwrDM4pbmU5sa5Unwu3xPcbQGQ3G3g== + +cordova-common@^4.0.0, cordova-common@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cordova-common/-/cordova-common-4.0.2.tgz#c5be3f3811f5731cd1d7eb5193b0789a8d5a854f" + integrity sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q== + dependencies: + "@netflix/nerror" "^1.1.3" + ansi "^0.3.1" + bplist-parser "^0.2.0" + cross-spawn "^7.0.1" + elementtree "^0.1.7" + endent "^1.4.1" + fast-glob "^3.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + plist "^3.0.1" + q "^1.5.1" + read-chunk "^3.2.0" + strip-bom "^4.0.0" + underscore "^1.9.2" + +cordova-create@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cordova-create/-/cordova-create-4.0.0.tgz#e0bdb1fc0164b9c9da7efab083374593323b7c66" + integrity sha512-t/4zaDZ4ZsFpC7j6x7s9hR9OeEo8nD2m7rSrzV2PUEfA4BPQujkmk0AIC+5iBvjfR7+ReHOHKsY/NfB1LnMQxQ== + dependencies: + cordova-app-hello-world "^6.0.0" + cordova-common "^4.0.2" + cordova-fetch "^3.0.1" + fs-extra "^10.0.0" + globby "^11.0.4" + import-fresh "^3.3.0" + isobject "^4.0.0" + npm-package-arg "^8.1.5" + path-is-inside "^1.0.2" + tmp "^0.2.1" + valid-identifier "0.0.2" + +cordova-fetch@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cordova-fetch/-/cordova-fetch-3.0.1.tgz#97461fb85129f8e2db24ef0c5b5a0f09af858328" + integrity sha512-bxXk6H3FtGXpCtlO+XyXM4pa72azQomdurNeHbZai9eYBzA5vjyPnsgxsYcylLUc1wQFeR+XWQVfgJitx6ghEw== + dependencies: + cordova-common "^4.0.0" + fs-extra "^9.0.0" + npm-package-arg "^8.0.1" + pacote "^11.1.11" + pify "^5.0.0" + resolve "^1.15.1" + semver "^7.1.3" + which "^2.0.2" + +cordova-lib@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/cordova-lib/-/cordova-lib-11.0.0.tgz#76f386a08e928f4605a830e54b51b28495c1353a" + integrity sha512-3XSCIAlS060/hzxWKDrF+sMfv3PVU8bglCaL31HMCyj3YrZn1CZhqrRRrW5lwRxtz7Sh4XCxv97rNxF38uj9hg== + dependencies: + cordova-common "^4.0.2" + cordova-fetch "^3.0.1" + cordova-serve "^4.0.0" + dep-graph "^1.1.0" + detect-indent "^6.1.0" + detect-newline "^3.1.0" + elementtree "^0.1.7" + execa "^5.1.1" + fs-extra "^10.0.0" + globby "^11.0.4" + init-package-json "^2.0.5" + md5-file "^5.0.0" + pify "^5.0.0" + semver "^7.3.5" + stringify-package "^1.0.1" + write-file-atomic "^3.0.3" + +cordova-serve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cordova-serve/-/cordova-serve-4.0.0.tgz#7d0dc2a3c15f4ed17a467b97f0a37b9eb00b2964" + integrity sha512-gzTLeBQzNP8aM/nG0/7sSfICfNazUgwvEU2kiDaybbYXmxwioo2v96h4tzE0XOyA64beyYwAyRYEEqWA4AMZjw== + dependencies: + chalk "^3.0.0" + compression "^1.7.4" + express "^4.17.1" + open "^7.0.3" + which "^2.0.2" + +cordova@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/cordova/-/cordova-11.0.0.tgz#c7a4bf853a55652aa293d20299a6c92ba3a22af1" + integrity sha512-Hu2YeT0naeP/1sEm/xfJYUsXN48XV6zagxbi1+4q0Ei9c5TKsIq8v4EWukvSHF4UO2pnh+9ViaDlGMcS1Wrnfg== + dependencies: + configstore "^5.0.1" + cordova-common "^4.0.2" + cordova-create "^4.0.0" + cordova-lib "^11.0.0" + editor "^1.0.0" + execa "^5.1.1" + fs-extra "^10.0.0" + insight "^0.11.1" + loud-rejection "^2.2.0" + nopt "^5.0.0" + semver "^7.3.5" + systeminformation "^5.9.17" + update-notifier "^5.1.0" + core-js-compat@^3.21.0, core-js-compat@^3.22.1: version "3.22.5" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.5.tgz#7fffa1d20cb18405bd22756ca1353c6f1a0e8614" @@ -3025,7 +3386,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3177,6 +3538,13 @@ csstype@^3.1.0: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== + dependencies: + array-find-index "^1.0.1" + dash-ast@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" @@ -3189,6 +3557,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +debounce-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" + integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== + dependencies: + mimic-fn "^3.0.0" + debug@2.6.9, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3217,6 +3592,11 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -3262,12 +3642,24 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +dep-graph@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dep-graph/-/dep-graph-1.1.0.tgz#fade86a92799a813e9b42511cdf3dfa6cc8dbefe" + integrity sha512-/6yUWlSH0Uevjj6HWvO86rDeFzuYfzbaKDqifTEemwfwEPyBrODTb3ox/jFzqmc2+UmgJ3IDMS88BKEBh1Nm2Q== + dependencies: + underscore "1.2.1" + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@~1.1.2: +depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -3295,6 +3687,16 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" @@ -3451,6 +3853,13 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" @@ -3481,6 +3890,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +editor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + integrity sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3578,6 +3992,13 @@ electron@^20.3.1: "@types/node" "^16.11.26" extract-zip "^2.0.1" +elementtree@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" + integrity sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg== + dependencies: + sax "1.1.4" + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -3606,6 +4027,13 @@ encodeurl@^1.0.2, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -3613,6 +4041,15 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +endent@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/endent/-/endent-1.4.1.tgz#c58cc13dfc432d0b2c7faf74c13ffdca60b2d1c8" + integrity sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ== + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.4" + enhanced-resolve@^5.10.0: version "5.10.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" @@ -3633,7 +4070,7 @@ entities@^2.0.0, entities@^2.0.3: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -env-paths@^2.2.0: +env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== @@ -3643,6 +4080,11 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3998,7 +4440,22 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^5.0.0: +execa@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -4013,7 +4470,7 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -express@^4.17.3: +express@^4.17.1, express@^4.17.3: version "4.18.1" resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== @@ -4070,6 +4527,15 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extract-zip@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -4086,7 +4552,7 @@ extsprintf@1.3.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= -extsprintf@^1.2.0: +extsprintf@^1.2.0, extsprintf@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== @@ -4112,6 +4578,22 @@ fast-glob@^3.2.11: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.2.2, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -4153,6 +4635,13 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -4203,6 +4692,13 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -4302,7 +4798,7 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: +fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -4349,6 +4845,20 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4389,7 +4899,7 @@ get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.1.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -4435,7 +4945,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.1.0: +glob@^7.1.0, glob@^7.1.1, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4515,6 +5025,18 @@ globalthis@^1.0.1: dependencies: define-properties "^1.1.3" +globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globby@^13.1.1: version "13.1.2" resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" @@ -4543,7 +5065,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -4605,6 +5127,11 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -4658,7 +5185,7 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^4.1.0: +hosted-git-info@^4.0.1, hosted-git-info@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== @@ -4724,7 +5251,7 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.0.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== @@ -4820,11 +5347,23 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + iconv-corefoundation@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" @@ -4833,7 +5372,7 @@ iconv-corefoundation@^1.1.7: cli-truncate "^2.1.0" node-addon-api "^1.6.3" -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4857,6 +5396,13 @@ ieee754@^1.1.13, ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore-walk@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + dependencies: + minimatch "^3.0.4" + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4877,7 +5423,7 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -4903,11 +5449,21 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + individual@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c= +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4941,6 +5497,19 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +init-package-json@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" + integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== + dependencies: + npm-package-arg "^8.1.5" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "^4.1.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^3.0.0" + inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" @@ -4948,6 +5517,25 @@ inline-source-map@~0.6.0: dependencies: source-map "~0.5.3" +inquirer@^6.3.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + insert-module-globals@^7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.1.tgz#d5e33185181a4e1f33b15f7bf100ee91890d5cb3" @@ -4964,6 +5552,21 @@ insert-module-globals@^7.2.1: undeclared-identifiers "^1.1.2" xtend "^4.0.0" +insight@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/insight/-/insight-0.11.1.tgz#63d412a72ef22414700b534665007000c92f1bf0" + integrity sha512-TBcZ0qC9dgdmcxL93OoqkY/RZXJtIi0i07phX/QyYk2ysmJtZex59dgTj4Doq50N9CG9dLRe/RIudc/5CCoFNw== + dependencies: + async "^2.6.2" + chalk "^4.1.1" + conf "^10.0.1" + inquirer "^6.3.1" + lodash.debounce "^4.0.8" + os-name "^4.0.1" + request "^2.88.0" + tough-cookie "^4.0.0" + uuid "^8.3.2" + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -5057,6 +5660,13 @@ is-ci@^3.0.0: dependencies: ci-info "^3.2.0" +is-core-module@^2.5.0, is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + is-core-module@^2.8.1: version "2.9.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" @@ -5064,13 +5674,6 @@ is-core-module@^2.8.1: dependencies: has "^1.0.3" -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== - dependencies: - has "^1.0.3" - is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -5088,6 +5691,18 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -5120,6 +5735,11 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -5226,7 +5846,7 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -5270,6 +5890,11 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -5351,7 +5976,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -5366,6 +5991,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema-typed@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" + integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== + json-schema@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" @@ -5409,7 +6039,7 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.2.0: +jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== @@ -5576,6 +6206,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -5618,11 +6256,19 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +loud-rejection@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" + integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.2" + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -5680,6 +6326,11 @@ m3u8stream@^0.8.6: miniget "^4.2.2" sax "^1.2.4" +macos-release@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" + integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== + make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -5687,6 +6338,28 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" +make-fetch-happen@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + marked@^4.0.17: version "4.0.17" resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.17.tgz#1186193d85bb7882159cdcfc57d1dfccaffb3fe9" @@ -5699,6 +6372,11 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" +md5-file@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-5.0.0.tgz#e519f631feca9c39e7f9ea1780b63c4745012e20" + integrity sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -5795,11 +6473,21 @@ mime@^2.5.2: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -5870,14 +6558,61 @@ minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -minipass@^3.0.0: +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== dependencies: yallist "^4.0.0" -minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -5890,7 +6625,7 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^1.0.3: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -5941,7 +6676,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5954,6 +6689,16 @@ multicast-dns@^7.2.4: dns-packet "^5.2.2" thunky "^1.0.2" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + mux.js@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-6.0.1.tgz#65ce0f7a961d56c006829d024d772902d28c7755" @@ -5979,7 +6724,7 @@ nedb-promises@^5.0.1: dependencies: "@seald-io/nedb" "^2.2.0" -negotiator@0.6.3: +negotiator@0.6.3, negotiator@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -6019,6 +6764,22 @@ node-forge@^1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.3" + nopt "^5.0.0" + npmlog "^4.1.2" + request "^2.88.2" + rimraf "^3.0.2" + semver "^7.3.2" + tar "^6.0.2" + which "^2.0.2" + node-releases@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" @@ -6029,6 +6790,13 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -6039,6 +6807,16 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -6054,6 +6832,13 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + npm-conf@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" @@ -6062,6 +6847,59 @@ npm-conf@^1.1.3: config-chain "^1.1.11" pify "^3.0.0" +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: + version "8.1.5" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== + dependencies: + hosted-git-info "^4.0.1" + semver "^7.3.4" + validate-npm-package-name "^3.0.0" + +npm-packlist@^2.1.4: + version "2.2.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== + dependencies: + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" + integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== + dependencies: + npm-install-checks "^4.0.0" + npm-normalize-package-bin "^1.0.1" + npm-package-arg "^8.1.2" + semver "^7.3.4" + +npm-registry-fetch@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== + dependencies: + make-fetch-happen "^9.0.1" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -6077,13 +6915,23 @@ npm-run-all@^4.1.5: shell-quote "^1.6.1" string.prototype.padend "^3.0.0" -npm-run-path@^4.0.1: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + nth-check@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -6091,12 +6939,17 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -6145,6 +6998,11 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +objectorarray@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" + integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -6169,13 +7027,28 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +open@^7.0.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.0.9: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" @@ -6217,11 +7090,29 @@ os-browserify@~0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== +os-name@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.1.tgz#32cee7823de85a8897647ba4d76db46bf845e555" + integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw== + dependencies: + macos-release "^2.5.0" + windows-release "^4.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -6229,7 +7120,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -6243,6 +7134,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -6250,6 +7148,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-retry@^4.5.0: version "4.6.2" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" @@ -6263,7 +7168,7 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -p-try@^2.0.0: +p-try@^2.0.0, p-try@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== @@ -6278,6 +7183,31 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" +pacote@^11.1.11: + version "11.3.5" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" + integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== + dependencies: + "@npmcli/git" "^2.1.0" + "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/promise-spawn" "^1.2.0" + "@npmcli/run-script" "^1.8.2" + cacache "^15.0.5" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.3" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^2.1.4" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^11.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.1.0" + pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -6357,6 +7287,11 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -6440,6 +7375,16 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pkcs7@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb" @@ -6454,6 +7399,13 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + plist@^3.0.1, plist@^3.0.4: version "3.0.5" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" @@ -6762,6 +7714,26 @@ progress@^2.0.0, progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== + dependencies: + read "1" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -6785,6 +7757,11 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -6827,6 +7804,11 @@ pupa@^2.0.1, pupa@^2.1.1: dependencies: escape-goat "^2.0.0" +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + qs@6.10.3: version "6.10.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" @@ -6849,6 +7831,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -6894,6 +7881,14 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-chunk@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" + integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== + dependencies: + pify "^4.0.1" + with-open-file "^0.1.6" + read-config-file@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" @@ -6912,6 +7907,24 @@ read-only-stream@^2.0.0: dependencies: readable-stream "^2.0.2" +read-package-json-fast@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.2.tgz#b444d047de7c75d4a160cb056d00c0693c1df703" + integrity sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^3.0.0" + npm-normalize-package-bin "^1.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -6921,7 +7934,14 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7071,7 +8091,7 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" -request@^2.88.2: +request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -7129,7 +8149,7 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0: +resolve@^1.1.4, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.4.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -7154,6 +8174,19 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -7199,6 +8232,11 @@ rss-parser@^3.12.0: entities "^2.0.3" xml2js "^0.4.19" +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -7213,6 +8251,13 @@ rust-result@^1.0.0: dependencies: individual "^2.0.0" +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -7268,6 +8313,11 @@ sass@^1.54.9: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" +sax@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" + integrity sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg== + sax@>=0.6.0, sax@^1.1.3, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -7345,6 +8395,13 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.1, semver@^7.1.3: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" @@ -7408,6 +8465,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -7478,7 +8540,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -7488,6 +8550,11 @@ simple-concat@^1.0.0: resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slash@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" @@ -7658,6 +8725,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -7712,7 +8786,16 @@ stream-splicer@^2.0.0: inherits "^2.0.1" readable-stream "^2.0.2" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7721,6 +8804,14 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string.prototype.padend@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" @@ -7767,6 +8858,32 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -7779,6 +8896,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -7867,6 +8989,11 @@ syntax-error@^1.1.1: dependencies: acorn-node "^1.2.0" +systeminformation@^5.9.17: + version "5.12.6" + resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.12.6.tgz#b75d7aaf9f5da32439fc633d2be9eb741691d200" + integrity sha512-FkCvT5BOuH1OE3+8lFM25oXIYJ0CM8kq4Wgvz2jyBTrsOIgha/6gdJXgbF4rv+g0j/5wJqQLDKan7kc/p7uIvw== + table@^6.0.9: version "6.8.0" resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" @@ -7883,7 +9010,7 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.1.11: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -7937,7 +9064,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3": +"through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -7961,7 +9088,14 @@ tmp-promise@^3.0.2: dependencies: tmp "^0.2.0" -tmp@^0.2.0: +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.0, tmp@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== @@ -7990,6 +9124,16 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tough-cookie@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -8025,7 +9169,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.11.1: +tslib@^1.11.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -8125,6 +9269,16 @@ underscore@1.13.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== +underscore@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.2.1.tgz#fc5c6b0765673d92a2d4ac8b4dc0aa88702e2bd4" + integrity sha512-HRhh6FYh5I5/zTt7L9MnHRA/nlSFPiwymMCXEremmzT7tHR+8CNP0FXHPaUpafAPwvAlNrvZiH91kQwoo/CqUA== + +underscore@^1.9.2: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -8148,6 +9302,20 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -8160,6 +9328,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -8220,6 +9393,14 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url-toolkit@^2.2.1: version "2.2.5" resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607" @@ -8287,7 +9468,12 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -validate-npm-package-license@^3.0.1: +valid-identifier@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/valid-identifier/-/valid-identifier-0.0.2.tgz#4814dff0c1b7d5ef3d7f4b678aeb26841b5b0e69" + integrity sha512-zaSmOW6ykXwrkX0YTuFUSoALNEKGaQHpxBJQLb3TXspRNDpBwbfrIQCZqAQ0LKBlKuyn2YOq7NNd6415hvZ33g== + +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -8295,6 +9481,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -8642,13 +9835,20 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -8661,6 +9861,22 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== +windows-release@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-4.0.0.tgz#4725ec70217d1bf6e02c7772413b29cdde9ec377" + integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg== + dependencies: + execa "^4.0.2" + +with-open-file@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729" + integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== + dependencies: + p-finally "^1.0.0" + p-try "^2.1.0" + pify "^4.0.1" + word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -8680,7 +9896,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== From 578b3734bf948e085329bdfc7829324197673ea1 Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 6 Oct 2022 13:15:07 -0400 Subject: [PATCH 002/367] Adding config.xml --- cordova/config.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cordova/config.xml diff --git a/cordova/config.xml b/cordova/config.xml new file mode 100644 index 0000000000000..72bde6d51d7fb --- /dev/null +++ b/cordova/config.xml @@ -0,0 +1,19 @@ + + + FreeTube + A private YouTube client + PrestonN + + + + + + + + + + + + + + \ No newline at end of file From 2c48e19419eb311f62bdb31e65d34e9f0fa2b0ab Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 6 Oct 2022 13:23:12 -0400 Subject: [PATCH 003/367] Adding restore command --- cordova/package.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cordova/package.js b/cordova/package.js index 78061409f6c43..356e4b4097457 100644 --- a/cordova/package.js +++ b/cordova/package.js @@ -11,6 +11,9 @@ module.exports = { license: pkg.license, description: pkg.description, private: pkg.private, + scripts: { + restore: 'npx cordova platform add android' + }, devDependencies: { 'cordova-clipboard': '^1.3.0', 'cordova-plugin-advanced-background-mode': '^1.1.1', From c93606e3128138021ae6c531ec580ed0b833215d Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 6 Oct 2022 15:53:09 -0400 Subject: [PATCH 004/367] Taking another step toward a cleaner cordova build --- _icons/.icon-set/background.png | Bin 0 -> 6045 bytes _icons/.icon-set/background_128x128.png | Bin 0 -> 2195 bytes _icons/.icon-set/background_16x16.png | Bin 0 -> 302 bytes _icons/.icon-set/background_32x32.png | Bin 0 -> 527 bytes _icons/.icon-set/background_48x48.png | Bin 0 -> 790 bytes _icons/.icon-set/background_64x64.png | Bin 0 -> 972 bytes _icons/.icon-set/iconColor_256_padded.png | Bin 0 -> 7528 bytes _icons/.icon-set/icon_128x128_padded.png | Bin 0 -> 3120 bytes _icons/.icon-set/icon_16x16_padded.png | Bin 0 -> 655 bytes _icons/.icon-set/icon_32x32_padded.png | Bin 0 -> 1006 bytes _icons/.icon-set/icon_48x48_padded.png | Bin 0 -> 1359 bytes _icons/.icon-set/icon_64x64_padded.png | Bin 0 -> 1662 bytes _scripts/cordova-build.js | 53 +++++ _scripts/webpack.cordova.config.js | 220 +++++++++++++++++++ package.json | 2 + {cordova => src/cordova}/config.xml | 0 src/cordova/config.xml.js | 23 ++ {cordova => src/cordova}/package.js | 2 +- src/index.ejs | 1 + src/renderer/components/ft-toast/ft-toast.js | 2 +- src/renderer/store/modules/utils.js | 9 +- 21 files changed, 307 insertions(+), 5 deletions(-) create mode 100644 _icons/.icon-set/background.png create mode 100644 _icons/.icon-set/background_128x128.png create mode 100644 _icons/.icon-set/background_16x16.png create mode 100644 _icons/.icon-set/background_32x32.png create mode 100644 _icons/.icon-set/background_48x48.png create mode 100644 _icons/.icon-set/background_64x64.png create mode 100644 _icons/.icon-set/iconColor_256_padded.png create mode 100644 _icons/.icon-set/icon_128x128_padded.png create mode 100644 _icons/.icon-set/icon_16x16_padded.png create mode 100644 _icons/.icon-set/icon_32x32_padded.png create mode 100644 _icons/.icon-set/icon_48x48_padded.png create mode 100644 _icons/.icon-set/icon_64x64_padded.png create mode 100644 _scripts/cordova-build.js create mode 100644 _scripts/webpack.cordova.config.js rename {cordova => src/cordova}/config.xml (100%) create mode 100644 src/cordova/config.xml.js rename {cordova => src/cordova}/package.js (95%) diff --git a/_icons/.icon-set/background.png b/_icons/.icon-set/background.png new file mode 100644 index 0000000000000000000000000000000000000000..23a4f002eed2152770a93f9d5aa83d451e4815aa GIT binary patch literal 6045 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 E3mU{;-T(jq literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/background_128x128.png b/_icons/.icon-set/background_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..5917ef358dd1dd7496f391f07aa2caefcc43f887 GIT binary patch literal 2195 zcmds3i#yYe7yr&S#GMf8^3Qn_ZXvzfWR>)-f2&pGGwoaa2}Jm)#jx!of>*(xgRQvd)!kz{A> zB1PIShRI508{Vf|3ZO6-TT7s_N9(6lfdmj8i2zW;fN%OhrMi5m-K8)9K)n9NAQg-~ z4FF&mk~Psa%5%Q3I|O-gFMT{fSy`D3t0;uMfWc7K@C)Y(prfu=i33};-n}|x`8Q8| ziDZ=o`y%t#Mox*84tB)Xd#8KeL~PD2nkM<3i@5=V%&lzvQF^LK!(vIYz!5vO*C|=T z4%}6;eDJ+`=*1-ukLbnetfaQ-6_twjFP@%y$mjDb&l-OG9?`^5RY+cl#gF|AHybt1 z>kfKsi3fLr`_FYA*lj5AnV@p=JH~Mg9ShHDry8~~NMG{Sw+6hd_(M73@hwv=e4VY5 z=Uq4vQDlxvO4Y+U1a5V9>)BP$h@zRz&CS%2+($BYg4)43oO;B*5P`NYtf?2Zt~3fG z;s3{-CPs7g2MN|nwMyPv^G98i2cAMS>-DQuip!_t)95WE!Je%zxjx0(AydYW?eIpO zB*dge@_TivGBMp}jHSN6h?uC|^quQQ3p_TIjPvT+?u}YIHI$a>b{AX|sVqSe`VD?h zy=or&`x@BAoExgNz~?(Wa4I8w>OWL_=lbhN`DNr27H@}oztEj?UyD>3XWe6LkC=D6 z*+4PzEY`$^?<+_OWT5glvFf~x3D|9BW(;CDDcg!4YI6h1eO9H7?PsX%DMj!!v#^>* zw%I1E2`8$%85w#Rba+La>KIkhCI}6|1_6H5uLc~Z*1~+**^0>mO{M}iv35(=ifYJd z`!l$s!hpuT6-PmxWR4703iI73$-w^w(Wcme^$ld&lntcwa_|KVf$0JX6d>qHG8i@> zCrC{cJxA>=K6y~ufoJiov9~9nA5w&|u&l00YEu?r3Ur|aaD+iREou6YFFgO+lh-3{ zFa)Fwh&r<-3rS_W98@S)gk=$X8S@JZ3j|tveUmgCkNeCSl2sFbh{>~d{P@m;{x3_= zBj&N_9edP$cPr@OiaRPLzN1X6DNv%S1pbnKd!>Lz2ZM)R$(l)CX!h1*0X1R?n#$8=jG<^FWsaY8X7j_<>dwM zY;G9uEpDxjjQC?;DZSafMa?U#dIQyUisokEs}Oy?*&=wX;Ug9q}> zxpQf{12-(DB#OoSfhsy0jqX?+Ytd;)NfPfDch{%@A?aP&q|ULtgRQOJ2F>BO)yA3< zJayXr7T*pH4ViXrOGzl=4}hyYo3kBS2BWcSu5H)qciN;2QC3cl(OP|ejqJr4U2vLP z@u2h2#pV*OogtHGv|I{@!_Q;AUKK)(`T|{zx8fckIO5C;>KYmvg#P&X+1Yh=Q_}|h z^XJd_xrRH4|1uhRs#&4(5(8%iACK{^BhlODQRy1nBSK;L-;3go<(J3ae7QJ?{p&ZV zQV+{wEU^Y1IrE{Up{K`5r;M;0PtzpIueLUMvGjFFc`<8hl$tML!X^215e2itkV)Xa zQ^?QH&l-M7&JvqUwWI~3=qV{f>+9>$l~*`|t%pYgDz)&jYp62XE;(DWhR5>mXV4v$cJ`ow{OmWGBau zLYlS>VJReAGS!FKjTUg(q?PZXYwt%!MpAs#hohWS6Y?;z!U_0sA=dPG8DVfFz~N2a|2H>d%1aB{x4)&`K2oY{vwr7?!Yi2jp4&Mzn^Fv5ts z$H&Jt1Ce&m@Ac$lv(Xuvym~;Mu8rr!Jn+SH{&;nw(RdSPh;yZS=#AVUd*S+=C?H3^{i^?z<@y99V5CD z>y5^j--VCo+qF&%B!v6J$g_QcY3gR|UEE|}(Bm@QVK!3!*WHFmgmrbBa#*BUa8&uk Ru=J4tNH$K^m6qO#{{ZOv5!nC$ literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/background_16x16.png b/_icons/.icon-set/background_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d20243b8c8e19304cc61fcf4e0b3a85ffa2b13 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1en@UW+gV~B1SQYqLM}?5zwTo>=ylx0OwQs%TEaV%?}q$aa-|z2&#uc@>nd}6 zmZ`7sgFWrq7A#f?4;k|!Vy_qTq)Qyi-*I@U{ke1Y`EpN@)t5#i`^ZAl{!>ix_GS-UD5AmA2Yu)WUe@{;ZdWXT&)z4*}Q$iB}Ih}N7 literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/background_32x32.png b/_icons/.icon-set/background_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..bbb05afd5d321f46930309bc0d179cea4d6d1d68 GIT binary patch literal 527 zcmV+q0`UEbP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TFP^g=h7O5aMq@|!18e?-g z@t@O5(4 zk_xXKghmMm5K3z7%S2w>?l0JyO%>x1&O17Q45uItvS)#~~m0lJ@J^hcde=T4O70Q5%A zKaC`W&Zm>fGI3l}aUMn&yV4X-YQNY&Ki^h!?gYn9JxuWUC9G+b@46NuNhz0N_w1 R)lmQd002ovPDHLkV1fm3=TiUx literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/background_48x48.png b/_icons/.icon-set/background_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..dda9e010ccd81ca4432ec0351e000558c900c69d GIT binary patch literal 790 zcmV+x1L^#UP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T5;AQvzvN+Np6Mk2|ID;QS{H{g0x2y9gMlE5qR%jl8tlAsuOga zaX4we!_E3}I2^tz7K=}Fxm>ASE>GdvPcGYqj*iFUqAbhz!r}14Kp=46>-FLn%Yy@= zO_=TZYPI?b!rT3R|GlCpADYePr&6i(C7;jJN9I*f14uL)l_HVIvET1Mfz>!7=|h7C zaLd4US0~kK^`cg*t>D0-e;5A7jsXO=kO0ew`9Jy&1+Ic5S-aT;;kJ5^92l4DC-Y^b U-V!Z07*qoM6N<$f~=8a761SM literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/background_64x64.png b/_icons/.icon-set/background_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..c107c2075251948910759cfd756963b42989dd94 GIT binary patch literal 972 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 D49aJM literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/icon_128x128_padded.png b/_icons/.icon-set/icon_128x128_padded.png new file mode 100644 index 0000000000000000000000000000000000000000..20631d1d61dc0c4e2975d05bad4ae0bd232dd75c GIT binary patch literal 3120 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 CeS)a~ literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/icon_16x16_padded.png b/_icons/.icon-set/icon_16x16_padded.png new file mode 100644 index 0000000000000000000000000000000000000000..3049ea8d2744a3ea760873ec92f14a43a54a4a7f GIT binary patch literal 655 zcmV;A0&x9_P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0whU9K~z{r?UYSO zR8bVi&wVpfA~eE~i?X5B5D{67n?jMHor}OtLPm<4qSkKQv~gXKD;E;AC~)UOT0}+V zvm6vo zpnSLH&qP{aKRn~l9164SH30@@kOW+Uw_pdHf~4LUL)mo#`1BaK9sYz2%&N!X3gmh_ z{~Mt=C!h@eLHH2TtIK7a{f$(m+=8zf%Pf5=d&b_?`n>ToQN;`J5jJM9Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1A|FKK~#8N?UzeP zR8bhm&vkrcSW&i!9*7W8WKS2Z48%n*3^xN32n9il-1KhOrYIpRs8-psl9GbxML|U` zT`1|I#2(l~gfgszvB7k1|NnK4O@m`P_uM-Uen0qeotew^e*g2GbI(u{}*qbQzBV8 zjRH~k!ROEwegrU0g~Or2jKFQ%vUuZsBJc^3jJ)6XunL}nyq+su&r9qB616r*j5oc% zp{%SnSW~0y27f_@5y3tHhve}g0DG_1+;Vz#{k!tk z%EeFWs*n9#+tsetG+tLKe}Pidxi6Y99C>Fga2tT9QvfZmR5-+un}I2Cv*>DP*V&TF zlLyN86k3h_%6k1)U0hd@(^Rk`3+HA=AkH027S2J7T?k#_X$P<;+HEzfaU%#z<8Fn)o2*z(epQJPz|A&v81z3sN0`MhC$VenY-t9)_zR z!}07sCrbda^PUUj9k?Dof(*ylV=tam2cQer&-c5q3~qr>A%CNuk*WX^6}}lhguE}k zXYdq117N}Nh2Mjt70!Kt)Arm0r1w6+b~>2F>f(6RBfbfaS~&5taEAH$?Jx*A6&M1$A#E@b03U07dnWx!m|Q7ytkO07*qoM6N<$f;`m9IRF3v literal 0 HcmV?d00001 diff --git a/_icons/.icon-set/icon_48x48_padded.png b/_icons/.icon-set/icon_48x48_padded.png new file mode 100644 index 0000000000000000000000000000000000000000..8005764dc26edc34d8c6433376d787289012a0d8 GIT binary patch literal 1359 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 Z>jgYa`hzdVXBmG6@b?Y$siH;m{|CA$^m+gQ literal 0 HcmV?d00001 diff --git a/_scripts/cordova-build.js b/_scripts/cordova-build.js new file mode 100644 index 0000000000000..8c86a87ae5638 --- /dev/null +++ b/_scripts/cordova-build.js @@ -0,0 +1,53 @@ + +;(async () => { + // #region Imports + const fs = require('fs') + const fse = require('fs-extra') + const path = require('path') + const util = require('util') + const exec = require('child_process').exec + const writeFile = util.promisify(fs.writeFile) + const mkdir = util.promisify(fs.mkdir) + const rm = util.promisify(fse.rm) + const exists = util.promisify(fs.exists) + const copy = util.promisify(fse.cp) + const configXML = await require('../src/cordova/config.xml.js') + const packageJSON = require('../src/cordova/package') + const execWithLiveOutput = (command) => { + return new Promise((resolve, reject) => { + let execCall = exec(command, (error, stdout, stderr) => { + if (error) { + reject(error) + } + }) + execCall.stdout.on('data', (data) => { + process.stdout.write(data) + }) + execCall.stderr.on('data', (data) => { + console.error(data) + }) + execCall.on('close', () => { + resolve() + }) + }) + } + // #endregion + const outputDirectory = path.join(__dirname, '..', 'dist', 'cordova') + if (!(await exists(outputDirectory))) { + await mkdir(outputDirectory) + await writeFile(path.join(outputDirectory, 'package.json'), JSON.stringify(packageJSON, null, 2)) + await writeFile(path.join(outputDirectory, 'config.xml'), configXML.string) + // Copy the icons into the cordova directory + await mkdir(path.join(outputDirectory, 'res')) + await mkdir(path.join(outputDirectory, 'res', 'icon')) + await copy(path.join(__dirname, '..', '_icons', '.icon-set'), path.join(outputDirectory, 'res', 'icon', 'android'), { recursive: true, force: true }) + await copy(path.join(__dirname, '..', '_icons', 'icon.svg'), path.join(outputDirectory, 'res', 'icon', 'android', 'background.xml')) + await copy(path.join(__dirname, '..', 'dist', 'web'), path.join(outputDirectory, 'www'), { recursive: true, force: true }) + // Install all of the cordova plugins + await execWithLiveOutput(`cd ${outputDirectory} && yarn install`) + // Restore the platform specific data + await execWithLiveOutput(`cd ${outputDirectory} && yarn restore`) + } else { + await copy(path.join(__dirname, '..', 'dist', 'web'), path.join(outputDirectory, 'www'), { recursive: true, force: true }) + } +})() \ No newline at end of file diff --git a/_scripts/webpack.cordova.config.js b/_scripts/webpack.cordova.config.js new file mode 100644 index 0000000000000..9411a42a8d62e --- /dev/null +++ b/_scripts/webpack.cordova.config.js @@ -0,0 +1,220 @@ +const path = require('path') +const webpack = require('webpack') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const VueLoaderPlugin = require('vue-loader/lib/plugin') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const JsonMinimizerPlugin = require('json-minimizer-webpack-plugin') +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') +const ProcessLocalesPlugin = require('./ProcessLocalesPlugin') + +const { productName } = require('../package.json') + +const isDevMode = process.env.NODE_ENV === 'development' + +const config = { + name: 'web', + mode: process.env.NODE_ENV, + devtool: isDevMode ? 'eval-cheap-module-source-map' : false, + entry: { + web: path.join(__dirname, '../src/renderer/main.js'), + }, + output: { + publicPath: '', + path: path.join(__dirname, '../dist/web'), + filename: '[name].js', + }, + externals: { + electron: '{}', + cordova: 'cordova' + }, + module: { + rules: [ + { + test: /\.js$/, + use: 'babel-loader', + exclude: /node_modules/, + }, + { + test: /\.vue$/, + use: { + loader: 'vue-loader', + options: { + extractCSS: true, + loaders: { + sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1', + scss: 'vue-style-loader!css-loader!sass-loader', + less: 'vue-style-loader!css-loader!less-loader', + }, + }, + }, + }, + { + test: /\.s(c|a)ss$/, + use: [ + { + loader: MiniCssExtractPlugin.loader, + }, + { + loader: 'css-loader', + options: { + esModule: false + } + }, + { + loader: 'sass-loader', + options: { + // eslint-disable-next-line + implementation: require('sass'), + sassOptions: { + indentedSyntax: true + } + } + }, + ], + }, + { + test: /\.css$/, + use: [ + { + loader: MiniCssExtractPlugin.loader + }, + { + loader: 'css-loader', + options: { + esModule: false + } + } + ], + }, + { + test: /\.html$/, + use: 'vue-html-loader', + }, + { + test: /\.(png|jpe?g|gif|tif?f|bmp|webp|svg)(\?.*)?$/, + type: 'asset/resource', + generator: { + filename: 'imgs/[name][ext]' + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + type: 'asset/resource', + generator: { + filename: 'fonts/[name][ext]' + } + }, + ], + }, + // webpack defaults to only optimising the production builds, so having this here is fine + optimization: { + minimizer: [ + '...', // extend webpack's list instead of overwriting it + new JsonMinimizerPlugin({ + exclude: /\/locales\/.*\.json/ + }), + new CssMinimizerPlugin() + ] + }, + node: { + __dirname: true, + __filename: isDevMode, + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env.PRODUCT_NAME': JSON.stringify(productName), + 'process.env.IS_ELECTRON': false + }), + new webpack.ProvidePlugin({ + process: 'process/browser', + Buffer: ['buffer', 'Buffer'] + }), + new HtmlWebpackPlugin({ + excludeChunks: ['processTaskWorker'], + filename: 'index.html', + template: path.resolve(__dirname, '../src/index.ejs'), + nodeModules: false, + }), + new VueLoaderPlugin(), + new MiniCssExtractPlugin({ + filename: isDevMode ? '[name].css' : '[name].[contenthash].css', + chunkFilename: isDevMode ? '[id].css' : '[id].[contenthash].css', + }), + ], + resolve: { + alias: { + '@': path.join(__dirname, '../src/renderer'), + vue$: 'vue/dist/vue.esm.js', + src: path.join(__dirname, '../src/'), + icons: path.join(__dirname, '../_icons/'), + images: path.join(__dirname, '../src/renderer/assets/img/'), + static: path.join(__dirname, '../static/') + }, + fallback: { + buffer: require.resolve('buffer/'), + dns: require.resolve('browserify/lib/_empty.js'), + fs: require.resolve('browserify/lib/_empty.js'), + http: require.resolve('stream-http'), + https: require.resolve('https-browserify'), + net: require.resolve('browserify/lib/_empty.js'), + os: require.resolve('os-browserify/browser.js'), + path: require.resolve('path-browserify'), + stream: require.resolve('stream-browserify'), + timers: require.resolve('timers-browserify'), + tls: require.resolve('browserify/lib/_empty.js'), + vm: require.resolve('vm-browserify') + }, + extensions: ['.js', '.vue', '.json', '.css'], + }, + target: 'web', +} + +/** + * Adjust web for production settings + */ +if (isDevMode) { + // any dev only config + config.plugins.push( + new webpack.DefinePlugin({ + __static: `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`, + }) + ) +} else { + const processLocalesPlugin = new ProcessLocalesPlugin({ + compress: false, + inputDir: path.join(__dirname, '../static/locales'), + outputDir: 'static/locales', + }) + + config.plugins.push( + processLocalesPlugin, + new webpack.DefinePlugin({ + 'process.env.LOCALE_NAMES': JSON.stringify(processLocalesPlugin.localeNames) + }), + new CopyWebpackPlugin({ + patterns: [ + { + from: path.join(__dirname, '../static/pwabuilder-sw.js'), + to: path.join(__dirname, '../dist/web/pwabuilder-sw.js'), + }, + { + from: path.join(__dirname, '../static'), + to: path.join(__dirname, '../dist/web/static'), + globOptions: { + dot: true, + ignore: ['**/.*', '**/locales/**', '**/pwabuilder-sw.js', '**/dashFiles/**', '**/storyboards/**'], + }, + }, + ] + }), + // webpack doesn't get rid of js-yaml even though it isn't used in the production builds + // so we need to manually tell it to ignore any imports for `js-yaml` + new webpack.IgnorePlugin({ + resourceRegExp: /^js-yaml$/, + contextRegExp: /i18n$/ + }) + ) +} + +module.exports = config diff --git a/package.json b/package.json index e9f4d5455a2c6..21d73b9c4d209 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ }, "scripts": { "build": "run-s rebuild:electron pack build-release", + "build:cordova": "node _scripts/cordova-build.js", + "run:cordova": "cd dist/cordova && npx cordova run android", "build:arm64": "run-s rebuild:electron pack build-release:arm64", "build:arm32": "run-s rebuild:electron pack build-release:arm32", "build-release": "node _scripts/build.js", diff --git a/cordova/config.xml b/src/cordova/config.xml similarity index 100% rename from cordova/config.xml rename to src/cordova/config.xml diff --git a/src/cordova/config.xml.js b/src/cordova/config.xml.js new file mode 100644 index 0000000000000..1bf8a29213b73 --- /dev/null +++ b/src/cordova/config.xml.js @@ -0,0 +1,23 @@ + +const pkg = require('../../package.json') +const fs = require('fs') +const util = require('util') +const xml2js = require('xml2js') +const parseXMLString = util.promisify(xml2js.parseString) +const createXMLStringFromObject = (obj) => { + const builder = new xml2js.Builder() + return builder.buildObject(obj) +} + +module.exports = (async () => { + const configXML = await parseXMLString((await util.promisify(fs.readFile)('./src/cordova/config.xml')).toString()) + configXML.widget.$.id = `io.freetubeapp.${pkg.name}` + configXML.widget.$.version = pkg.version + configXML.widget.author[0].$.email = pkg.author.email + configXML.widget.author[0]._ = pkg.author.name + configXML.widget.author[0].$.href = pkg.author.url + configXML.widget.name[0] = pkg.productName + configXML.widget.description[0] = pkg.description + const configXMLString = createXMLStringFromObject(configXML) + return { string: configXMLString, object: configXML } +})() diff --git a/cordova/package.js b/src/cordova/package.js similarity index 95% rename from cordova/package.js rename to src/cordova/package.js index 356e4b4097457..008104d4a56bc 100644 --- a/cordova/package.js +++ b/src/cordova/package.js @@ -1,5 +1,5 @@ -const pkg = require('../package.json') +const pkg = require('../../package.json') module.exports = { name: pkg.name, diff --git a/src/index.ejs b/src/index.ejs index ef68da4c69de3..f307488b2e4bc 100644 --- a/src/index.ejs +++ b/src/index.ejs @@ -50,6 +50,7 @@ } } + diff --git a/src/renderer/components/ft-toast/ft-toast.js b/src/renderer/components/ft-toast/ft-toast.js index be0b4e3e5c70c..cfa8cdd560381 100644 --- a/src/renderer/components/ft-toast/ft-toast.js +++ b/src/renderer/components/ft-toast/ft-toast.js @@ -1,6 +1,6 @@ import Vue from 'vue' import FtToastEvents from './ft-toast-events.js' - +import { setImmediate } from 'timers' export default Vue.extend({ name: 'FtToast', data: function () { diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index e75f82a9df7fc..b31d53eed3af9 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -3,6 +3,7 @@ import FtToastEvents from '../../components/ft-toast/ft-toast-events' import fs from 'fs' import path from 'path' import i18n from '../../i18n/index' +import cordova from 'cordova' import { IpcChannels } from '../../../constants' @@ -431,9 +432,11 @@ const actions = { return new Promise((resolve) => { const fileInput = document.createElement('input') fileInput.setAttribute('type', 'file') - if (options?.filters[0]?.extensions !== undefined) { - // this will map the given extensions from the options to the accept attribute of the input - fileInput.setAttribute('accept', options.filters[0].extensions.map((extension) => { return `.${extension}` }).join(', ')) + if (typeof cordova.plugins === 'undefined') { + if (options?.filters[0]?.extensions !== undefined) { + // this will map the given extensions from the options to the accept attribute of the input + fileInput.setAttribute('accept', options.filters[0].extensions.map((extension) => { return `.${extension}` }).join(', ')) + } } fileInput.onchange = () => { const files = Array.from(fileInput.files) From 542939be785f390a72ba00060ab04adddee351a5 Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 13:15:58 -0400 Subject: [PATCH 005/367] Adding an external for cordova in web --- _scripts/webpack.web.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index b9d05f00b44c5..7bc18f5a6253e 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -24,7 +24,8 @@ const config = { filename: '[name].js', }, externals: { - electron: '{}' + electron: '{}', + cordova: '{}' }, module: { rules: [ From ee1a0b52e6fd3bb861dd718f16c4fbe8350a35b4 Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 13:34:47 -0400 Subject: [PATCH 006/367] Adding cordova as an external to electron This should keep electron builds working even with the new `cordova` imports. --- _scripts/webpack.renderer.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js index bd7431af3e2ee..88c72e51c3f8d 100644 --- a/_scripts/webpack.renderer.config.js +++ b/_scripts/webpack.renderer.config.js @@ -31,7 +31,7 @@ const config = { // webpack spits out errors while inlining ytpl and ytsr as // they dynamically import their package.json file to extract the bug report URL // the error: "Critical dependency: the request of a dependency is an expression" - externals: ['ytpl', 'ytsr'], + externals: ['ytpl', 'ytsr', 'cordova'], module: { rules: [ { From 51e848c6013f6146de823f8c6d80aee114b14adc Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 13:54:05 -0400 Subject: [PATCH 007/367] Implementing `copyToClipboard` in cordova --- src/renderer/store/modules/utils.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index b31d53eed3af9..9023c67618135 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -256,9 +256,13 @@ const actions = { * @param {string} messageOnError the message to be displayed as a toast when the copy fails (optional) */ async copyToClipboard ({ dispatch }, { content, messageOnSuccess, messageOnError }) { - if (navigator.clipboard !== undefined && window.isSecureContext) { + let clipboardAPI = navigator.clipboard?.writeText.bind(navigator.clipboard) + if (window.cordova !== undefined) { + clipboardAPI = window.cordova.plugins.clipboard.copy + } + if (clipboardAPI !== undefined && window.isSecureContext) { try { - await navigator.clipboard.writeText(content) + await clipboardAPI(content) if (messageOnSuccess !== undefined) { dispatch('showToast', { message: messageOnSuccess From a05aa03a56791814c2f247b6e4b14df682f9f031 Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 14:00:27 -0400 Subject: [PATCH 008/367] Adding the `IS_CORDOVA` environment variable --- _scripts/webpack.cordova.config.js | 3 ++- _scripts/webpack.renderer.config.js | 3 ++- _scripts/webpack.web.config.js | 3 ++- src/renderer/store/modules/utils.js | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/_scripts/webpack.cordova.config.js b/_scripts/webpack.cordova.config.js index 391606b8cfbf1..e9cfc53a6c4a1 100644 --- a/_scripts/webpack.cordova.config.js +++ b/_scripts/webpack.cordova.config.js @@ -126,7 +126,8 @@ const config = { new CordovaPlugin(), new webpack.DefinePlugin({ 'process.env.PRODUCT_NAME': JSON.stringify(productName), - 'process.env.IS_ELECTRON': false + 'process.env.IS_ELECTRON': false, + 'process.env.IS_CORDOVA': true }), new webpack.ProvidePlugin({ process: 'process/browser', diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js index 88c72e51c3f8d..bc0c341c38e36 100644 --- a/_scripts/webpack.renderer.config.js +++ b/_scripts/webpack.renderer.config.js @@ -112,7 +112,8 @@ const config = { plugins: [ new webpack.DefinePlugin({ 'process.env.PRODUCT_NAME': JSON.stringify(productName), - 'process.env.IS_ELECTRON': true + 'process.env.IS_ELECTRON': true, + 'process.env.IS_CORDOVA': false }), new HtmlWebpackPlugin({ excludeChunks: ['processTaskWorker'], diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index 7bc18f5a6253e..06d07ebf51c0c 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -123,7 +123,8 @@ const config = { plugins: [ new webpack.DefinePlugin({ 'process.env.PRODUCT_NAME': JSON.stringify(productName), - 'process.env.IS_ELECTRON': false + 'process.env.IS_ELECTRON': false, + 'process.env.IS_CORDOVA': false }), new webpack.ProvidePlugin({ process: 'process/browser', diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index 9023c67618135..0ee7cab101335 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -257,8 +257,8 @@ const actions = { */ async copyToClipboard ({ dispatch }, { content, messageOnSuccess, messageOnError }) { let clipboardAPI = navigator.clipboard?.writeText.bind(navigator.clipboard) - if (window.cordova !== undefined) { - clipboardAPI = window.cordova.plugins.clipboard.copy + if (process.env.IS_CORDOVA) { + clipboardAPI = cordova.plugins.clipboard.copy } if (clipboardAPI !== undefined && window.isSecureContext) { try { @@ -436,7 +436,7 @@ const actions = { return new Promise((resolve) => { const fileInput = document.createElement('input') fileInput.setAttribute('type', 'file') - if (typeof cordova.plugins === 'undefined') { + if (process.env.IS_CORDOVA) { if (options?.filters[0]?.extensions !== undefined) { // this will map the given extensions from the options to the accept attribute of the input fileInput.setAttribute('accept', options.filters[0].extensions.map((extension) => { return `.${extension}` }).join(', ')) From 1774131d8b12a865ce4231f0b3cb8df3c54d58b5 Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 14:30:22 -0400 Subject: [PATCH 009/367] Added a form of theme detection, but I am actually probably going another direction. --- src/renderer/App.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/renderer/App.js b/src/renderer/App.js index 62467cfa7153e..7afe137848283 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -13,6 +13,7 @@ import { marked } from 'marked' import Parser from 'rss-parser' import { IpcChannels } from '../constants' import packageDetails from '../../package.json' +import cordova from 'cordova' let ipcRenderer = null @@ -155,6 +156,7 @@ export default Vue.extend({ this.grabHistory() this.grabAllPlaylists() + this.watchSystemTheme() if (process.env.IS_ELECTRON) { ipcRenderer = require('electron').ipcRenderer this.setupListenersToSyncWindows() @@ -162,7 +164,6 @@ export default Vue.extend({ this.openAllLinksExternally() this.enableSetSearchQueryText() this.enableOpenUrl() - this.watchSystemTheme() await this.checkExternalPlayer() } @@ -464,9 +465,19 @@ export default Vue.extend({ * all systems running the electron app. */ watchSystemTheme: function () { - ipcRenderer.on(IpcChannels.NATIVE_THEME_UPDATE, (event, shouldUseDarkColors) => { - document.body.dataset.systemTheme = shouldUseDarkColors ? 'dark' : 'light' - }) + if (process.env.IS_ELECTRON) { + ipcRenderer.on(IpcChannels.NATIVE_THEME_UPDATE, (event, shouldUseDarkColors) => { + document.body.dataset.systemTheme = shouldUseDarkColors ? 'dark' : 'light' + }) + } else if (process.env.IS_CORDOVA) { + cordova.plugins.ThemeDetection.isAvailable((isThemeDetectionAvailable) => { + if (isThemeDetectionAvailable) { + cordova.plugins.ThemeDetection.isDarkModeEnabled((message) => { + document.body.dataset.systemTheme = message.value ? 'dark' : 'light' + }) + } + }, console.error) + } }, openInternalPath: function({ path, doCreateNewWindow, query = {}, searchQueryText = null }) { From 5248c061cc2917cbb7a66ac297a4364fadbc503c Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 15:06:24 -0400 Subject: [PATCH 010/367] Adding theme listener on document visible One can assume the user might have changed their theme if the window was unfocused for a period of time before becoming refocused. --- src/renderer/App.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/renderer/App.js b/src/renderer/App.js index 7afe137848283..42f2a911daed4 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -155,8 +155,12 @@ export default Vue.extend({ this.grabAllProfiles(this.$t('Profile.All Channels')).then(async () => { this.grabHistory() this.grabAllPlaylists() - this.watchSystemTheme() + document.addEventListener('visibilitychange', (event) => { + if (!document.hidden) { // if the window was unfocused, the system theme might have changed + this.watchSystemTheme() + } + }) if (process.env.IS_ELECTRON) { ipcRenderer = require('electron').ipcRenderer this.setupListenersToSyncWindows() From cc2b0feb3d02ed2bc139ee491f1b83e08b6ce5b6 Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 7 Oct 2022 15:44:32 -0400 Subject: [PATCH 011/367] Moving things into the right directory --- _scripts/webpack.cordova.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_scripts/webpack.cordova.config.js b/_scripts/webpack.cordova.config.js index e9cfc53a6c4a1..dbca961f2a456 100644 --- a/_scripts/webpack.cordova.config.js +++ b/_scripts/webpack.cordova.config.js @@ -199,11 +199,11 @@ if (isDevMode) { patterns: [ { from: path.join(__dirname, '../static/pwabuilder-sw.js'), - to: path.join(__dirname, '../dist/cordova/pwabuilder-sw.js'), + to: path.join(__dirname, '../dist/cordova/www/pwabuilder-sw.js'), }, { from: path.join(__dirname, '../static'), - to: path.join(__dirname, '../dist/cordova/static'), + to: path.join(__dirname, '../dist/cordova/www/static'), globOptions: { dot: true, ignore: ['**/.*', '**/locales/**', '**/pwabuilder-sw.js', '**/dashFiles/**', '**/storyboards/**'], From eb8b3505b02039eb1b69974809669f0cda0b9034 Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 20 Oct 2022 06:17:59 -0400 Subject: [PATCH 012/367] Adding some newlines at the end of files --- _scripts/CordovaPlugin.js | 2 +- src/cordova/config.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_scripts/CordovaPlugin.js b/_scripts/CordovaPlugin.js index 3aa5aacc87de1..b935368835819 100644 --- a/_scripts/CordovaPlugin.js +++ b/_scripts/CordovaPlugin.js @@ -63,4 +63,4 @@ class CordovaPlugin { } } -module.exports = CordovaPlugin \ No newline at end of file +module.exports = CordovaPlugin diff --git a/src/cordova/config.xml b/src/cordova/config.xml index 72bde6d51d7fb..b65a75bcd860a 100644 --- a/src/cordova/config.xml +++ b/src/cordova/config.xml @@ -16,4 +16,4 @@ - \ No newline at end of file + From eaf4faed80ccc3a8d45fcb4ee2b9676e51bb60b8 Mon Sep 17 00:00:00 2001 From: Emma Date: Sun, 30 Oct 2022 18:12:48 -0400 Subject: [PATCH 013/367] Add back a missing line which was removed --- src/renderer/App.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/App.js b/src/renderer/App.js index 7e78ad5c4c281..12a8e7e745944 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -465,6 +465,7 @@ export default Vue.extend({ * all systems running the electron app. */ watchSystemTheme: function () { + const { ipcRenderer } = require('electron') if (process.env.IS_ELECTRON) { ipcRenderer.on(IpcChannels.NATIVE_THEME_UPDATE, (event, shouldUseDarkColors) => { document.body.dataset.systemTheme = shouldUseDarkColors ? 'dark' : 'light' From a4c70dbbb4c6d38cb4489460d1dc2d65d04dd490 Mon Sep 17 00:00:00 2001 From: Emma Date: Sun, 30 Oct 2022 18:18:36 -0400 Subject: [PATCH 014/367] Add an implementation of MusicControls --- _scripts/webpack.cordova.config.js | 3 +- _scripts/webpack.renderer.config.js | 2 +- _scripts/webpack.web.config.js | 3 +- src/renderer/views/Watch/Watch.js | 54 +++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/_scripts/webpack.cordova.config.js b/_scripts/webpack.cordova.config.js index 0d38d0c4ed606..09ce04a59f4bc 100644 --- a/_scripts/webpack.cordova.config.js +++ b/_scripts/webpack.cordova.config.js @@ -28,7 +28,8 @@ const config = { }, externals: { electron: '{}', - cordova: 'cordova' + cordova: 'cordova', + 'music-controls': 'MusicControls' }, module: { rules: [ diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js index 8dddf4769a89d..895ae49c1b98c 100644 --- a/_scripts/webpack.renderer.config.js +++ b/_scripts/webpack.renderer.config.js @@ -31,7 +31,7 @@ const config = { // webpack spits out errors while inlining ytpl and ytsr as // they dynamically import their package.json file to extract the bug report URL // the error: "Critical dependency: the request of a dependency is an expression" - externals: ['ytpl', 'ytsr', 'cordova'], + externals: ['ytpl', 'ytsr', 'cordova', 'music-controls'], module: { rules: [ { diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index e3fac94285872..54f377b2f4862 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -28,7 +28,8 @@ const config = { electron: '{}', ytpl: '{}', ytsr: '{}', - cordova: '{}' + cordova: '{}', + 'music-controls': '{}' }, module: { rules: [ diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index e2e1f0980601a..f60d078f587e1 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -14,6 +14,7 @@ import WatchVideoRecommendations from '../../components/watch-video-recommendati import FtAgeRestricted from '../../components/ft-age-restricted/ft-age-restricted.vue' import i18n from '../../i18n/index' import { buildVTTFileLocally, copyToClipboard, showToast } from '../../helpers/utils' +import MusicControls from 'music-controls' const isDev = process.env.NODE_ENV === 'development' @@ -646,6 +647,59 @@ export default Vue.extend({ this.invidiousGetVideoInformation(this.videoId) .then(result => { + if (process.env.IS_CORDOVA) { + try { + MusicControls.destroy() + } catch (err) { + console.error(err) + } + MusicControls.create({ + track: result.title, + artist: result.author, + cover: result.videoThumbnails[result.videoThumbnails.length - 4].url + }) + const playPauseListeners = [] + MusicControls.subscribe((action) => { + const { player } = this.$refs.videoPlayer + if (playPauseListeners.length === 0) { + playPauseListeners.push(player.el().querySelector('video').addEventListener('pause', () => { + MusicControls.updateIsPlaying(false) + })) + playPauseListeners.push(player.el().querySelector('video').addEventListener('play', () => { + MusicControls.updateIsPlaying(true) + })) + } + if (JSON.parse(action).message === 'music-controls-play' || JSON.parse(action).message === 'music-controls-pause') { + if (!player.paused()) { + player.pause() + } else { + player.play() + } + } else { + switch (JSON.parse(action).message) { + case 'music-controls-next': + // TODO implement next control + if (this.watchingPlaylist) { + this.$refs.watchVideoPlaylist.playNextVideo() + } else { + const nextVideoId = this.recommendedVideos[0].videoId + this.$router.push({ + path: `/watch/${nextVideoId}` + }) + showToast(this.$t('Playing Next Video')) + } + break + case 'music-controls-previous': + // TODO implement previous control + history.back() + break + } + } + MusicControls.updateIsPlaying(!player.paused()) + }) + MusicControls.listen() + } + if (result.error) { throw new Error(result.error) } From 18eeac84c72010d1e8968bc0b1c02aed8b9feff8 Mon Sep 17 00:00:00 2001 From: Emma Date: Sun, 30 Oct 2022 20:56:15 -0400 Subject: [PATCH 015/367] Fix a bug introduced to electron builds by music controls --- _scripts/webpack.renderer.config.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js index 895ae49c1b98c..9ff6fed303240 100644 --- a/_scripts/webpack.renderer.config.js +++ b/_scripts/webpack.renderer.config.js @@ -31,7 +31,12 @@ const config = { // webpack spits out errors while inlining ytpl and ytsr as // they dynamically import their package.json file to extract the bug report URL // the error: "Critical dependency: the request of a dependency is an expression" - externals: ['ytpl', 'ytsr', 'cordova', 'music-controls'], + externals: { + 'ytpl': 'ytpl', + 'ytsr': 'ytsr', + 'cordova': 'browserify/lib/_empty.js', + 'music-controls': 'browserify/lib/_empty.js' + }, module: { rules: [ { From 93ee61361601d122daba5b0dd36ae11d6cc963fb Mon Sep 17 00:00:00 2001 From: Emma Date: Sun, 30 Oct 2022 21:01:57 -0400 Subject: [PATCH 016/367] Add ytpl and ytsr as externals to cordova build This will make those warnings go away. --- _scripts/webpack.cordova.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_scripts/webpack.cordova.config.js b/_scripts/webpack.cordova.config.js index 09ce04a59f4bc..83f11560d94fc 100644 --- a/_scripts/webpack.cordova.config.js +++ b/_scripts/webpack.cordova.config.js @@ -27,6 +27,8 @@ const config = { filename: '[name].js', }, externals: { + ytpl: '{}', + ytsr: '{}', electron: '{}', cordova: 'cordova', 'music-controls': 'MusicControls' From 886299eb3c5dca7b4b28a2dbf35e8b04dd2cc39e Mon Sep 17 00:00:00 2001 From: Emma Date: Sun, 30 Oct 2022 21:58:48 -0400 Subject: [PATCH 017/367] Fix for MarmadileManteater#10 The video still seems to stutter a little when the app initially enters the background; however, this will mean that you can lock your screen while a video is playing without losing your place or pausing the video. --- src/renderer/App.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/renderer/App.js b/src/renderer/App.js index 12a8e7e745944..d96cece41e6fa 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -144,6 +144,18 @@ export default Vue.extend({ this.setWindowTitle() }, mounted: function () { + if (process.env.IS_CORDOVA) { + const { backgroundMode } = cordova.plugins + backgroundMode.setDefaults({ + // MusicControls already generates a push notification for FreeTube + silent: true + }) + backgroundMode.enable() + backgroundMode.on('activate', () => { + // By default android wants to pause videos in the background, this disables that "optimization" + backgroundMode.disableWebViewOptimizations() + }) + } this.grabUserSettings().then(async () => { this.checkThemeSettings() From 9a1f017e1d3568eff0320c5debfe35a612df0c9c Mon Sep 17 00:00:00 2001 From: Emma Date: Tue, 22 Nov 2022 08:34:14 -0500 Subject: [PATCH 018/367] Add back import which was removed by merge --- src/renderer/helpers/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index 24ccbb629ddf3..854a07915ed77 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -3,6 +3,7 @@ import { IpcChannels } from '../../constants' import FtToastEvents from '../components/ft-toast/ft-toast-events' import i18n from '../i18n/index' import router from '../router/index' +import cordova from 'cordova' export function calculatePublishedDate(publishedText) { const date = new Date() From ba1bf4ba205def6b3c57c243f620baecfe4b9695 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 28 Nov 2022 02:05:32 +0100 Subject: [PATCH 019/367] Make the auto merge workflow compatible with draft PRs (#2896) --- .github/workflows/autoMerge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autoMerge.yml b/.github/workflows/autoMerge.yml index dc6ced128b2cf..a5391e7245551 100644 --- a/.github/workflows/autoMerge.yml +++ b/.github/workflows/autoMerge.yml @@ -1,7 +1,7 @@ name: Auto Merge PR on: pull_request_target: - types: [opened, synchronize, reopened, auto_merge_disabled] + types: [opened, synchronize, reopened, auto_merge_disabled, ready_for_review] jobs: build: @@ -9,7 +9,7 @@ jobs: steps: - name: Auto Merge PR - if: contains(${{ github.event.pull_request.base.ref }}, 'development') || contains(${{ github.event.pull_request.base.ref }}, 'RC') + if: github.event.pull_request.draft == false && (contains(${{ github.event.pull_request.base.ref }}, 'development') || contains(${{ github.event.pull_request.base.ref }}, 'RC')) run: | echo ${{ secrets.PUSH_TOKEN }} >> auth.txt gh auth login --with-token < auth.txt From a495ff3d641ffa41fcd61b4eafbeb4f6d6caf51a Mon Sep 17 00:00:00 2001 From: gnuhead-chieb <41156994+gnuhead-chieb@users.noreply.github.com> Date: Mon, 28 Nov 2022 10:07:04 +0900 Subject: [PATCH 020/367] Changed to a more appropriate country name (#2895) --- static/geolocations/ja/countries.json | 2 +- static/geolocations/zh/countries.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/static/geolocations/ja/countries.json b/static/geolocations/ja/countries.json index c6d1445e48496..90c9e3e80b8e6 100644 --- a/static/geolocations/ja/countries.json +++ b/static/geolocations/ja/countries.json @@ -192,5 +192,5 @@ {"id":426,"name":"レソト","alpha2":"ls","alpha3":"lso"}, {"id":422,"name":"レバノン","alpha2":"lb","alpha3":"lbn"}, {"id":643,"name":"ロシア連邦","alpha2":"ru","alpha3":"rus"}, -{"id":158,"name":"中国台湾省","alpha2":"tw","alpha3":"twn"} +{"id":158,"name":"台湾","alpha2":"tw","alpha3":"twn"} ] diff --git a/static/geolocations/zh/countries.json b/static/geolocations/zh/countries.json index 98a3313ce4a1b..e3be3f1a30b22 100644 --- a/static/geolocations/zh/countries.json +++ b/static/geolocations/zh/countries.json @@ -192,5 +192,5 @@ {"id":887,"name":"也门","alpha2":"ye","alpha3":"yem"}, {"id":894,"name":"赞比亚","alpha2":"zm","alpha3":"zmb"}, {"id":716,"name":"津巴布韦","alpha2":"zw","alpha3":"zwe"}, -{"id":158,"name":"中国台湾省","alpha2":"tw","alpha3":"twn"} +{"id":158,"name":"台湾","alpha2":"tw","alpha3":"twn"} ] From 673dddd3bb81f30a5f704c52d3e67c663c883e9c Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 28 Nov 2022 01:41:14 +0000 Subject: [PATCH 021/367] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 81c15284a38fe..bcdd37d4a0748 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -197,6 +197,7 @@ Settings: Expand Side Bar by Default: 預設展開側邊欄 Disable Smooth Scrolling: 停用平滑捲動 Hide Side Bar Labels: 隱藏側邊欄標籤 + Hide FreeTube Header Logo: 隱藏 FreeTube 標題圖示 Player Settings: Player Settings: '播放器選項' Force Local Backend for Legacy Formats: '強制使用傳統格式的區域伺服器' From 57f35cc0ba3c9487cf2cac3b58c84ee8d73deef2 Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Mon, 28 Nov 2022 04:24:06 +0000 Subject: [PATCH 022/367] Translated using Weblate (Italian) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index 05e9e2948abb6..d88afa7f9ab30 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -215,6 +215,7 @@ Settings: Disable Smooth Scrolling: Disabilita scorrimento fluido Expand Side Bar by Default: Espandi automaticamente la barra laterale Hide Side Bar Labels: Nascondi le etichette della barra laterale + Hide FreeTube Header Logo: Nascondi il logo dell'intestazione di FreeTube Player Settings: Player Settings: 'Impostazioni del riproduttore video' Force Local Backend for Legacy Formats: 'Forza riproduttore locale per formati From 8a9a48c670243c1940d7876c765a4fad9c29f64c Mon Sep 17 00:00:00 2001 From: Logan Date: Mon, 28 Nov 2022 07:31:57 +0000 Subject: [PATCH 023/367] Translated using Weblate (German) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 6e438776156d3..0052f142bc6c5 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -8,7 +8,7 @@ FreeTube: FreeTube File: Datei Quit: Beenden Edit: Bearbeiten -Undo: Rückgängig +Undo: Rückgängig machen Redo: Wiederherstellen Cut: Ausschneiden Copy: Kopieren @@ -214,6 +214,7 @@ Settings: Disable Smooth Scrolling: Gleichmäßiges Scrollen deaktivieren Expand Side Bar by Default: Seitenleiste standardmäßig erweitern Hide Side Bar Labels: Seitenleisten-Beschriftungen ausblenden + Hide FreeTube Header Logo: FreeTube Titel Logo ausblenden Player Settings: Player Settings: Videoabspieler-Einstellungen Force Local Backend for Legacy Formats: Lokales System für Legacy Formate erzwingen @@ -691,7 +692,7 @@ Video: Volume: Lautstärke Bandwidth: Bandbreite Buffered: Gepuffert - Dropped / Total Frames: Ausgelassene Bilder / Bilder insgesamt + Dropped / Total Frames: Entfallene Einzelbilder / Gesamtzahl der Einzelbilder Mimetype: Medientyp Video statistics are not available for legacy videos: Videostatistiken sind für ältere Videos nicht verfügbar From 096152939dc86acc84d779e59628bc3899da107f Mon Sep 17 00:00:00 2001 From: Marco Cecconi Date: Mon, 28 Nov 2022 08:35:27 +0000 Subject: [PATCH 024/367] Translated using Weblate (Italian) Currently translated at 99.5% (636 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index d88afa7f9ab30..84bfdb05cc348 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -3,8 +3,8 @@ Locale Name: 'Italiano' FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- - Questa parte dell'app è ancora in fase di sviluppo. Ritorna quando i lavori saranno - ultimati. + Questa parte dell'app non è ancora pronta. Torna più tardi quando saranno stati + fatti ulteriori progressi. # Webkit Menu Bar File: 'File' @@ -19,7 +19,7 @@ Delete: 'Elimina' Select all: 'Seleziona tutto' Reload: 'Ricarica' Force Reload: 'Forza ricarica' -Toggle Developer Tools: 'Abilita o disabilita strumenti sviluppatore' +Toggle Developer Tools: 'Abilita o disabilita strumenti di sviluppo' Actual size: 'Dimensione reale' Zoom in: 'Ingrandisci' Zoom out: 'Rimpicciolisci' @@ -795,7 +795,7 @@ No: 'No' A new blog is now available, {blogTitle}. Click to view more: 'Un nuovo blog è ora disponibile, {blogTitle}. Clicca per saperne di più' Version {versionNumber} is now available! Click for more details: La versione {versionNumber} - è ora disponibile! Clicca per maggiori dettagli + è ora disponibile! Clicca per maggiori dettagli Download From Site: Scarica dal sito The playlist has been reversed: La playlist è stata invertita Profile: From 50e27252a4eaa5cc4920adf67d26469c86fb9992 Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Mon, 28 Nov 2022 08:54:41 +0000 Subject: [PATCH 025/367] Translated using Weblate (Italian) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index 84bfdb05cc348..602d7a4f0da35 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -19,7 +19,7 @@ Delete: 'Elimina' Select all: 'Seleziona tutto' Reload: 'Ricarica' Force Reload: 'Forza ricarica' -Toggle Developer Tools: 'Abilita o disabilita strumenti di sviluppo' +Toggle Developer Tools: 'Attiva/disattiva strumenti per sviluppatori' Actual size: 'Dimensione reale' Zoom in: 'Ingrandisci' Zoom out: 'Rimpicciolisci' @@ -795,7 +795,7 @@ No: 'No' A new blog is now available, {blogTitle}. Click to view more: 'Un nuovo blog è ora disponibile, {blogTitle}. Clicca per saperne di più' Version {versionNumber} is now available! Click for more details: La versione {versionNumber} - è ora disponibile! Clicca per maggiori dettagli + è ora disponibile! Clicca per maggiori dettagli Download From Site: Scarica dal sito The playlist has been reversed: La playlist è stata invertita Profile: From 271f10d6f71a5307d9051e38c46837987c0e4c8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Nov 2022 06:09:13 -0500 Subject: [PATCH 026/367] Bump electron from 21.2.3 to 21.3.1 (#2899) Bumps [electron](https://github.com/electron/electron) from 21.2.3 to 21.3.1. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v21.2.3...v21.3.1) --- updated-dependencies: - dependency-name: electron dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f3b94f96218df..344344b71c6b4 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.2", "css-minimizer-webpack-plugin": "^4.2.2", - "electron": "^21.2.3", + "electron": "^21.3.1", "electron-builder": "^23.6.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", diff --git a/yarn.lock b/yarn.lock index 60d7bf96bc6bc..a25147668bab8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3464,10 +3464,10 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -electron@^21.2.3: - version "21.2.3" - resolved "https://registry.yarnpkg.com/electron/-/electron-21.2.3.tgz#7bd190f57b154ab85c92a2e52e0329fd40cbc7b9" - integrity sha512-Wyj0ri3P8hnWEvX7+2Q1OtNzJI8Qn4V9J+aeypoXh+wtlX/fjfHxi4vZkos/XRncoIeYCeUZ5nhGjsOIQwSElQ== +electron@^21.3.1: + version "21.3.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-21.3.1.tgz#02a61053ace79ecdc592afc641ff663dec805b42" + integrity sha512-Ik/I9oFHA1h32JRtRm6GMgYdUctFpF/tPnHyATg4r3LXBTUT6habGh3GxSdmmTa5JgtA7uJUEm8EjjZItk7T3g== dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26" From ba91f6c5bc59da9f6cd06d51e8d1e7fd416fa565 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Nov 2022 06:18:42 -0500 Subject: [PATCH 027/367] Bump electron-context-menu from 3.5.0 to 3.6.0 (#2897) Bumps [electron-context-menu](https://github.com/sindresorhus/electron-context-menu) from 3.5.0 to 3.6.0. - [Release notes](https://github.com/sindresorhus/electron-context-menu/releases) - [Commits](https://github.com/sindresorhus/electron-context-menu/compare/v3.5.0...v3.6.0) --- updated-dependencies: - dependency-name: electron-context-menu dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 344344b71c6b4..88bc98561719c 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "autolinker": "^4.0.0", "browserify": "^17.0.0", "browserify-zlib": "^0.2.0", - "electron-context-menu": "^3.5.0", + "electron-context-menu": "^3.6.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "lodash.debounce": "^4.0.8", diff --git a/yarn.lock b/yarn.lock index a25147668bab8..051fa671c7dcf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3406,10 +3406,10 @@ electron-builder@^23.6.0: simple-update-notifier "^1.0.7" yargs "^17.5.1" -electron-context-menu@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-3.5.0.tgz#f5d6df982e37555a77666bcecff59b094211b54a" - integrity sha512-z4agpok6YnXlGFs66zU9EBFft4llUFJ41NYFEMMS0fnprMKBztJUCHBA6LMAqJgjabfqsYC7kxlvjvepxodOqg== +electron-context-menu@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-3.6.0.tgz#d60fabb99d5bb06c46b6929c342c75cc0eee348e" + integrity sha512-7uhF3WX7ZalLEurKqML2cJJrBUw1JSZNzbwIB9kVbip7sVwyl7bVjiwHzdYjuOh/+xHw21ZzxwgZcB6sTeKdEw== dependencies: cli-truncate "^2.1.0" electron-dl "^3.2.1" From 9459e07dbc9e3a2c27d6d1a3e3a18afb0840b0ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Nov 2022 06:19:11 -0500 Subject: [PATCH 028/367] Bump @fortawesome/free-brands-svg-icons from 6.2.0 to 6.2.1 (#2898) Bumps [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/FortAwesome/Font-Awesome/releases) - [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md) - [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.2.0...6.2.1) --- updated-dependencies: - dependency-name: "@fortawesome/free-brands-svg-icons" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 88bc98561719c..5aa5e2fd13cf4 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.2.0", - "@fortawesome/free-brands-svg-icons": "^6.2.0", + "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.0", "@fortawesome/vue-fontawesome": "^2.0.8", "@freetube/youtube-chat": "^1.1.2", diff --git a/yarn.lock b/yarn.lock index 051fa671c7dcf..42945841f8808 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1051,6 +1051,11 @@ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz#76467a94aa888aeb22aafa43eb6ff889df3a5a7f" integrity sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg== +"@fortawesome/fontawesome-common-types@6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz#411e02a820744d3f7e0d8d9df9d82b471beaa073" + integrity sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ== + "@fortawesome/fontawesome-svg-core@^6.2.0": version "6.2.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz#11856eaf4dd1d865c442ddea1eed8ee855186ba2" @@ -1058,12 +1063,12 @@ dependencies: "@fortawesome/fontawesome-common-types" "6.2.0" -"@fortawesome/free-brands-svg-icons@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz#ce072179677f9b5d6767f918cfbf296f357cc1d0" - integrity sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA== +"@fortawesome/free-brands-svg-icons@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.1.tgz#04a6d6f7898f7ef392aba7a65030a584d4f4c84f" + integrity sha512-L8l4MfdHPmZlJ72PvzdfwOwbwcCAL0vx48tJRnI6u1PJXh+j2f3yDoKyQgO3qjEsgD5Fr2tQV/cPP8F/k6aUig== dependencies: - "@fortawesome/fontawesome-common-types" "6.2.0" + "@fortawesome/fontawesome-common-types" "6.2.1" "@fortawesome/free-solid-svg-icons@^6.2.0": version "6.2.0" From ecb91287315f19a85e291266510395748aacadb1 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 28 Nov 2022 12:52:47 +0100 Subject: [PATCH 029/367] Migrate search suggestions to youtubei.js (#2855) * Migrate search suggestions to youtubei.js * Rename functions to indicate that they are for the local API * Implement and use a lightweight Innertube session * Fix typo in comment Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> * Fix another typo in a comment Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> --- _scripts/webpack.renderer.config.js | 11 +- _scripts/webpack.web.config.js | 1 + package.json | 2 +- src/main/index.js | 10 ++ src/renderer/components/top-nav/top-nav.js | 15 +- src/renderer/helpers/api/PlayerCache.js | 41 ++++++ src/renderer/helpers/api/local.js | 58 ++++++++ yarn.lock | 156 ++++++++++++++++----- 8 files changed, 250 insertions(+), 44 deletions(-) create mode 100644 src/renderer/helpers/api/PlayerCache.js create mode 100644 src/renderer/helpers/api/local.js diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js index 15965ff234b3a..2f78d7dcb4601 100644 --- a/_scripts/webpack.renderer.config.js +++ b/_scripts/webpack.renderer.config.js @@ -126,10 +126,19 @@ const config = { filename: isDevMode ? '[name].css' : '[name].[contenthash].css', chunkFilename: isDevMode ? '[id].css' : '[id].[contenthash].css', }), + // ignore linkedom's unnecessary broken canvas import, as youtubei.js only uses linkedom to generate DASH manifests + new webpack.IgnorePlugin({ + resourceRegExp: /^canvas$/ + }) ], resolve: { alias: { - vue$: 'vue/dist/vue.common.js' + vue$: 'vue/dist/vue.common.js', + + // defaults to the prebundled browser version which causes webpack to error with: + // "Critical dependency: require function is used in a way in which dependencies cannot be statically extracted" + // webpack likes to bundle the dependencies itself, could really have a better error message though + 'youtubei.js$': 'youtubei.js/dist/browser.js', }, extensions: ['.js', '.vue'] }, diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index a49104cccdc3d..169f428ba7f92 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -26,6 +26,7 @@ const config = { }, externals: { electron: '{}', + 'youtubei.js': '{}', ytpl: '{}', ytsr: '{}' }, diff --git a/package.json b/package.json index 5aa5e2fd13cf4..b2d2853384bd2 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "vue-observe-visibility": "^1.0.0", "vue-router": "^3.6.5", "vuex": "^3.6.2", - "youtube-suggest": "^1.2.0", + "youtubei.js": "^2.5.0", "yt-channel-info": "^3.2.1", "yt-dash-manifest-generator": "1.1.0", "ytdl-core": "https://github.com/absidue/node-ytdl-core#fix-likes-extraction", diff --git a/src/main/index.js b/src/main/index.js index 15a38879d6b21..c23a4f2f769ef 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -162,6 +162,16 @@ function runApp() { }) }) + // make InnerTube requests work with the fetch function + // InnerTube rejects requests if the referer isn't YouTube or empty + const innertubeRequestFilter = { urls: ['https://www.youtube.com/youtubei/*'] } + + session.defaultSession.webRequest.onBeforeSendHeaders(innertubeRequestFilter, ({ requestHeaders }, callback) => { + requestHeaders.referer = 'https://www.youtube.com' + // eslint-disable-next-line node/no-callback-literal + callback({ requestHeaders }) + }) + if (replaceHttpCache) { // in-memory image cache diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js index a23d984f8a38c..2c7c26b27f47e 100644 --- a/src/renderer/components/top-nav/top-nav.js +++ b/src/renderer/components/top-nav/top-nav.js @@ -4,10 +4,10 @@ import FtInput from '../ft-input/ft-input.vue' import FtSearchFilters from '../ft-search-filters/ft-search-filters.vue' import FtProfileSelector from '../ft-profile-selector/ft-profile-selector.vue' import debounce from 'lodash.debounce' -import ytSuggest from 'youtube-suggest' import { IpcChannels } from '../../../constants' import { openInternalPath, showToast } from '../../helpers/utils' +import { clearLocalSearchSuggestionsSession, getLocalSearchSuggestions } from '../../helpers/api/local' export default Vue.extend({ name: 'TopNav', @@ -24,7 +24,8 @@ export default Vue.extend({ searchFilterValueChanged: false, historyIndex: 1, isForwardOrBack: false, - searchSuggestionsDataList: [] + searchSuggestionsDataList: [], + lastSuggestionQuery: '' } }, computed: { @@ -115,6 +116,8 @@ export default Vue.extend({ this.searchInput.blur() } + clearLocalSearchSuggestionsSession() + this.getYoutubeUrlInfo(query).then((result) => { switch (result.urlType) { case 'video': { @@ -210,7 +213,11 @@ export default Vue.extend({ getSearchSuggestionsDebounce: function (query) { if (this.enableSearchSuggestions) { - this.debounceSearchResults(query) + const trimmedQuery = query.trim() + if (trimmedQuery !== this.lastSuggestionQuery) { + this.lastSuggestionQuery = trimmedQuery + this.debounceSearchResults(trimmedQuery) + } } }, @@ -231,7 +238,7 @@ export default Vue.extend({ return } - ytSuggest(query).then((results) => { + getLocalSearchSuggestions(query).then((results) => { this.searchSuggestionsDataList = results }) }, diff --git a/src/renderer/helpers/api/PlayerCache.js b/src/renderer/helpers/api/PlayerCache.js new file mode 100644 index 0000000000000..95e2a4f1ced82 --- /dev/null +++ b/src/renderer/helpers/api/PlayerCache.js @@ -0,0 +1,41 @@ +import { access, mkdir, readFile, unlink, writeFile } from 'fs/promises' +import { resolve } from 'path' + +// based off https://github.com/LuanRT/YouTube.js/blob/6caa679df6ddc77d25be02dcb7355b722ab268aa/src/utils/Cache.ts +// avoids errors caused by the fully dynamic `fs` and `path` module imports that youtubei.js's UniversalCache does +export class PlayerCache { + constructor(cacheDirectory) { + this.cacheDirectory = cacheDirectory + } + + async get(key) { + const filePath = resolve(this.cacheDirectory, key) + + try { + const contents = await readFile(filePath) + return contents.buffer + } catch (e) { + if (e?.code === 'ENOENT') { + return undefined + } + throw e + } + } + + async set(key, value) { + await mkdir(this.cacheDirectory, { recursive: true }) + + const filePath = resolve(this.cacheDirectory, key) + await writeFile(filePath, new Uint8Array(value)) + } + + async remove(key) { + const filePath = resolve(this.cacheDirectory, key) + + // only try to delete the file if it exists, access() throws an exception if the file doesn't exist + try { + await access(filePath) + await unlink(filePath) + } catch { } + } +} diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js new file mode 100644 index 0000000000000..adce44e38f93d --- /dev/null +++ b/src/renderer/helpers/api/local.js @@ -0,0 +1,58 @@ +import { Innertube, Session } from 'youtubei.js' +import { PlayerCache } from './PlayerCache' +import { join } from 'path' + +import store from '../../store/index' + +/** + * Creates a lightweight Innertube instance, which is faster to create or + * an instance that can decode the streaming URLs, which is slower to create + * the lightweight one only needs a single web request to create the new session + * the full one needs 3 (or 2 if the player is cached) web requests to create: + * 1. the request for the session + * 2. fetch a page that contains a link to the player + * 3. if the player isn't cached, it is downloaded and transformed + * @param {boolean} withPlayer set to true to get an Innertube instance that can decode the streaming URLs + * @returns the Innertube instance + */ +async function createInnertube(withPlayer = false) { + if (withPlayer) { + const userData = await store.dispatch('getUserDataPath') + + return await Innertube.create({ + // use browser fetch + fetch: (input, init) => fetch(input, init), + cache: new PlayerCache(join(userData, 'player_cache')) + }) + } else { + // from https://github.com/LuanRT/YouTube.js/pull/240 + const sessionData = await Session.getSessionData() + + const session = new Session( + sessionData.context, + sessionData.api_key, + sessionData.api_version, + sessionData.account_index, + undefined, // player + undefined, // cookies + (input, init) => fetch(input, init) // use browser fetch + ) + + return new Innertube(session) + } +} + +let searchSuggestionsSession = null + +export async function getLocalSearchSuggestions(query) { + // reuse innertube instance to keep the search suggestions snappy + if (searchSuggestionsSession === null) { + searchSuggestionsSession = await createInnertube() + } + + return await searchSuggestionsSession.getSearchSuggestions(query) +} + +export function clearLocalSearchSuggestionsSession() { + searchSuggestionsSession = null +} diff --git a/yarn.lock b/yarn.lock index 42945841f8808..453311dffdfdd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1233,6 +1233,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@protobuf-ts/runtime@^2.7.0": + version "2.8.1" + resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.8.1.tgz#e88f89650ab29c3eba0afebe32b9f3552f35fc85" + integrity sha512-D9M5hSumYCovIfNllt7N6ODh4q+LrjiMWtNETvooaf+a2XheZJ7kgjFlsFghti0CFWwtA//of4JXQfw9hU+cCw== + "@seald-io/binary-search-tree@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz#9f0e5cec5e0acf97f1b495f2f6d3476ddb6a94ed" @@ -2492,6 +2497,13 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3010,6 +3022,17 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -3018,7 +3041,7 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-what@^6.0.1: +css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -3084,6 +3107,11 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + csstype@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" @@ -3312,6 +3340,15 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" @@ -3322,7 +3359,7 @@ domain-browser@^1.2.0: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -3334,6 +3371,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +domhandler@^5.0.1, domhandler@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -3343,6 +3387,15 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -3533,6 +3586,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -4601,6 +4659,11 @@ html-entities@^2.3.2: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== +html-escaper@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-3.0.3.tgz#4d336674652beb1dcbc29ef6b6ba7f6be6fdfed6" + integrity sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ== + html-minifier-terser@^6.0.2: version "6.1.0" resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" @@ -4640,6 +4703,16 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -5173,6 +5246,13 @@ jest-worker@^29.1.2: merge-stream "^2.0.0" supports-color "^8.0.0" +jintr@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/jintr/-/jintr-0.3.1.tgz#0ab49390a187d77dc5f2c19580c644d70a94528a" + integrity sha512-AUcq8fKL4BE9jDx8TizZmJ9UOvk1CHKFW0nQcWaOaqk9tkLS9S10fNmusTWGEYTncn7U43nXrCbhYko/ylqrSg== + dependencies: + acorn "^8.8.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5395,6 +5475,17 @@ lilconfig@^2.0.3: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== +linkedom@^0.14.12: + version "0.14.19" + resolved "https://registry.yarnpkg.com/linkedom/-/linkedom-0.14.19.tgz#a8e9b91af26d5c631b5b3d21614cef1db8a56fb7" + integrity sha512-sFNkQZlKBWpEaAcbsDIghTLE0hHbyvS6dZuM7IH+KTM09GaQ772PtDZAuFlN0oFgyAjUj8XS9FpoWSLmBjl8MA== + dependencies: + css-select "^5.1.0" + cssom "^0.5.0" + html-escaper "^3.0.3" + htmlparser2 "^8.0.1" + uhyphen "^0.1.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -5865,13 +5956,6 @@ node-addon-api@^1.6.3: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== -node-fetch@^2.6.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -7293,11 +7377,6 @@ smart-buffer@^4.0.2, smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -smol-jsonp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/smol-jsonp/-/smol-jsonp-1.0.0.tgz#b662c932a193f1a5c6bb1dcdaaddcd4e2007f7df" - integrity sha512-EwM2cKsq87A9cCKiAwfp7kVSRtAT01M/3HXaO3tYxP+pnEZ5zVYsxLdTnPjJVVIeK9O2zkV0QbWuwlHEUQNdOA== - sockjs@^0.3.24: version "0.3.24" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" @@ -7489,6 +7568,11 @@ stream-splicer@^2.0.0: inherits "^2.0.1" readable-stream "^2.0.2" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -7760,11 +7844,6 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - tree-kill@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -7849,6 +7928,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +uhyphen@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/uhyphen/-/uhyphen-0.1.0.tgz#3cc22afa790daa802b9f6789f3583108d5b4a08c" + integrity sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw== + umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" @@ -7880,6 +7964,13 @@ underscore@1.13.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== +undici@^5.7.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.12.0.tgz#c758ffa704fbcd40d506e4948860ccaf4099f531" + integrity sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg== + dependencies: + busboy "^1.6.0" + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -8221,11 +8312,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - webpack-cli@^4.10.0: version "4.10.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" @@ -8347,14 +8433,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -8494,13 +8572,15 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -youtube-suggest@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/youtube-suggest/-/youtube-suggest-1.2.0.tgz#5f1b445c2b71bfc8a4c89af99775b02cd827e77d" - integrity sha512-/ItW6204M+OOHaO4k5DYJGHH+UZjkaKNb7rtAWQaA6zeJvUu3tbveAsm+xTGH+8VfyT/LoAhN9/yOQajduDCJA== +youtubei.js@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-2.5.0.tgz#bd209a8b1edccc106ef0d77c6a619f3e3085913a" + integrity sha512-RnRXF4+HESqpJQ1FIWXZ/6M+0Sdt8OndTTD0yYex+zWR+7YOBRrWcXRuKSsWgw3v3ctuzW7TJ8+t/s/8/ImFHw== dependencies: - node-fetch "^2.6.0" - smol-jsonp "^1.0.0" + "@protobuf-ts/runtime" "^2.7.0" + jintr "^0.3.1" + linkedom "^0.14.12" + undici "^5.7.0" yt-channel-info@^3.2.1: version "3.2.1" From bc9cb67699c94a36a49d897a52a310c76644f3c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Nov 2022 16:42:24 +0100 Subject: [PATCH 030/367] Bump @fortawesome/fontawesome-svg-core from 6.2.0 to 6.2.1 (#2900) Bumps [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/FortAwesome/Font-Awesome/releases) - [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md) - [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.2.0...6.2.1) --- updated-dependencies: - dependency-name: "@fortawesome/fontawesome-svg-core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index b2d2853384bd2..70b7065812f6d 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "ci": "yarn install --silent --frozen-lockfile" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.2.0", + "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.0", "@fortawesome/vue-fontawesome": "^2.0.8", diff --git a/yarn.lock b/yarn.lock index 453311dffdfdd..dbea5b5bbfac0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1056,12 +1056,12 @@ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz#411e02a820744d3f7e0d8d9df9d82b471beaa073" integrity sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ== -"@fortawesome/fontawesome-svg-core@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz#11856eaf4dd1d865c442ddea1eed8ee855186ba2" - integrity sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw== +"@fortawesome/fontawesome-svg-core@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz#e87e905e444b5e7b715af09b64d27b53d4c8f9d9" + integrity sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA== dependencies: - "@fortawesome/fontawesome-common-types" "6.2.0" + "@fortawesome/fontawesome-common-types" "6.2.1" "@fortawesome/free-brands-svg-icons@^6.2.1": version "6.2.1" From 606b7ff79431d91846cc98723fae2723651acb1f Mon Sep 17 00:00:00 2001 From: Dragibus Noir Date: Mon, 28 Nov 2022 13:54:38 +0000 Subject: [PATCH 031/367] Translated using Weblate (French) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index b751e4a5a0c9d..76a22b9dac804 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -218,6 +218,7 @@ Settings: Expand Side Bar by Default: Développer la barre latérale par défaut Disable Smooth Scrolling: Désactiver le défilement fluide Hide Side Bar Labels: Masquer les étiquettes de la barre latérale + Hide FreeTube Header Logo: Masquer le logo d'en-tête de FreeTube Player Settings: Player Settings: 'Paramètres du lecteur' Force Local Backend for Legacy Formats: 'Forcer le backend local pour le format From 66f8ef5bea26a37618300c405eadc6a2144c0aef Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Mon, 28 Nov 2022 22:06:58 +0000 Subject: [PATCH 032/367] Translated using Weblate (Arabic) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/ --- static/locales/ar.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 349d7b168092f..ffb7d0a2775c7 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -206,6 +206,7 @@ Settings: Disable Smooth Scrolling: عطّل التمرير المتجانس Expand Side Bar by Default: كبّر الشريط الجانبي بشكل افتراضي Hide Side Bar Labels: إخفاء تسميات الشريط الجانبي + Hide FreeTube Header Logo: إخفاء شعار رأس FreeTube Player Settings: Player Settings: 'إعدادات المشغل' Force Local Backend for Legacy Formats: 'فرض الواجهة الخلفية المحلية للتنسيقات From b5ad68984f2c615ec154508b4b63c0912413570e Mon Sep 17 00:00:00 2001 From: zaioti Date: Tue, 29 Nov 2022 01:44:11 +0000 Subject: [PATCH 033/367] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index f7fddb9d33f27..ba3f02d035c28 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -209,6 +209,7 @@ Settings: Disable Smooth Scrolling: Desativar Rolagem Suave Expand Side Bar by Default: Expandir Barra Lateral por Padrão Hide Side Bar Labels: Ocultar etiquetas da barra lateral + Hide FreeTube Header Logo: Esconder o logotipo do cabeçalho do FreeTube Player Settings: Player Settings: 'Configurações do vídeo' Force Local Backend for Legacy Formats: 'Forçar motor local para formatos legados' From 5703665676a18a5fc56e414ba21b65b9e37c67aa Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Tue, 29 Nov 2022 10:38:38 +0000 Subject: [PATCH 034/367] Translated using Weblate (Galician) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/ --- static/locales/gl.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index b1d686b32b310..8e7417e16152a 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -32,7 +32,7 @@ Forward: 'Adiante' Version {versionNumber} is now available! Click for more details: 'A versión {versionNumber} está dispoñible! Fai clic para veres máis detalles' -Download From Site: 'Descargar dende a páxina web' +Download From Site: 'Descargar do sitio' A new blog is now available, {blogTitle}. Click to view more: 'Hai unha nova entrada no blog dispoñible, {blogTitle}. Fai clic para veres máis' @@ -77,7 +77,7 @@ Subscriptions: Subscriptions: 'Subscricións' Latest Subscriptions: 'Últimas subscricións' This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'Este - perfil ten un gran número de subscricións. Forzar ás RSS para evitar a limitación + perfil ten un gran número de subscricións. Forzar ás RSS para evitar a limitación da taxa' 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'A túa listaxe de subscricións está baleira. Engade algunhas para as ver aquí.' @@ -688,7 +688,7 @@ Video: music offtopic: Música Offtopic interaction: Interacción self-promotion: Autopromoción - outro: Outro + outro: outro intro: Intro sponsor: Patrocinador recap: Recapitulación From fc5be5bb1ac006a97b4032705367a13da331b5bb Mon Sep 17 00:00:00 2001 From: SC Date: Tue, 29 Nov 2022 16:19:13 +0000 Subject: [PATCH 035/367] Translated using Weblate (Portuguese) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt/ --- static/locales/pt.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index 5047319f48c07..0c229fe611ea6 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -215,6 +215,7 @@ Settings: Disable Smooth Scrolling: Desativar deslocação suave Expand Side Bar by Default: Expandir barra lateral por definição Hide Side Bar Labels: Ocultar texto na barra lateral + Hide FreeTube Header Logo: Ocultar o logotipo do FreeTube no cabeçalho Player Settings: Player Settings: 'Definições do reprodutor' Force Local Backend for Legacy Formats: 'Forçar sistema de ligação local para @@ -415,6 +416,7 @@ Settings: Hide Live Streams: Ocultar transmissões em direto Hide Comments: Ocultar comentários Hide Chapters: Ocultar capítulos + Hide Upcoming Premieres: Ocultar próximas estreias External Player Settings: Custom External Player Arguments: Argumentos do reprodutor externo personalizado Custom External Player Executable: Executável de reprodutor externo personalizado From deb463e8fcae26f152d2ef1fd77f09cd6cd139b4 Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Wed, 30 Nov 2022 21:03:38 +0800 Subject: [PATCH 036/367] * Update custom image request to handle error event (#2902) https://www.electronjs.org/docs/latest/api/client-request#event-error --- src/main/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/index.js b/src/main/index.js index c23a4f2f769ef..01f754f2b8694 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -258,6 +258,10 @@ function runApp() { }) }) + newRequest.on('error', (err) => { + console.error(err) + }) + newRequest.end() }) From 2cc811f0eefc522efefedccd364f0aceacbcf12e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Storoniak?= Date: Wed, 30 Nov 2022 18:38:56 +0000 Subject: [PATCH 037/367] Translated using Weblate (Polish) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index fba6b9355bc41..192ba8a1e65ed 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -212,6 +212,7 @@ Settings: Expand Side Bar by Default: Domyślnie rozwiń pasek boczny Disable Smooth Scrolling: Wyłącz płynne przewijanie Hide Side Bar Labels: Schowaj etykiety paska bocznego + Hide FreeTube Header Logo: Ukryj Logo FreeTube Player Settings: Player Settings: 'Ustawienia odtwarzacza' Force Local Backend for Legacy Formats: 'Wymuś lokalny back-end dla starych formatów' From 1ba88f2be97234bd5fdb2da5aac30fa2869abc1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20W=C3=B3jcicki?= Date: Wed, 30 Nov 2022 19:40:27 +0000 Subject: [PATCH 038/367] Translated using Weblate (Polish) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 192ba8a1e65ed..c5b1bcce5d0ee 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -212,7 +212,7 @@ Settings: Expand Side Bar by Default: Domyślnie rozwiń pasek boczny Disable Smooth Scrolling: Wyłącz płynne przewijanie Hide Side Bar Labels: Schowaj etykiety paska bocznego - Hide FreeTube Header Logo: Ukryj Logo FreeTube + Hide FreeTube Header Logo: Schowaj logo FreeTube z paska górnego Player Settings: Player Settings: 'Ustawienia odtwarzacza' Force Local Backend for Legacy Formats: 'Wymuś lokalny back-end dla starych formatów' @@ -445,7 +445,7 @@ Settings: Download in app: Pobierz w aplikacji Open in web browser: Otwórz w przeglądarce Parental Control Settings: - Parental Control Settings: Opcje kontroli rodzicielskiej + Parental Control Settings: Ustawienia kontroli rodzicielskiej Hide Unsubscribe Button: Schowaj przycisk „Odsubskrybuj” Show Family Friendly Only: Pokazuj tylko filmy przyjazne rodzinie Hide Search Bar: Schowaj pole wyszukiwania From c98b6ab3f27895cd81dd302f17ef5473e9691c58 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Thu, 1 Dec 2022 08:46:33 +0100 Subject: [PATCH 039/367] Only show Select All context menu item in text fields (#2835) --- src/main/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/index.js b/src/main/index.js index 01f754f2b8694..798bd83f43b21 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -21,6 +21,7 @@ function runApp() { showSearchWithGoogle: false, showSaveImageAs: true, showCopyImageAddress: true, + showSelectAll: false, prepend: (defaultActions, parameters, browserWindow) => [ { label: 'Show / Hide Video Statistics', @@ -36,6 +37,15 @@ function runApp() { click: () => { createWindow({ replaceMainWindow: false, windowStartupUrl: parameters.linkURL, showWindowNow: true }) } + }, + // Only show select all in text fields + { + label: 'Select All', + enabled: parameters.editFlags.canSelectAll, + visible: parameters.isEditable, + click: () => { + browserWindow.webContents.selectAll() + } } ] }) From d793a8bcda2f0d83a60ec9583b89e83e5896a48d Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:29:01 +0100 Subject: [PATCH 040/367] Make replaceFilenameForbiddenChars a helper (#2904) * Make replaceFilenameForbiddenChars a helper * Use function for screenshot file name checking --- src/renderer/helpers/utils.js | 33 ++++++++++++++++ src/renderer/store/modules/utils.js | 60 ++++------------------------- 2 files changed, 40 insertions(+), 53 deletions(-) diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index dd37b1c380bf7..9f1991c8f8eb8 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -422,3 +422,36 @@ export function searchFiltersMatch(filtersA, filtersB) { filtersA?.type === filtersB?.type && filtersA?.duration === filtersB?.duration } + +export function replaceFilenameForbiddenChars(filenameOriginal) { + let filenameNew = filenameOriginal + let forbiddenChars = {} + switch (process.platform) { + case 'win32': + forbiddenChars = { + '<': '<', // U+FF1C + '>': '>', // U+FF1E + ':': ':', // U+FF1A + '"': '"', // U+FF02 + '/': '/', // U+FF0F + '\\': '\', // U+FF3C + '|': '|', // U+FF5C + '?': '?', // U+FF1F + '*': '*' // U+FF0A + } + break + case 'darwin': + forbiddenChars = { '/': '/', ':': ':' } + break + case 'linux': + forbiddenChars = { '/': '/' } + break + default: + break + } + + for (const forbiddenChar in forbiddenChars) { + filenameNew = filenameNew.replaceAll(forbiddenChar, forbiddenChars[forbiddenChar]) + } + return filenameNew +} diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index 43426a53d00b6..54b5e3d03c270 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -6,6 +6,7 @@ import { IpcChannels } from '../../../constants' import { createWebURL, openExternalLink, + replaceFilenameForbiddenChars, searchFiltersMatch, showSaveDialog, showToast @@ -122,46 +123,13 @@ async function invokeIRC(context, IRCtype, webCbk, payload = null) { } const actions = { - replaceFilenameForbiddenChars(_, filenameOriginal) { - let filenameNew = filenameOriginal - let forbiddenChars = {} - switch (process.platform) { - case 'win32': - forbiddenChars = { - '<': '<', // U+FF1C - '>': '>', // U+FF1E - ':': ':', // U+FF1A - '"': '"', // U+FF02 - '/': '/', // U+FF0F - '\\': '\', // U+FF3C - '|': '|', // U+FF5C - '?': '?', // U+FF1F - '*': '*' // U+FF0A - } - break - case 'darwin': - forbiddenChars = { '/': '/', ':': ':' } - break - case 'linux': - forbiddenChars = { '/': '/' } - break - default: - break - } - - for (const forbiddenChar in forbiddenChars) { - filenameNew = filenameNew.replaceAll(forbiddenChar, forbiddenChars[forbiddenChar]) - } - return filenameNew - }, - - async downloadMedia({ rootState, dispatch }, { url, title, extension, fallingBackPath }) { + async downloadMedia({ rootState }, { url, title, extension, fallingBackPath }) { if (!process.env.IS_ELECTRON) { openExternalLink(url) return } - const fileName = `${await dispatch('replaceFilenameForbiddenChars', title)}.${extension}` + const fileName = `${replaceFilenameForbiddenChars(title)}.${extension}` const errorMessage = i18n.t('Downloading failed', { videoTitle: title }) let folderPath = rootState.settings.downloadFolderPath @@ -281,27 +249,13 @@ const actions = { parsedString = parsedString.replaceAll(key, value) } - const platform = process.platform - if (platform === 'win32') { - // https://www.boost.org/doc/libs/1_78_0/libs/filesystem/doc/portability_guide.htm - // https://stackoverflow.com/questions/1976007/ - const noForbiddenChars = ['<', '>', ':', '"', '/', '|', '?', '*'].every(char => { - return parsedString.indexOf(char) === -1 - }) - if (!noForbiddenChars) { - reject(new Error('Forbidden Characters')) // use message as translation key - } - } else if (platform === 'darwin') { - // https://superuser.com/questions/204287/ - if (parsedString.indexOf(':') !== -1) { - reject(new Error('Forbidden Characters')) - } + if (parsedString !== replaceFilenameForbiddenChars(parsedString)) { + reject(new Error('Forbidden Characters')) // use message as translation key } - const dirChar = platform === 'win32' ? '\\' : '/' let filename - if (parsedString.indexOf(dirChar) !== -1) { - const lastIndex = parsedString.lastIndexOf(dirChar) + if (parsedString.indexOf(path.sep) !== -1) { + const lastIndex = parsedString.lastIndexOf(path.sep) filename = parsedString.substring(lastIndex + 1) } else { filename = parsedString From c1f257dd79c38cf1ff44f039e6d9c8e6ce81571f Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:30:27 +0100 Subject: [PATCH 041/367] Clear cached subscription videos when removing all subscriptions (#2905) --- .../components/privacy-settings/privacy-settings.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/privacy-settings/privacy-settings.js b/src/renderer/components/privacy-settings/privacy-settings.js index 4974944a2576f..74046499c6bc2 100644 --- a/src/renderer/components/privacy-settings/privacy-settings.js +++ b/src/renderer/components/privacy-settings/privacy-settings.js @@ -106,6 +106,13 @@ export default Vue.extend({ this.removeProfile(profile._id) } }) + + this.updateAllSubscriptionsList([]) + this.updateProfileSubscriptions({ + activeProfile: MAIN_PROFILE_ID, + videoList: [], + errorChannels: [] + }) } }, @@ -117,7 +124,9 @@ export default Vue.extend({ 'clearSessionSearchHistory', 'updateProfile', 'removeProfile', - 'updateActiveProfile' + 'updateActiveProfile', + 'updateAllSubscriptionsList', + 'updateProfileSubscriptions' ]) } }) From 4af752d2dceddcc02e3e662473d25507c0e4683c Mon Sep 17 00:00:00 2001 From: Kyotaro Iijima Date: Fri, 2 Dec 2022 17:36:11 +0000 Subject: [PATCH 042/367] Translated using Weblate (Japanese) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/ --- static/locales/ja.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index f46a7d8b160ab..9c8071348af05 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -197,6 +197,7 @@ Settings: Expand Side Bar by Default: 幅広のサイド バーで起動 Disable Smooth Scrolling: スムーズ スクロールの無効化 Hide Side Bar Labels: サイドバー ラベルの非表示 + Hide FreeTube Header Logo: FreeTube ヘッダー ロゴの非表示 Player Settings: Player Settings: 'プレイヤーの設定' Force Local Backend for Legacy Formats: '旧形式であれば内部 API の適用' From 7ac37dc0309abdb1294f174ba02e39977474ff4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9A=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D1=83=D0=B1=D0=B0=D0=B9?= Date: Sat, 3 Dec 2022 17:45:24 +0000 Subject: [PATCH 043/367] Translated using Weblate (Russian) Currently translated at 99.8% (638 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 8ae518d2426d6..8d353acc07c0d 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -316,7 +316,7 @@ Settings: Are you sure you want to clear out your search cache?: Выполнить очистку кэша поиска? Clear Search Cache: Очистить кэш поиска - Save Watched Progress: Сохранять прогресс просмотра + Save Watched Progress: Сохранять ход просмотра Remember History: Запоминать историю Privacy Settings: Конфиденциальность Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Выполнить From 91b81850ffbcf58742c33e5ddba4a27ee04fe055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9A=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D1=83=D0=B1=D0=B0=D0=B9?= Date: Sat, 3 Dec 2022 22:19:09 +0000 Subject: [PATCH 044/367] Translated using Weblate (Russian) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 8d353acc07c0d..4f3b741f6df08 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -209,6 +209,7 @@ Settings: Expand Side Bar by Default: Расширить боковую панель Disable Smooth Scrolling: Отключить плавную прокрутку Hide Side Bar Labels: Скрыть надписи боковой панели + Hide FreeTube Header Logo: Скрыть логотип заголовка FreeTube Player Settings: Player Settings: 'Настройки проигрывателя' Force Local Backend for Legacy Formats: 'Принудительно использовать локальный From cabe6ddf651007cb53133e21b79f24798dc5300c Mon Sep 17 00:00:00 2001 From: Rusi Dimitrov Date: Sat, 3 Dec 2022 22:06:30 +0000 Subject: [PATCH 045/367] Translated using Weblate (Bulgarian) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/ --- static/locales/bg.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index e2616f69cc172..8e59ddc43bb03 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -218,6 +218,7 @@ Settings: Disable Smooth Scrolling: Изключване на плавното превъртане Expand Side Bar by Default: Разширяване на страничната лента по подразбиране Hide Side Bar Labels: Скриване етикетите на страничната лента + Hide FreeTube Header Logo: Скриване логото на FreeTube Player Settings: Player Settings: 'Настройки на плейъра' Force Local Backend for Legacy Formats: 'Принудително връщане към локалния интерфейс @@ -273,6 +274,7 @@ Settings: също така да използвате "\" или "/", за създаване на подпапки. Format Label: Формат Folder Button: Избор на папка + Enter Fullscreen on Display Rotate: Режим на цял екран при завъртане на дисплея Privacy Settings: Privacy Settings: 'Настройки за поверителност' Remember History: 'Запазване на историята' @@ -388,6 +390,7 @@ Settings: Hide Sharing Actions: Скриване на действията за споделяне Hide Live Streams: Скриване на предавания на живо Hide Chapters: Скриване на главите + Hide Upcoming Premieres: Скриване на предстоящите премиери The app needs to restart for changes to take effect. Restart and apply change?: Приложението трябва да се рестартира за да се приложат промените. Рестартиране? Proxy Settings: @@ -768,6 +771,7 @@ Share: YouTube Embed URL copied to clipboard: 'YouTube адресът за вграждане е копиран' YouTube Channel URL copied to clipboard: YouTube адресът на канала е копиран Invidious Channel URL copied to clipboard: Invidious адресът на канала е копиран + Share Channel: Споделяне на канал Mini Player: 'Мини плейър' Comments: Comments: 'Коментари' From a433c04037af125b7c780a48c0b8f212799dfe79 Mon Sep 17 00:00:00 2001 From: Simon Epstein Date: Sun, 4 Dec 2022 11:43:04 +0000 Subject: [PATCH 046/367] Hide unsubscribe button on channel list if this is set in parental controls. (#2906) * Hide unsubscribe button on channel list if this is set in parental controls. * Fix github linting errors * Removed trailing whitespace. * Reverted yarn.lock change * Remove package-lock.json Co-authored-by: Simon Epstein --- src/renderer/views/SubscribedChannels/SubscribedChannels.js | 4 ++++ src/renderer/views/SubscribedChannels/SubscribedChannels.vue | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/renderer/views/SubscribedChannels/SubscribedChannels.js b/src/renderer/views/SubscribedChannels/SubscribedChannels.js index fff25c01f389e..18ec467664b9d 100644 --- a/src/renderer/views/SubscribedChannels/SubscribedChannels.js +++ b/src/renderer/views/SubscribedChannels/SubscribedChannels.js @@ -60,6 +60,10 @@ export default Vue.extend({ } }, + hideUnsubscribeButton: function() { + return this.$store.getters.getHideUnsubscribeButton + }, + locale: function () { return this.$i18n.locale.replace('_', '-') }, diff --git a/src/renderer/views/SubscribedChannels/SubscribedChannels.vue b/src/renderer/views/SubscribedChannels/SubscribedChannels.vue index 28189fbafa06a..e61b70f087fad 100644 --- a/src/renderer/views/SubscribedChannels/SubscribedChannels.vue +++ b/src/renderer/views/SubscribedChannels/SubscribedChannels.vue @@ -44,7 +44,10 @@ > {{ channel.name }} -
+
Date: Sun, 4 Dec 2022 11:55:34 +0000 Subject: [PATCH 047/367] Translated using Weblate (Lithuanian) Currently translated at 100.0% (639 of 639 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lt/ --- static/locales/lt.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/lt.yaml b/static/locales/lt.yaml index f19adbec99973..02f891954b2cc 100644 --- a/static/locales/lt.yaml +++ b/static/locales/lt.yaml @@ -556,7 +556,7 @@ Video: Play Previous Video: 'Groti ankstesnį vaizdo įrašą' # Context is "X People Watching" Watching: 'Žiūri' - Watched: 'Žiūrėjo' + Watched: 'Žiūrėta' Autoplay: 'Paleisti automatiškai' Starting soon, please refresh the page to check again: 'Greitai prasidės, atnaujinkite puslapį, kad galėtumėte patikrinti dar kartą' From 3d0157da75e62d03c0fd51bcb4e9bcfc1671379f Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 5 Dec 2022 08:42:40 +0100 Subject: [PATCH 048/367] Make more UI elements middle clickable (#2911) --- .../components/playlist-info/playlist-info.js | 4 -- .../playlist-info/playlist-info.sass | 5 +- .../playlist-info/playlist-info.vue | 6 +- .../side-nav-more-options.js | 2 +- src/renderer/components/side-nav/side-nav.css | 3 +- src/renderer/components/side-nav/side-nav.js | 5 -- src/renderer/components/side-nav/side-nav.vue | 67 +++++++------------ 7 files changed, 32 insertions(+), 60 deletions(-) diff --git a/src/renderer/components/playlist-info/playlist-info.js b/src/renderer/components/playlist-info/playlist-info.js index 30f3e4da8d5e5..a96819326478f 100644 --- a/src/renderer/components/playlist-info/playlist-info.js +++ b/src/renderer/components/playlist-info/playlist-info.js @@ -135,10 +135,6 @@ export default Vue.extend({ query: playlistInfo } ) - }, - - goToChannel: function () { - this.$router.push({ path: `/channel/${this.channelId}` }) } } }) diff --git a/src/renderer/components/playlist-info/playlist-info.sass b/src/renderer/components/playlist-info/playlist-info.sass index 5e359934e942e..bb382ccc9035d 100644 --- a/src/renderer/components/playlist-info/playlist-info.sass +++ b/src/renderer/components/playlist-info/playlist-info.sass @@ -31,9 +31,8 @@ align-items: center gap: 8px height: 40px - - /* Indicates the box can be clicked to navigate */ - cursor: pointer + text-decoration: none + color: inherit .channelThumbnail width: 40px diff --git a/src/renderer/components/playlist-info/playlist-info.vue b/src/renderer/components/playlist-info/playlist-info.vue index b3361cd030882..fbe4d0fda9b4f 100644 --- a/src/renderer/components/playlist-info/playlist-info.vue +++ b/src/renderer/components/playlist-info/playlist-info.vue @@ -29,9 +29,9 @@
-
{{ channelName }} -
+
diff --git a/src/renderer/components/side-nav-more-options/side-nav-more-options.js b/src/renderer/components/side-nav-more-options/side-nav-more-options.js index 385a4c8f1ea66..e9f7fa02df293 100644 --- a/src/renderer/components/side-nav-more-options/side-nav-more-options.js +++ b/src/renderer/components/side-nav-more-options/side-nav-more-options.js @@ -32,7 +32,7 @@ export default Vue.extend({ methods: { navigate: function (route) { this.openMoreOptions = false - this.$emit('navigate', route) + this.$router.push('/' + route) } } }) diff --git a/src/renderer/components/side-nav/side-nav.css b/src/renderer/components/side-nav/side-nav.css index 8ff29f6c61ad5..d5d32ef60c0c9 100644 --- a/src/renderer/components/side-nav/side-nav.css +++ b/src/renderer/components/side-nav/side-nav.css @@ -40,7 +40,6 @@ .navOption, .navChannel { position: relative; padding: 5px; - cursor: pointer; min-height: 35px; } @@ -88,7 +87,7 @@ transform: translateY(-50%); } -.channelLink { +.navOption, .channelLink { display: block; color: inherit; text-decoration: inherit; diff --git a/src/renderer/components/side-nav/side-nav.js b/src/renderer/components/side-nav/side-nav.js index 84cd4727abdcb..7c7be13ef65c0 100644 --- a/src/renderer/components/side-nav/side-nav.js +++ b/src/renderer/components/side-nav/side-nav.js @@ -75,10 +75,5 @@ export default Vue.extend({ hiddenLabels: this.hideText } } - }, - methods: { - navigate: function (route) { - this.$router.push('/' + route) - } } }) diff --git a/src/renderer/components/side-nav/side-nav.vue b/src/renderer/components/side-nav/side-nav.vue index f5380154710c9..f3e256c06c89b 100644 --- a/src/renderer/components/side-nav/side-nav.vue +++ b/src/renderer/components/side-nav/side-nav.vue @@ -8,12 +8,11 @@ class="inner" :class="applyHiddenLabels" > -