diff options
author | André Oliveira <37463445+SpecialAro@users.noreply.github.com> | 2022-08-17 22:54:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-17 22:54:41 +0100 |
commit | fb0cc81d1db0d88c90bb112a0caec66095fcc0f0 (patch) | |
tree | aaa5d0f92f55ccf3984af2cbf2ebbcb1da5fd7c6 | |
parent | 6.0.1-nightly.16 [skip ci] (diff) | |
download | ferdium-app-fb0cc81d1db0d88c90bb112a0caec66095fcc0f0.tar.gz ferdium-app-fb0cc81d1db0d88c90bb112a0caec66095fcc0f0.tar.zst ferdium-app-fb0cc81d1db0d88c90bb112a0caec66095fcc0f0.zip |
Feature: Add Ferdium Translator (#548)
Add feature to translate text natively using https://github.com/shikar/NODE_GOOGLE_TRANSLATE package and a LibreTranslate self-hosted option (already running on our server on https://translator.ferdium.org).
-rw-r--r-- | package-lock.json | 816 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | src/@types/stores.types.ts | 3 | ||||
-rw-r--r-- | src/components/settings/settings/EditSettingsForm.jsx | 12 | ||||
-rw-r--r-- | src/config.ts | 139 | ||||
-rw-r--r-- | src/containers/settings/EditSettingsScreen.tsx | 54 | ||||
-rw-r--r-- | src/helpers/translation-helpers.ts | 47 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 3 | ||||
-rw-r--r-- | src/index.ts | 13 | ||||
-rw-r--r-- | src/models/IContextMenuParams.ts | 7 | ||||
-rw-r--r-- | src/stores/ServicesStore.ts | 21 | ||||
-rw-r--r-- | src/webview/contextMenu.ts | 6 | ||||
-rw-r--r-- | src/webview/contextMenuBuilder.ts | 255 | ||||
-rw-r--r-- | src/webview/recipe.js | 6 |
14 files changed, 1328 insertions, 55 deletions
diff --git a/package-lock.json b/package-lock.json index ed75ec4ef..7c21ac15a 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -82,6 +82,7 @@ | |||
82 | "semver": "7.3.7", | 82 | "semver": "7.3.7", |
83 | "sqlite3": "5.0.8", | 83 | "sqlite3": "5.0.8", |
84 | "tar": "6.1.11", | 84 | "tar": "6.1.11", |
85 | "translate-google": "1.5.0", | ||
85 | "tslib": "2.4.0", | 86 | "tslib": "2.4.0", |
86 | "useragent-generator": "1.1.1-amkt-22079-finish.0", | 87 | "useragent-generator": "1.1.1-amkt-22079-finish.0", |
87 | "uuid": "8.3.2", | 88 | "uuid": "8.3.2", |
@@ -4675,6 +4676,17 @@ | |||
4675 | "@types/node": "*" | 4676 | "@types/node": "*" |
4676 | } | 4677 | } |
4677 | }, | 4678 | }, |
4679 | "node_modules/@types/cacheable-request": { | ||
4680 | "version": "6.0.2", | ||
4681 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", | ||
4682 | "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", | ||
4683 | "dependencies": { | ||
4684 | "@types/http-cache-semantics": "*", | ||
4685 | "@types/keyv": "*", | ||
4686 | "@types/node": "*", | ||
4687 | "@types/responselike": "*" | ||
4688 | } | ||
4689 | }, | ||
4678 | "node_modules/@types/color": { | 4690 | "node_modules/@types/color": { |
4679 | "version": "3.0.3", | 4691 | "version": "3.0.3", |
4680 | "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz", | 4692 | "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz", |
@@ -4820,6 +4832,11 @@ | |||
4820 | "hoist-non-react-statics": "^3.3.0" | 4832 | "hoist-non-react-statics": "^3.3.0" |
4821 | } | 4833 | } |
4822 | }, | 4834 | }, |
4835 | "node_modules/@types/http-cache-semantics": { | ||
4836 | "version": "4.0.1", | ||
4837 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", | ||
4838 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" | ||
4839 | }, | ||
4823 | "node_modules/@types/http-proxy": { | 4840 | "node_modules/@types/http-proxy": { |
4824 | "version": "1.17.9", | 4841 | "version": "1.17.9", |
4825 | "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", | 4842 | "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", |
@@ -4863,6 +4880,11 @@ | |||
4863 | "pretty-format": "^28.0.0" | 4880 | "pretty-format": "^28.0.0" |
4864 | } | 4881 | } |
4865 | }, | 4882 | }, |
4883 | "node_modules/@types/json-buffer": { | ||
4884 | "version": "3.0.0", | ||
4885 | "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", | ||
4886 | "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" | ||
4887 | }, | ||
4866 | "node_modules/@types/json-schema": { | 4888 | "node_modules/@types/json-schema": { |
4867 | "version": "7.0.11", | 4889 | "version": "7.0.11", |
4868 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", | 4890 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", |
@@ -4881,6 +4903,14 @@ | |||
4881 | "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", | 4903 | "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", |
4882 | "dev": true | 4904 | "dev": true |
4883 | }, | 4905 | }, |
4906 | "node_modules/@types/keyv": { | ||
4907 | "version": "3.1.4", | ||
4908 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", | ||
4909 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", | ||
4910 | "dependencies": { | ||
4911 | "@types/node": "*" | ||
4912 | } | ||
4913 | }, | ||
4884 | "node_modules/@types/lodash": { | 4914 | "node_modules/@types/lodash": { |
4885 | "version": "4.14.182", | 4915 | "version": "4.14.182", |
4886 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", | 4916 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", |
@@ -4930,8 +4960,7 @@ | |||
4930 | "node_modules/@types/node": { | 4960 | "node_modules/@types/node": { |
4931 | "version": "16.11.33", | 4961 | "version": "16.11.33", |
4932 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", | 4962 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", |
4933 | "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==", | 4963 | "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==" |
4934 | "dev": true | ||
4935 | }, | 4964 | }, |
4936 | "node_modules/@types/normalize-package-data": { | 4965 | "node_modules/@types/normalize-package-data": { |
4937 | "version": "2.4.1", | 4966 | "version": "2.4.1", |
@@ -4998,6 +5027,14 @@ | |||
4998 | "@types/react": "^17" | 5027 | "@types/react": "^17" |
4999 | } | 5028 | } |
5000 | }, | 5029 | }, |
5030 | "node_modules/@types/responselike": { | ||
5031 | "version": "1.0.0", | ||
5032 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", | ||
5033 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", | ||
5034 | "dependencies": { | ||
5035 | "@types/node": "*" | ||
5036 | } | ||
5037 | }, | ||
5001 | "node_modules/@types/retry": { | 5038 | "node_modules/@types/retry": { |
5002 | "version": "0.12.0", | 5039 | "version": "0.12.0", |
5003 | "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", | 5040 | "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", |
@@ -8004,6 +8041,14 @@ | |||
8004 | "node": ">=0.10.0" | 8041 | "node": ">=0.10.0" |
8005 | } | 8042 | } |
8006 | }, | 8043 | }, |
8044 | "node_modules/cacheable-lookup": { | ||
8045 | "version": "5.0.4", | ||
8046 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", | ||
8047 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", | ||
8048 | "engines": { | ||
8049 | "node": ">=10.6.0" | ||
8050 | } | ||
8051 | }, | ||
8007 | "node_modules/cacheable-request": { | 8052 | "node_modules/cacheable-request": { |
8008 | "version": "6.1.0", | 8053 | "version": "6.1.0", |
8009 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", | 8054 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", |
@@ -8559,7 +8604,6 @@ | |||
8559 | "version": "1.0.2", | 8604 | "version": "1.0.2", |
8560 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", | 8605 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", |
8561 | "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", | 8606 | "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", |
8562 | "dev": true, | ||
8563 | "dependencies": { | 8607 | "dependencies": { |
8564 | "mimic-response": "^1.0.0" | 8608 | "mimic-response": "^1.0.0" |
8565 | } | 8609 | } |
@@ -8787,6 +8831,23 @@ | |||
8787 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", | 8831 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", |
8788 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" | 8832 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" |
8789 | }, | 8833 | }, |
8834 | "node_modules/compress-brotli": { | ||
8835 | "version": "1.3.8", | ||
8836 | "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", | ||
8837 | "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", | ||
8838 | "dependencies": { | ||
8839 | "@types/json-buffer": "~3.0.0", | ||
8840 | "json-buffer": "~3.0.1" | ||
8841 | }, | ||
8842 | "engines": { | ||
8843 | "node": ">= 12" | ||
8844 | } | ||
8845 | }, | ||
8846 | "node_modules/compress-brotli/node_modules/json-buffer": { | ||
8847 | "version": "3.0.1", | ||
8848 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", | ||
8849 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" | ||
8850 | }, | ||
8790 | "node_modules/compressible": { | 8851 | "node_modules/compressible": { |
8791 | "version": "2.0.18", | 8852 | "version": "2.0.18", |
8792 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", | 8853 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", |
@@ -9746,6 +9807,14 @@ | |||
9746 | "node": ">=0.10.0" | 9807 | "node": ">=0.10.0" |
9747 | } | 9808 | } |
9748 | }, | 9809 | }, |
9810 | "node_modules/detect-indent": { | ||
9811 | "version": "6.0.0", | ||
9812 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", | ||
9813 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", | ||
9814 | "engines": { | ||
9815 | "node": ">=8" | ||
9816 | } | ||
9817 | }, | ||
9749 | "node_modules/detect-libc": { | 9818 | "node_modules/detect-libc": { |
9750 | "version": "2.0.1", | 9819 | "version": "2.0.1", |
9751 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", | 9820 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", |
@@ -9905,6 +9974,14 @@ | |||
9905 | "node": ">=6" | 9974 | "node": ">=6" |
9906 | } | 9975 | } |
9907 | }, | 9976 | }, |
9977 | "node_modules/docopt": { | ||
9978 | "version": "0.6.2", | ||
9979 | "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", | ||
9980 | "integrity": "sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==", | ||
9981 | "engines": { | ||
9982 | "node": ">=0.10.0" | ||
9983 | } | ||
9984 | }, | ||
9908 | "node_modules/doctrine": { | 9985 | "node_modules/doctrine": { |
9909 | "version": "3.0.0", | 9986 | "version": "3.0.0", |
9910 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", | 9987 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", |
@@ -9925,6 +10002,19 @@ | |||
9925 | "@babel/runtime": "^7.1.2" | 10002 | "@babel/runtime": "^7.1.2" |
9926 | } | 10003 | } |
9927 | }, | 10004 | }, |
10005 | "node_modules/dot-json": { | ||
10006 | "version": "1.2.2", | ||
10007 | "resolved": "https://registry.npmjs.org/dot-json/-/dot-json-1.2.2.tgz", | ||
10008 | "integrity": "sha512-AKL+GsO4wSEU4LU+fAk/PqN4nQ6PB1vT3HpMiZous9xCzK5S0kh4DzfUY0EfU67jsIXLlu0ty71659N9Nmg+Tw==", | ||
10009 | "dependencies": { | ||
10010 | "detect-indent": "~6.0.0", | ||
10011 | "docopt": "~0.6.2", | ||
10012 | "underscore-keypath": "~0.0.22" | ||
10013 | }, | ||
10014 | "bin": { | ||
10015 | "dot-json": "bin/dot-json.js" | ||
10016 | } | ||
10017 | }, | ||
9928 | "node_modules/dot-prop": { | 10018 | "node_modules/dot-prop": { |
9929 | "version": "5.3.0", | 10019 | "version": "5.3.0", |
9930 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", | 10020 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", |
@@ -14085,8 +14175,7 @@ | |||
14085 | "node_modules/http-cache-semantics": { | 14175 | "node_modules/http-cache-semantics": { |
14086 | "version": "4.1.0", | 14176 | "version": "4.1.0", |
14087 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", | 14177 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", |
14088 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", | 14178 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" |
14089 | "devOptional": true | ||
14090 | }, | 14179 | }, |
14091 | "node_modules/http-deceiver": { | 14180 | "node_modules/http-deceiver": { |
14092 | "version": "1.2.7", | 14181 | "version": "1.2.7", |
@@ -14194,6 +14283,29 @@ | |||
14194 | "npm": ">=1.3.7" | 14283 | "npm": ">=1.3.7" |
14195 | } | 14284 | } |
14196 | }, | 14285 | }, |
14286 | "node_modules/http2-wrapper": { | ||
14287 | "version": "1.0.3", | ||
14288 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", | ||
14289 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", | ||
14290 | "dependencies": { | ||
14291 | "quick-lru": "^5.1.1", | ||
14292 | "resolve-alpn": "^1.0.0" | ||
14293 | }, | ||
14294 | "engines": { | ||
14295 | "node": ">=10.19.0" | ||
14296 | } | ||
14297 | }, | ||
14298 | "node_modules/http2-wrapper/node_modules/quick-lru": { | ||
14299 | "version": "5.1.1", | ||
14300 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", | ||
14301 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", | ||
14302 | "engines": { | ||
14303 | "node": ">=10" | ||
14304 | }, | ||
14305 | "funding": { | ||
14306 | "url": "https://github.com/sponsors/sindresorhus" | ||
14307 | } | ||
14308 | }, | ||
14197 | "node_modules/https-proxy-agent": { | 14309 | "node_modules/https-proxy-agent": { |
14198 | "version": "5.0.1", | 14310 | "version": "5.0.1", |
14199 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", | 14311 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", |
@@ -14429,7 +14541,6 @@ | |||
14429 | "version": "0.1.4", | 14541 | "version": "0.1.4", |
14430 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", | 14542 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", |
14431 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", | 14543 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", |
14432 | "devOptional": true, | ||
14433 | "engines": { | 14544 | "engines": { |
14434 | "node": ">=0.8.19" | 14545 | "node": ">=0.8.19" |
14435 | } | 14546 | } |
@@ -14939,6 +15050,14 @@ | |||
14939 | "node": ">=10" | 15050 | "node": ">=10" |
14940 | } | 15051 | } |
14941 | }, | 15052 | }, |
15053 | "node_modules/is-keyword-js": { | ||
15054 | "version": "1.0.3", | ||
15055 | "resolved": "https://registry.npmjs.org/is-keyword-js/-/is-keyword-js-1.0.3.tgz", | ||
15056 | "integrity": "sha512-EW8wNCNvomPa/jsH1g0DmLfPakkRCRTcTML1v1fZMLiVCvQ/1YB+tKsRzShBiWQhqrYCi5a+WsepA4Z8TA9iaA==", | ||
15057 | "engines": { | ||
15058 | "node": ">=0.10.0" | ||
15059 | } | ||
15060 | }, | ||
14942 | "node_modules/is-lambda": { | 15061 | "node_modules/is-lambda": { |
14943 | "version": "1.0.1", | 15062 | "version": "1.0.1", |
14944 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", | 15063 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", |
@@ -15019,7 +15138,6 @@ | |||
15019 | "version": "2.0.0", | 15138 | "version": "2.0.0", |
15020 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", | 15139 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", |
15021 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", | 15140 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", |
15022 | "dev": true, | ||
15023 | "engines": { | 15141 | "engines": { |
15024 | "node": ">=8" | 15142 | "node": ">=8" |
15025 | } | 15143 | } |
@@ -15152,8 +15270,7 @@ | |||
15152 | "node_modules/is-typedarray": { | 15270 | "node_modules/is-typedarray": { |
15153 | "version": "1.0.0", | 15271 | "version": "1.0.0", |
15154 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | 15272 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", |
15155 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", | 15273 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" |
15156 | "devOptional": true | ||
15157 | }, | 15274 | }, |
15158 | "node_modules/is-unc-path": { | 15275 | "node_modules/is-unc-path": { |
15159 | "version": "1.0.0", | 15276 | "version": "1.0.0", |
@@ -15166,6 +15283,11 @@ | |||
15166 | "node": ">=0.10.0" | 15283 | "node": ">=0.10.0" |
15167 | } | 15284 | } |
15168 | }, | 15285 | }, |
15286 | "node_modules/is-url": { | ||
15287 | "version": "1.2.4", | ||
15288 | "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", | ||
15289 | "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" | ||
15290 | }, | ||
15169 | "node_modules/is-utf8": { | 15291 | "node_modules/is-utf8": { |
15170 | "version": "0.2.1", | 15292 | "version": "0.2.1", |
15171 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", | 15293 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", |
@@ -17921,8 +18043,7 @@ | |||
17921 | "node_modules/lodash.clonedeep": { | 18043 | "node_modules/lodash.clonedeep": { |
17922 | "version": "4.5.0", | 18044 | "version": "4.5.0", |
17923 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", | 18045 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", |
17924 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", | 18046 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" |
17925 | "dev": true | ||
17926 | }, | 18047 | }, |
17927 | "node_modules/lodash.debounce": { | 18048 | "node_modules/lodash.debounce": { |
17928 | "version": "4.0.8", | 18049 | "version": "4.0.8", |
@@ -18667,7 +18788,6 @@ | |||
18667 | "version": "1.0.1", | 18788 | "version": "1.0.1", |
18668 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", | 18789 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", |
18669 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", | 18790 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", |
18670 | "dev": true, | ||
18671 | "engines": { | 18791 | "engines": { |
18672 | "node": ">=4" | 18792 | "node": ">=4" |
18673 | } | 18793 | } |
@@ -19456,6 +19576,14 @@ | |||
19456 | "set-blocking": "^2.0.0" | 19576 | "set-blocking": "^2.0.0" |
19457 | } | 19577 | } |
19458 | }, | 19578 | }, |
19579 | "node_modules/num-or-not": { | ||
19580 | "version": "1.0.1", | ||
19581 | "resolved": "https://registry.npmjs.org/num-or-not/-/num-or-not-1.0.1.tgz", | ||
19582 | "integrity": "sha512-IMyEpYE7hBjD/fKvZu7/jhy05scXUYy0KXOoKVjoFNU6di56wpGjCok3SoC9k51993v9N7GSLPf+9PuWq220cg==", | ||
19583 | "dependencies": { | ||
19584 | "trim": "0.0.1" | ||
19585 | } | ||
19586 | }, | ||
19459 | "node_modules/number-is-nan": { | 19587 | "node_modules/number-is-nan": { |
19460 | "version": "1.0.1", | 19588 | "version": "1.0.1", |
19461 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", | 19589 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", |
@@ -22501,6 +22629,11 @@ | |||
22501 | "url": "https://github.com/sponsors/ljharb" | 22629 | "url": "https://github.com/sponsors/ljharb" |
22502 | } | 22630 | } |
22503 | }, | 22631 | }, |
22632 | "node_modules/resolve-alpn": { | ||
22633 | "version": "1.2.1", | ||
22634 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", | ||
22635 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" | ||
22636 | }, | ||
22504 | "node_modules/resolve-cwd": { | 22637 | "node_modules/resolve-cwd": { |
22505 | "version": "3.0.0", | 22638 | "version": "3.0.0", |
22506 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", | 22639 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", |
@@ -22712,6 +22845,11 @@ | |||
22712 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | 22845 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
22713 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | 22846 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |
22714 | }, | 22847 | }, |
22848 | "node_modules/safe-eval": { | ||
22849 | "version": "0.4.1", | ||
22850 | "resolved": "https://registry.npmjs.org/safe-eval/-/safe-eval-0.4.1.tgz", | ||
22851 | "integrity": "sha512-wmiu4RSYVZ690RP1+cv/LxfPK1dIlEN35aW7iv4SMYdqDrHbkll4+NJcHmKm7PbCuI1df1otOcPwgcc2iFR85g==" | ||
22852 | }, | ||
22715 | "node_modules/safe-json-parse": { | 22853 | "node_modules/safe-json-parse": { |
22716 | "version": "1.0.1", | 22854 | "version": "1.0.1", |
22717 | "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", | 22855 | "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", |
@@ -25051,6 +25189,274 @@ | |||
25051 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", | 25189 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", |
25052 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" | 25190 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" |
25053 | }, | 25191 | }, |
25192 | "node_modules/translate-google": { | ||
25193 | "version": "1.5.0", | ||
25194 | "resolved": "https://registry.npmjs.org/translate-google/-/translate-google-1.5.0.tgz", | ||
25195 | "integrity": "sha512-wI/oX3U3t78PthVkvO7BdvKRcjb03JaUs53oAhs0NVmzFJUEm5ROiYWH7gomRHFZ5bL7LKxrFRx8Qy/l1eB46g==", | ||
25196 | "dependencies": { | ||
25197 | "configstore": "^6.0.0", | ||
25198 | "got": "^11.8.2", | ||
25199 | "is-keyword-js": "^1.0.3", | ||
25200 | "is-url": "^1.2.4", | ||
25201 | "lodash": "^4.17.21", | ||
25202 | "num-or-not": "^1.0.1", | ||
25203 | "safe-eval": "^0.4.1", | ||
25204 | "user-agents": "^1.0.779" | ||
25205 | } | ||
25206 | }, | ||
25207 | "node_modules/translate-google/node_modules/@sindresorhus/is": { | ||
25208 | "version": "4.6.0", | ||
25209 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", | ||
25210 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", | ||
25211 | "engines": { | ||
25212 | "node": ">=10" | ||
25213 | }, | ||
25214 | "funding": { | ||
25215 | "url": "https://github.com/sindresorhus/is?sponsor=1" | ||
25216 | } | ||
25217 | }, | ||
25218 | "node_modules/translate-google/node_modules/@szmarczak/http-timer": { | ||
25219 | "version": "4.0.6", | ||
25220 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", | ||
25221 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", | ||
25222 | "dependencies": { | ||
25223 | "defer-to-connect": "^2.0.0" | ||
25224 | }, | ||
25225 | "engines": { | ||
25226 | "node": ">=10" | ||
25227 | } | ||
25228 | }, | ||
25229 | "node_modules/translate-google/node_modules/cacheable-request": { | ||
25230 | "version": "7.0.2", | ||
25231 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", | ||
25232 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", | ||
25233 | "dependencies": { | ||
25234 | "clone-response": "^1.0.2", | ||
25235 | "get-stream": "^5.1.0", | ||
25236 | "http-cache-semantics": "^4.0.0", | ||
25237 | "keyv": "^4.0.0", | ||
25238 | "lowercase-keys": "^2.0.0", | ||
25239 | "normalize-url": "^6.0.1", | ||
25240 | "responselike": "^2.0.0" | ||
25241 | }, | ||
25242 | "engines": { | ||
25243 | "node": ">=8" | ||
25244 | } | ||
25245 | }, | ||
25246 | "node_modules/translate-google/node_modules/configstore": { | ||
25247 | "version": "6.0.0", | ||
25248 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", | ||
25249 | "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", | ||
25250 | "dependencies": { | ||
25251 | "dot-prop": "^6.0.1", | ||
25252 | "graceful-fs": "^4.2.6", | ||
25253 | "unique-string": "^3.0.0", | ||
25254 | "write-file-atomic": "^3.0.3", | ||
25255 | "xdg-basedir": "^5.0.1" | ||
25256 | }, | ||
25257 | "engines": { | ||
25258 | "node": ">=12" | ||
25259 | }, | ||
25260 | "funding": { | ||
25261 | "url": "https://github.com/yeoman/configstore?sponsor=1" | ||
25262 | } | ||
25263 | }, | ||
25264 | "node_modules/translate-google/node_modules/crypto-random-string": { | ||
25265 | "version": "4.0.0", | ||
25266 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", | ||
25267 | "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", | ||
25268 | "dependencies": { | ||
25269 | "type-fest": "^1.0.1" | ||
25270 | }, | ||
25271 | "engines": { | ||
25272 | "node": ">=12" | ||
25273 | }, | ||
25274 | "funding": { | ||
25275 | "url": "https://github.com/sponsors/sindresorhus" | ||
25276 | } | ||
25277 | }, | ||
25278 | "node_modules/translate-google/node_modules/decompress-response": { | ||
25279 | "version": "6.0.0", | ||
25280 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", | ||
25281 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", | ||
25282 | "dependencies": { | ||
25283 | "mimic-response": "^3.1.0" | ||
25284 | }, | ||
25285 | "engines": { | ||
25286 | "node": ">=10" | ||
25287 | }, | ||
25288 | "funding": { | ||
25289 | "url": "https://github.com/sponsors/sindresorhus" | ||
25290 | } | ||
25291 | }, | ||
25292 | "node_modules/translate-google/node_modules/defer-to-connect": { | ||
25293 | "version": "2.0.1", | ||
25294 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", | ||
25295 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", | ||
25296 | "engines": { | ||
25297 | "node": ">=10" | ||
25298 | } | ||
25299 | }, | ||
25300 | "node_modules/translate-google/node_modules/dot-prop": { | ||
25301 | "version": "6.0.1", | ||
25302 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", | ||
25303 | "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", | ||
25304 | "dependencies": { | ||
25305 | "is-obj": "^2.0.0" | ||
25306 | }, | ||
25307 | "engines": { | ||
25308 | "node": ">=10" | ||
25309 | }, | ||
25310 | "funding": { | ||
25311 | "url": "https://github.com/sponsors/sindresorhus" | ||
25312 | } | ||
25313 | }, | ||
25314 | "node_modules/translate-google/node_modules/get-stream": { | ||
25315 | "version": "5.2.0", | ||
25316 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", | ||
25317 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", | ||
25318 | "dependencies": { | ||
25319 | "pump": "^3.0.0" | ||
25320 | }, | ||
25321 | "engines": { | ||
25322 | "node": ">=8" | ||
25323 | }, | ||
25324 | "funding": { | ||
25325 | "url": "https://github.com/sponsors/sindresorhus" | ||
25326 | } | ||
25327 | }, | ||
25328 | "node_modules/translate-google/node_modules/got": { | ||
25329 | "version": "11.8.5", | ||
25330 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", | ||
25331 | "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", | ||
25332 | "dependencies": { | ||
25333 | "@sindresorhus/is": "^4.0.0", | ||
25334 | "@szmarczak/http-timer": "^4.0.5", | ||
25335 | "@types/cacheable-request": "^6.0.1", | ||
25336 | "@types/responselike": "^1.0.0", | ||
25337 | "cacheable-lookup": "^5.0.3", | ||
25338 | "cacheable-request": "^7.0.2", | ||
25339 | "decompress-response": "^6.0.0", | ||
25340 | "http2-wrapper": "^1.0.0-beta.5.2", | ||
25341 | "lowercase-keys": "^2.0.0", | ||
25342 | "p-cancelable": "^2.0.0", | ||
25343 | "responselike": "^2.0.0" | ||
25344 | }, | ||
25345 | "engines": { | ||
25346 | "node": ">=10.19.0" | ||
25347 | }, | ||
25348 | "funding": { | ||
25349 | "url": "https://github.com/sindresorhus/got?sponsor=1" | ||
25350 | } | ||
25351 | }, | ||
25352 | "node_modules/translate-google/node_modules/json-buffer": { | ||
25353 | "version": "3.0.1", | ||
25354 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", | ||
25355 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" | ||
25356 | }, | ||
25357 | "node_modules/translate-google/node_modules/keyv": { | ||
25358 | "version": "4.3.3", | ||
25359 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz", | ||
25360 | "integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==", | ||
25361 | "dependencies": { | ||
25362 | "compress-brotli": "^1.3.8", | ||
25363 | "json-buffer": "3.0.1" | ||
25364 | } | ||
25365 | }, | ||
25366 | "node_modules/translate-google/node_modules/lowercase-keys": { | ||
25367 | "version": "2.0.0", | ||
25368 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", | ||
25369 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", | ||
25370 | "engines": { | ||
25371 | "node": ">=8" | ||
25372 | } | ||
25373 | }, | ||
25374 | "node_modules/translate-google/node_modules/mimic-response": { | ||
25375 | "version": "3.1.0", | ||
25376 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", | ||
25377 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", | ||
25378 | "engines": { | ||
25379 | "node": ">=10" | ||
25380 | }, | ||
25381 | "funding": { | ||
25382 | "url": "https://github.com/sponsors/sindresorhus" | ||
25383 | } | ||
25384 | }, | ||
25385 | "node_modules/translate-google/node_modules/p-cancelable": { | ||
25386 | "version": "2.1.1", | ||
25387 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", | ||
25388 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", | ||
25389 | "engines": { | ||
25390 | "node": ">=8" | ||
25391 | } | ||
25392 | }, | ||
25393 | "node_modules/translate-google/node_modules/pump": { | ||
25394 | "version": "3.0.0", | ||
25395 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", | ||
25396 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", | ||
25397 | "dependencies": { | ||
25398 | "end-of-stream": "^1.1.0", | ||
25399 | "once": "^1.3.1" | ||
25400 | } | ||
25401 | }, | ||
25402 | "node_modules/translate-google/node_modules/responselike": { | ||
25403 | "version": "2.0.1", | ||
25404 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", | ||
25405 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", | ||
25406 | "dependencies": { | ||
25407 | "lowercase-keys": "^2.0.0" | ||
25408 | }, | ||
25409 | "funding": { | ||
25410 | "url": "https://github.com/sponsors/sindresorhus" | ||
25411 | } | ||
25412 | }, | ||
25413 | "node_modules/translate-google/node_modules/type-fest": { | ||
25414 | "version": "1.4.0", | ||
25415 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", | ||
25416 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", | ||
25417 | "engines": { | ||
25418 | "node": ">=10" | ||
25419 | }, | ||
25420 | "funding": { | ||
25421 | "url": "https://github.com/sponsors/sindresorhus" | ||
25422 | } | ||
25423 | }, | ||
25424 | "node_modules/translate-google/node_modules/unique-string": { | ||
25425 | "version": "3.0.0", | ||
25426 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", | ||
25427 | "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", | ||
25428 | "dependencies": { | ||
25429 | "crypto-random-string": "^4.0.0" | ||
25430 | }, | ||
25431 | "engines": { | ||
25432 | "node": ">=12" | ||
25433 | }, | ||
25434 | "funding": { | ||
25435 | "url": "https://github.com/sponsors/sindresorhus" | ||
25436 | } | ||
25437 | }, | ||
25438 | "node_modules/translate-google/node_modules/write-file-atomic": { | ||
25439 | "version": "3.0.3", | ||
25440 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", | ||
25441 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", | ||
25442 | "dependencies": { | ||
25443 | "imurmurhash": "^0.1.4", | ||
25444 | "is-typedarray": "^1.0.0", | ||
25445 | "signal-exit": "^3.0.2", | ||
25446 | "typedarray-to-buffer": "^3.1.5" | ||
25447 | } | ||
25448 | }, | ||
25449 | "node_modules/translate-google/node_modules/xdg-basedir": { | ||
25450 | "version": "5.1.0", | ||
25451 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", | ||
25452 | "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", | ||
25453 | "engines": { | ||
25454 | "node": ">=12" | ||
25455 | }, | ||
25456 | "funding": { | ||
25457 | "url": "https://github.com/sponsors/sindresorhus" | ||
25458 | } | ||
25459 | }, | ||
25054 | "node_modules/traverse": { | 25460 | "node_modules/traverse": { |
25055 | "version": "0.3.9", | 25461 | "version": "0.3.9", |
25056 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", | 25462 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", |
@@ -25068,6 +25474,11 @@ | |||
25068 | "tree-kill": "cli.js" | 25474 | "tree-kill": "cli.js" |
25069 | } | 25475 | } |
25070 | }, | 25476 | }, |
25477 | "node_modules/trim": { | ||
25478 | "version": "0.0.1", | ||
25479 | "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", | ||
25480 | "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" | ||
25481 | }, | ||
25071 | "node_modules/trim-newlines": { | 25482 | "node_modules/trim-newlines": { |
25072 | "version": "3.0.1", | 25483 | "version": "3.0.1", |
25073 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", | 25484 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", |
@@ -25415,7 +25826,6 @@ | |||
25415 | "version": "3.1.5", | 25826 | "version": "3.1.5", |
25416 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", | 25827 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", |
25417 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", | 25828 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", |
25418 | "dev": true, | ||
25419 | "dependencies": { | 25829 | "dependencies": { |
25420 | "is-typedarray": "^1.0.0" | 25830 | "is-typedarray": "^1.0.0" |
25421 | } | 25831 | } |
@@ -25479,6 +25889,19 @@ | |||
25479 | "node": ">=0.10.0" | 25889 | "node": ">=0.10.0" |
25480 | } | 25890 | } |
25481 | }, | 25891 | }, |
25892 | "node_modules/underscore": { | ||
25893 | "version": "1.13.4", | ||
25894 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", | ||
25895 | "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==" | ||
25896 | }, | ||
25897 | "node_modules/underscore-keypath": { | ||
25898 | "version": "0.0.22", | ||
25899 | "resolved": "https://registry.npmjs.org/underscore-keypath/-/underscore-keypath-0.0.22.tgz", | ||
25900 | "integrity": "sha512-fU7aYj1J2LQd+jqdQ67AlCOZKK3Pl+VErS8fGYcgZG75XB9/bY+RLM+F2xEcKHhHNtLvqqFyXAoZQlLYfec3Xg==", | ||
25901 | "dependencies": { | ||
25902 | "underscore": "*" | ||
25903 | } | ||
25904 | }, | ||
25482 | "node_modules/undertaker": { | 25905 | "node_modules/undertaker": { |
25483 | "version": "1.3.0", | 25906 | "version": "1.3.0", |
25484 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", | 25907 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", |
@@ -26010,6 +26433,15 @@ | |||
26010 | "node": ">=0.10.0" | 26433 | "node": ">=0.10.0" |
26011 | } | 26434 | } |
26012 | }, | 26435 | }, |
26436 | "node_modules/user-agents": { | ||
26437 | "version": "1.0.1099", | ||
26438 | "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.0.1099.tgz", | ||
26439 | "integrity": "sha512-udTGqrQs7qbdOGfzFyZAvuRlx/TSZij3k+LRT7TnaWRfWkPGbDj/mIJRSe2BJfc9RXdbNO+qos6C9xdXXVi9kA==", | ||
26440 | "dependencies": { | ||
26441 | "dot-json": "^1.2.2", | ||
26442 | "lodash.clonedeep": "^4.5.0" | ||
26443 | } | ||
26444 | }, | ||
26013 | "node_modules/useragent": { | 26445 | "node_modules/useragent": { |
26014 | "version": "2.3.0", | 26446 | "version": "2.3.0", |
26015 | "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", | 26447 | "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", |
@@ -30892,6 +31324,17 @@ | |||
30892 | "@types/node": "*" | 31324 | "@types/node": "*" |
30893 | } | 31325 | } |
30894 | }, | 31326 | }, |
31327 | "@types/cacheable-request": { | ||
31328 | "version": "6.0.2", | ||
31329 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", | ||
31330 | "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", | ||
31331 | "requires": { | ||
31332 | "@types/http-cache-semantics": "*", | ||
31333 | "@types/keyv": "*", | ||
31334 | "@types/node": "*", | ||
31335 | "@types/responselike": "*" | ||
31336 | } | ||
31337 | }, | ||
30895 | "@types/color": { | 31338 | "@types/color": { |
30896 | "version": "3.0.3", | 31339 | "version": "3.0.3", |
30897 | "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz", | 31340 | "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz", |
@@ -31037,6 +31480,11 @@ | |||
31037 | "hoist-non-react-statics": "^3.3.0" | 31480 | "hoist-non-react-statics": "^3.3.0" |
31038 | } | 31481 | } |
31039 | }, | 31482 | }, |
31483 | "@types/http-cache-semantics": { | ||
31484 | "version": "4.0.1", | ||
31485 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", | ||
31486 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" | ||
31487 | }, | ||
31040 | "@types/http-proxy": { | 31488 | "@types/http-proxy": { |
31041 | "version": "1.17.9", | 31489 | "version": "1.17.9", |
31042 | "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", | 31490 | "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", |
@@ -31080,6 +31528,11 @@ | |||
31080 | "pretty-format": "^28.0.0" | 31528 | "pretty-format": "^28.0.0" |
31081 | } | 31529 | } |
31082 | }, | 31530 | }, |
31531 | "@types/json-buffer": { | ||
31532 | "version": "3.0.0", | ||
31533 | "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", | ||
31534 | "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" | ||
31535 | }, | ||
31083 | "@types/json-schema": { | 31536 | "@types/json-schema": { |
31084 | "version": "7.0.11", | 31537 | "version": "7.0.11", |
31085 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", | 31538 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", |
@@ -31098,6 +31551,14 @@ | |||
31098 | "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", | 31551 | "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", |
31099 | "dev": true | 31552 | "dev": true |
31100 | }, | 31553 | }, |
31554 | "@types/keyv": { | ||
31555 | "version": "3.1.4", | ||
31556 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", | ||
31557 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", | ||
31558 | "requires": { | ||
31559 | "@types/node": "*" | ||
31560 | } | ||
31561 | }, | ||
31101 | "@types/lodash": { | 31562 | "@types/lodash": { |
31102 | "version": "4.14.182", | 31563 | "version": "4.14.182", |
31103 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", | 31564 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", |
@@ -31147,8 +31608,7 @@ | |||
31147 | "@types/node": { | 31608 | "@types/node": { |
31148 | "version": "16.11.33", | 31609 | "version": "16.11.33", |
31149 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", | 31610 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", |
31150 | "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==", | 31611 | "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==" |
31151 | "dev": true | ||
31152 | }, | 31612 | }, |
31153 | "@types/normalize-package-data": { | 31613 | "@types/normalize-package-data": { |
31154 | "version": "2.4.1", | 31614 | "version": "2.4.1", |
@@ -31215,6 +31675,14 @@ | |||
31215 | "@types/react": "^17" | 31675 | "@types/react": "^17" |
31216 | } | 31676 | } |
31217 | }, | 31677 | }, |
31678 | "@types/responselike": { | ||
31679 | "version": "1.0.0", | ||
31680 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", | ||
31681 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", | ||
31682 | "requires": { | ||
31683 | "@types/node": "*" | ||
31684 | } | ||
31685 | }, | ||
31218 | "@types/retry": { | 31686 | "@types/retry": { |
31219 | "version": "0.12.0", | 31687 | "version": "0.12.0", |
31220 | "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", | 31688 | "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", |
@@ -33527,6 +33995,11 @@ | |||
33527 | } | 33995 | } |
33528 | } | 33996 | } |
33529 | }, | 33997 | }, |
33998 | "cacheable-lookup": { | ||
33999 | "version": "5.0.4", | ||
34000 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", | ||
34001 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" | ||
34002 | }, | ||
33530 | "cacheable-request": { | 34003 | "cacheable-request": { |
33531 | "version": "6.1.0", | 34004 | "version": "6.1.0", |
33532 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", | 34005 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", |
@@ -33965,7 +34438,6 @@ | |||
33965 | "version": "1.0.2", | 34438 | "version": "1.0.2", |
33966 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", | 34439 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", |
33967 | "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", | 34440 | "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", |
33968 | "dev": true, | ||
33969 | "requires": { | 34441 | "requires": { |
33970 | "mimic-response": "^1.0.0" | 34442 | "mimic-response": "^1.0.0" |
33971 | } | 34443 | } |
@@ -34166,6 +34638,22 @@ | |||
34166 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", | 34638 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", |
34167 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" | 34639 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" |
34168 | }, | 34640 | }, |
34641 | "compress-brotli": { | ||
34642 | "version": "1.3.8", | ||
34643 | "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", | ||
34644 | "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", | ||
34645 | "requires": { | ||
34646 | "@types/json-buffer": "~3.0.0", | ||
34647 | "json-buffer": "~3.0.1" | ||
34648 | }, | ||
34649 | "dependencies": { | ||
34650 | "json-buffer": { | ||
34651 | "version": "3.0.1", | ||
34652 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", | ||
34653 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" | ||
34654 | } | ||
34655 | } | ||
34656 | }, | ||
34169 | "compressible": { | 34657 | "compressible": { |
34170 | "version": "2.0.18", | 34658 | "version": "2.0.18", |
34171 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", | 34659 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", |
@@ -34908,6 +35396,11 @@ | |||
34908 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", | 35396 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", |
34909 | "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" | 35397 | "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" |
34910 | }, | 35398 | }, |
35399 | "detect-indent": { | ||
35400 | "version": "6.0.0", | ||
35401 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", | ||
35402 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==" | ||
35403 | }, | ||
34911 | "detect-libc": { | 35404 | "detect-libc": { |
34912 | "version": "2.0.1", | 35405 | "version": "2.0.1", |
34913 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", | 35406 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", |
@@ -35031,6 +35524,11 @@ | |||
35031 | "@leichtgewicht/ip-codec": "^2.0.1" | 35524 | "@leichtgewicht/ip-codec": "^2.0.1" |
35032 | } | 35525 | } |
35033 | }, | 35526 | }, |
35527 | "docopt": { | ||
35528 | "version": "0.6.2", | ||
35529 | "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", | ||
35530 | "integrity": "sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==" | ||
35531 | }, | ||
35034 | "doctrine": { | 35532 | "doctrine": { |
35035 | "version": "3.0.0", | 35533 | "version": "3.0.0", |
35036 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", | 35534 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", |
@@ -35048,6 +35546,16 @@ | |||
35048 | "@babel/runtime": "^7.1.2" | 35546 | "@babel/runtime": "^7.1.2" |
35049 | } | 35547 | } |
35050 | }, | 35548 | }, |
35549 | "dot-json": { | ||
35550 | "version": "1.2.2", | ||
35551 | "resolved": "https://registry.npmjs.org/dot-json/-/dot-json-1.2.2.tgz", | ||
35552 | "integrity": "sha512-AKL+GsO4wSEU4LU+fAk/PqN4nQ6PB1vT3HpMiZous9xCzK5S0kh4DzfUY0EfU67jsIXLlu0ty71659N9Nmg+Tw==", | ||
35553 | "requires": { | ||
35554 | "detect-indent": "~6.0.0", | ||
35555 | "docopt": "~0.6.2", | ||
35556 | "underscore-keypath": "~0.0.22" | ||
35557 | } | ||
35558 | }, | ||
35051 | "dot-prop": { | 35559 | "dot-prop": { |
35052 | "version": "5.3.0", | 35560 | "version": "5.3.0", |
35053 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", | 35561 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", |
@@ -38372,8 +38880,7 @@ | |||
38372 | "http-cache-semantics": { | 38880 | "http-cache-semantics": { |
38373 | "version": "4.1.0", | 38881 | "version": "4.1.0", |
38374 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", | 38882 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", |
38375 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", | 38883 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" |
38376 | "devOptional": true | ||
38377 | }, | 38884 | }, |
38378 | "http-deceiver": { | 38885 | "http-deceiver": { |
38379 | "version": "1.2.7", | 38886 | "version": "1.2.7", |
@@ -38453,6 +38960,22 @@ | |||
38453 | "sshpk": "^1.7.0" | 38960 | "sshpk": "^1.7.0" |
38454 | } | 38961 | } |
38455 | }, | 38962 | }, |
38963 | "http2-wrapper": { | ||
38964 | "version": "1.0.3", | ||
38965 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", | ||
38966 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", | ||
38967 | "requires": { | ||
38968 | "quick-lru": "^5.1.1", | ||
38969 | "resolve-alpn": "^1.0.0" | ||
38970 | }, | ||
38971 | "dependencies": { | ||
38972 | "quick-lru": { | ||
38973 | "version": "5.1.1", | ||
38974 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", | ||
38975 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" | ||
38976 | } | ||
38977 | } | ||
38978 | }, | ||
38456 | "https-proxy-agent": { | 38979 | "https-proxy-agent": { |
38457 | "version": "5.0.1", | 38980 | "version": "5.0.1", |
38458 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", | 38981 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", |
@@ -38611,8 +39134,7 @@ | |||
38611 | "imurmurhash": { | 39134 | "imurmurhash": { |
38612 | "version": "0.1.4", | 39135 | "version": "0.1.4", |
38613 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", | 39136 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", |
38614 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", | 39137 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" |
38615 | "devOptional": true | ||
38616 | }, | 39138 | }, |
38617 | "indent-string": { | 39139 | "indent-string": { |
38618 | "version": "3.2.0", | 39140 | "version": "3.2.0", |
@@ -38988,6 +39510,11 @@ | |||
38988 | } | 39510 | } |
38989 | } | 39511 | } |
38990 | }, | 39512 | }, |
39513 | "is-keyword-js": { | ||
39514 | "version": "1.0.3", | ||
39515 | "resolved": "https://registry.npmjs.org/is-keyword-js/-/is-keyword-js-1.0.3.tgz", | ||
39516 | "integrity": "sha512-EW8wNCNvomPa/jsH1g0DmLfPakkRCRTcTML1v1fZMLiVCvQ/1YB+tKsRzShBiWQhqrYCi5a+WsepA4Z8TA9iaA==" | ||
39517 | }, | ||
38991 | "is-lambda": { | 39518 | "is-lambda": { |
38992 | "version": "1.0.1", | 39519 | "version": "1.0.1", |
38993 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", | 39520 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", |
@@ -39042,8 +39569,7 @@ | |||
39042 | "is-obj": { | 39569 | "is-obj": { |
39043 | "version": "2.0.0", | 39570 | "version": "2.0.0", |
39044 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", | 39571 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", |
39045 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", | 39572 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" |
39046 | "dev": true | ||
39047 | }, | 39573 | }, |
39048 | "is-path-inside": { | 39574 | "is-path-inside": { |
39049 | "version": "3.0.3", | 39575 | "version": "3.0.3", |
@@ -39131,8 +39657,7 @@ | |||
39131 | "is-typedarray": { | 39657 | "is-typedarray": { |
39132 | "version": "1.0.0", | 39658 | "version": "1.0.0", |
39133 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | 39659 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", |
39134 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", | 39660 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" |
39135 | "devOptional": true | ||
39136 | }, | 39661 | }, |
39137 | "is-unc-path": { | 39662 | "is-unc-path": { |
39138 | "version": "1.0.0", | 39663 | "version": "1.0.0", |
@@ -39142,6 +39667,11 @@ | |||
39142 | "unc-path-regex": "^0.1.2" | 39667 | "unc-path-regex": "^0.1.2" |
39143 | } | 39668 | } |
39144 | }, | 39669 | }, |
39670 | "is-url": { | ||
39671 | "version": "1.2.4", | ||
39672 | "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", | ||
39673 | "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" | ||
39674 | }, | ||
39145 | "is-utf8": { | 39675 | "is-utf8": { |
39146 | "version": "0.2.1", | 39676 | "version": "0.2.1", |
39147 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", | 39677 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", |
@@ -41244,8 +41774,7 @@ | |||
41244 | "lodash.clonedeep": { | 41774 | "lodash.clonedeep": { |
41245 | "version": "4.5.0", | 41775 | "version": "4.5.0", |
41246 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", | 41776 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", |
41247 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", | 41777 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" |
41248 | "dev": true | ||
41249 | }, | 41778 | }, |
41250 | "lodash.debounce": { | 41779 | "lodash.debounce": { |
41251 | "version": "4.0.8", | 41780 | "version": "4.0.8", |
@@ -41852,8 +42381,7 @@ | |||
41852 | "mimic-response": { | 42381 | "mimic-response": { |
41853 | "version": "1.0.1", | 42382 | "version": "1.0.1", |
41854 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", | 42383 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", |
41855 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", | 42384 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" |
41856 | "dev": true | ||
41857 | }, | 42385 | }, |
41858 | "min-indent": { | 42386 | "min-indent": { |
41859 | "version": "1.0.1", | 42387 | "version": "1.0.1", |
@@ -42447,6 +42975,14 @@ | |||
42447 | "set-blocking": "^2.0.0" | 42975 | "set-blocking": "^2.0.0" |
42448 | } | 42976 | } |
42449 | }, | 42977 | }, |
42978 | "num-or-not": { | ||
42979 | "version": "1.0.1", | ||
42980 | "resolved": "https://registry.npmjs.org/num-or-not/-/num-or-not-1.0.1.tgz", | ||
42981 | "integrity": "sha512-IMyEpYE7hBjD/fKvZu7/jhy05scXUYy0KXOoKVjoFNU6di56wpGjCok3SoC9k51993v9N7GSLPf+9PuWq220cg==", | ||
42982 | "requires": { | ||
42983 | "trim": "0.0.1" | ||
42984 | } | ||
42985 | }, | ||
42450 | "number-is-nan": { | 42986 | "number-is-nan": { |
42451 | "version": "1.0.1", | 42987 | "version": "1.0.1", |
42452 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", | 42988 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", |
@@ -44824,6 +45360,11 @@ | |||
44824 | "supports-preserve-symlinks-flag": "^1.0.0" | 45360 | "supports-preserve-symlinks-flag": "^1.0.0" |
44825 | } | 45361 | } |
44826 | }, | 45362 | }, |
45363 | "resolve-alpn": { | ||
45364 | "version": "1.2.1", | ||
45365 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", | ||
45366 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" | ||
45367 | }, | ||
44827 | "resolve-cwd": { | 45368 | "resolve-cwd": { |
44828 | "version": "3.0.0", | 45369 | "version": "3.0.0", |
44829 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", | 45370 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", |
@@ -44974,6 +45515,11 @@ | |||
44974 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | 45515 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
44975 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | 45516 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |
44976 | }, | 45517 | }, |
45518 | "safe-eval": { | ||
45519 | "version": "0.4.1", | ||
45520 | "resolved": "https://registry.npmjs.org/safe-eval/-/safe-eval-0.4.1.tgz", | ||
45521 | "integrity": "sha512-wmiu4RSYVZ690RP1+cv/LxfPK1dIlEN35aW7iv4SMYdqDrHbkll4+NJcHmKm7PbCuI1df1otOcPwgcc2iFR85g==" | ||
45522 | }, | ||
44977 | "safe-json-parse": { | 45523 | "safe-json-parse": { |
44978 | "version": "1.0.1", | 45524 | "version": "1.0.1", |
44979 | "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", | 45525 | "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", |
@@ -46860,6 +47406,192 @@ | |||
46860 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", | 47406 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", |
46861 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" | 47407 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" |
46862 | }, | 47408 | }, |
47409 | "translate-google": { | ||
47410 | "version": "1.5.0", | ||
47411 | "resolved": "https://registry.npmjs.org/translate-google/-/translate-google-1.5.0.tgz", | ||
47412 | "integrity": "sha512-wI/oX3U3t78PthVkvO7BdvKRcjb03JaUs53oAhs0NVmzFJUEm5ROiYWH7gomRHFZ5bL7LKxrFRx8Qy/l1eB46g==", | ||
47413 | "requires": { | ||
47414 | "configstore": "^6.0.0", | ||
47415 | "got": "^11.8.2", | ||
47416 | "is-keyword-js": "^1.0.3", | ||
47417 | "is-url": "^1.2.4", | ||
47418 | "lodash": "^4.17.21", | ||
47419 | "num-or-not": "^1.0.1", | ||
47420 | "safe-eval": "^0.4.1", | ||
47421 | "user-agents": "^1.0.779" | ||
47422 | }, | ||
47423 | "dependencies": { | ||
47424 | "@sindresorhus/is": { | ||
47425 | "version": "4.6.0", | ||
47426 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", | ||
47427 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" | ||
47428 | }, | ||
47429 | "@szmarczak/http-timer": { | ||
47430 | "version": "4.0.6", | ||
47431 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", | ||
47432 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", | ||
47433 | "requires": { | ||
47434 | "defer-to-connect": "^2.0.0" | ||
47435 | } | ||
47436 | }, | ||
47437 | "cacheable-request": { | ||
47438 | "version": "7.0.2", | ||
47439 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", | ||
47440 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", | ||
47441 | "requires": { | ||
47442 | "clone-response": "^1.0.2", | ||
47443 | "get-stream": "^5.1.0", | ||
47444 | "http-cache-semantics": "^4.0.0", | ||
47445 | "keyv": "^4.0.0", | ||
47446 | "lowercase-keys": "^2.0.0", | ||
47447 | "normalize-url": "^6.0.1", | ||
47448 | "responselike": "^2.0.0" | ||
47449 | } | ||
47450 | }, | ||
47451 | "configstore": { | ||
47452 | "version": "6.0.0", | ||
47453 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", | ||
47454 | "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", | ||
47455 | "requires": { | ||
47456 | "dot-prop": "^6.0.1", | ||
47457 | "graceful-fs": "^4.2.6", | ||
47458 | "unique-string": "^3.0.0", | ||
47459 | "write-file-atomic": "^3.0.3", | ||
47460 | "xdg-basedir": "^5.0.1" | ||
47461 | } | ||
47462 | }, | ||
47463 | "crypto-random-string": { | ||
47464 | "version": "4.0.0", | ||
47465 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", | ||
47466 | "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", | ||
47467 | "requires": { | ||
47468 | "type-fest": "^1.0.1" | ||
47469 | } | ||
47470 | }, | ||
47471 | "decompress-response": { | ||
47472 | "version": "6.0.0", | ||
47473 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", | ||
47474 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", | ||
47475 | "requires": { | ||
47476 | "mimic-response": "^3.1.0" | ||
47477 | } | ||
47478 | }, | ||
47479 | "defer-to-connect": { | ||
47480 | "version": "2.0.1", | ||
47481 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", | ||
47482 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" | ||
47483 | }, | ||
47484 | "dot-prop": { | ||
47485 | "version": "6.0.1", | ||
47486 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", | ||
47487 | "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", | ||
47488 | "requires": { | ||
47489 | "is-obj": "^2.0.0" | ||
47490 | } | ||
47491 | }, | ||
47492 | "get-stream": { | ||
47493 | "version": "5.2.0", | ||
47494 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", | ||
47495 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", | ||
47496 | "requires": { | ||
47497 | "pump": "^3.0.0" | ||
47498 | } | ||
47499 | }, | ||
47500 | "got": { | ||
47501 | "version": "11.8.5", | ||
47502 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", | ||
47503 | "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", | ||
47504 | "requires": { | ||
47505 | "@sindresorhus/is": "^4.0.0", | ||
47506 | "@szmarczak/http-timer": "^4.0.5", | ||
47507 | "@types/cacheable-request": "^6.0.1", | ||
47508 | "@types/responselike": "^1.0.0", | ||
47509 | "cacheable-lookup": "^5.0.3", | ||
47510 | "cacheable-request": "^7.0.2", | ||
47511 | "decompress-response": "^6.0.0", | ||
47512 | "http2-wrapper": "^1.0.0-beta.5.2", | ||
47513 | "lowercase-keys": "^2.0.0", | ||
47514 | "p-cancelable": "^2.0.0", | ||
47515 | "responselike": "^2.0.0" | ||
47516 | } | ||
47517 | }, | ||
47518 | "json-buffer": { | ||
47519 | "version": "3.0.1", | ||
47520 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", | ||
47521 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" | ||
47522 | }, | ||
47523 | "keyv": { | ||
47524 | "version": "4.3.3", | ||
47525 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz", | ||
47526 | "integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==", | ||
47527 | "requires": { | ||
47528 | "compress-brotli": "^1.3.8", | ||
47529 | "json-buffer": "3.0.1" | ||
47530 | } | ||
47531 | }, | ||
47532 | "lowercase-keys": { | ||
47533 | "version": "2.0.0", | ||
47534 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", | ||
47535 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" | ||
47536 | }, | ||
47537 | "mimic-response": { | ||
47538 | "version": "3.1.0", | ||
47539 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", | ||
47540 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" | ||
47541 | }, | ||
47542 | "p-cancelable": { | ||
47543 | "version": "2.1.1", | ||
47544 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", | ||
47545 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" | ||
47546 | }, | ||
47547 | "pump": { | ||
47548 | "version": "3.0.0", | ||
47549 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", | ||
47550 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", | ||
47551 | "requires": { | ||
47552 | "end-of-stream": "^1.1.0", | ||
47553 | "once": "^1.3.1" | ||
47554 | } | ||
47555 | }, | ||
47556 | "responselike": { | ||
47557 | "version": "2.0.1", | ||
47558 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", | ||
47559 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", | ||
47560 | "requires": { | ||
47561 | "lowercase-keys": "^2.0.0" | ||
47562 | } | ||
47563 | }, | ||
47564 | "type-fest": { | ||
47565 | "version": "1.4.0", | ||
47566 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", | ||
47567 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" | ||
47568 | }, | ||
47569 | "unique-string": { | ||
47570 | "version": "3.0.0", | ||
47571 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", | ||
47572 | "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", | ||
47573 | "requires": { | ||
47574 | "crypto-random-string": "^4.0.0" | ||
47575 | } | ||
47576 | }, | ||
47577 | "write-file-atomic": { | ||
47578 | "version": "3.0.3", | ||
47579 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", | ||
47580 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", | ||
47581 | "requires": { | ||
47582 | "imurmurhash": "^0.1.4", | ||
47583 | "is-typedarray": "^1.0.0", | ||
47584 | "signal-exit": "^3.0.2", | ||
47585 | "typedarray-to-buffer": "^3.1.5" | ||
47586 | } | ||
47587 | }, | ||
47588 | "xdg-basedir": { | ||
47589 | "version": "5.1.0", | ||
47590 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", | ||
47591 | "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==" | ||
47592 | } | ||
47593 | } | ||
47594 | }, | ||
46863 | "traverse": { | 47595 | "traverse": { |
46864 | "version": "0.3.9", | 47596 | "version": "0.3.9", |
46865 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", | 47597 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", |
@@ -46871,6 +47603,11 @@ | |||
46871 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", | 47603 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", |
46872 | "dev": true | 47604 | "dev": true |
46873 | }, | 47605 | }, |
47606 | "trim": { | ||
47607 | "version": "0.0.1", | ||
47608 | "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", | ||
47609 | "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" | ||
47610 | }, | ||
46874 | "trim-newlines": { | 47611 | "trim-newlines": { |
46875 | "version": "3.0.1", | 47612 | "version": "3.0.1", |
46876 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", | 47613 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", |
@@ -47130,7 +47867,6 @@ | |||
47130 | "version": "3.1.5", | 47867 | "version": "3.1.5", |
47131 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", | 47868 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", |
47132 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", | 47869 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", |
47133 | "dev": true, | ||
47134 | "requires": { | 47870 | "requires": { |
47135 | "is-typedarray": "^1.0.0" | 47871 | "is-typedarray": "^1.0.0" |
47136 | } | 47872 | } |
@@ -47172,6 +47908,19 @@ | |||
47172 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", | 47908 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", |
47173 | "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" | 47909 | "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" |
47174 | }, | 47910 | }, |
47911 | "underscore": { | ||
47912 | "version": "1.13.4", | ||
47913 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", | ||
47914 | "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==" | ||
47915 | }, | ||
47916 | "underscore-keypath": { | ||
47917 | "version": "0.0.22", | ||
47918 | "resolved": "https://registry.npmjs.org/underscore-keypath/-/underscore-keypath-0.0.22.tgz", | ||
47919 | "integrity": "sha512-fU7aYj1J2LQd+jqdQ67AlCOZKK3Pl+VErS8fGYcgZG75XB9/bY+RLM+F2xEcKHhHNtLvqqFyXAoZQlLYfec3Xg==", | ||
47920 | "requires": { | ||
47921 | "underscore": "*" | ||
47922 | } | ||
47923 | }, | ||
47175 | "undertaker": { | 47924 | "undertaker": { |
47176 | "version": "1.3.0", | 47925 | "version": "1.3.0", |
47177 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", | 47926 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", |
@@ -47581,6 +48330,15 @@ | |||
47581 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", | 48330 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", |
47582 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" | 48331 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" |
47583 | }, | 48332 | }, |
48333 | "user-agents": { | ||
48334 | "version": "1.0.1099", | ||
48335 | "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.0.1099.tgz", | ||
48336 | "integrity": "sha512-udTGqrQs7qbdOGfzFyZAvuRlx/TSZij3k+LRT7TnaWRfWkPGbDj/mIJRSe2BJfc9RXdbNO+qos6C9xdXXVi9kA==", | ||
48337 | "requires": { | ||
48338 | "dot-json": "^1.2.2", | ||
48339 | "lodash.clonedeep": "^4.5.0" | ||
48340 | } | ||
48341 | }, | ||
47584 | "useragent": { | 48342 | "useragent": { |
47585 | "version": "2.3.0", | 48343 | "version": "2.3.0", |
47586 | "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", | 48344 | "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", |
diff --git a/package.json b/package.json index d7f1fba89..863db5413 100644 --- a/package.json +++ b/package.json | |||
@@ -117,6 +117,7 @@ | |||
117 | "semver": "7.3.7", | 117 | "semver": "7.3.7", |
118 | "sqlite3": "5.0.8", | 118 | "sqlite3": "5.0.8", |
119 | "tar": "6.1.11", | 119 | "tar": "6.1.11", |
120 | "translate-google": "1.5.0", | ||
120 | "tslib": "2.4.0", | 121 | "tslib": "2.4.0", |
121 | "useragent-generator": "1.1.1-amkt-22079-finish.0", | 122 | "useragent-generator": "1.1.1-amkt-22079-finish.0", |
122 | "uuid": "8.3.2", | 123 | "uuid": "8.3.2", |
diff --git a/src/@types/stores.types.ts b/src/@types/stores.types.ts index eec18c11e..13870a43a 100644 --- a/src/@types/stores.types.ts +++ b/src/@types/stores.types.ts | |||
@@ -90,6 +90,7 @@ interface AppStore extends TypedStore { | |||
90 | darkMode: boolean; | 90 | darkMode: boolean; |
91 | dictionaries: []; | 91 | dictionaries: []; |
92 | enableSpellchecking: boolean; | 92 | enableSpellchecking: boolean; |
93 | enableTranslator: boolean; | ||
93 | fetchDataInterval: 4; | 94 | fetchDataInterval: 4; |
94 | get(key: string): any; | 95 | get(key: string): any; |
95 | getAppCacheSizeRequest: () => void; | 96 | getAppCacheSizeRequest: () => void; |
@@ -106,6 +107,8 @@ interface AppStore extends TypedStore { | |||
106 | reloadAfterResume: boolean; | 107 | reloadAfterResume: boolean; |
107 | reloadAfterResumeTime: number; | 108 | reloadAfterResumeTime: number; |
108 | searchEngine: string; | 109 | searchEngine: string; |
110 | translatorEngine: string; | ||
111 | translatorLanguage: string; | ||
109 | spellcheckerLanguage: string; | 112 | spellcheckerLanguage: string; |
110 | splitMode: boolean; | 113 | splitMode: boolean; |
111 | splitColumns: number; | 114 | splitColumns: number; |
diff --git a/src/components/settings/settings/EditSettingsForm.jsx b/src/components/settings/settings/EditSettingsForm.jsx index 0e5be38ed..e6cba922b 100644 --- a/src/components/settings/settings/EditSettingsForm.jsx +++ b/src/components/settings/settings/EditSettingsForm.jsx | |||
@@ -870,12 +870,24 @@ class EditSettingsForm extends Component { | |||
870 | {intl.formatMessage(messages.spellCheckerLanguageInfo)} | 870 | {intl.formatMessage(messages.spellCheckerLanguageInfo)} |
871 | </p> | 871 | </p> |
872 | )} | 872 | )} |
873 | |||
873 | <p className="settings__help"> | 874 | <p className="settings__help"> |
874 | {intl.formatMessage(messages.appRestartRequired)} | 875 | {intl.formatMessage(messages.appRestartRequired)} |
875 | </p> | 876 | </p> |
876 | 877 | ||
877 | <Hr /> | 878 | <Hr /> |
878 | 879 | ||
880 | <Toggle field={form.$('enableTranslator')} /> | ||
881 | |||
882 | {form.$('enableTranslator').value && ( | ||
883 | <Select field={form.$('translatorEngine')} /> | ||
884 | )} | ||
885 | {form.$('enableTranslator').value && ( | ||
886 | <Select field={form.$('translatorLanguage')} /> | ||
887 | )} | ||
888 | |||
889 | <Hr /> | ||
890 | |||
879 | <a | 891 | <a |
880 | href={FERDIUM_TRANSLATION} | 892 | href={FERDIUM_TRANSLATION} |
881 | target="_blank" | 893 | target="_blank" |
diff --git a/src/config.ts b/src/config.ts index 150b7101d..c8cb09d84 100644 --- a/src/config.ts +++ b/src/config.ts | |||
@@ -24,6 +24,8 @@ export const LIVE_WS_API = 'wss://api.franzinfra.com'; | |||
24 | export const LOCAL_API_WEBSITE = 'http://localhost:3333'; | 24 | export const LOCAL_API_WEBSITE = 'http://localhost:3333'; |
25 | export const DEV_API_FRANZ_WEBSITE = 'https://meetfranz.com'; | 25 | export const DEV_API_FRANZ_WEBSITE = 'https://meetfranz.com'; |
26 | export const LIVE_API_FERDIUM_WEBSITE = 'https://ferdium.org'; | 26 | export const LIVE_API_FERDIUM_WEBSITE = 'https://ferdium.org'; |
27 | export const LIVE_API_FERDIUM_LIBRETRANSLATE = | ||
28 | 'https://translator.ferdium.org/translate'; | ||
27 | 29 | ||
28 | export const STATS_API = 'https://stats.franzinfra.com'; | 30 | export const STATS_API = 'https://stats.franzinfra.com'; |
29 | 31 | ||
@@ -84,6 +86,140 @@ export const SEARCH_ENGINE_NAMES = { | |||
84 | [SEARCH_ENGINE_DDG]: 'DuckDuckGo', | 86 | [SEARCH_ENGINE_DDG]: 'DuckDuckGo', |
85 | }; | 87 | }; |
86 | 88 | ||
89 | export const TRANSLATOR_ENGINE_GOOGLE = 'Google'; | ||
90 | export const TRANSLATOR_ENGINE_LIBRETRANSLATE = 'LibreTranslate'; | ||
91 | export const TRANSLATOR_ENGINE_NAMES = { | ||
92 | [TRANSLATOR_ENGINE_LIBRETRANSLATE]: | ||
93 | 'Ferdium Translator (Powered by LibreTranslate)', | ||
94 | [TRANSLATOR_ENGINE_GOOGLE]: 'Google', | ||
95 | }; | ||
96 | |||
97 | export const LIBRETRANSLATE_TRANSLATOR_LANGUAGES = { | ||
98 | ar: 'Arabic', | ||
99 | zh: 'Chinese', | ||
100 | en: 'English', | ||
101 | fr: 'French', | ||
102 | de: 'German', | ||
103 | hi: 'Hindi', | ||
104 | id: 'Indonesian', | ||
105 | ga: 'Irish', | ||
106 | it: 'Italian', | ||
107 | ja: 'Japanese', | ||
108 | ko: 'Korean', | ||
109 | pl: 'Polish', | ||
110 | pt: 'Portuguese', | ||
111 | ru: 'Russian', | ||
112 | es: 'Spanish', | ||
113 | tr: 'Turkish', | ||
114 | vi: 'Vietnamese', | ||
115 | }; | ||
116 | |||
117 | export const GOOGLE_TRANSLATOR_LANGUAGES = { | ||
118 | af: 'Afrikaans', | ||
119 | sq: 'Albanian', | ||
120 | ar: 'Arabic', | ||
121 | hy: 'Armenian', | ||
122 | az: 'Azerbaijani', | ||
123 | eu: 'Basque', | ||
124 | be: 'Belarusian', | ||
125 | bn: 'Bengali', | ||
126 | bs: 'Bosnian', | ||
127 | bg: 'Bulgarian', | ||
128 | ca: 'Catalan', | ||
129 | ceb: 'Cebuano', | ||
130 | ny: 'Chichewa', | ||
131 | 'zh-cn': 'Chinese Simplified', | ||
132 | 'zh-tw': 'Chinese Traditional', | ||
133 | co: 'Corsican', | ||
134 | hr: 'Croatian', | ||
135 | cs: 'Czech', | ||
136 | da: 'Danish', | ||
137 | nl: 'Dutch', | ||
138 | en: 'English', | ||
139 | eo: 'Esperanto', | ||
140 | et: 'Estonian', | ||
141 | tl: 'Filipino', | ||
142 | fi: 'Finnish', | ||
143 | fr: 'French', | ||
144 | fy: 'Frisian', | ||
145 | gl: 'Galician', | ||
146 | ka: 'Georgian', | ||
147 | de: 'German', | ||
148 | el: 'Greek', | ||
149 | gu: 'Gujarati', | ||
150 | ht: 'Haitian Creole', | ||
151 | ha: 'Hausa', | ||
152 | haw: 'Hawaiian', | ||
153 | iw: 'Hebrew', | ||
154 | hi: 'Hindi', | ||
155 | hmn: 'Hmong', | ||
156 | hu: 'Hungarian', | ||
157 | is: 'Icelandic', | ||
158 | ig: 'Igbo', | ||
159 | id: 'Indonesian', | ||
160 | ga: 'Irish', | ||
161 | it: 'Italian', | ||
162 | ja: 'Japanese', | ||
163 | jw: 'Javanese', | ||
164 | kn: 'Kannada', | ||
165 | kk: 'Kazakh', | ||
166 | km: 'Khmer', | ||
167 | ko: 'Korean', | ||
168 | ku: 'Kurdish (Kurmanji)', | ||
169 | ky: 'Kyrgyz', | ||
170 | lo: 'Lao', | ||
171 | la: 'Latin', | ||
172 | lv: 'Latvian', | ||
173 | lt: 'Lithuanian', | ||
174 | lb: 'Luxembourgish', | ||
175 | mk: 'Macedonian', | ||
176 | mg: 'Malagasy', | ||
177 | ms: 'Malay', | ||
178 | ml: 'Malayalam', | ||
179 | mt: 'Maltese', | ||
180 | mi: 'Maori', | ||
181 | mr: 'Marathi', | ||
182 | mn: 'Mongolian', | ||
183 | my: 'Myanmar (Burmese)', | ||
184 | ne: 'Nepali', | ||
185 | no: 'Norwegian', | ||
186 | ps: 'Pashto', | ||
187 | fa: 'Persian', | ||
188 | pl: 'Polish', | ||
189 | pt: 'Portuguese', | ||
190 | ma: 'Punjabi', | ||
191 | ro: 'Romanian', | ||
192 | ru: 'Russian', | ||
193 | sm: 'Samoan', | ||
194 | gd: 'Scots Gaelic', | ||
195 | sr: 'Serbian', | ||
196 | st: 'Sesotho', | ||
197 | sn: 'Shona', | ||
198 | sd: 'Sindhi', | ||
199 | si: 'Sinhala', | ||
200 | sk: 'Slovak', | ||
201 | sl: 'Slovenian', | ||
202 | so: 'Somali', | ||
203 | es: 'Spanish', | ||
204 | su: 'Sudanese', | ||
205 | sw: 'Swahili', | ||
206 | sv: 'Swedish', | ||
207 | tg: 'Tajik', | ||
208 | ta: 'Tamil', | ||
209 | te: 'Telugu', | ||
210 | th: 'Thai', | ||
211 | tr: 'Turkish', | ||
212 | uk: 'Ukrainian', | ||
213 | ur: 'Urdu', | ||
214 | uz: 'Uzbek', | ||
215 | vi: 'Vietnamese', | ||
216 | cy: 'Welsh', | ||
217 | xh: 'Xhosa', | ||
218 | yi: 'Yiddish', | ||
219 | yo: 'Yoruba', | ||
220 | zu: 'Zulu', | ||
221 | }; | ||
222 | |||
87 | export const SEARCH_ENGINE_URLS = { | 223 | export const SEARCH_ENGINE_URLS = { |
88 | [SEARCH_ENGINE_STARTPAGE]: ({ searchTerm }) => | 224 | [SEARCH_ENGINE_STARTPAGE]: ({ searchTerm }) => |
89 | `https://www.startpage.com/sp/search?query=${searchTerm}`, | 225 | `https://www.startpage.com/sp/search?query=${searchTerm}`, |
@@ -222,6 +358,7 @@ export const DEFAULT_APP_SETTINGS = { | |||
222 | showMessageBadgeWhenMuted: true, | 358 | showMessageBadgeWhenMuted: true, |
223 | showDragArea: false, | 359 | showDragArea: false, |
224 | enableSpellchecking: true, | 360 | enableSpellchecking: true, |
361 | enableTranslator: false, | ||
225 | spellcheckerLanguage: 'en-us', | 362 | spellcheckerLanguage: 'en-us', |
226 | darkMode: false, | 363 | darkMode: false, |
227 | navigationBarManualActive: false, | 364 | navigationBarManualActive: false, |
@@ -261,6 +398,8 @@ export const DEFAULT_APP_SETTINGS = { | |||
261 | iconSize: iconSizeBias, | 398 | iconSize: iconSizeBias, |
262 | navigationBarBehaviour: 'custom', | 399 | navigationBarBehaviour: 'custom', |
263 | searchEngine: SEARCH_ENGINE_STARTPAGE, | 400 | searchEngine: SEARCH_ENGINE_STARTPAGE, |
401 | translatorLanguage: 'en', | ||
402 | translatorEngine: TRANSLATOR_ENGINE_LIBRETRANSLATE, | ||
264 | useHorizontalStyle: false, | 403 | useHorizontalStyle: false, |
265 | hideCollapseButton: false, | 404 | hideCollapseButton: false, |
266 | isMenuCollapsed: false, | 405 | isMenuCollapsed: false, |
diff --git a/src/containers/settings/EditSettingsScreen.tsx b/src/containers/settings/EditSettingsScreen.tsx index fbbed629a..a4d7ba0eb 100644 --- a/src/containers/settings/EditSettingsScreen.tsx +++ b/src/containers/settings/EditSettingsScreen.tsx | |||
@@ -15,6 +15,10 @@ import { | |||
15 | ICON_SIZES, | 15 | ICON_SIZES, |
16 | NAVIGATION_BAR_BEHAVIOURS, | 16 | NAVIGATION_BAR_BEHAVIOURS, |
17 | SEARCH_ENGINE_NAMES, | 17 | SEARCH_ENGINE_NAMES, |
18 | TRANSLATOR_ENGINE_NAMES, | ||
19 | GOOGLE_TRANSLATOR_LANGUAGES, | ||
20 | TRANSLATOR_ENGINE_GOOGLE, | ||
21 | LIBRETRANSLATE_TRANSLATOR_LANGUAGES, | ||
18 | TODO_APPS, | 22 | TODO_APPS, |
19 | DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED, | 23 | DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED, |
20 | DEFAULT_IS_FEATURE_ENABLED_BY_USER, | 24 | DEFAULT_IS_FEATURE_ENABLED_BY_USER, |
@@ -103,6 +107,14 @@ const messages = defineMessages({ | |||
103 | id: 'settings.app.form.searchEngine', | 107 | id: 'settings.app.form.searchEngine', |
104 | defaultMessage: 'Search engine', | 108 | defaultMessage: 'Search engine', |
105 | }, | 109 | }, |
110 | translatorEngine: { | ||
111 | id: 'settings.app.form.translatorEngine', | ||
112 | defaultMessage: 'Translator Engine', | ||
113 | }, | ||
114 | translatorLanguage: { | ||
115 | id: 'settings.app.form.translatorLanguage', | ||
116 | defaultMessage: 'Default Translator language', | ||
117 | }, | ||
106 | hibernateOnStartup: { | 118 | hibernateOnStartup: { |
107 | id: 'settings.app.form.hibernateOnStartup', | 119 | id: 'settings.app.form.hibernateOnStartup', |
108 | defaultMessage: 'Keep services in hibernation on startup', | 120 | defaultMessage: 'Keep services in hibernation on startup', |
@@ -267,6 +279,10 @@ const messages = defineMessages({ | |||
267 | id: 'settings.app.form.enableSpellchecking', | 279 | id: 'settings.app.form.enableSpellchecking', |
268 | defaultMessage: 'Enable spell checking', | 280 | defaultMessage: 'Enable spell checking', |
269 | }, | 281 | }, |
282 | enableTranslator: { | ||
283 | id: 'settings.app.form.enableTranslator', | ||
284 | defaultMessage: 'Enable Translator', | ||
285 | }, | ||
270 | enableGPUAcceleration: { | 286 | enableGPUAcceleration: { |
271 | id: 'settings.app.form.enableGPUAcceleration', | 287 | id: 'settings.app.form.enableGPUAcceleration', |
272 | defaultMessage: 'Enable GPU Acceleration', | 288 | defaultMessage: 'Enable GPU Acceleration', |
@@ -342,6 +358,8 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
342 | notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage), | 358 | notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage), |
343 | navigationBarBehaviour: settingsData.navigationBarBehaviour, | 359 | navigationBarBehaviour: settingsData.navigationBarBehaviour, |
344 | searchEngine: settingsData.searchEngine, | 360 | searchEngine: settingsData.searchEngine, |
361 | translatorEngine: settingsData.translatorEngine, | ||
362 | translatorLanguage: settingsData.translatorLanguage, | ||
345 | hibernateOnStartup: Boolean(settingsData.hibernateOnStartup), | 363 | hibernateOnStartup: Boolean(settingsData.hibernateOnStartup), |
346 | hibernationStrategy: Number(settingsData.hibernationStrategy), | 364 | hibernationStrategy: Number(settingsData.hibernationStrategy), |
347 | wakeUpStrategy: Number(settingsData.wakeUpStrategy), | 365 | wakeUpStrategy: Number(settingsData.wakeUpStrategy), |
@@ -394,6 +412,7 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
394 | ), | 412 | ), |
395 | showDragArea: Boolean(settingsData.showDragArea), | 413 | showDragArea: Boolean(settingsData.showDragArea), |
396 | enableSpellchecking: Boolean(settingsData.enableSpellchecking), | 414 | enableSpellchecking: Boolean(settingsData.enableSpellchecking), |
415 | enableTranslator: Boolean(settingsData.enableTranslator), | ||
397 | spellcheckerLanguage: settingsData.spellcheckerLanguage, | 416 | spellcheckerLanguage: settingsData.spellcheckerLanguage, |
398 | userAgentPref: settingsData.userAgentPref, | 417 | userAgentPref: settingsData.userAgentPref, |
399 | beta: Boolean(settingsData.beta), // we need this info in the main process as well | 418 | beta: Boolean(settingsData.beta), // we need this info in the main process as well |
@@ -451,6 +470,16 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
451 | sort: false, | 470 | sort: false, |
452 | }); | 471 | }); |
453 | 472 | ||
473 | const translatorEngines = getSelectOptions({ | ||
474 | locales: TRANSLATOR_ENGINE_NAMES, | ||
475 | sort: false, | ||
476 | }); | ||
477 | |||
478 | const translatorLanguages = getSelectOptions({ | ||
479 | locales: LIBRETRANSLATE_TRANSLATOR_LANGUAGES, | ||
480 | sort: false, | ||
481 | }); | ||
482 | |||
454 | const hibernationStrategies = getSelectOptions({ | 483 | const hibernationStrategies = getSelectOptions({ |
455 | locales: HIBERNATION_STRATEGIES, | 484 | locales: HIBERNATION_STRATEGIES, |
456 | sort: false, | 485 | sort: false, |
@@ -574,6 +603,18 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
574 | default: DEFAULT_APP_SETTINGS.searchEngine, | 603 | default: DEFAULT_APP_SETTINGS.searchEngine, |
575 | options: searchEngines, | 604 | options: searchEngines, |
576 | }, | 605 | }, |
606 | translatorEngine: { | ||
607 | label: intl.formatMessage(messages.translatorEngine), | ||
608 | value: settings.all.app.translatorEngine, | ||
609 | default: DEFAULT_APP_SETTINGS.translatorEngine, | ||
610 | options: translatorEngines, | ||
611 | }, | ||
612 | translatorLanguage: { | ||
613 | label: intl.formatMessage(messages.translatorLanguage), | ||
614 | value: settings.all.app.translatorLanguage, | ||
615 | default: DEFAULT_APP_SETTINGS.translatorLanguage, | ||
616 | options: translatorLanguages, | ||
617 | }, | ||
577 | hibernateOnStartup: { | 618 | hibernateOnStartup: { |
578 | label: intl.formatMessage(messages.hibernateOnStartup), | 619 | label: intl.formatMessage(messages.hibernateOnStartup), |
579 | value: settings.all.app.hibernateOnStartup, | 620 | value: settings.all.app.hibernateOnStartup, |
@@ -677,6 +718,11 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
677 | value: settings.all.app.enableSpellchecking, | 718 | value: settings.all.app.enableSpellchecking, |
678 | default: DEFAULT_APP_SETTINGS.enableSpellchecking, | 719 | default: DEFAULT_APP_SETTINGS.enableSpellchecking, |
679 | }, | 720 | }, |
721 | enableTranslator: { | ||
722 | label: intl.formatMessage(messages.enableTranslator), | ||
723 | value: settings.all.app.enableTranslator, | ||
724 | default: DEFAULT_APP_SETTINGS.enableTranslator, | ||
725 | }, | ||
680 | spellcheckerLanguage: { | 726 | spellcheckerLanguage: { |
681 | label: intl.formatMessage(globalMessages.spellcheckerLanguage), | 727 | label: intl.formatMessage(globalMessages.spellcheckerLanguage), |
682 | value: settings.all.app.spellcheckerLanguage, | 728 | value: settings.all.app.spellcheckerLanguage, |
@@ -828,6 +874,14 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
828 | }, | 874 | }, |
829 | }; | 875 | }; |
830 | 876 | ||
877 | if (settings.app.translatorEngine === TRANSLATOR_ENGINE_GOOGLE) { | ||
878 | const translatorGoogleLanguages = getSelectOptions({ | ||
879 | locales: GOOGLE_TRANSLATOR_LANGUAGES, | ||
880 | sort: false, | ||
881 | }); | ||
882 | config.fields.translatorLanguage.options = translatorGoogleLanguages; | ||
883 | } | ||
884 | |||
831 | if (workspaces.isFeatureActive) { | 885 | if (workspaces.isFeatureActive) { |
832 | config.fields.keepAllWorkspacesLoaded = { | 886 | config.fields.keepAllWorkspacesLoaded = { |
833 | label: intl.formatMessage(messages.keepAllWorkspacesLoaded), | 887 | label: intl.formatMessage(messages.keepAllWorkspacesLoaded), |
diff --git a/src/helpers/translation-helpers.ts b/src/helpers/translation-helpers.ts new file mode 100644 index 000000000..215b2a49c --- /dev/null +++ b/src/helpers/translation-helpers.ts | |||
@@ -0,0 +1,47 @@ | |||
1 | import fetch from 'node-fetch'; | ||
2 | import translateGoogle from 'translate-google'; | ||
3 | import { LIVE_API_FERDIUM_LIBRETRANSLATE } from '../config'; | ||
4 | |||
5 | export async function translateTo( | ||
6 | text: string, | ||
7 | translateToLanguage: string, | ||
8 | translatorEngine: string, | ||
9 | ): Promise<{ text: string; error: boolean }> { | ||
10 | const errorText = | ||
11 | // TODO: Need to support i18n | ||
12 | 'FERDIUM ERROR: An error occured. Please select less text to translate or try again later.'; | ||
13 | |||
14 | if (translatorEngine === 'Google') { | ||
15 | try { | ||
16 | const res = await translateGoogle(text, { | ||
17 | to: translateToLanguage, | ||
18 | }); | ||
19 | |||
20 | return { text: res, error: false }; | ||
21 | } catch { | ||
22 | return { text: errorText, error: true }; | ||
23 | } | ||
24 | } else if (translatorEngine === 'LibreTranslate') { | ||
25 | try { | ||
26 | const res = await fetch(LIVE_API_FERDIUM_LIBRETRANSLATE, { | ||
27 | method: 'POST', | ||
28 | body: JSON.stringify({ | ||
29 | q: text, | ||
30 | source: 'auto', | ||
31 | target: translateToLanguage, | ||
32 | }), | ||
33 | headers: { | ||
34 | 'Content-Type': 'application/json', | ||
35 | }, | ||
36 | }); | ||
37 | |||
38 | const response = await res.json(); | ||
39 | |||
40 | return { text: response.translatedText, error: false }; | ||
41 | } catch { | ||
42 | return { text: errorText, error: true }; | ||
43 | } | ||
44 | } | ||
45 | |||
46 | return { text: errorText, error: true }; | ||
47 | } | ||
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index a98bc2f77..4dc8bad82 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -219,6 +219,7 @@ | |||
219 | "settings.app.form.enableSpellchecking": "Enable spell checking", | 219 | "settings.app.form.enableSpellchecking": "Enable spell checking", |
220 | "settings.app.form.enableSystemTray": "Always show Ferdium in System Tray", | 220 | "settings.app.form.enableSystemTray": "Always show Ferdium in System Tray", |
221 | "settings.app.form.enableTodos": "Enable Ferdium Todos", | 221 | "settings.app.form.enableTodos": "Enable Ferdium Todos", |
222 | "settings.app.form.enableTranslator": "Enable Translator", | ||
222 | "settings.app.form.grayscaleServicesDim": "Grayscale dim level", | 223 | "settings.app.form.grayscaleServicesDim": "Grayscale dim level", |
223 | "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", | 224 | "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", |
224 | "settings.app.form.hibernationStrategy": "Hibernation strategy", | 225 | "settings.app.form.hibernationStrategy": "Hibernation strategy", |
@@ -256,6 +257,8 @@ | |||
256 | "settings.app.form.splitColumns": "Number of columns", | 257 | "settings.app.form.splitColumns": "Number of columns", |
257 | "settings.app.form.splitMode": "Enable Split View Mode", | 258 | "settings.app.form.splitMode": "Enable Split View Mode", |
258 | "settings.app.form.startMinimized": "Start minimized", | 259 | "settings.app.form.startMinimized": "Start minimized", |
260 | "settings.app.form.translatorEngine": "Translator Engine", | ||
261 | "settings.app.form.translatorLanguage": "Default Translator language", | ||
259 | "settings.app.form.universalDarkMode": "Enable universal Dark Mode", | 262 | "settings.app.form.universalDarkMode": "Enable universal Dark Mode", |
260 | "settings.app.form.useGrayscaleServices": "Use grayscale services", | 263 | "settings.app.form.useGrayscaleServices": "Use grayscale services", |
261 | "settings.app.form.useHorizontalStyle": "Use horizontal style", | 264 | "settings.app.form.useHorizontalStyle": "Use horizontal style", |
diff --git a/src/index.ts b/src/index.ts index 05e222a25..7c80ca955 100644 --- a/src/index.ts +++ b/src/index.ts | |||
@@ -45,6 +45,7 @@ import './electron/exception'; | |||
45 | import { asarPath } from './helpers/asar-helpers'; | 45 | import { asarPath } from './helpers/asar-helpers'; |
46 | import { openExternalUrl } from './helpers/url-helpers'; | 46 | import { openExternalUrl } from './helpers/url-helpers'; |
47 | import userAgent from './helpers/userAgent-helpers'; | 47 | import userAgent from './helpers/userAgent-helpers'; |
48 | import { translateTo } from './helpers/translation-helpers'; | ||
48 | 49 | ||
49 | const debug = require('./preload-safe-debug')('Ferdium:App'); | 50 | const debug = require('./preload-safe-debug')('Ferdium:App'); |
50 | 51 | ||
@@ -500,6 +501,18 @@ app.on('login', (event, _webContents, _request, authInfo, callback) => { | |||
500 | } | 501 | } |
501 | }); | 502 | }); |
502 | 503 | ||
504 | ipcMain.handle( | ||
505 | 'translate', | ||
506 | async (_e, { text, translateToLanguage, translatorEngine }) => { | ||
507 | const response = await translateTo( | ||
508 | text, | ||
509 | translateToLanguage, | ||
510 | translatorEngine, | ||
511 | ); | ||
512 | return response; | ||
513 | }, | ||
514 | ); | ||
515 | |||
503 | // TODO: evaluate if we need to store the authCallback for every service | 516 | // TODO: evaluate if we need to store the authCallback for every service |
504 | ipcMain.on('feature-basic-auth-credentials', (_e, { user, password }) => { | 517 | ipcMain.on('feature-basic-auth-credentials', (_e, { user, password }) => { |
505 | debug('Received basic auth credentials', user, '********'); | 518 | debug('Received basic auth credentials', user, '********'); |
diff --git a/src/models/IContextMenuParams.ts b/src/models/IContextMenuParams.ts new file mode 100644 index 000000000..c661b4595 --- /dev/null +++ b/src/models/IContextMenuParams.ts | |||
@@ -0,0 +1,7 @@ | |||
1 | export default interface IContextMenuParams extends Electron.ContextMenuParams { | ||
2 | enableTranslator: boolean; | ||
3 | clipboardNotifications: boolean; | ||
4 | searchEngine: string; | ||
5 | translatorEngine: string; | ||
6 | translatorLanguage: string; | ||
7 | } | ||
diff --git a/src/stores/ServicesStore.ts b/src/stores/ServicesStore.ts index 83ec7d18e..00cf33b17 100644 --- a/src/stores/ServicesStore.ts +++ b/src/stores/ServicesStore.ts | |||
@@ -158,6 +158,13 @@ export default class ServicesStore extends TypedStore { | |||
158 | ); | 158 | ); |
159 | 159 | ||
160 | reaction( | 160 | reaction( |
161 | () => this.stores.settings.app.enableTranslator, | ||
162 | () => { | ||
163 | this._shareSettingsWithServiceProcess(); | ||
164 | }, | ||
165 | ); | ||
166 | |||
167 | reaction( | ||
161 | () => this.stores.settings.app.spellcheckerLanguage, | 168 | () => this.stores.settings.app.spellcheckerLanguage, |
162 | () => { | 169 | () => { |
163 | this._shareSettingsWithServiceProcess(); | 170 | this._shareSettingsWithServiceProcess(); |
@@ -207,6 +214,20 @@ export default class ServicesStore extends TypedStore { | |||
207 | ); | 214 | ); |
208 | 215 | ||
209 | reaction( | 216 | reaction( |
217 | () => this.stores.settings.app.translatorEngine, | ||
218 | () => { | ||
219 | this._shareSettingsWithServiceProcess(); | ||
220 | }, | ||
221 | ); | ||
222 | |||
223 | reaction( | ||
224 | () => this.stores.settings.app.translatorLanguage, | ||
225 | () => { | ||
226 | this._shareSettingsWithServiceProcess(); | ||
227 | }, | ||
228 | ); | ||
229 | |||
230 | reaction( | ||
210 | () => this.stores.settings.app.clipboardNotifications, | 231 | () => this.stores.settings.app.clipboardNotifications, |
211 | () => { | 232 | () => { |
212 | this._shareSettingsWithServiceProcess(); | 233 | this._shareSettingsWithServiceProcess(); |
diff --git a/src/webview/contextMenu.ts b/src/webview/contextMenu.ts index 72f927ef4..61771854f 100644 --- a/src/webview/contextMenu.ts +++ b/src/webview/contextMenu.ts | |||
@@ -9,6 +9,9 @@ export default async function setupContextMenu( | |||
9 | getSpellcheckerLanguage: () => void, | 9 | getSpellcheckerLanguage: () => void, |
10 | getSearchEngine: () => void, | 10 | getSearchEngine: () => void, |
11 | getClipboardNotifications: () => void, | 11 | getClipboardNotifications: () => void, |
12 | getEnableTranslator: () => void, | ||
13 | getTranslatorEngine: () => void, | ||
14 | getTranslatorLanguage: () => void, | ||
12 | ) { | 15 | ) { |
13 | const contextMenuBuilder = new ContextMenuBuilder(webContents); | 16 | const contextMenuBuilder = new ContextMenuBuilder(webContents); |
14 | 17 | ||
@@ -19,6 +22,9 @@ export default async function setupContextMenu( | |||
19 | ...props, | 22 | ...props, |
20 | searchEngine: getSearchEngine(), | 23 | searchEngine: getSearchEngine(), |
21 | clipboardNotifications: getClipboardNotifications(), | 24 | clipboardNotifications: getClipboardNotifications(), |
25 | enableTranslator: getEnableTranslator(), | ||
26 | translatorEngine: getTranslatorEngine(), | ||
27 | translatorLanguage: getTranslatorLanguage(), | ||
22 | }, | 28 | }, |
23 | // @ts-expect-error Expected 1 arguments, but got 4. | 29 | // @ts-expect-error Expected 1 arguments, but got 4. |
24 | isSpellcheckEnabled(), | 30 | isSpellcheckEnabled(), |
diff --git a/src/webview/contextMenuBuilder.ts b/src/webview/contextMenuBuilder.ts index 7bd86556e..2e64977c1 100644 --- a/src/webview/contextMenuBuilder.ts +++ b/src/webview/contextMenuBuilder.ts | |||
@@ -11,8 +11,16 @@ import { clipboard, ipcRenderer, nativeImage, WebContents } from 'electron'; | |||
11 | import { Menu, MenuItem } from '@electron/remote'; | 11 | import { Menu, MenuItem } from '@electron/remote'; |
12 | import { cmdOrCtrlShortcutKey, isMac } from '../environment'; | 12 | import { cmdOrCtrlShortcutKey, isMac } from '../environment'; |
13 | 13 | ||
14 | import { SEARCH_ENGINE_NAMES, SEARCH_ENGINE_URLS } from '../config'; | 14 | import { |
15 | SEARCH_ENGINE_NAMES, | ||
16 | SEARCH_ENGINE_URLS, | ||
17 | GOOGLE_TRANSLATOR_LANGUAGES, | ||
18 | TRANSLATOR_ENGINE_GOOGLE, | ||
19 | TRANSLATOR_ENGINE_LIBRETRANSLATE, | ||
20 | LIBRETRANSLATE_TRANSLATOR_LANGUAGES, | ||
21 | } from '../config'; | ||
15 | import { openExternalUrl } from '../helpers/url-helpers'; | 22 | import { openExternalUrl } from '../helpers/url-helpers'; |
23 | import IContextMenuParams from '../models/IContextMenuParams'; | ||
16 | 24 | ||
17 | function matchesWord(string: string) { | 25 | function matchesWord(string: string) { |
18 | const regex = | 26 | const regex = |
@@ -21,6 +29,83 @@ function matchesWord(string: string) { | |||
21 | return string.match(regex); | 29 | return string.match(regex); |
22 | } | 30 | } |
23 | 31 | ||
32 | function childOf(node, ancestor) { | ||
33 | let child = node; | ||
34 | while (child !== null) { | ||
35 | if (child === ancestor) return true; | ||
36 | child = child.parentNode; | ||
37 | } | ||
38 | return false; | ||
39 | } | ||
40 | |||
41 | function translatePopup(res, isError: boolean = false) { | ||
42 | const elementExists = document.querySelector('#container-ferdium-translator'); | ||
43 | if (elementExists) { | ||
44 | elementExists.remove(); | ||
45 | } | ||
46 | |||
47 | const style = document.createElement('style'); | ||
48 | style.innerHTML = ` | ||
49 | .container-ferdium-translator { | ||
50 | position: fixed; | ||
51 | opacity: 0.9; | ||
52 | z-index: 999999; | ||
53 | ${ | ||
54 | isError | ||
55 | ? `background: rgb(255 37 37);` | ||
56 | : `background: rgb(131 131 131);` | ||
57 | } | ||
58 | border-radius: 8px; | ||
59 | top: 5%; | ||
60 | left: 50%; | ||
61 | transform: translate(-50%, -5%); | ||
62 | display: flex; | ||
63 | flex-direction: row; | ||
64 | -webkit-box-shadow: 0px 10px 13px -7px #000000, 5px 5px 13px 9px rgba(0,0,0,0); | ||
65 | overflow: auto; | ||
66 | max-height: 95%; | ||
67 | max-width: 90%; | ||
68 | width: max-content; | ||
69 | height: max-content; | ||
70 | -webkit-animation: scale-up-center 0.4s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; | ||
71 | } | ||
72 | .container-ferdium-translator > p { | ||
73 | color: white; | ||
74 | margin: 10px; | ||
75 | text-align: justify; | ||
76 | } | ||
77 | |||
78 | @-webkit-keyframes scale-up-center { | ||
79 | 0% { | ||
80 | -webkit-transform: translate(-50%, -50%) scale(0.5); | ||
81 | } | ||
82 | 100% { | ||
83 | -webkit-transform: translate(-50%, -50%) scale(1); | ||
84 | } | ||
85 | } | ||
86 | `; | ||
87 | document.head.append(style); | ||
88 | |||
89 | const para = document.createElement('p'); | ||
90 | |||
91 | const node = document.createTextNode(res); | ||
92 | para.append(node); | ||
93 | |||
94 | const div = document.createElement('div'); | ||
95 | div.setAttribute('id', 'container-ferdium-translator'); | ||
96 | div.setAttribute('class', 'container-ferdium-translator'); | ||
97 | |||
98 | div.append(para); | ||
99 | |||
100 | document.body.insertBefore(div, document.body.firstChild); | ||
101 | |||
102 | document.addEventListener('click', e => { | ||
103 | if (div !== e.target && !childOf(e.target, div)) { | ||
104 | div?.remove(); | ||
105 | } | ||
106 | }); | ||
107 | } | ||
108 | |||
24 | interface ContextMenuStringTable { | 109 | interface ContextMenuStringTable { |
25 | lookUpDefinition: ({ word }: { word: string }) => string; | 110 | lookUpDefinition: ({ word }: { word: string }) => string; |
26 | cut: () => string; | 111 | cut: () => string; |
@@ -28,6 +113,17 @@ interface ContextMenuStringTable { | |||
28 | paste: () => string; | 113 | paste: () => string; |
29 | pasteAndMatchStyle: () => string; | 114 | pasteAndMatchStyle: () => string; |
30 | searchWith: ({ searchEngine }: { searchEngine: string }) => string; | 115 | searchWith: ({ searchEngine }: { searchEngine: string }) => string; |
116 | translate: () => string; | ||
117 | quickTranslate: ({ | ||
118 | translatorLanguage, | ||
119 | }: { | ||
120 | translatorLanguage: string; | ||
121 | }) => string; | ||
122 | translateLanguage: ({ | ||
123 | translatorLanguage, | ||
124 | }: { | ||
125 | translatorLanguage: string; | ||
126 | }) => string; | ||
31 | openLinkUrl: () => string; | 127 | openLinkUrl: () => string; |
32 | openLinkInFerdiumUrl: () => string; | 128 | openLinkInFerdiumUrl: () => string; |
33 | openInBrowser: () => string; | 129 | openInBrowser: () => string; |
@@ -52,6 +148,10 @@ const contextMenuStringTable: ContextMenuStringTable = { | |||
52 | paste: () => 'Paste', | 148 | paste: () => 'Paste', |
53 | pasteAndMatchStyle: () => 'Paste and match style', | 149 | pasteAndMatchStyle: () => 'Paste and match style', |
54 | searchWith: ({ searchEngine }) => `Search with ${searchEngine}`, | 150 | searchWith: ({ searchEngine }) => `Search with ${searchEngine}`, |
151 | translate: () => `Translate to ...`, | ||
152 | quickTranslate: ({ translatorLanguage }) => | ||
153 | `Translate to ${translatorLanguage}`, | ||
154 | translateLanguage: ({ translatorLanguage }) => `${translatorLanguage}`, | ||
55 | openLinkUrl: () => 'Open Link', | 155 | openLinkUrl: () => 'Open Link', |
56 | openLinkInFerdiumUrl: () => 'Open Link in Ferdium', | 156 | openLinkInFerdiumUrl: () => 'Open Link in Ferdium', |
57 | openInBrowser: () => 'Open in Browser', | 157 | openInBrowser: () => 'Open in Browser', |
@@ -127,7 +227,7 @@ export class ContextMenuBuilder { | |||
127 | * | 227 | * |
128 | * @param contextInfo The object returned from the 'context-menu' Electron event. | 228 | * @param contextInfo The object returned from the 'context-menu' Electron event. |
129 | */ | 229 | */ |
130 | async showPopupMenu(contextInfo: Electron.ContextMenuParams): Promise<void> { | 230 | async showPopupMenu(contextInfo: IContextMenuParams): Promise<void> { |
131 | const menu = await this.buildMenuForElement(contextInfo); | 231 | const menu = await this.buildMenuForElement(contextInfo); |
132 | if (!menu) return; | 232 | if (!menu) return; |
133 | menu.popup(); | 233 | menu.popup(); |
@@ -139,7 +239,7 @@ export class ContextMenuBuilder { | |||
139 | * the list but use most of the default behavior. | 239 | * the list but use most of the default behavior. |
140 | */ | 240 | */ |
141 | async buildMenuForElement( | 241 | async buildMenuForElement( |
142 | info: Electron.ContextMenuParams, | 242 | info: IContextMenuParams, |
143 | ): Promise<Electron.CrossProcessExports.Menu> { | 243 | ): Promise<Electron.CrossProcessExports.Menu> { |
144 | if (info.linkURL && info.linkURL.length > 0) { | 244 | if (info.linkURL && info.linkURL.length > 0) { |
145 | return this.buildMenuForLink(info); | 245 | return this.buildMenuForLink(info); |
@@ -165,12 +265,17 @@ export class ContextMenuBuilder { | |||
165 | * @return {Menu} The `Menu` | 265 | * @return {Menu} The `Menu` |
166 | */ | 266 | */ |
167 | buildMenuForTextInput( | 267 | buildMenuForTextInput( |
168 | menuInfo: Electron.ContextMenuParams, | 268 | menuInfo: IContextMenuParams, |
169 | ): Electron.CrossProcessExports.Menu { | 269 | ): Electron.CrossProcessExports.Menu { |
170 | const menu = new Menu(); | 270 | const menu = new Menu(); |
171 | 271 | ||
272 | const { enableTranslator } = menuInfo; | ||
273 | |||
172 | this.addSpellingItems(menu, menuInfo); | 274 | this.addSpellingItems(menu, menuInfo); |
173 | this.addSearchItems(menu, menuInfo); | 275 | this.addSearchItems(menu, menuInfo); |
276 | if (enableTranslator) { | ||
277 | this.addTranslateItems(menu, menuInfo); | ||
278 | } | ||
174 | 279 | ||
175 | this.addCut(menu, menuInfo); | 280 | this.addCut(menu, menuInfo); |
176 | this.addCopy(menu, menuInfo); | 281 | this.addCopy(menu, menuInfo); |
@@ -194,7 +299,7 @@ export class ContextMenuBuilder { | |||
194 | * @return {Menu} The `Menu` | 299 | * @return {Menu} The `Menu` |
195 | */ | 300 | */ |
196 | buildMenuForLink( | 301 | buildMenuForLink( |
197 | menuInfo: Electron.ContextMenuParams, | 302 | menuInfo: IContextMenuParams, |
198 | ): Electron.CrossProcessExports.Menu { | 303 | ): Electron.CrossProcessExports.Menu { |
199 | const menu = new Menu(); | 304 | const menu = new Menu(); |
200 | const isEmailAddress = menuInfo.linkURL.startsWith('mailto:'); | 305 | const isEmailAddress = menuInfo.linkURL.startsWith('mailto:'); |
@@ -208,7 +313,6 @@ export class ContextMenuBuilder { | |||
208 | const url = isEmailAddress ? menuInfo.linkText : menuInfo.linkURL; | 313 | const url = isEmailAddress ? menuInfo.linkText : menuInfo.linkURL; |
209 | clipboard.writeText(url); | 314 | clipboard.writeText(url); |
210 | this._sendNotificationOnClipboardEvent( | 315 | this._sendNotificationOnClipboardEvent( |
211 | // @ts-expect-error Property 'clipboardNotifications' does not exist on type 'ContextMenuParams'. | ||
212 | menuInfo.clipboardNotifications, | 316 | menuInfo.clipboardNotifications, |
213 | () => `Link URL copied: ${url}`, | 317 | () => `Link URL copied: ${url}`, |
214 | ); | 318 | ); |
@@ -257,11 +361,16 @@ export class ContextMenuBuilder { | |||
257 | * Builds a menu applicable to a text field. | 361 | * Builds a menu applicable to a text field. |
258 | */ | 362 | */ |
259 | buildMenuForText( | 363 | buildMenuForText( |
260 | menuInfo: Electron.ContextMenuParams, | 364 | menuInfo: IContextMenuParams, |
261 | ): Electron.CrossProcessExports.Menu { | 365 | ): Electron.CrossProcessExports.Menu { |
262 | const menu = new Menu(); | 366 | const menu = new Menu(); |
263 | 367 | ||
368 | const { enableTranslator } = menuInfo; | ||
369 | |||
264 | this.addSearchItems(menu, menuInfo); | 370 | this.addSearchItems(menu, menuInfo); |
371 | if (enableTranslator) { | ||
372 | this.addTranslateItems(menu, menuInfo); | ||
373 | } | ||
265 | this.addCopy(menu, menuInfo); | 374 | this.addCopy(menu, menuInfo); |
266 | this.addInspectElement(menu, menuInfo); | 375 | this.addInspectElement(menu, menuInfo); |
267 | // @ts-expect-error Expected 1 arguments, but got 2. | 376 | // @ts-expect-error Expected 1 arguments, but got 2. |
@@ -283,7 +392,7 @@ export class ContextMenuBuilder { | |||
283 | * @return {Menu} The `Menu` | 392 | * @return {Menu} The `Menu` |
284 | */ | 393 | */ |
285 | buildMenuForImage( | 394 | buildMenuForImage( |
286 | menuInfo: Electron.ContextMenuParams, | 395 | menuInfo: IContextMenuParams, |
287 | ): Electron.CrossProcessExports.Menu { | 396 | ): Electron.CrossProcessExports.Menu { |
288 | const menu = new Menu(); | 397 | const menu = new Menu(); |
289 | 398 | ||
@@ -303,7 +412,7 @@ export class ContextMenuBuilder { | |||
303 | */ | 412 | */ |
304 | addSpellingItems( | 413 | addSpellingItems( |
305 | menu: Electron.CrossProcessExports.Menu, | 414 | menu: Electron.CrossProcessExports.Menu, |
306 | menuInfo: Electron.ContextMenuParams, | 415 | menuInfo: IContextMenuParams, |
307 | ) { | 416 | ) { |
308 | const webContents = this.getWebContents(); | 417 | const webContents = this.getWebContents(); |
309 | // Add each spelling suggestion | 418 | // Add each spelling suggestion |
@@ -338,7 +447,7 @@ export class ContextMenuBuilder { | |||
338 | */ | 447 | */ |
339 | addSearchItems( | 448 | addSearchItems( |
340 | menu: Electron.CrossProcessExports.Menu, | 449 | menu: Electron.CrossProcessExports.Menu, |
341 | menuInfo: Electron.ContextMenuParams, | 450 | menuInfo: IContextMenuParams, |
342 | ) { | 451 | ) { |
343 | if (!menuInfo.selectionText || menuInfo.selectionText.length === 0) { | 452 | if (!menuInfo.selectionText || menuInfo.selectionText.length === 0) { |
344 | return menu; | 453 | return menu; |
@@ -364,11 +473,9 @@ export class ContextMenuBuilder { | |||
364 | 473 | ||
365 | const search = new MenuItem({ | 474 | const search = new MenuItem({ |
366 | label: this.stringTable.searchWith({ | 475 | label: this.stringTable.searchWith({ |
367 | // @ts-expect-error Property 'searchEngine' does not exist on type 'ContextMenuParams'. | ||
368 | searchEngine: SEARCH_ENGINE_NAMES[menuInfo.searchEngine], | 476 | searchEngine: SEARCH_ENGINE_NAMES[menuInfo.searchEngine], |
369 | }), | 477 | }), |
370 | click: () => { | 478 | click: () => { |
371 | // @ts-expect-error Property 'searchEngine' does not exist on type 'ContextMenuParams'. | ||
372 | const url = SEARCH_ENGINE_URLS[menuInfo.searchEngine]({ | 479 | const url = SEARCH_ENGINE_URLS[menuInfo.searchEngine]({ |
373 | searchTerm: encodeURIComponent(menuInfo.selectionText), | 480 | searchTerm: encodeURIComponent(menuInfo.selectionText), |
374 | }); | 481 | }); |
@@ -382,7 +489,106 @@ export class ContextMenuBuilder { | |||
382 | return menu; | 489 | return menu; |
383 | } | 490 | } |
384 | 491 | ||
385 | isSrcUrlValid(menuInfo: Electron.ContextMenuParams) { | 492 | /** |
493 | * Adds translate-related menu items. | ||
494 | */ | ||
495 | addTranslateItems( | ||
496 | menu: Electron.CrossProcessExports.Menu, | ||
497 | menuInfo: IContextMenuParams, | ||
498 | ) { | ||
499 | const { translatorEngine } = menuInfo; | ||
500 | |||
501 | if (!menuInfo.selectionText || menuInfo.selectionText.length === 0) { | ||
502 | return menu; | ||
503 | } | ||
504 | |||
505 | const match = matchesWord(menuInfo.selectionText); | ||
506 | if (!match || match.length === 0) { | ||
507 | return menu; | ||
508 | } | ||
509 | |||
510 | const generateTranslationItems = async ( | ||
511 | translateToLanguage: string, | ||
512 | translatorEngine: string, | ||
513 | ) => { | ||
514 | // TODO: Need to support i18n | ||
515 | translatePopup('Loading...', false); | ||
516 | |||
517 | const translatedText = await ipcRenderer.invoke('translate', { | ||
518 | text: menuInfo.selectionText, | ||
519 | translateToLanguage, | ||
520 | translatorEngine, | ||
521 | }); | ||
522 | |||
523 | translatePopup(translatedText.text, translatedText.error); | ||
524 | }; | ||
525 | |||
526 | let arrayLanguagesAfterEngine; | ||
527 | if (translatorEngine === TRANSLATOR_ENGINE_LIBRETRANSLATE) { | ||
528 | arrayLanguagesAfterEngine = LIBRETRANSLATE_TRANSLATOR_LANGUAGES; | ||
529 | } else if (translatorEngine === TRANSLATOR_ENGINE_GOOGLE) { | ||
530 | arrayLanguagesAfterEngine = GOOGLE_TRANSLATOR_LANGUAGES; | ||
531 | } | ||
532 | |||
533 | const arrayLanguages = Object.keys(arrayLanguagesAfterEngine).map( | ||
534 | code => arrayLanguagesAfterEngine[code], | ||
535 | ); | ||
536 | |||
537 | const menuLanguages = new Menu(); | ||
538 | |||
539 | const getLanguageCode = (obj, val): string => | ||
540 | Object.keys(obj).find(key => obj[key] === val)!; | ||
541 | |||
542 | for (const language in arrayLanguages) { | ||
543 | if (arrayLanguages[language]) { | ||
544 | const languageItem = new MenuItem({ | ||
545 | label: this.stringTable.translateLanguage({ | ||
546 | translatorLanguage: arrayLanguages[language], | ||
547 | }), | ||
548 | click: () => { | ||
549 | const translateToLanguageCode = getLanguageCode( | ||
550 | arrayLanguagesAfterEngine, | ||
551 | arrayLanguages[language], | ||
552 | ); | ||
553 | generateTranslationItems(translateToLanguageCode, translatorEngine); | ||
554 | }, | ||
555 | }); | ||
556 | menuLanguages.append(languageItem); | ||
557 | } | ||
558 | } | ||
559 | |||
560 | const translateToLanguage = | ||
561 | arrayLanguagesAfterEngine[menuInfo.translatorLanguage]; | ||
562 | |||
563 | const translateToLanguageCode = getLanguageCode( | ||
564 | arrayLanguagesAfterEngine, | ||
565 | translateToLanguage, | ||
566 | ); | ||
567 | const quickTranslateItem = new MenuItem({ | ||
568 | label: this.stringTable.quickTranslate({ | ||
569 | translatorLanguage: translateToLanguage, | ||
570 | }), | ||
571 | click: () => { | ||
572 | generateTranslationItems(translateToLanguageCode, translatorEngine); | ||
573 | }, | ||
574 | }); | ||
575 | |||
576 | const translateItem = new MenuItem({ | ||
577 | label: this.stringTable.translate(), | ||
578 | submenu: menuLanguages, | ||
579 | click: () => { | ||
580 | generateTranslationItems(translateToLanguageCode, translatorEngine); | ||
581 | }, | ||
582 | }); | ||
583 | |||
584 | menu.append(translateItem); | ||
585 | menu.append(quickTranslateItem); | ||
586 | this.addSeparator(menu); | ||
587 | |||
588 | return menu; | ||
589 | } | ||
590 | |||
591 | isSrcUrlValid(menuInfo: IContextMenuParams) { | ||
386 | return menuInfo.srcURL && menuInfo.srcURL.length > 0; | 592 | return menuInfo.srcURL && menuInfo.srcURL.length > 0; |
387 | } | 593 | } |
388 | 594 | ||
@@ -391,7 +597,7 @@ export class ContextMenuBuilder { | |||
391 | */ | 597 | */ |
392 | addImageItems( | 598 | addImageItems( |
393 | menu: Electron.CrossProcessExports.Menu, | 599 | menu: Electron.CrossProcessExports.Menu, |
394 | menuInfo: Electron.ContextMenuParams, | 600 | menuInfo: IContextMenuParams, |
395 | ) { | 601 | ) { |
396 | const copyImage = new MenuItem({ | 602 | const copyImage = new MenuItem({ |
397 | label: this.stringTable.copyImage(), | 603 | label: this.stringTable.copyImage(), |
@@ -403,7 +609,6 @@ export class ContextMenuBuilder { | |||
403 | ); | 609 | ); |
404 | 610 | ||
405 | this._sendNotificationOnClipboardEvent( | 611 | this._sendNotificationOnClipboardEvent( |
406 | // @ts-expect-error Property 'clipboardNotifications' does not exist on type 'ContextMenuParams'. | ||
407 | menuInfo.clipboardNotifications, | 612 | menuInfo.clipboardNotifications, |
408 | () => `Image copied from URL: ${menuInfo.srcURL}`, | 613 | () => `Image copied from URL: ${menuInfo.srcURL}`, |
409 | ); | 614 | ); |
@@ -418,7 +623,6 @@ export class ContextMenuBuilder { | |||
418 | click: () => { | 623 | click: () => { |
419 | const result = clipboard.writeText(menuInfo.srcURL); | 624 | const result = clipboard.writeText(menuInfo.srcURL); |
420 | this._sendNotificationOnClipboardEvent( | 625 | this._sendNotificationOnClipboardEvent( |
421 | // @ts-expect-error Property 'clipboardNotifications' does not exist on type 'ContextMenuParams'. | ||
422 | menuInfo.clipboardNotifications, | 626 | menuInfo.clipboardNotifications, |
423 | () => `Image URL copied: ${menuInfo.srcURL}`, | 627 | () => `Image URL copied: ${menuInfo.srcURL}`, |
424 | ); | 628 | ); |
@@ -446,7 +650,6 @@ export class ContextMenuBuilder { | |||
446 | }); | 650 | }); |
447 | }); | 651 | }); |
448 | this._sendNotificationOnClipboardEvent( | 652 | this._sendNotificationOnClipboardEvent( |
449 | // @ts-expect-error Property 'clipboardNotifications' does not exist on type 'ContextMenuParams'. | ||
450 | menuInfo.clipboardNotifications, | 653 | menuInfo.clipboardNotifications, |
451 | () => `Image downloaded: ${urlWithoutBlob}`, | 654 | () => `Image downloaded: ${urlWithoutBlob}`, |
452 | ); | 655 | ); |
@@ -464,7 +667,7 @@ export class ContextMenuBuilder { | |||
464 | */ | 667 | */ |
465 | addCut( | 668 | addCut( |
466 | menu: Electron.CrossProcessExports.Menu, | 669 | menu: Electron.CrossProcessExports.Menu, |
467 | menuInfo: Electron.ContextMenuParams, | 670 | menuInfo: IContextMenuParams, |
468 | ) { | 671 | ) { |
469 | const webContents = this.getWebContents(); | 672 | const webContents = this.getWebContents(); |
470 | menu.append( | 673 | menu.append( |
@@ -484,7 +687,7 @@ export class ContextMenuBuilder { | |||
484 | */ | 687 | */ |
485 | addCopy( | 688 | addCopy( |
486 | menu: Electron.CrossProcessExports.Menu, | 689 | menu: Electron.CrossProcessExports.Menu, |
487 | menuInfo: Electron.ContextMenuParams, | 690 | menuInfo: IContextMenuParams, |
488 | ) { | 691 | ) { |
489 | const webContents = this.getWebContents(); | 692 | const webContents = this.getWebContents(); |
490 | menu.append( | 693 | menu.append( |
@@ -504,7 +707,7 @@ export class ContextMenuBuilder { | |||
504 | */ | 707 | */ |
505 | addPaste( | 708 | addPaste( |
506 | menu: Electron.CrossProcessExports.Menu, | 709 | menu: Electron.CrossProcessExports.Menu, |
507 | menuInfo: Electron.ContextMenuParams, | 710 | menuInfo: IContextMenuParams, |
508 | ) { | 711 | ) { |
509 | const webContents = this.getWebContents(); | 712 | const webContents = this.getWebContents(); |
510 | menu.append( | 713 | menu.append( |
@@ -521,7 +724,7 @@ export class ContextMenuBuilder { | |||
521 | 724 | ||
522 | addPastePlain( | 725 | addPastePlain( |
523 | menu: Electron.CrossProcessExports.Menu, | 726 | menu: Electron.CrossProcessExports.Menu, |
524 | menuInfo: Electron.ContextMenuParams, | 727 | menuInfo: IContextMenuParams, |
525 | ) { | 728 | ) { |
526 | if ( | 729 | if ( |
527 | menuInfo.editFlags.canPaste && | 730 | menuInfo.editFlags.canPaste && |
@@ -552,7 +755,7 @@ export class ContextMenuBuilder { | |||
552 | */ | 755 | */ |
553 | addInspectElement( | 756 | addInspectElement( |
554 | menu: Electron.CrossProcessExports.Menu, | 757 | menu: Electron.CrossProcessExports.Menu, |
555 | menuInfo: Electron.ContextMenuParams, | 758 | menuInfo: IContextMenuParams, |
556 | needsSeparator = true, | 759 | needsSeparator = true, |
557 | ) { | 760 | ) { |
558 | const webContents = this.getWebContents(); | 761 | const webContents = this.getWebContents(); |
@@ -609,6 +812,7 @@ export class ContextMenuBuilder { | |||
609 | */ | 812 | */ |
610 | goBack(menu: Electron.CrossProcessExports.Menu) { | 813 | goBack(menu: Electron.CrossProcessExports.Menu) { |
611 | const webContents = this.getWebContents(); | 814 | const webContents = this.getWebContents(); |
815 | |||
612 | menu.append( | 816 | menu.append( |
613 | new MenuItem({ | 817 | new MenuItem({ |
614 | label: this.stringTable.goBack(), | 818 | label: this.stringTable.goBack(), |
@@ -643,7 +847,7 @@ export class ContextMenuBuilder { | |||
643 | */ | 847 | */ |
644 | copyPageUrl( | 848 | copyPageUrl( |
645 | menu: Electron.CrossProcessExports.Menu, | 849 | menu: Electron.CrossProcessExports.Menu, |
646 | menuInfo: Electron.ContextMenuParams, | 850 | menuInfo: IContextMenuParams, |
647 | ) { | 851 | ) { |
648 | menu.append( | 852 | menu.append( |
649 | new MenuItem({ | 853 | new MenuItem({ |
@@ -652,7 +856,6 @@ export class ContextMenuBuilder { | |||
652 | click: () => { | 856 | click: () => { |
653 | clipboard.writeText(window.location.href); | 857 | clipboard.writeText(window.location.href); |
654 | this._sendNotificationOnClipboardEvent( | 858 | this._sendNotificationOnClipboardEvent( |
655 | // @ts-expect-error Property 'clipboardNotifications' does not exist on type 'ContextMenuParams'. | ||
656 | menuInfo?.clipboardNotifications, | 859 | menuInfo?.clipboardNotifications, |
657 | () => `Page URL copied: ${window.location.href}`, | 860 | () => `Page URL copied: ${window.location.href}`, |
658 | ); | 861 | ); |
@@ -668,7 +871,7 @@ export class ContextMenuBuilder { | |||
668 | */ | 871 | */ |
669 | goToHomePage( | 872 | goToHomePage( |
670 | menu: Electron.CrossProcessExports.Menu, | 873 | menu: Electron.CrossProcessExports.Menu, |
671 | menuInfo: Electron.ContextMenuParams, | 874 | menuInfo: IContextMenuParams, |
672 | ) { | 875 | ) { |
673 | const baseURL = new window.URL(menuInfo.pageURL); | 876 | const baseURL = new window.URL(menuInfo.pageURL); |
674 | menu.append( | 877 | menu.append( |
@@ -691,7 +894,7 @@ export class ContextMenuBuilder { | |||
691 | */ | 894 | */ |
692 | openInBrowser( | 895 | openInBrowser( |
693 | menu: Electron.CrossProcessExports.Menu, | 896 | menu: Electron.CrossProcessExports.Menu, |
694 | menuInfo: Electron.ContextMenuParams, | 897 | menuInfo: IContextMenuParams, |
695 | ) { | 898 | ) { |
696 | menu.append( | 899 | menu.append( |
697 | new MenuItem({ | 900 | new MenuItem({ |
diff --git a/src/webview/recipe.js b/src/webview/recipe.js index 8c93da202..acf4f9f31 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js | |||
@@ -188,6 +188,9 @@ class RecipeController { | |||
188 | () => this.spellcheckerLanguage, | 188 | () => this.spellcheckerLanguage, |
189 | () => this.settings.app.searchEngine, | 189 | () => this.settings.app.searchEngine, |
190 | () => this.settings.app.clipboardNotifications, | 190 | () => this.settings.app.clipboardNotifications, |
191 | () => this.settings.app.enableTranslator, | ||
192 | () => this.settings.app.translatorEngine, | ||
193 | () => this.settings.app.translatorLanguage, | ||
191 | ); | 194 | ); |
192 | 195 | ||
193 | autorun(() => this.update()); | 196 | autorun(() => this.update()); |
@@ -293,6 +296,9 @@ class RecipeController { | |||
293 | ); | 296 | ); |
294 | debug('darkReaderSettigs', this.settings.service.darkReaderSettings); | 297 | debug('darkReaderSettigs', this.settings.service.darkReaderSettings); |
295 | debug('searchEngine', this.settings.app.searchEngine); | 298 | debug('searchEngine', this.settings.app.searchEngine); |
299 | debug('enableTranslator', this.settings.app.enableTranslator); | ||
300 | debug('translatorEngine', this.settings.app.translatorEngine); | ||
301 | debug('translatorLanguage', this.settings.app.translatorLanguage); | ||
296 | 302 | ||
297 | if (this.userscript && this.userscript.internal_setSettings) { | 303 | if (this.userscript && this.userscript.internal_setSettings) { |
298 | this.userscript.internal_setSettings(this.settings); | 304 | this.userscript.internal_setSettings(this.settings); |