Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9acef8d56 | ||
|
|
113a4d8eca | ||
|
|
6d5b93c01b | ||
|
|
5746911651 | ||
|
|
7173692db7 | ||
|
|
b13a63e568 | ||
|
|
791ec65579 | ||
|
|
dd99fddc07 | ||
|
|
5cd6977a6e | ||
|
|
5af66204c4 | ||
|
|
595efe808f | ||
|
|
7b4b3b020c | ||
|
|
3e96540b56 | ||
|
|
88b791bd73 | ||
|
|
7817019e70 | ||
|
|
6013bbd32c | ||
|
|
40e0b96f39 | ||
|
|
16560fbdf0 | ||
|
|
16fdd704aa | ||
|
|
44e84d9259 | ||
|
|
18d29461ce | ||
|
|
31fb749e93 | ||
|
|
e17931493b | ||
|
|
a395f0b31b | ||
|
|
c819896b43 |
2
.env
2
.env
@@ -2,7 +2,7 @@ GENERATE_SOURCEMAP=false
|
|||||||
|
|
||||||
REACT_APP_NAME=KISS Translator
|
REACT_APP_NAME=KISS Translator
|
||||||
REACT_APP_NAME_CN=简约翻译
|
REACT_APP_NAME_CN=简约翻译
|
||||||
REACT_APP_VERSION=1.7.3
|
REACT_APP_VERSION=1.7.7
|
||||||
|
|
||||||
REACT_APP_HOMEPAGE=https://github.com/fishjar/kiss-translator
|
REACT_APP_HOMEPAGE=https://github.com/fishjar/kiss-translator
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# KISS Translator
|
# KISS Translator
|
||||||
|
|
||||||
A minimalist [bilingual translation Extension & Greasemonkey Script](https://github.com/fishjar/kiss-translator).
|
A simple [bilingual translation extension & Greasemonkey script](https://github.com/fishjar/kiss-translator).
|
||||||
|
|
||||||
[kiss-translator.webm](https://github.com/fishjar/kiss-translator/assets/1157624/f7ba8a5c-e4a8-4d5a-823a-5c5c67a0a47f)
|
[kiss-translator.webm](https://github.com/fishjar/kiss-translator/assets/1157624/f7ba8a5c-e4a8-4d5a-823a-5c5c67a0a47f)
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ If you also like a little more simplicity, welcome to pick it up.
|
|||||||
- Greasy Fork [Installation address](https://greasyfork.org/zh-CN/scripts/472840-kiss-translator)
|
- Greasy Fork [Installation address](https://greasyfork.org/zh-CN/scripts/472840-kiss-translator)
|
||||||
- [x] iOS Safari ([Userscripts Safari](https://github.com/quoid/userscripts)) [Installation link 1](https://fishjar.github.io/kiss-translator/kiss-translator-ios-safari.user.js)、 [Installation link 2](https://kiss-translator.rayjar.com/kiss-translator.user-ios-safari.js)
|
- [x] iOS Safari ([Userscripts Safari](https://github.com/quoid/userscripts)) [Installation link 1](https://fishjar.github.io/kiss-translator/kiss-translator-ios-safari.user.js)、 [Installation link 2](https://kiss-translator.rayjar.com/kiss-translator.user-ios-safari.js)
|
||||||
|
|
||||||
## Associated ProjectS
|
## Associated Projects
|
||||||
|
|
||||||
- Data synchronization service: [https://github.com/fishjar/kiss-worker](https://github.com/fishjar/kiss-worker)
|
- Data synchronization service: [https://github.com/fishjar/kiss-worker](https://github.com/fishjar/kiss-worker)
|
||||||
- Data synchronization service available for this project.
|
- Data synchronization service available for this project.
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -1,19 +1,9 @@
|
|||||||
# 简约翻译
|
# 简约翻译
|
||||||
|
|
||||||
一个简约的 [网页双语翻译扩展 & 油猴脚本](https://github.com/fishjar/kiss-translator)。
|
一个简约的 [双语对照翻译扩展 & 油猴脚本](https://github.com/fishjar/kiss-translator)。
|
||||||
|
|
||||||
[kiss-translator.webm](https://github.com/fishjar/kiss-translator/assets/1157624/f7ba8a5c-e4a8-4d5a-823a-5c5c67a0a47f)
|
[kiss-translator.webm](https://github.com/fishjar/kiss-translator/assets/1157624/f7ba8a5c-e4a8-4d5a-823a-5c5c67a0a47f)
|
||||||
|
|
||||||
## 缘由
|
|
||||||
|
|
||||||
本项目灵感来源于 [Immersive Translate](https://github.com/immersive-translate/immersive-translate),在试用了后,发现搭配本人早前开发的 [网页划词翻译扩展](https://github.com/fishjar/kiss-dictionary) 一起使用,刚好形成很好补充。
|
|
||||||
|
|
||||||
但该扩展的功能对我来说有些繁杂了,而且只提供编译混淆后的安装包,没有提供源代码,无法满足我的一些个性化定制需求。
|
|
||||||
|
|
||||||
恰巧本人对翻译类工具有些执念,本着`“自用为主,能用就行”`的理念,于是动手撸了一个,目前初版完成,基本达到个人使用需求。
|
|
||||||
|
|
||||||
如果你也喜欢简约一点的,欢迎自取。
|
|
||||||
|
|
||||||
## 特性
|
## 特性
|
||||||
|
|
||||||
- [x] 保持简约
|
- [x] 保持简约
|
||||||
@@ -25,7 +15,7 @@
|
|||||||
- [x] Google/Microsoft/DeepL/OpenAI
|
- [x] Google/Microsoft/DeepL/OpenAI
|
||||||
- [x] 自定义翻译接口
|
- [x] 自定义翻译接口
|
||||||
- [x] 覆盖常见翻译场景
|
- [x] 覆盖常见翻译场景
|
||||||
- [x] 网页双语翻译
|
- [x] 网页双语对照翻译
|
||||||
- [x] 输入框翻译
|
- [x] 输入框翻译
|
||||||
- [x] 鼠标悬停翻译
|
- [x] 鼠标悬停翻译
|
||||||
- [x] YouTube 字幕翻译
|
- [x] YouTube 字幕翻译
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ const userscriptWebpack = (config, env) => {
|
|||||||
// @name ${process.env.REACT_APP_NAME}
|
// @name ${process.env.REACT_APP_NAME}
|
||||||
// @namespace ${process.env.REACT_APP_HOMEPAGE}
|
// @namespace ${process.env.REACT_APP_HOMEPAGE}
|
||||||
// @version ${process.env.REACT_APP_VERSION}
|
// @version ${process.env.REACT_APP_VERSION}
|
||||||
// @description A minimalist bilingual translation Extension & Greasemonkey Script (一个简约的网页双语翻译扩展 & 油猴脚本)
|
// @description A simple bilingual translation extension & Greasemonkey script (一个简约的双语对照翻译扩展 & 油猴脚本)
|
||||||
// @author Gabe<yugang2002@gmail.com>
|
// @author Gabe<yugang2002@gmail.com>
|
||||||
// @homepageURL ${process.env.REACT_APP_HOMEPAGE}
|
// @homepageURL ${process.env.REACT_APP_HOMEPAGE}
|
||||||
// @license GPL-3.0
|
// @license GPL-3.0
|
||||||
@@ -103,6 +103,7 @@ const userscriptWebpack = (config, env) => {
|
|||||||
// @connect kiss-translator.rayjar.com
|
// @connect kiss-translator.rayjar.com
|
||||||
// @connect ghproxy.com
|
// @connect ghproxy.com
|
||||||
// @connect dav.jianguoyun.com
|
// @connect dav.jianguoyun.com
|
||||||
|
// @connect fanyi.baidu.com
|
||||||
// @connect localhost:3000
|
// @connect localhost:3000
|
||||||
// @run-at document-end
|
// @run-at document-end
|
||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "kiss-translator",
|
"name": "kiss-translator",
|
||||||
"description": "A minimalist bilingual translation Extension & Greasemonkey Script",
|
"description": "A minimalist bilingual translation Extension & Greasemonkey Script",
|
||||||
"version": "1.7.3",
|
"version": "1.7.7",
|
||||||
"author": "Gabe<yugang2002@gmail.com>",
|
"author": "Gabe<yugang2002@gmail.com>",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -62,8 +62,6 @@
|
|||||||
"@babel/node": "^7.22.10",
|
"@babel/node": "^7.22.10",
|
||||||
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||||
"@babel/preset-env": "^7.22.10",
|
"@babel/preset-env": "^7.22.10",
|
||||||
"react-app-rewired": "^2.2.1",
|
"react-app-rewired": "^2.2.1"
|
||||||
"wrangler": "^3.4.0"
|
}
|
||||||
},
|
|
||||||
"packageManager": "yarn@3.6.3"
|
|
||||||
}
|
}
|
||||||
|
|||||||
529
pnpm-lock.yaml
generated
529
pnpm-lock.yaml
generated
@@ -37,7 +37,7 @@ dependencies:
|
|||||||
version: 6.16.0(react-dom@18.2.0)(react@18.2.0)
|
version: 6.16.0(react-dom@18.2.0)(react@18.2.0)
|
||||||
react-scripts:
|
react-scripts:
|
||||||
specifier: 5.0.1
|
specifier: 5.0.1
|
||||||
version: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.17.19)(eslint@8.49.0)(react@18.2.0)(typescript@5.2.2)
|
version: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(react@18.2.0)(typescript@5.2.2)
|
||||||
webdav:
|
webdav:
|
||||||
specifier: ^5.3.0
|
specifier: ^5.3.0
|
||||||
version: 5.3.0
|
version: 5.3.0
|
||||||
@@ -61,9 +61,6 @@ devDependencies:
|
|||||||
react-app-rewired:
|
react-app-rewired:
|
||||||
specifier: ^2.2.1
|
specifier: ^2.2.1
|
||||||
version: 2.2.1(react-scripts@5.0.1)
|
version: 2.2.1(react-scripts@5.0.1)
|
||||||
wrangler:
|
|
||||||
specifier: ^3.4.0
|
|
||||||
version: 3.9.0
|
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -1434,57 +1431,6 @@ packages:
|
|||||||
node-fetch: 3.3.2
|
node-fetch: 3.3.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@cloudflare/kv-asset-handler@0.2.0:
|
|
||||||
resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==}
|
|
||||||
dependencies:
|
|
||||||
mime: 3.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@cloudflare/workerd-darwin-64@1.20230904.0:
|
|
||||||
resolution: {integrity: sha512-/GDlmxAFbDtrQwP4zOXFbqOfaPvkDxdsCoEa+KEBcAl5uR98+7WW5/b8naBHX+t26uS7p4bLlImM8J5F1ienRQ==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@cloudflare/workerd-darwin-arm64@1.20230904.0:
|
|
||||||
resolution: {integrity: sha512-x8WXNc2xnDqr5y1iirnNdyx8GZY3rL5xiF7ebK3mKQeB+jFjkhO71yuPTkDCzUWtOvw1Wfd4jbwy4wxacMX4mQ==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@cloudflare/workerd-linux-64@1.20230904.0:
|
|
||||||
resolution: {integrity: sha512-V58xyMS3oDpKO8Dpdh0r0BXm99OzoGgvWe9ufttVraj/1NTMGELwb6i9ySb8k3F1J9m/sO26+TV7pQc/bGC1VQ==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@cloudflare/workerd-linux-arm64@1.20230904.0:
|
|
||||||
resolution: {integrity: sha512-VrDaW+pjb5IAKEnNWtEaFiG377kXKmk5Fu0Era4W+jKzPON2BW/qRb/4LNHXQ4yxg/2HLm7RiUTn7JZtt1qO6A==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@cloudflare/workerd-windows-64@1.20230904.0:
|
|
||||||
resolution: {integrity: sha512-/R/dE8uy+8J2YeXfDhI8/Bg7YUirdbbjH5/l/Vv00ZRE0lC3nPLcYeyBXSwXIQ6/Xht3gN+lksLQgKd0ZWRd+Q==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@csstools/normalize.css@12.0.0:
|
/@csstools/normalize.css@12.0.0:
|
||||||
resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==}
|
resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==}
|
||||||
|
|
||||||
@@ -1742,200 +1688,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
|
resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19):
|
|
||||||
resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==}
|
|
||||||
peerDependencies:
|
|
||||||
esbuild: '*'
|
|
||||||
dependencies:
|
|
||||||
esbuild: 0.17.19
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19):
|
|
||||||
resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==}
|
|
||||||
peerDependencies:
|
|
||||||
esbuild: '*'
|
|
||||||
dependencies:
|
|
||||||
esbuild: 0.17.19
|
|
||||||
escape-string-regexp: 4.0.0
|
|
||||||
rollup-plugin-node-polyfills: 0.2.1
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@esbuild/android-arm64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [android]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/android-arm@0.17.19:
|
|
||||||
resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm]
|
|
||||||
os: [android]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/android-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [android]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/darwin-arm64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/darwin-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/freebsd-arm64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [freebsd]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/freebsd-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [freebsd]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-arm64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-arm@0.17.19:
|
|
||||||
resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-ia32@0.17.19:
|
|
||||||
resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ia32]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-loong64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [loong64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-mips64el@0.17.19:
|
|
||||||
resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [mips64el]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-ppc64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ppc64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-riscv64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [riscv64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-s390x@0.17.19:
|
|
||||||
resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [s390x]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/netbsd-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [netbsd]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/openbsd-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [openbsd]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/sunos-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [sunos]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/win32-arm64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/win32-ia32@0.17.19:
|
|
||||||
resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ia32]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/win32-x64@0.17.19:
|
|
||||||
resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@eslint-community/eslint-utils@4.4.0(eslint@8.49.0):
|
/@eslint-community/eslint-utils@4.4.0(eslint@8.49.0):
|
||||||
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
@@ -2516,7 +2268,7 @@ packages:
|
|||||||
react-refresh: 0.11.0
|
react-refresh: 0.11.0
|
||||||
schema-utils: 3.3.0
|
schema-utils: 3.3.0
|
||||||
source-map: 0.7.4
|
source-map: 0.7.4
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
webpack-dev-server: 4.15.1(webpack@5.88.2)
|
webpack-dev-server: 4.15.1(webpack@5.88.2)
|
||||||
|
|
||||||
/@popperjs/core@2.11.8:
|
/@popperjs/core@2.11.8:
|
||||||
@@ -3216,11 +2968,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
|
resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
|
||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
|
|
||||||
/acorn-walk@8.2.0:
|
|
||||||
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
|
|
||||||
engines: {node: '>=0.4.0'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/acorn@7.4.1:
|
/acorn@7.4.1:
|
||||||
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
|
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
|
||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
@@ -3437,12 +3184,6 @@ packages:
|
|||||||
is-array-buffer: 3.0.2
|
is-array-buffer: 3.0.2
|
||||||
is-shared-array-buffer: 1.0.2
|
is-shared-array-buffer: 1.0.2
|
||||||
|
|
||||||
/as-table@1.0.55:
|
|
||||||
resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
|
|
||||||
dependencies:
|
|
||||||
printable-characters: 1.0.42
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/asap@2.0.6:
|
/asap@2.0.6:
|
||||||
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
|
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
|
||||||
|
|
||||||
@@ -3522,7 +3263,7 @@ packages:
|
|||||||
loader-utils: 2.0.4
|
loader-utils: 2.0.4
|
||||||
make-dir: 3.1.0
|
make-dir: 3.1.0
|
||||||
schema-utils: 2.7.1
|
schema-utils: 2.7.1
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/babel-plugin-istanbul@6.1.1:
|
/babel-plugin-istanbul@6.1.1:
|
||||||
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
|
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
|
||||||
@@ -3679,10 +3420,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
/blake3-wasm@2.1.5:
|
|
||||||
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/bluebird@3.7.2:
|
/bluebird@3.7.2:
|
||||||
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
|
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
|
||||||
|
|
||||||
@@ -3758,13 +3495,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
|
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
/busboy@1.6.0:
|
|
||||||
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
|
|
||||||
engines: {node: '>=10.16.0'}
|
|
||||||
dependencies:
|
|
||||||
streamsearch: 1.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/byte-length@1.0.2:
|
/byte-length@1.0.2:
|
||||||
resolution: {integrity: sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==}
|
resolution: {integrity: sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -3816,15 +3546,6 @@ packages:
|
|||||||
/caniuse-lite@1.0.30001538:
|
/caniuse-lite@1.0.30001538:
|
||||||
resolution: {integrity: sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==}
|
resolution: {integrity: sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==}
|
||||||
|
|
||||||
/capnp-ts@0.7.0:
|
|
||||||
resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==}
|
|
||||||
dependencies:
|
|
||||||
debug: 4.3.4
|
|
||||||
tslib: 2.6.2
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/case-sensitive-paths-webpack-plugin@2.4.0:
|
/case-sensitive-paths-webpack-plugin@2.4.0:
|
||||||
resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
|
resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -4132,9 +3853,9 @@ packages:
|
|||||||
postcss-modules-values: 4.0.0(postcss@8.4.30)
|
postcss-modules-values: 4.0.0(postcss@8.4.30)
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/css-minimizer-webpack-plugin@3.4.1(esbuild@0.17.19)(webpack@5.88.2):
|
/css-minimizer-webpack-plugin@3.4.1(webpack@5.88.2):
|
||||||
resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==}
|
resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==}
|
||||||
engines: {node: '>= 12.13.0'}
|
engines: {node: '>= 12.13.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -4154,13 +3875,12 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
cssnano: 5.1.15(postcss@8.4.30)
|
cssnano: 5.1.15(postcss@8.4.30)
|
||||||
esbuild: 0.17.19
|
|
||||||
jest-worker: 27.5.1
|
jest-worker: 27.5.1
|
||||||
postcss: 8.4.30
|
postcss: 8.4.30
|
||||||
schema-utils: 4.2.0
|
schema-utils: 4.2.0
|
||||||
serialize-javascript: 6.0.1
|
serialize-javascript: 6.0.1
|
||||||
source-map: 0.6.1
|
source-map: 0.6.1
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/css-prefers-color-scheme@6.0.3(postcss@8.4.30):
|
/css-prefers-color-scheme@6.0.3(postcss@8.4.30):
|
||||||
resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==}
|
resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==}
|
||||||
@@ -4302,10 +4022,6 @@ packages:
|
|||||||
/damerau-levenshtein@1.0.8:
|
/damerau-levenshtein@1.0.8:
|
||||||
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
|
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
|
||||||
|
|
||||||
/data-uri-to-buffer@2.0.2:
|
|
||||||
resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/data-uri-to-buffer@4.0.1:
|
/data-uri-to-buffer@4.0.1:
|
||||||
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
|
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
|
||||||
engines: {node: '>= 12'}
|
engines: {node: '>= 12'}
|
||||||
@@ -4697,35 +4413,6 @@ packages:
|
|||||||
is-date-object: 1.0.5
|
is-date-object: 1.0.5
|
||||||
is-symbol: 1.0.4
|
is-symbol: 1.0.4
|
||||||
|
|
||||||
/esbuild@0.17.19:
|
|
||||||
resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
optionalDependencies:
|
|
||||||
'@esbuild/android-arm': 0.17.19
|
|
||||||
'@esbuild/android-arm64': 0.17.19
|
|
||||||
'@esbuild/android-x64': 0.17.19
|
|
||||||
'@esbuild/darwin-arm64': 0.17.19
|
|
||||||
'@esbuild/darwin-x64': 0.17.19
|
|
||||||
'@esbuild/freebsd-arm64': 0.17.19
|
|
||||||
'@esbuild/freebsd-x64': 0.17.19
|
|
||||||
'@esbuild/linux-arm': 0.17.19
|
|
||||||
'@esbuild/linux-arm64': 0.17.19
|
|
||||||
'@esbuild/linux-ia32': 0.17.19
|
|
||||||
'@esbuild/linux-loong64': 0.17.19
|
|
||||||
'@esbuild/linux-mips64el': 0.17.19
|
|
||||||
'@esbuild/linux-ppc64': 0.17.19
|
|
||||||
'@esbuild/linux-riscv64': 0.17.19
|
|
||||||
'@esbuild/linux-s390x': 0.17.19
|
|
||||||
'@esbuild/linux-x64': 0.17.19
|
|
||||||
'@esbuild/netbsd-x64': 0.17.19
|
|
||||||
'@esbuild/openbsd-x64': 0.17.19
|
|
||||||
'@esbuild/sunos-x64': 0.17.19
|
|
||||||
'@esbuild/win32-arm64': 0.17.19
|
|
||||||
'@esbuild/win32-ia32': 0.17.19
|
|
||||||
'@esbuild/win32-x64': 0.17.19
|
|
||||||
|
|
||||||
/escalade@3.1.1:
|
/escalade@3.1.1:
|
||||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -5011,7 +4698,7 @@ packages:
|
|||||||
micromatch: 4.0.5
|
micromatch: 4.0.5
|
||||||
normalize-path: 3.0.0
|
normalize-path: 3.0.0
|
||||||
schema-utils: 4.2.0
|
schema-utils: 4.2.0
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/eslint@8.49.0:
|
/eslint@8.49.0:
|
||||||
resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==}
|
resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==}
|
||||||
@@ -5096,10 +4783,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
|
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
|
||||||
engines: {node: '>=4.0'}
|
engines: {node: '>=4.0'}
|
||||||
|
|
||||||
/estree-walker@0.6.1:
|
|
||||||
resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/estree-walker@1.0.1:
|
/estree-walker@1.0.1:
|
||||||
resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
|
resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
|
||||||
|
|
||||||
@@ -5132,11 +4815,6 @@ packages:
|
|||||||
signal-exit: 3.0.7
|
signal-exit: 3.0.7
|
||||||
strip-final-newline: 2.0.0
|
strip-final-newline: 2.0.0
|
||||||
|
|
||||||
/exit-hook@2.2.1:
|
|
||||||
resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
|
|
||||||
engines: {node: '>=6'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/exit@0.1.2:
|
/exit@0.1.2:
|
||||||
resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
|
resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@@ -5258,7 +4936,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
loader-utils: 2.0.4
|
loader-utils: 2.0.4
|
||||||
schema-utils: 3.3.0
|
schema-utils: 3.3.0
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/filelist@1.0.4:
|
/filelist@1.0.4:
|
||||||
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
|
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
|
||||||
@@ -5389,7 +5067,7 @@ packages:
|
|||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
tapable: 1.1.3
|
tapable: 1.1.3
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/form-data@3.0.1:
|
/form-data@3.0.1:
|
||||||
resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
|
resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
|
||||||
@@ -5487,13 +5165,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
|
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
|
||||||
engines: {node: '>=8.0.0'}
|
engines: {node: '>=8.0.0'}
|
||||||
|
|
||||||
/get-source@2.0.12:
|
|
||||||
resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
|
|
||||||
dependencies:
|
|
||||||
data-uri-to-buffer: 2.0.2
|
|
||||||
source-map: 0.6.1
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/get-stream@6.0.1:
|
/get-stream@6.0.1:
|
||||||
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
|
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -5713,7 +5384,7 @@ packages:
|
|||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
pretty-error: 4.0.0
|
pretty-error: 4.0.0
|
||||||
tapable: 2.2.1
|
tapable: 2.2.1
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/htmlparser2@6.1.0:
|
/htmlparser2@6.1.0:
|
||||||
resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
|
resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
|
||||||
@@ -7257,12 +6928,6 @@ packages:
|
|||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
/mime@3.0.0:
|
|
||||||
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
|
|
||||||
engines: {node: '>=10.0.0'}
|
|
||||||
hasBin: true
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/mimic-fn@2.1.0:
|
/mimic-fn@2.1.0:
|
||||||
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -7274,29 +6939,7 @@ packages:
|
|||||||
webpack: ^5.0.0
|
webpack: ^5.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
schema-utils: 4.2.0
|
schema-utils: 4.2.0
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/miniflare@3.20230918.0:
|
|
||||||
resolution: {integrity: sha512-Dd29HB7ZlT1CXB2tPH8nW6fBOOXi/m7qFZHjKm2jGS+1OaGfrv0PkT5UspWW5jQi8rWI87xtordAUiIJkwWqRw==}
|
|
||||||
engines: {node: '>=16.13'}
|
|
||||||
dependencies:
|
|
||||||
acorn: 8.10.0
|
|
||||||
acorn-walk: 8.2.0
|
|
||||||
capnp-ts: 0.7.0
|
|
||||||
exit-hook: 2.2.1
|
|
||||||
glob-to-regexp: 0.4.1
|
|
||||||
source-map-support: 0.5.21
|
|
||||||
stoppable: 1.1.0
|
|
||||||
undici: 5.25.1
|
|
||||||
workerd: 1.20230904.0
|
|
||||||
ws: 8.14.2
|
|
||||||
youch: 3.3.1
|
|
||||||
zod: 3.22.2
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- supports-color
|
|
||||||
- utf-8-validate
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/minimalistic-assert@1.0.1:
|
/minimalistic-assert@1.0.1:
|
||||||
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
|
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
|
||||||
@@ -7349,11 +6992,6 @@ packages:
|
|||||||
dns-packet: 5.6.1
|
dns-packet: 5.6.1
|
||||||
thunky: 1.1.0
|
thunky: 1.1.0
|
||||||
|
|
||||||
/mustache@4.2.0:
|
|
||||||
resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
|
|
||||||
hasBin: true
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/mz@2.7.0:
|
/mz@2.7.0:
|
||||||
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
|
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -7687,10 +7325,6 @@ packages:
|
|||||||
/path-to-regexp@0.1.7:
|
/path-to-regexp@0.1.7:
|
||||||
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
|
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
|
||||||
|
|
||||||
/path-to-regexp@6.2.1:
|
|
||||||
resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/path-type@4.0.0:
|
/path-type@4.0.0:
|
||||||
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -8026,7 +7660,7 @@ packages:
|
|||||||
klona: 2.0.6
|
klona: 2.0.6
|
||||||
postcss: 8.4.30
|
postcss: 8.4.30
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/postcss-logical@5.0.4(postcss@8.4.30):
|
/postcss-logical@5.0.4(postcss@8.4.30):
|
||||||
resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==}
|
resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==}
|
||||||
@@ -8480,10 +8114,6 @@ packages:
|
|||||||
ansi-styles: 5.2.0
|
ansi-styles: 5.2.0
|
||||||
react-is: 18.2.0
|
react-is: 18.2.0
|
||||||
|
|
||||||
/printable-characters@1.0.42:
|
|
||||||
resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/process-nextick-args@2.0.1:
|
/process-nextick-args@2.0.1:
|
||||||
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
|
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
|
||||||
|
|
||||||
@@ -8589,7 +8219,7 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
react-scripts: '>=2.1.3'
|
react-scripts: '>=2.1.3'
|
||||||
dependencies:
|
dependencies:
|
||||||
react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.17.19)(eslint@8.49.0)(react@18.2.0)(typescript@5.2.2)
|
react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(react@18.2.0)(typescript@5.2.2)
|
||||||
semver: 5.7.2
|
semver: 5.7.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -8628,7 +8258,7 @@ packages:
|
|||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
text-table: 0.2.0
|
text-table: 0.2.0
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint
|
- eslint
|
||||||
- supports-color
|
- supports-color
|
||||||
@@ -8710,7 +8340,7 @@ packages:
|
|||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.17.19)(eslint@8.49.0)(react@18.2.0)(typescript@5.2.2):
|
/react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(react@18.2.0)(typescript@5.2.2):
|
||||||
resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==}
|
resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -8734,7 +8364,7 @@ packages:
|
|||||||
camelcase: 6.3.0
|
camelcase: 6.3.0
|
||||||
case-sensitive-paths-webpack-plugin: 2.4.0
|
case-sensitive-paths-webpack-plugin: 2.4.0
|
||||||
css-loader: 6.8.1(webpack@5.88.2)
|
css-loader: 6.8.1(webpack@5.88.2)
|
||||||
css-minimizer-webpack-plugin: 3.4.1(esbuild@0.17.19)(webpack@5.88.2)
|
css-minimizer-webpack-plugin: 3.4.1(webpack@5.88.2)
|
||||||
dotenv: 10.0.0
|
dotenv: 10.0.0
|
||||||
dotenv-expand: 5.1.0
|
dotenv-expand: 5.1.0
|
||||||
eslint: 8.49.0
|
eslint: 8.49.0
|
||||||
@@ -8765,9 +8395,9 @@ packages:
|
|||||||
source-map-loader: 3.0.2(webpack@5.88.2)
|
source-map-loader: 3.0.2(webpack@5.88.2)
|
||||||
style-loader: 3.3.3(webpack@5.88.2)
|
style-loader: 3.3.3(webpack@5.88.2)
|
||||||
tailwindcss: 3.3.3
|
tailwindcss: 3.3.3
|
||||||
terser-webpack-plugin: 5.3.9(esbuild@0.17.19)(webpack@5.88.2)
|
terser-webpack-plugin: 5.3.9(webpack@5.88.2)
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
webpack-dev-server: 4.15.1(webpack@5.88.2)
|
webpack-dev-server: 4.15.1(webpack@5.88.2)
|
||||||
webpack-manifest-plugin: 4.1.1(webpack@5.88.2)
|
webpack-manifest-plugin: 4.1.1(webpack@5.88.2)
|
||||||
workbox-webpack-plugin: 6.6.0(webpack@5.88.2)
|
workbox-webpack-plugin: 6.6.0(webpack@5.88.2)
|
||||||
@@ -9030,21 +8660,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
|
|
||||||
/rollup-plugin-inject@3.0.2:
|
|
||||||
resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==}
|
|
||||||
deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
|
|
||||||
dependencies:
|
|
||||||
estree-walker: 0.6.1
|
|
||||||
magic-string: 0.25.9
|
|
||||||
rollup-pluginutils: 2.8.2
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/rollup-plugin-node-polyfills@0.2.1:
|
|
||||||
resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==}
|
|
||||||
dependencies:
|
|
||||||
rollup-plugin-inject: 3.0.2
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/rollup-plugin-terser@7.0.2(rollup@2.79.1):
|
/rollup-plugin-terser@7.0.2(rollup@2.79.1):
|
||||||
resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
|
resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
|
||||||
deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
|
deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
|
||||||
@@ -9057,12 +8672,6 @@ packages:
|
|||||||
serialize-javascript: 4.0.0
|
serialize-javascript: 4.0.0
|
||||||
terser: 5.20.0
|
terser: 5.20.0
|
||||||
|
|
||||||
/rollup-pluginutils@2.8.2:
|
|
||||||
resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
|
|
||||||
dependencies:
|
|
||||||
estree-walker: 0.6.1
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/rollup@2.79.1:
|
/rollup@2.79.1:
|
||||||
resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
|
resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
@@ -9131,7 +8740,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
klona: 2.0.6
|
klona: 2.0.6
|
||||||
neo-async: 2.6.2
|
neo-async: 2.6.2
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/sax@1.2.4:
|
/sax@1.2.4:
|
||||||
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
|
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
|
||||||
@@ -9339,7 +8948,7 @@ packages:
|
|||||||
abab: 2.0.6
|
abab: 2.0.6
|
||||||
iconv-lite: 0.6.3
|
iconv-lite: 0.6.3
|
||||||
source-map-js: 1.0.2
|
source-map-js: 1.0.2
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/source-map-support@0.5.21:
|
/source-map-support@0.5.21:
|
||||||
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
|
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
|
||||||
@@ -9419,13 +9028,6 @@ packages:
|
|||||||
/stackframe@1.3.4:
|
/stackframe@1.3.4:
|
||||||
resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
|
resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
|
||||||
|
|
||||||
/stacktracey@2.1.8:
|
|
||||||
resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
|
|
||||||
dependencies:
|
|
||||||
as-table: 1.0.55
|
|
||||||
get-source: 2.0.12
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/static-eval@2.0.2:
|
/static-eval@2.0.2:
|
||||||
resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==}
|
resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -9439,16 +9041,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
|
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
/stoppable@1.1.0:
|
|
||||||
resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
|
|
||||||
engines: {node: '>=4', npm: '>=6'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/streamsearch@1.1.0:
|
|
||||||
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
|
|
||||||
engines: {node: '>=10.0.0'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/string-length@4.0.2:
|
/string-length@4.0.2:
|
||||||
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
|
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -9569,7 +9161,7 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
webpack: ^5.0.0
|
webpack: ^5.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/style-to-object@0.4.2:
|
/style-to-object@0.4.2:
|
||||||
resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==}
|
resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==}
|
||||||
@@ -9730,7 +9322,7 @@ packages:
|
|||||||
ansi-escapes: 4.3.2
|
ansi-escapes: 4.3.2
|
||||||
supports-hyperlinks: 2.3.0
|
supports-hyperlinks: 2.3.0
|
||||||
|
|
||||||
/terser-webpack-plugin@5.3.9(esbuild@0.17.19)(webpack@5.88.2):
|
/terser-webpack-plugin@5.3.9(webpack@5.88.2):
|
||||||
resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
|
resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
|
||||||
engines: {node: '>= 10.13.0'}
|
engines: {node: '>= 10.13.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -9747,12 +9339,11 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/trace-mapping': 0.3.19
|
'@jridgewell/trace-mapping': 0.3.19
|
||||||
esbuild: 0.17.19
|
|
||||||
jest-worker: 27.5.1
|
jest-worker: 27.5.1
|
||||||
schema-utils: 3.3.0
|
schema-utils: 3.3.0
|
||||||
serialize-javascript: 6.0.1
|
serialize-javascript: 6.0.1
|
||||||
terser: 5.20.0
|
terser: 5.20.0
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/terser@5.20.0:
|
/terser@5.20.0:
|
||||||
resolution: {integrity: sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==}
|
resolution: {integrity: sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==}
|
||||||
@@ -9956,13 +9547,6 @@ packages:
|
|||||||
/underscore@1.12.1:
|
/underscore@1.12.1:
|
||||||
resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==}
|
resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==}
|
||||||
|
|
||||||
/undici@5.25.1:
|
|
||||||
resolution: {integrity: sha512-nTw6b2G2OqP6btYPyghCgV4hSwjJlL/78FMJatVLCa3otj6PCOQSt6dVtYt82OtNqFz8XsnJ+vsXLADPXjPhqw==}
|
|
||||||
engines: {node: '>=14.0'}
|
|
||||||
dependencies:
|
|
||||||
busboy: 1.6.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/unicode-canonical-property-names-ecmascript@2.0.0:
|
/unicode-canonical-property-names-ecmascript@2.0.0:
|
||||||
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
|
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -10231,7 +9815,7 @@ packages:
|
|||||||
mime-types: 2.1.35
|
mime-types: 2.1.35
|
||||||
range-parser: 1.2.1
|
range-parser: 1.2.1
|
||||||
schema-utils: 4.2.0
|
schema-utils: 4.2.0
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
|
|
||||||
/webpack-dev-server@4.15.1(webpack@5.88.2):
|
/webpack-dev-server@4.15.1(webpack@5.88.2):
|
||||||
resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==}
|
resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==}
|
||||||
@@ -10274,7 +9858,7 @@ packages:
|
|||||||
serve-index: 1.9.1
|
serve-index: 1.9.1
|
||||||
sockjs: 0.3.24
|
sockjs: 0.3.24
|
||||||
spdy: 4.0.2
|
spdy: 4.0.2
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
webpack-dev-middleware: 5.3.3(webpack@5.88.2)
|
webpack-dev-middleware: 5.3.3(webpack@5.88.2)
|
||||||
ws: 8.14.2
|
ws: 8.14.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -10290,7 +9874,7 @@ packages:
|
|||||||
webpack: ^4.44.2 || ^5.47.0
|
webpack: ^4.44.2 || ^5.47.0
|
||||||
dependencies:
|
dependencies:
|
||||||
tapable: 2.2.1
|
tapable: 2.2.1
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
webpack-sources: 2.3.1
|
webpack-sources: 2.3.1
|
||||||
|
|
||||||
/webpack-sources@1.4.3:
|
/webpack-sources@1.4.3:
|
||||||
@@ -10310,7 +9894,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
|
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
|
|
||||||
/webpack@5.88.2(esbuild@0.17.19):
|
/webpack@5.88.2:
|
||||||
resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
|
resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -10341,7 +9925,7 @@ packages:
|
|||||||
neo-async: 2.6.2
|
neo-async: 2.6.2
|
||||||
schema-utils: 3.3.0
|
schema-utils: 3.3.0
|
||||||
tapable: 2.2.1
|
tapable: 2.2.1
|
||||||
terser-webpack-plugin: 5.3.9(esbuild@0.17.19)(webpack@5.88.2)
|
terser-webpack-plugin: 5.3.9(webpack@5.88.2)
|
||||||
watchpack: 2.4.0
|
watchpack: 2.4.0
|
||||||
webpack-sources: 3.2.3
|
webpack-sources: 3.2.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -10582,7 +10166,7 @@ packages:
|
|||||||
fast-json-stable-stringify: 2.1.0
|
fast-json-stable-stringify: 2.1.0
|
||||||
pretty-bytes: 5.6.0
|
pretty-bytes: 5.6.0
|
||||||
upath: 1.2.0
|
upath: 1.2.0
|
||||||
webpack: 5.88.2(esbuild@0.17.19)
|
webpack: 5.88.2
|
||||||
webpack-sources: 1.4.3
|
webpack-sources: 1.4.3
|
||||||
workbox-build: 6.6.0
|
workbox-build: 6.6.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -10595,45 +10179,6 @@ packages:
|
|||||||
'@types/trusted-types': 2.0.4
|
'@types/trusted-types': 2.0.4
|
||||||
workbox-core: 6.6.0
|
workbox-core: 6.6.0
|
||||||
|
|
||||||
/workerd@1.20230904.0:
|
|
||||||
resolution: {integrity: sha512-t9znszH0rQGK4mJGvF9L3nN0qKEaObAGx0JkywFtAwH8OkSn+YfQbHNZE+YsJ4qa1hOz1DCNEk08UDFRBaYq4g==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
optionalDependencies:
|
|
||||||
'@cloudflare/workerd-darwin-64': 1.20230904.0
|
|
||||||
'@cloudflare/workerd-darwin-arm64': 1.20230904.0
|
|
||||||
'@cloudflare/workerd-linux-64': 1.20230904.0
|
|
||||||
'@cloudflare/workerd-linux-arm64': 1.20230904.0
|
|
||||||
'@cloudflare/workerd-windows-64': 1.20230904.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/wrangler@3.9.0:
|
|
||||||
resolution: {integrity: sha512-Ho1A76KxbqfcRgCsuN6xGar3BVPyn4oVWM9zx0HvEVhT9wQ7n/LvB6GlPdXKABqEBYhVe/oTH72S5TgWl0DgaA==}
|
|
||||||
engines: {node: '>=16.13.0'}
|
|
||||||
hasBin: true
|
|
||||||
dependencies:
|
|
||||||
'@cloudflare/kv-asset-handler': 0.2.0
|
|
||||||
'@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19)
|
|
||||||
'@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19)
|
|
||||||
blake3-wasm: 2.1.5
|
|
||||||
chokidar: 3.5.3
|
|
||||||
esbuild: 0.17.19
|
|
||||||
miniflare: 3.20230918.0
|
|
||||||
nanoid: 3.3.6
|
|
||||||
path-to-regexp: 6.2.1
|
|
||||||
selfsigned: 2.1.1
|
|
||||||
source-map: 0.6.1
|
|
||||||
source-map-support: 0.5.21
|
|
||||||
xxhash-wasm: 1.0.2
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents: 2.3.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- supports-color
|
|
||||||
- utf-8-validate
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/wrap-ansi@7.0.0:
|
/wrap-ansi@7.0.0:
|
||||||
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
|
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -10683,10 +10228,6 @@ packages:
|
|||||||
/xmlchars@2.2.0:
|
/xmlchars@2.2.0:
|
||||||
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
||||||
|
|
||||||
/xxhash-wasm@1.0.2:
|
|
||||||
resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/y18n@5.0.8:
|
/y18n@5.0.8:
|
||||||
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
|
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -10724,15 +10265,3 @@ packages:
|
|||||||
/yocto-queue@0.1.0:
|
/yocto-queue@0.1.0:
|
||||||
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
/youch@3.3.1:
|
|
||||||
resolution: {integrity: sha512-Rg9ioi+AkKyje2Hk4qILSVvayaFW98KTsOJ4aIkjDf97LZX5WJVIHZmFLnM4ThcVofHo/fbbwtYajfBPHFOVtg==}
|
|
||||||
dependencies:
|
|
||||||
cookie: 0.5.0
|
|
||||||
mustache: 4.2.0
|
|
||||||
stacktracey: 2.1.8
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/zod@3.22.2:
|
|
||||||
resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==}
|
|
||||||
dev: true
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"message": "KISS Translator"
|
"message": "KISS Translator"
|
||||||
},
|
},
|
||||||
"app_description": {
|
"app_description": {
|
||||||
"message": "A minimalist bilingual translation Extension & Greasemonkey Script"
|
"message": "A simple bilingual translation extension & Greasemonkey script"
|
||||||
},
|
},
|
||||||
"toggle_translate": {
|
"toggle_translate": {
|
||||||
"message": "Toggle Translate"
|
"message": "Toggle Translate"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"message": "简约翻译"
|
"message": "简约翻译"
|
||||||
},
|
},
|
||||||
"app_description": {
|
"app_description": {
|
||||||
"message": "一个简约的网页双语翻译扩展 & 油猴脚本"
|
"message": "一个简约的双语对照翻译扩展 & 油猴脚本"
|
||||||
},
|
},
|
||||||
"toggle_translate": {
|
"toggle_translate": {
|
||||||
"message": "开启翻译"
|
"message": "开启翻译"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "__MSG_app_name__",
|
"name": "__MSG_app_name__",
|
||||||
"description": "__MSG_app_description__",
|
"description": "__MSG_app_description__",
|
||||||
"version": "1.7.3",
|
"version": "1.7.7",
|
||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
"author": "Gabe<yugang2002@gmail.com>",
|
"author": "Gabe<yugang2002@gmail.com>",
|
||||||
"homepage_url": "https://github.com/fishjar/kiss-translator",
|
"homepage_url": "https://github.com/fishjar/kiss-translator",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "__MSG_app_name__",
|
"name": "__MSG_app_name__",
|
||||||
"description": "__MSG_app_description__",
|
"description": "__MSG_app_description__",
|
||||||
"version": "1.7.3",
|
"version": "1.7.7",
|
||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
"author": "Gabe<yugang2002@gmail.com>",
|
"author": "Gabe<yugang2002@gmail.com>",
|
||||||
"homepage_url": "https://github.com/fishjar/kiss-translator",
|
"homepage_url": "https://github.com/fishjar/kiss-translator",
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import {
|
|||||||
PROMPT_PLACE_FROM,
|
PROMPT_PLACE_FROM,
|
||||||
PROMPT_PLACE_TO,
|
PROMPT_PLACE_TO,
|
||||||
KV_SALT_SYNC,
|
KV_SALT_SYNC,
|
||||||
|
URL_BAIDU_LANGDETECT,
|
||||||
|
OPT_LANGS_BAIDU,
|
||||||
} from "../config";
|
} from "../config";
|
||||||
import { tryDetectLang } from "../libs";
|
import { tryDetectLang } from "../libs";
|
||||||
import { sha256 } from "../libs/utils";
|
import { sha256 } from "../libs/utils";
|
||||||
@@ -237,6 +239,30 @@ const apiCustomTranslate = async (
|
|||||||
return [trText, isSame];
|
return [trText, isSame];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 百度语言识别
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const apiBaiduLangdetect = async (text) => {
|
||||||
|
const res = await fetchPolyfill(URL_BAIDU_LANGDETECT, {
|
||||||
|
headers: {
|
||||||
|
"Content-type": "application/json",
|
||||||
|
},
|
||||||
|
method: "POST",
|
||||||
|
body: JSON.stringify({
|
||||||
|
query: text,
|
||||||
|
}),
|
||||||
|
useCache: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.error === 0) {
|
||||||
|
return OPT_LANGS_BAIDU.get(res.lan) ?? res.lan;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统一翻译接口
|
* 统一翻译接口
|
||||||
* @param {*} param0
|
* @param {*} param0
|
||||||
@@ -249,8 +275,13 @@ export const apiTranslate = ({
|
|||||||
toLang,
|
toLang,
|
||||||
apiSetting,
|
apiSetting,
|
||||||
}) => {
|
}) => {
|
||||||
const from = OPT_LANGS_SPECIAL[translator]?.get(fromLang) ?? fromLang;
|
const from = OPT_LANGS_SPECIAL[translator].get(fromLang);
|
||||||
const to = OPT_LANGS_SPECIAL[translator]?.get(toLang) ?? toLang;
|
const to = OPT_LANGS_SPECIAL[translator].get(toLang);
|
||||||
|
|
||||||
|
if (!to) {
|
||||||
|
return ["", from === to];
|
||||||
|
}
|
||||||
|
|
||||||
const callApi = (api) => api(translator, text, to, from, apiSetting);
|
const callApi = (api) => api(translator, text, to, from, apiSetting);
|
||||||
|
|
||||||
switch (translator) {
|
switch (translator) {
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import {
|
|||||||
MSG_FETCH_LIMIT,
|
MSG_FETCH_LIMIT,
|
||||||
MSG_FETCH_CLEAR,
|
MSG_FETCH_CLEAR,
|
||||||
MSG_TRANS_TOGGLE,
|
MSG_TRANS_TOGGLE,
|
||||||
|
MSG_OPEN_OPTIONS,
|
||||||
|
MSG_SAVE_RULE,
|
||||||
MSG_TRANS_TOGGLE_STYLE,
|
MSG_TRANS_TOGGLE_STYLE,
|
||||||
CMD_TOGGLE_TRANSLATE,
|
CMD_TOGGLE_TRANSLATE,
|
||||||
CMD_TOGGLE_STYLE,
|
CMD_TOGGLE_STYLE,
|
||||||
@@ -15,6 +17,7 @@ import { fetchData, fetchPool } from "./libs/fetch";
|
|||||||
import { sendTabMsg } from "./libs/msg";
|
import { sendTabMsg } from "./libs/msg";
|
||||||
import { trySyncAllSubRules } from "./libs/subRules";
|
import { trySyncAllSubRules } from "./libs/subRules";
|
||||||
import { tryClearCaches } from "./libs";
|
import { tryClearCaches } from "./libs";
|
||||||
|
import { saveRule } from "./libs/rules";
|
||||||
|
|
||||||
globalThis.ContextType = "BACKGROUND";
|
globalThis.ContextType = "BACKGROUND";
|
||||||
|
|
||||||
@@ -69,6 +72,12 @@ browser.runtime.onMessage.addListener(
|
|||||||
fetchPool.clear();
|
fetchPool.clear();
|
||||||
sendResponse({ data: "ok" });
|
sendResponse({ data: "ok" });
|
||||||
break;
|
break;
|
||||||
|
case MSG_OPEN_OPTIONS:
|
||||||
|
browser.runtime.openOptionsPage();
|
||||||
|
break;
|
||||||
|
case MSG_SAVE_RULE:
|
||||||
|
saveRule(args);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
sendResponse({ error: `message action is unavailable: ${action}` });
|
sendResponse({ error: `message action is unavailable: ${action}` });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,20 +50,20 @@ const customApiHelpZH = `/// 自定义翻译源接口说明
|
|||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"Content-type": "application/json",
|
"Content-type": "application/json",
|
||||||
"Authorization" = "Bearer {{YOUR_KEY}}"
|
"Authorization": "Bearer {{YOUR_KEY}}",
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
text, // 需要翻译的文字
|
text: "", // 需要翻译的文字
|
||||||
from, // 源语言,可能为空,表示需要接口自动识别语言
|
from: "", // 源语言,可能为空,表示需要接口自动识别语言
|
||||||
to, // 目标语言
|
to: "", // 目标语言
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回(Response)数据需符合下面的JSON规范
|
// 返回(Response)数据需符合下面的JSON规范
|
||||||
{
|
{
|
||||||
text, // 翻译后的文字
|
text: "", // 翻译后的文字
|
||||||
from, // 识别的源语言
|
from: "", // 识别的源语言
|
||||||
to, // 目标语言(可选)
|
to: "", // 目标语言(可选)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 支持的语言代码如下
|
// 支持的语言代码如下
|
||||||
@@ -78,20 +78,20 @@ const customApiHelpEN = `/// Custom translation source interface description
|
|||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"Content-type": "application/json",
|
"Content-type": "application/json",
|
||||||
"Authorization" = "Bearer {{YOUR_KEY}}"
|
"Authorization": "Bearer {{YOUR_KEY}}",
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
text, // text to be translated
|
text: "", // text to be translated
|
||||||
from, // Source language, may be empty
|
from: "", // Source language, may be empty
|
||||||
to, // Target language
|
to: "", // Target language
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The returned data must conform to the following JSON specification
|
// The returned data must conform to the following JSON specification
|
||||||
{
|
{
|
||||||
text, // translated text
|
text: "", // translated text
|
||||||
from, // Recognized source language
|
from: "", // Recognized source language
|
||||||
to, // Target language (optional)
|
to: "", // Target language (optional)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The supported language codes are as follows
|
// The supported language codes are as follows
|
||||||
@@ -595,4 +595,20 @@ export const I18N = {
|
|||||||
zh: `标识后面可以加目标语言代码,如: “/en 你好”、“/zh hello”`,
|
zh: `标识后面可以加目标语言代码,如: “/en 你好”、“/zh hello”`,
|
||||||
en: `The target language code can be added after the sign, such as: "/en 你好", "/zh hello"`,
|
en: `The target language code can be added after the sign, such as: "/en 你好", "/zh hello"`,
|
||||||
},
|
},
|
||||||
|
detect_lang_remote: {
|
||||||
|
zh: `远程语言检测`,
|
||||||
|
en: `Remote language detection`,
|
||||||
|
},
|
||||||
|
detect_lang_remote_help: {
|
||||||
|
zh: `启用后检测准确度增加,但会降低翻译速度,请酌情开启`,
|
||||||
|
en: `After enabling, the detection accuracy will increase, but it will reduce the translation speed. Please enable it as appropriate.`,
|
||||||
|
},
|
||||||
|
disable: {
|
||||||
|
zh: `禁用`,
|
||||||
|
en: `Disable`,
|
||||||
|
},
|
||||||
|
enable: {
|
||||||
|
zh: `启用`,
|
||||||
|
en: `Enable`,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ export const CACHE_NAME = `${APP_NAME}_cache`;
|
|||||||
export const MSG_FETCH = "fetch";
|
export const MSG_FETCH = "fetch";
|
||||||
export const MSG_FETCH_LIMIT = "fetch_limit";
|
export const MSG_FETCH_LIMIT = "fetch_limit";
|
||||||
export const MSG_FETCH_CLEAR = "fetch_clear";
|
export const MSG_FETCH_CLEAR = "fetch_clear";
|
||||||
|
export const MSG_OPEN_OPTIONS = "open_options";
|
||||||
|
export const MSG_SAVE_RULE = "save_rule";
|
||||||
export const MSG_TRANS_TOGGLE = "trans_toggle";
|
export const MSG_TRANS_TOGGLE = "trans_toggle";
|
||||||
export const MSG_TRANS_TOGGLE_STYLE = "trans_toggle_style";
|
export const MSG_TRANS_TOGGLE_STYLE = "trans_toggle_style";
|
||||||
export const MSG_TRANS_GETRULE = "trans_getrule";
|
export const MSG_TRANS_GETRULE = "trans_getrule";
|
||||||
@@ -66,10 +68,12 @@ export const URL_KISS_RULES_NEW_ISSUE =
|
|||||||
export const URL_RAW_PREFIX =
|
export const URL_RAW_PREFIX =
|
||||||
"https://raw.githubusercontent.com/fishjar/kiss-translator/master";
|
"https://raw.githubusercontent.com/fishjar/kiss-translator/master";
|
||||||
export const URL_MICROSOFT_AUTH = "https://edge.microsoft.com/translate/auth";
|
export const URL_MICROSOFT_AUTH = "https://edge.microsoft.com/translate/auth";
|
||||||
|
export const URL_BAIDU_LANGDETECT = "https://fanyi.baidu.com/langdetect";
|
||||||
|
|
||||||
export const OPT_TRANS_GOOGLE = "Google";
|
export const OPT_TRANS_GOOGLE = "Google";
|
||||||
export const OPT_TRANS_MICROSOFT = "Microsoft";
|
export const OPT_TRANS_MICROSOFT = "Microsoft";
|
||||||
export const OPT_TRANS_DEEPL = "DeepL";
|
export const OPT_TRANS_DEEPL = "DeepL";
|
||||||
|
export const OPT_TRANS_BAIDU = "Baidu";
|
||||||
export const OPT_TRANS_OPENAI = "OpenAI";
|
export const OPT_TRANS_OPENAI = "OpenAI";
|
||||||
export const OPT_TRANS_CUSTOMIZE = "Custom";
|
export const OPT_TRANS_CUSTOMIZE = "Custom";
|
||||||
export const OPT_TRANS_ALL = [
|
export const OPT_TRANS_ALL = [
|
||||||
@@ -121,7 +125,9 @@ export const OPT_LANGS_TO = [
|
|||||||
];
|
];
|
||||||
export const OPT_LANGS_FROM = [["auto", "Auto-detect"], ...OPT_LANGS_TO];
|
export const OPT_LANGS_FROM = [["auto", "Auto-detect"], ...OPT_LANGS_TO];
|
||||||
export const OPT_LANGS_SPECIAL = {
|
export const OPT_LANGS_SPECIAL = {
|
||||||
|
[OPT_TRANS_GOOGLE]: new Map(OPT_LANGS_FROM.map(([key]) => [key, key])),
|
||||||
[OPT_TRANS_MICROSOFT]: new Map([
|
[OPT_TRANS_MICROSOFT]: new Map([
|
||||||
|
...OPT_LANGS_FROM.map(([key]) => [key, key]),
|
||||||
["auto", ""],
|
["auto", ""],
|
||||||
["zh-CN", "zh-Hans"],
|
["zh-CN", "zh-Hans"],
|
||||||
["zh-TW", "zh-Hant"],
|
["zh-TW", "zh-Hant"],
|
||||||
@@ -132,12 +138,48 @@ export const OPT_LANGS_SPECIAL = {
|
|||||||
["zh-CN", "ZH"],
|
["zh-CN", "ZH"],
|
||||||
["zh-TW", "ZH"],
|
["zh-TW", "ZH"],
|
||||||
]),
|
]),
|
||||||
|
[OPT_TRANS_BAIDU]: new Map([
|
||||||
|
...OPT_LANGS_FROM.map(([key]) => [key, key]),
|
||||||
|
["zh-CN", "zh"],
|
||||||
|
["zh-TW", "cht"],
|
||||||
|
["ar", "ara"],
|
||||||
|
["bg", "bul"],
|
||||||
|
["ca", "cat"],
|
||||||
|
["hr", "hrv"],
|
||||||
|
["da", "dan"],
|
||||||
|
["fi", "fin"],
|
||||||
|
["fr", "fra"],
|
||||||
|
["hi", "mai"],
|
||||||
|
["ja", "jp"],
|
||||||
|
["ko", "kor"],
|
||||||
|
["ms", "may"],
|
||||||
|
["mt", "mlt"],
|
||||||
|
["nb", "nor"],
|
||||||
|
["ro", "rom"],
|
||||||
|
["ru", "ru"],
|
||||||
|
["sl", "slo"],
|
||||||
|
["es", "spa"],
|
||||||
|
["sv", "swe"],
|
||||||
|
["ta", "tam"],
|
||||||
|
["te", "tel"],
|
||||||
|
["uk", "ukr"],
|
||||||
|
["vi", "vie"],
|
||||||
|
]),
|
||||||
[OPT_TRANS_OPENAI]: new Map(
|
[OPT_TRANS_OPENAI]: new Map(
|
||||||
OPT_LANGS_FROM.map(([key, val]) => [key, val.split(" - ")[0]])
|
OPT_LANGS_FROM.map(([key, val]) => [key, val.split(" - ")[0]])
|
||||||
),
|
),
|
||||||
[OPT_TRANS_CUSTOMIZE]: new Map([["auto", ""]]),
|
[OPT_TRANS_CUSTOMIZE]: new Map([
|
||||||
|
...OPT_LANGS_FROM.map(([key]) => [key, key]),
|
||||||
|
["auto", ""],
|
||||||
|
]),
|
||||||
};
|
};
|
||||||
export const OPT_LANGS_LIST = OPT_LANGS_TO.map(([lang]) => lang);
|
export const OPT_LANGS_LIST = OPT_LANGS_TO.map(([lang]) => lang);
|
||||||
|
export const OPT_LANGS_BAIDU = new Map(
|
||||||
|
Array.from(OPT_LANGS_SPECIAL[OPT_TRANS_BAIDU].entries()).map(([k, v]) => [
|
||||||
|
v,
|
||||||
|
k,
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
export const OPT_STYLE_NONE = "style_none"; // 无
|
export const OPT_STYLE_NONE = "style_none"; // 无
|
||||||
export const OPT_STYLE_LINE = "under_line"; // 下划线
|
export const OPT_STYLE_LINE = "under_line"; // 下划线
|
||||||
@@ -244,7 +286,7 @@ export const DEFAULT_TRANS_APIS = {
|
|||||||
key: "",
|
key: "",
|
||||||
},
|
},
|
||||||
[OPT_TRANS_OPENAI]: {
|
[OPT_TRANS_OPENAI]: {
|
||||||
url: "https://api.openai.com/v1/chat/completion",
|
url: "https://api.openai.com/v1/chat/completions",
|
||||||
key: "",
|
key: "",
|
||||||
model: "gpt-4",
|
model: "gpt-4",
|
||||||
prompt: `You will be provided with a sentence in ${PROMPT_PLACE_FROM}, and your task is to translate it into ${PROMPT_PLACE_TO}.`,
|
prompt: `You will be provided with a sentence in ${PROMPT_PLACE_FROM}, and your task is to translate it into ${PROMPT_PLACE_TO}.`,
|
||||||
@@ -269,7 +311,7 @@ export const DEFAULT_SHORTCUTS = {
|
|||||||
|
|
||||||
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
|
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
|
||||||
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
|
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
|
||||||
export const TRANS_NEWLINE_LENGTH = 40; // 换行字符数
|
export const TRANS_NEWLINE_LENGTH = 20; // 换行字符数
|
||||||
|
|
||||||
export const DEFAULT_SETTING = {
|
export const DEFAULT_SETTING = {
|
||||||
darkMode: false, // 深色模式
|
darkMode: false, // 深色模式
|
||||||
@@ -282,12 +324,12 @@ export const DEFAULT_SETTING = {
|
|||||||
clearCache: false, // 是否在浏览器下次启动时清除缓存
|
clearCache: false, // 是否在浏览器下次启动时清除缓存
|
||||||
injectRules: true, // 是否注入订阅规则
|
injectRules: true, // 是否注入订阅规则
|
||||||
injectWebfix: true, // 是否注入修复补丁
|
injectWebfix: true, // 是否注入修复补丁
|
||||||
|
detectRemote: false, // 是否使用远程语言检测
|
||||||
subrulesList: DEFAULT_SUBRULES_LIST, // 订阅列表
|
subrulesList: DEFAULT_SUBRULES_LIST, // 订阅列表
|
||||||
owSubrule: DEFAULT_OW_RULE, // 覆写订阅规则
|
owSubrule: DEFAULT_OW_RULE, // 覆写订阅规则
|
||||||
transApis: DEFAULT_TRANS_APIS, // 翻译接口
|
transApis: DEFAULT_TRANS_APIS, // 翻译接口
|
||||||
mouseKey: OPT_MOUSEKEY_DISABLE, // 鼠标悬停翻译
|
mouseKey: OPT_MOUSEKEY_DISABLE, // 鼠标悬停翻译
|
||||||
shortcuts: DEFAULT_SHORTCUTS, // 快捷键
|
shortcuts: DEFAULT_SHORTCUTS, // 快捷键
|
||||||
hideFab: false, // 是否隐藏按钮
|
|
||||||
inputRule: DEFAULT_INPUT_RULE, // 输入框设置
|
inputRule: DEFAULT_INPUT_RULE, // 输入框设置
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -303,10 +345,6 @@ export const DEFAULT_SYNC = {
|
|||||||
syncUser: "", // 数据同步用户名
|
syncUser: "", // 数据同步用户名
|
||||||
syncKey: "", // 数据同步密钥
|
syncKey: "", // 数据同步密钥
|
||||||
syncMeta: {}, // 数据更新及同步信息
|
syncMeta: {}, // 数据更新及同步信息
|
||||||
// settingUpdateAt: 0,
|
|
||||||
// settingSyncAt: 0,
|
|
||||||
// rulesUpdateAt: 0,
|
|
||||||
// rulesSyncAt: 0,
|
|
||||||
subRulesSyncAt: 0, // 订阅规则同步时间
|
subRulesSyncAt: 0, // 订阅规则同步时间
|
||||||
dataCaches: {}, // 缓存同步时间
|
dataCaches: {}, // 缓存同步时间
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,13 +1,23 @@
|
|||||||
import { browser } from "./libs/browser";
|
import { browser } from "./libs/browser";
|
||||||
|
import React from "react";
|
||||||
|
import ReactDOM from "react-dom/client";
|
||||||
|
import Action from "./views/Action";
|
||||||
|
import createCache from "@emotion/cache";
|
||||||
|
import { CacheProvider } from "@emotion/react";
|
||||||
import {
|
import {
|
||||||
MSG_TRANS_TOGGLE,
|
MSG_TRANS_TOGGLE,
|
||||||
MSG_TRANS_TOGGLE_STYLE,
|
MSG_TRANS_TOGGLE_STYLE,
|
||||||
MSG_TRANS_GETRULE,
|
MSG_TRANS_GETRULE,
|
||||||
MSG_TRANS_PUTRULE,
|
MSG_TRANS_PUTRULE,
|
||||||
|
APP_LCNAME,
|
||||||
} from "./config";
|
} from "./config";
|
||||||
import { getSettingWithDefault, getRulesWithDefault } from "./libs/storage";
|
import {
|
||||||
|
getSettingWithDefault,
|
||||||
|
getRulesWithDefault,
|
||||||
|
getFabWithDefault,
|
||||||
|
} from "./libs/storage";
|
||||||
import { Translator } from "./libs/translator";
|
import { Translator } from "./libs/translator";
|
||||||
import { isIframe, sendIframeMsg, sendPrentMsg } from "./libs/iframe";
|
import { isIframe, sendIframeMsg, sendParentMsg } from "./libs/iframe";
|
||||||
import { matchRule } from "./libs/rules";
|
import { matchRule } from "./libs/rules";
|
||||||
import { webfix } from "./libs/webfix";
|
import { webfix } from "./libs/webfix";
|
||||||
|
|
||||||
@@ -38,7 +48,7 @@ const init = async () => {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
sendPrentMsg(MSG_TRANS_GETRULE);
|
sendParentMsg(MSG_TRANS_GETRULE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +89,31 @@ const init = async () => {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 浮球按钮
|
||||||
|
const fab = await getFabWithDefault();
|
||||||
|
if (!fab.isHide) {
|
||||||
|
const $action = document.createElement("div");
|
||||||
|
$action.setAttribute("id", APP_LCNAME);
|
||||||
|
document.body.parentElement.appendChild($action);
|
||||||
|
const shadowContainer = $action.attachShadow({ mode: "closed" });
|
||||||
|
const emotionRoot = document.createElement("style");
|
||||||
|
const shadowRootElement = document.createElement("div");
|
||||||
|
shadowContainer.appendChild(emotionRoot);
|
||||||
|
shadowContainer.appendChild(shadowRootElement);
|
||||||
|
const cache = createCache({
|
||||||
|
key: APP_LCNAME,
|
||||||
|
prepend: true,
|
||||||
|
container: emotionRoot,
|
||||||
|
});
|
||||||
|
ReactDOM.createRoot(shadowRootElement).render(
|
||||||
|
<React.StrictMode>
|
||||||
|
<CacheProvider value={cache}>
|
||||||
|
<Action translator={translator} fab={fab} />
|
||||||
|
</CacheProvider>
|
||||||
|
</React.StrictMode>
|
||||||
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
|||||||
11
src/hooks/Fab.js
Normal file
11
src/hooks/Fab.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { STOKEY_FAB } from "../config";
|
||||||
|
import { useStorage } from "./Storage";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fab hook
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function useFab() {
|
||||||
|
const { data, update } = useStorage(STOKEY_FAB);
|
||||||
|
return { fab: data, updateFab: update };
|
||||||
|
}
|
||||||
@@ -23,7 +23,7 @@ export function useTranslate(q, rule, setting) {
|
|||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
|
||||||
const deLang = await tryDetectLang(q);
|
const deLang = await tryDetectLang(q, setting.detectRemote);
|
||||||
if (deLang && toLang.includes(deLang)) {
|
if (deLang && toLang.includes(deLang)) {
|
||||||
setSamelang(true);
|
setSamelang(true);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
26
src/index.js
26
src/index.js
@@ -32,25 +32,23 @@ function App() {
|
|||||||
href={process.env.REACT_APP_HOMEPAGE}
|
href={process.env.REACT_APP_HOMEPAGE}
|
||||||
>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Link>
|
>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Link>
|
||||||
</Divider>
|
</Divider>
|
||||||
<Stack spacing={2} direction="row" useFlexGap flexWrap="wrap">
|
<Stack spacing={2}>
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL}>
|
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL}>
|
||||||
Install Userscript 1
|
Install/Update Userscript for Tampermonkey/Violentmonkey
|
||||||
</Link>
|
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL2}>
|
|
||||||
Install Userscript 2
|
|
||||||
</Link>
|
</Link>
|
||||||
|
{/* <Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL2}>
|
||||||
|
Install/Update Userscript for Tampermonkey/Violentmonkey 2
|
||||||
|
</Link> */}
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL}>
|
<Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL}>
|
||||||
Install Userscript Safari 1
|
Install/Update Userscript for iOS Safari
|
||||||
</Link>
|
</Link>
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL2}>
|
{/* <Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL2}>
|
||||||
Install Userscript Safari 2
|
Install/Update Userscript for iOS Safari 2
|
||||||
</Link>
|
</Link> */}
|
||||||
<Link href={process.env.REACT_APP_OPTIONSPAGE}>
|
<Link href={process.env.REACT_APP_OPTIONSPAGE}>Open Options Page</Link>
|
||||||
Open Options Page 1
|
{/* <Link href={process.env.REACT_APP_OPTIONSPAGE2}>
|
||||||
</Link>
|
|
||||||
<Link href={process.env.REACT_APP_OPTIONSPAGE2}>
|
|
||||||
Open Options Page 2
|
Open Options Page 2
|
||||||
</Link>
|
</Link> */}
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
{loading ? (
|
{loading ? (
|
||||||
|
|||||||
@@ -28,19 +28,21 @@ export const fetchGM = async (input, { method = "GET", headers, body } = {}) =>
|
|||||||
url: input,
|
url: input,
|
||||||
headers,
|
headers,
|
||||||
data: body,
|
data: body,
|
||||||
onload: (response) => {
|
onload: ({ response, responseHeaders, status, statusText }) => {
|
||||||
if (response.status < 300) {
|
const headers = new Headers();
|
||||||
const headers = new Headers();
|
responseHeaders.split("\n").forEach((line) => {
|
||||||
response.responseHeaders.split("\n").forEach((line) => {
|
const [name, value] = line.split(":").map((item) => item.trim());
|
||||||
const [name, value] = line.split(":").map((item) => item.trim());
|
if (name && value) {
|
||||||
if (name && value) {
|
headers.append(name, value);
|
||||||
headers.append(name, value);
|
}
|
||||||
}
|
});
|
||||||
});
|
resolve(
|
||||||
resolve(new Response(response.response, { headers }));
|
new Response(response, {
|
||||||
} else {
|
headers,
|
||||||
reject(new Error(`[${response.status}] ${response.responseText}`));
|
status,
|
||||||
}
|
statusText,
|
||||||
|
})
|
||||||
|
);
|
||||||
},
|
},
|
||||||
onerror: reject,
|
onerror: reject,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ export const sendIframeMsg = (action, args) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const sendPrentMsg = (action, args) => {
|
export const sendParentMsg = (action, args) => {
|
||||||
window.parent.postMessage({ action, args }, "*");
|
window.parent.postMessage({ action, args }, "*");
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { CACHE_NAME } from "../config";
|
import { CACHE_NAME } from "../config";
|
||||||
import { browser } from "./browser";
|
import { browser } from "./browser";
|
||||||
|
import { apiBaiduLangdetect } from "../apis";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清除缓存数据
|
* 清除缓存数据
|
||||||
@@ -13,15 +14,29 @@ export const tryClearCaches = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 本地语言识别
|
* 语言识别
|
||||||
* @param {*} q
|
* @param {*} q
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const tryDetectLang = async (q) => {
|
export const tryDetectLang = async (q, useRemote = false) => {
|
||||||
try {
|
let lang = "";
|
||||||
const res = await browser?.i18n?.detectLanguage(q);
|
|
||||||
return res?.languages?.[0]?.language;
|
if (useRemote) {
|
||||||
} catch (err) {
|
try {
|
||||||
console.log("[detect lang]", err.message);
|
lang = await apiBaiduLangdetect(q);
|
||||||
|
} catch (err) {
|
||||||
|
console.log("[detect lang remote]", err.message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!lang) {
|
||||||
|
try {
|
||||||
|
const res = await browser?.i18n?.detectLanguage(q);
|
||||||
|
lang = res?.languages?.[0]?.language;
|
||||||
|
} catch (err) {
|
||||||
|
console.log("[detect lang local]", err.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lang;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ export const setWebfix = (url, val) =>
|
|||||||
export const getFab = () => getObj(STOKEY_FAB);
|
export const getFab = () => getObj(STOKEY_FAB);
|
||||||
export const getFabWithDefault = async () => (await getFab()) || {};
|
export const getFabWithDefault = async () => (await getFab()) || {};
|
||||||
export const setFab = (obj) => setObj(STOKEY_FAB, obj);
|
export const setFab = (obj) => setObj(STOKEY_FAB, obj);
|
||||||
|
export const updateFab = (obj) => putObj(STOKEY_FAB, obj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据同步
|
* 数据同步
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ export class Translator {
|
|||||||
const apiSetting = (this._setting.transApis || DEFAULT_TRANS_APIS)[
|
const apiSetting = (this._setting.transApis || DEFAULT_TRANS_APIS)[
|
||||||
translator
|
translator
|
||||||
];
|
];
|
||||||
|
const { detectRemote } = this._setting;
|
||||||
|
|
||||||
let triggerShortcut = initTriggerShortcut;
|
let triggerShortcut = initTriggerShortcut;
|
||||||
let triggerCount = initTriggerCount;
|
let triggerCount = initTriggerCount;
|
||||||
@@ -421,7 +422,7 @@ export class Translator {
|
|||||||
try {
|
try {
|
||||||
addLoading(node, loadingId);
|
addLoading(node, loadingId);
|
||||||
|
|
||||||
const deLang = await tryDetectLang(text);
|
const deLang = await tryDetectLang(text, detectRemote);
|
||||||
if (deLang && toLang.includes(deLang)) {
|
if (deLang && toLang.includes(deLang)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ import {
|
|||||||
MSG_TRANS_TOGGLE_STYLE,
|
MSG_TRANS_TOGGLE_STYLE,
|
||||||
MSG_TRANS_GETRULE,
|
MSG_TRANS_GETRULE,
|
||||||
MSG_TRANS_PUTRULE,
|
MSG_TRANS_PUTRULE,
|
||||||
|
APP_LCNAME,
|
||||||
} from "./config";
|
} from "./config";
|
||||||
import { isIframe, sendIframeMsg, sendPrentMsg } from "./libs/iframe";
|
import { isIframe, sendIframeMsg, sendParentMsg } from "./libs/iframe";
|
||||||
import { handlePing, injectScript } from "./libs/gm";
|
import { handlePing, injectScript } from "./libs/gm";
|
||||||
import { matchRule } from "./libs/rules";
|
import { matchRule } from "./libs/rules";
|
||||||
import { genEventName } from "./libs/utils";
|
import { genEventName } from "./libs/utils";
|
||||||
@@ -74,7 +75,7 @@ const init = async () => {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
sendPrentMsg(MSG_TRANS_GETRULE);
|
sendParentMsg(MSG_TRANS_GETRULE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +99,7 @@ const init = async () => {
|
|||||||
// 浮球按钮
|
// 浮球按钮
|
||||||
const fab = await getFabWithDefault();
|
const fab = await getFabWithDefault();
|
||||||
const $action = document.createElement("div");
|
const $action = document.createElement("div");
|
||||||
$action.setAttribute("id", "kiss-translator");
|
$action.setAttribute("id", APP_LCNAME);
|
||||||
document.body.parentElement.appendChild($action);
|
document.body.parentElement.appendChild($action);
|
||||||
const shadowContainer = $action.attachShadow({ mode: "closed" });
|
const shadowContainer = $action.attachShadow({ mode: "closed" });
|
||||||
const emotionRoot = document.createElement("style");
|
const emotionRoot = document.createElement("style");
|
||||||
@@ -106,7 +107,7 @@ const init = async () => {
|
|||||||
shadowContainer.appendChild(emotionRoot);
|
shadowContainer.appendChild(emotionRoot);
|
||||||
shadowContainer.appendChild(shadowRootElement);
|
shadowContainer.appendChild(shadowRootElement);
|
||||||
const cache = createCache({
|
const cache = createCache({
|
||||||
key: "css",
|
key: APP_LCNAME,
|
||||||
prepend: true,
|
prepend: true,
|
||||||
container: emotionRoot,
|
container: emotionRoot,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useEffect, useMemo, useState } from "react";
|
import { useEffect, useMemo, useState } from "react";
|
||||||
import { limitNumber } from "../../libs/utils";
|
import { limitNumber } from "../../libs/utils";
|
||||||
import { isMobile } from "../../libs/mobile";
|
import { isMobile } from "../../libs/mobile";
|
||||||
import { setFab } from "../../libs/storage";
|
import { updateFab } from "../../libs/storage";
|
||||||
import { debounce } from "../../libs/utils";
|
import { debounce } from "../../libs/utils";
|
||||||
import Paper from "@mui/material/Paper";
|
import Paper from "@mui/material/Paper";
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ export default function Draggable({
|
|||||||
const [hover, setHover] = useState(false);
|
const [hover, setHover] = useState(false);
|
||||||
const [origin, setOrigin] = useState(null);
|
const [origin, setOrigin] = useState(null);
|
||||||
const [position, setPosition] = useState({ x: left, y: top });
|
const [position, setPosition] = useState({ x: left, y: top });
|
||||||
const setFabPosition = useMemo(() => debounce(setFab, 500), []);
|
const setFabPosition = useMemo(() => debounce(updateFab, 500), []);
|
||||||
|
|
||||||
const handlePointerDown = (e) => {
|
const handlePointerDown = (e) => {
|
||||||
!isMobile && e.target.setPointerCapture(e.pointerId);
|
!isMobile && e.target.setPointerCapture(e.pointerId);
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ export default function Action({ translator, fab }) {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!isGm) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 注册快捷键
|
// 注册快捷键
|
||||||
const shortcuts = translator.setting.shortcuts || DEFAULT_SHORTCUTS;
|
const shortcuts = translator.setting.shortcuts || DEFAULT_SHORTCUTS;
|
||||||
const clearShortcuts = [
|
const clearShortcuts = [
|
||||||
@@ -198,7 +202,7 @@ export default function Action({ translator, fab }) {
|
|||||||
key="fab"
|
key="fab"
|
||||||
snapEdge
|
snapEdge
|
||||||
{...fabProps}
|
{...fabProps}
|
||||||
show={translator.setting.hideFab ? false : !showPopup}
|
show={fab.isHide ? false : !showPopup}
|
||||||
onStart={handleStart}
|
onStart={handleStart}
|
||||||
onMove={handleMove}
|
onMove={handleMove}
|
||||||
handler={
|
handler={
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ export default function Content({ q, translator }) {
|
|||||||
if (loading) {
|
if (loading) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{q.length > newlineLength ? <br /> : " "}
|
{q.length >= newlineLength ? <br /> : " "}
|
||||||
<LoadingIcon />
|
<LoadingIcon />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@@ -129,7 +129,7 @@ export default function Content({ q, translator }) {
|
|||||||
if (text && !sameLang) {
|
if (text && !sameLang) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{q.length > newlineLength ? <br /> : " "}
|
{q.length >= newlineLength ? <br /> : " "}
|
||||||
<StyledSpan
|
<StyledSpan
|
||||||
textStyle={textStyle}
|
textStyle={textStyle}
|
||||||
textDiyStyle={textDiyStyle}
|
textDiyStyle={textDiyStyle}
|
||||||
|
|||||||
@@ -554,7 +554,7 @@ function UserRules({ subRules }) {
|
|||||||
|
|
||||||
<UploadButton text={i18n("import")} onChange={handleImport} />
|
<UploadButton text={i18n("import")} onChange={handleImport} />
|
||||||
<DownloadButton
|
<DownloadButton
|
||||||
data={JSON.stringify([...rules.list].reverse(), null, "\t")}
|
data={JSON.stringify([...rules.list].reverse(), null, 2)}
|
||||||
text={i18n("export")}
|
text={i18n("export")}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import {
|
|||||||
} from "../../config";
|
} from "../../config";
|
||||||
import { useShortcut } from "../../hooks/Shortcut";
|
import { useShortcut } from "../../hooks/Shortcut";
|
||||||
import ShortcutInput from "./ShortcutInput";
|
import ShortcutInput from "./ShortcutInput";
|
||||||
|
import { useFab } from "../../hooks/Fab";
|
||||||
|
|
||||||
function ShortcutItem({ action, label }) {
|
function ShortcutItem({ action, label }) {
|
||||||
const { shortcut, setShortcut } = useShortcut(action);
|
const { shortcut, setShortcut } = useShortcut(action);
|
||||||
@@ -38,6 +39,7 @@ export default function Settings() {
|
|||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
const { setting, updateSetting } = useSetting();
|
const { setting, updateSetting } = useSetting();
|
||||||
const alert = useAlert();
|
const alert = useAlert();
|
||||||
|
const { fab, updateFab } = useFab();
|
||||||
|
|
||||||
const handleChange = (e) => {
|
const handleChange = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -83,8 +85,9 @@ export default function Settings() {
|
|||||||
clearCache,
|
clearCache,
|
||||||
newlineLength = TRANS_NEWLINE_LENGTH,
|
newlineLength = TRANS_NEWLINE_LENGTH,
|
||||||
mouseKey = OPT_MOUSEKEY_DISABLE,
|
mouseKey = OPT_MOUSEKEY_DISABLE,
|
||||||
hideFab = false,
|
detectRemote = false,
|
||||||
} = setting;
|
} = setting;
|
||||||
|
const { isHide = false } = fab || {};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box>
|
<Box>
|
||||||
@@ -166,6 +169,35 @@ export default function Settings() {
|
|||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
|
|
||||||
|
<FormControl size="small">
|
||||||
|
<InputLabel>{i18n("hide_fab_button")}</InputLabel>
|
||||||
|
<Select
|
||||||
|
name="isHide"
|
||||||
|
value={isHide}
|
||||||
|
label={i18n("hide_fab_button")}
|
||||||
|
onChange={(e) => {
|
||||||
|
updateFab({ isHide: e.target.value });
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MenuItem value={false}>{i18n("show")}</MenuItem>
|
||||||
|
<MenuItem value={true}>{i18n("hide")}</MenuItem>
|
||||||
|
</Select>
|
||||||
|
</FormControl>
|
||||||
|
|
||||||
|
<FormControl size="small">
|
||||||
|
<InputLabel>{i18n("detect_lang_remote")}</InputLabel>
|
||||||
|
<Select
|
||||||
|
name="detectRemote"
|
||||||
|
value={detectRemote}
|
||||||
|
label={i18n("detect_lang_remote")}
|
||||||
|
onChange={handleChange}
|
||||||
|
>
|
||||||
|
<MenuItem value={false}>{i18n("disable")}</MenuItem>
|
||||||
|
<MenuItem value={true}>{i18n("enable")}</MenuItem>
|
||||||
|
</Select>
|
||||||
|
<FormHelperText>{i18n("detect_lang_remote_help")}</FormHelperText>
|
||||||
|
</FormControl>
|
||||||
|
|
||||||
{isExt ? (
|
{isExt ? (
|
||||||
<FormControl size="small">
|
<FormControl size="small">
|
||||||
<InputLabel>{i18n("if_clear_cache")}</InputLabel>
|
<InputLabel>{i18n("if_clear_cache")}</InputLabel>
|
||||||
@@ -186,19 +218,6 @@ export default function Settings() {
|
|||||||
</FormControl>
|
</FormControl>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<FormControl size="small">
|
|
||||||
<InputLabel>{i18n("hide_fab_button")}</InputLabel>
|
|
||||||
<Select
|
|
||||||
name="hideFab"
|
|
||||||
value={hideFab}
|
|
||||||
label={i18n("hide_fab_button")}
|
|
||||||
onChange={handleChange}
|
|
||||||
>
|
|
||||||
<MenuItem value={false}>{i18n("show")}</MenuItem>
|
|
||||||
<MenuItem value={true}>{i18n("hide")}</MenuItem>
|
|
||||||
</Select>
|
|
||||||
</FormControl>
|
|
||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
<Grid container spacing={2} columns={12}>
|
<Grid container spacing={2} columns={12}>
|
||||||
<Grid item xs={12} sm={12} md={3} lg={3}>
|
<Grid item xs={12} sm={12} md={3} lg={3}>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default function Options() {
|
|||||||
// 检查版本是否一致
|
// 检查版本是否一致
|
||||||
if (version !== process.env.REACT_APP_VERSION) {
|
if (version !== process.env.REACT_APP_VERSION) {
|
||||||
setError(
|
setError(
|
||||||
`The version is inconsistent, please check whether the script(v${version}) is the latest version(v${process.env.REACT_APP_VERSION}). (版本不一致,请检查脚本(v${version})是否为最新版(v${process.env.REACT_APP_VERSION}))`
|
`The version of the local script(v${version}) is not the latest version(v${process.env.REACT_APP_VERSION}). 本地脚本之版本(v${version})非最新版(v${process.env.REACT_APP_VERSION})。`
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,9 @@ export default function Options() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (++i > 8) {
|
if (++i > 8) {
|
||||||
setError("Time out. (连接超时)");
|
setError(
|
||||||
|
"Time out. Please confirm whether to install or enable KISS Translator GreaseMonkey script? 连接超时,请检查是否安装或启用简约翻译油猴脚本。"
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,39 +73,25 @@ export default function Options() {
|
|||||||
if (error) {
|
if (error) {
|
||||||
return (
|
return (
|
||||||
<center>
|
<center>
|
||||||
<Alert severity="error">{error}</Alert>
|
|
||||||
<Divider>
|
<Divider>
|
||||||
<Link
|
<Link
|
||||||
href={process.env.REACT_APP_HOMEPAGE}
|
href={process.env.REACT_APP_HOMEPAGE}
|
||||||
>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Link>
|
>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Link>
|
||||||
</Divider>
|
</Divider>
|
||||||
<h2>
|
<Alert severity="error">{error}</Alert>
|
||||||
Please confirm whether to install or enable KISS Translator
|
|
||||||
GreaseMonkey script? (请检查是否安装或启用简约翻译油猴脚本)
|
|
||||||
</h2>
|
|
||||||
<Stack spacing={2}>
|
<Stack spacing={2}>
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL}>
|
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL}>
|
||||||
Install Userscript for Tampermonkey/Violentmonkey 1 (油猴脚本
|
Install/Update Userscript for Tampermonkey/Violentmonkey
|
||||||
安装地址 1)
|
|
||||||
</Link>
|
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL2}>
|
|
||||||
Install Userscript for Tampermonkey/Violentmonkey 2 (油猴脚本
|
|
||||||
安装地址 2)
|
|
||||||
</Link>
|
</Link>
|
||||||
|
{/* <Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL2}>
|
||||||
|
Install/Update Userscript for Tampermonkey/Violentmonkey 2
|
||||||
|
</Link> */}
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL}>
|
<Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL}>
|
||||||
Install Userscript for iOS Safari 1 (油猴脚本 iOS Safari专用
|
Install/Update Userscript for iOS Safari
|
||||||
安装地址 1)
|
|
||||||
</Link>
|
|
||||||
<Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL2}>
|
|
||||||
Install Userscript for iOS Safari 2 (油猴脚本 iOS Safari专用
|
|
||||||
安装地址 2)
|
|
||||||
</Link>
|
|
||||||
<Link href={process.env.REACT_APP_OPTIONSPAGE}>
|
|
||||||
Open Options Page 1 (打开设置页面 1)
|
|
||||||
</Link>
|
|
||||||
<Link href={process.env.REACT_APP_OPTIONSPAGE2}>
|
|
||||||
Open Options Page 2 (打开设置页面 2)
|
|
||||||
</Link>
|
</Link>
|
||||||
|
{/* <Link href={process.env.REACT_APP_USERSCRIPT_IOS_DOWNLOADURL2}>
|
||||||
|
Install/Update Userscript for iOS Safari 2
|
||||||
|
</Link> */}
|
||||||
</Stack>
|
</Stack>
|
||||||
</center>
|
</center>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import MenuItem from "@mui/material/MenuItem";
|
|||||||
import FormControlLabel from "@mui/material/FormControlLabel";
|
import FormControlLabel from "@mui/material/FormControlLabel";
|
||||||
import Switch from "@mui/material/Switch";
|
import Switch from "@mui/material/Switch";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import { sendTabMsg, getTabInfo } from "../../libs/msg";
|
import { sendBgMsg, sendTabMsg, getTabInfo } from "../../libs/msg";
|
||||||
import { browser } from "../../libs/browser";
|
import { browser } from "../../libs/browser";
|
||||||
import { isExt } from "../../libs/client";
|
import { isExt } from "../../libs/client";
|
||||||
import { useI18n } from "../../hooks/I18n";
|
import { useI18n } from "../../hooks/I18n";
|
||||||
@@ -16,6 +16,8 @@ import {
|
|||||||
MSG_TRANS_TOGGLE,
|
MSG_TRANS_TOGGLE,
|
||||||
MSG_TRANS_GETRULE,
|
MSG_TRANS_GETRULE,
|
||||||
MSG_TRANS_PUTRULE,
|
MSG_TRANS_PUTRULE,
|
||||||
|
MSG_OPEN_OPTIONS,
|
||||||
|
MSG_SAVE_RULE,
|
||||||
OPT_TRANS_ALL,
|
OPT_TRANS_ALL,
|
||||||
OPT_LANGS_FROM,
|
OPT_LANGS_FROM,
|
||||||
OPT_LANGS_TO,
|
OPT_LANGS_TO,
|
||||||
@@ -31,8 +33,10 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
const [rule, setRule] = useState(tran?.rule);
|
const [rule, setRule] = useState(tran?.rule);
|
||||||
|
|
||||||
const handleOpenSetting = () => {
|
const handleOpenSetting = () => {
|
||||||
if (isExt) {
|
if (!tran) {
|
||||||
browser?.runtime.openOptionsPage();
|
browser?.runtime.openOptionsPage();
|
||||||
|
} else if (isExt) {
|
||||||
|
sendBgMsg(MSG_OPEN_OPTIONS);
|
||||||
} else {
|
} else {
|
||||||
window.open(process.env.REACT_APP_OPTIONSPAGE, "_blank");
|
window.open(process.env.REACT_APP_OPTIONSPAGE, "_blank");
|
||||||
}
|
}
|
||||||
@@ -43,7 +47,7 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
try {
|
try {
|
||||||
setRule({ ...rule, transOpen: e.target.checked ? "true" : "false" });
|
setRule({ ...rule, transOpen: e.target.checked ? "true" : "false" });
|
||||||
|
|
||||||
if (isExt) {
|
if (!tran) {
|
||||||
await sendTabMsg(MSG_TRANS_TOGGLE);
|
await sendTabMsg(MSG_TRANS_TOGGLE);
|
||||||
} else {
|
} else {
|
||||||
tran.toggle();
|
tran.toggle();
|
||||||
@@ -59,7 +63,7 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
const { name, value } = e.target;
|
const { name, value } = e.target;
|
||||||
setRule((pre) => ({ ...pre, [name]: value }));
|
setRule((pre) => ({ ...pre, [name]: value }));
|
||||||
|
|
||||||
if (isExt) {
|
if (!tran) {
|
||||||
await sendTabMsg(MSG_TRANS_PUTRULE, { [name]: value });
|
await sendTabMsg(MSG_TRANS_PUTRULE, { [name]: value });
|
||||||
} else {
|
} else {
|
||||||
tran.updateRule({ [name]: value });
|
tran.updateRule({ [name]: value });
|
||||||
@@ -77,18 +81,23 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
const handleSaveRule = async () => {
|
const handleSaveRule = async () => {
|
||||||
try {
|
try {
|
||||||
let href = window.location.href;
|
let href = window.location.href;
|
||||||
if (isExt) {
|
if (!tran) {
|
||||||
const tab = await getTabInfo();
|
const tab = await getTabInfo();
|
||||||
href = tab.url;
|
href = tab.url;
|
||||||
}
|
}
|
||||||
saveRule({ ...rule, pattern: href });
|
const newRule = { ...rule, pattern: href };
|
||||||
|
if (isExt && tran) {
|
||||||
|
sendBgMsg(MSG_SAVE_RULE, newRule);
|
||||||
|
} else {
|
||||||
|
saveRule(newRule);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("[save rule]", err);
|
console.log("[save rule]", err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isExt) {
|
if (tran) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
(async () => {
|
(async () => {
|
||||||
@@ -101,12 +110,12 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
console.log("[query rule]", err);
|
console.log("[query rule]", err);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}, []);
|
}, [tran]);
|
||||||
|
|
||||||
if (!rule) {
|
if (!rule) {
|
||||||
return (
|
return (
|
||||||
<Box minWidth={300}>
|
<Box minWidth={300}>
|
||||||
{isExt && (
|
{!tran && (
|
||||||
<>
|
<>
|
||||||
<Header />
|
<Header />
|
||||||
<Divider />
|
<Divider />
|
||||||
@@ -125,7 +134,7 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Box minWidth={300}>
|
<Box minWidth={300}>
|
||||||
{isExt && (
|
{!tran && (
|
||||||
<>
|
<>
|
||||||
<Header />
|
<Header />
|
||||||
<Divider />
|
<Divider />
|
||||||
|
|||||||
Reference in New Issue
Block a user