From a4840c9c5ef8b2d2de4f1393439309201ed5c59a Mon Sep 17 00:00:00 2001 From: song_xiao_lin Date: Tue, 14 May 2024 11:47:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E5=A4=8D=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 202 +++++++++++++++++++++-------------- public/background.js | 19 ++-- public/content.js | 27 ++--- public/inject.js | 54 ++++++---- src/components/EvalInTab.tsx | 37 +++---- 5 files changed, 195 insertions(+), 144 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f05fab..617541e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "ahooks": "^3.7.10", - "antd": "^5.15.3", + "antd": "^5.17.0", "babel-jest": "^27.4.2", "babel-plugin-named-asset-import": "^0.3.8", "babel-preset-react-app": "^10.0.1", @@ -63,6 +63,7 @@ "@babel/core": "^7.24.1", "@babel/preset-env": "^7.24.1", "@babel/preset-react": "^7.24.1", + "@types/chrome": "^0.0.268", "babel-loader": "^9.1.3", "copy-webpack-plugin": "^12.0.2", "cross-env": "^7.0.3", @@ -120,9 +121,9 @@ } }, "node_modules/@ant-design/cssinjs": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.4.tgz", - "integrity": "sha512-IrUAOj5TYuMG556C9gdbFuOrigyhzhU5ZYpWb3gYTxAwymVqRbvLzFCZg6OsjLBR6GhzcxYF3AhxKmjB+rA2xA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.20.0.tgz", + "integrity": "sha512-uG3iWzJxgNkADdZmc6W0Ci3iQAUOvLMcM8SnnmWq3r6JeocACft4ChnY/YWvI2Y+rG/68QBla/O+udke1yH3vg==", "dependencies": { "@babel/runtime": "^7.11.1", "@emotion/hash": "^0.8.0", @@ -138,9 +139,9 @@ } }, "node_modules/@ant-design/icons": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.3.4.tgz", - "integrity": "sha512-U5eTSeSFr2V9SeJzYOo5mybAZfsoNuiIA8bvFoZUe+h9LBLs8UwrVaVwcMQC4AhBuojXkLMlmtnIlvUczXXHaQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.3.7.tgz", + "integrity": "sha512-bCPXTAg66f5bdccM4TT21SQBDO1Ek2gho9h3nO9DAKXJP4sq+5VBjrQMSxMVXSB3HyEz+cUbHQ5+6ogxCOpaew==", "dependencies": { "@ant-design/colors": "^7.0.0", "@ant-design/icons-svg": "^4.4.0", @@ -162,9 +163,9 @@ "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==" }, "node_modules/@ant-design/react-slick": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.0.2.tgz", - "integrity": "sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz", + "integrity": "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==", "dependencies": { "@babel/runtime": "^7.10.4", "classnames": "^2.2.5", @@ -2075,9 +2076,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", - "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -3502,6 +3503,17 @@ } } }, + "node_modules/@rc-component/async-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.3.tgz", + "integrity": "sha512-eN5chKrc0ANerXjLJuoqh/YJpor0u4T1bgaph5BPh42cJ2afDihaHJ2Mh3Up3XIFk05EfKG4nIQxbqC6y2eM4Q==", + "dependencies": { + "@babel/runtime": "^7.24.4" + }, + "engines": { + "node": ">=14.x" + } + }, "node_modules/@rc-component/color-picker": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.3.tgz", @@ -3595,9 +3607,9 @@ } }, "node_modules/@rc-component/trigger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.0.0.tgz", - "integrity": "sha512-niwKADPdY5dhdIblV6uwSayVivwo2uUISfJqri+/ovYQcH/omxDYBJKo755QKeoIIsWptxnRpgr7reEnNEZGFg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.1.1.tgz", + "integrity": "sha512-UjHkedkgtEcgQu87w1VuWug1idoDJV7VUt0swxHXRcmei2uu1AuUzGBPEUlmOmXGJ+YtTgZfVLi7kuAUKoZTMA==", "dependencies": { "@babel/runtime": "^7.23.2", "@rc-component/portal": "^1.1.0", @@ -4450,6 +4462,16 @@ "@types/node": "*" } }, + "node_modules/@types/chrome": { + "version": "0.0.268", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.268.tgz", + "integrity": "sha512-7N1QH9buudSJ7sI8Pe4mBHJr5oZ48s0hcanI9w3wgijAlv1OZNUZve9JR4x42dn5lJ5Sm87V1JNfnoh10EnQlA==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -4512,6 +4534,21 @@ "@types/send": "*" } }, + "node_modules/@types/filesystem": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.36.tgz", + "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.33.tgz", + "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==", + "dev": true + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -4520,6 +4557,12 @@ "@types/node": "*" } }, + "node_modules/@types/har-format": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz", + "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==", + "dev": true + }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -5604,54 +5647,54 @@ } }, "node_modules/antd": { - "version": "5.15.3", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.15.3.tgz", - "integrity": "sha512-53dpdGbfwipHVbqITmppp8N16i+BscMzz8NUNwaJgxwSvO9VQh/NfC/90lqGq3I2oBmxQ8TzRIxzFVKD/9OhlQ==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.17.0.tgz", + "integrity": "sha512-jrzMIcaTJIy12/GJ2PfgchgZGuAlDodlaOKd05/TxEtFilRHnv8oaf0qfqNGG3slvvuy4J/57xn21jM4cLl7Hw==", "dependencies": { "@ant-design/colors": "^7.0.2", - "@ant-design/cssinjs": "^1.18.4", - "@ant-design/icons": "^5.3.3", - "@ant-design/react-slick": "~1.0.2", - "@babel/runtime": "^7.24.0", + "@ant-design/cssinjs": "^1.19.1", + "@ant-design/icons": "^5.3.6", + "@ant-design/react-slick": "~1.1.2", + "@babel/runtime": "^7.24.5", "@ctrl/tinycolor": "^3.6.1", "@rc-component/color-picker": "~1.5.3", "@rc-component/mutate-observer": "^1.1.0", "@rc-component/tour": "~1.14.2", - "@rc-component/trigger": "^2.0.0", + "@rc-component/trigger": "^2.1.1", "classnames": "^2.5.1", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.10", "qrcode.react": "^3.1.0", - "rc-cascader": "~3.24.0", + "rc-cascader": "~3.25.0", "rc-checkbox": "~3.2.0", - "rc-collapse": "~3.7.2", + "rc-collapse": "~3.7.3", "rc-dialog": "~9.4.0", "rc-drawer": "~7.1.0", "rc-dropdown": "~4.2.0", - "rc-field-form": "~1.42.1", + "rc-field-form": "~2.0.0", "rc-image": "~7.6.0", "rc-input": "~1.4.5", "rc-input-number": "~9.0.0", "rc-mentions": "~2.11.1", "rc-menu": "~9.13.0", "rc-motion": "^2.9.0", - "rc-notification": "~5.3.0", + "rc-notification": "~5.4.0", "rc-pagination": "~4.0.4", - "rc-picker": "~4.3.0", - "rc-progress": "~3.5.1", + "rc-picker": "~4.5.0", + "rc-progress": "~4.0.0", "rc-rate": "~2.12.0", "rc-resize-observer": "^1.4.0", "rc-segmented": "~2.3.0", - "rc-select": "~14.13.0", - "rc-slider": "~10.5.0", + "rc-select": "~14.13.1", + "rc-slider": "~10.6.2", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.42.0", - "rc-tabs": "~14.1.1", + "rc-table": "~7.45.5", + "rc-tabs": "~15.0.0 ", "rc-textarea": "~1.6.3", "rc-tooltip": "~6.2.0", "rc-tree": "~5.8.5", - "rc-tree-select": "~5.19.0", + "rc-tree-select": "~5.20.0", "rc-upload": "~4.5.2", "rc-util": "^5.39.1", "scroll-into-view-if-needed": "^3.1.0", @@ -5886,11 +5929,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -15743,9 +15781,9 @@ } }, "node_modules/rc-cascader": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.24.0.tgz", - "integrity": "sha512-NwkYsVULA61S085jbOYbq8Z7leyIxVmLwf+71mWLjA3kCfUf/rAKC0WfjQbqBDaLGlU9d4z1EzyPaHBKLYWv6A==", + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.25.0.tgz", + "integrity": "sha512-mBY6/CykOvzAYnIye0rpt5JkMAXJaX8zZawOwSndbKuFakYE+leqBQWIZoN9HIgAptPpTi2Aty3RvbaBmk8SKQ==", "dependencies": { "@babel/runtime": "^7.12.5", "array-tree-filter": "^2.1.0", @@ -15836,12 +15874,12 @@ } }, "node_modules/rc-field-form": { - "version": "1.42.1", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.42.1.tgz", - "integrity": "sha512-SqiEmWNP+I61Lt80+ofPvT+3l8Ij6vb35IS+x14gheVnCJN0SRnOwEgsqCEB5FslT7xqjUqDnU845hRZ1jzlAA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.0.1.tgz", + "integrity": "sha512-3WK/POHBcfMFKrzScrkmgMIXqoVQ0KgVwcVnej/ukwuQG4ZHCJaTi2KhM+tWTK4WODBXbmjKg5pKHj2IVmSg4A==", "dependencies": { "@babel/runtime": "^7.18.0", - "async-validator": "^4.1.0", + "@rc-component/async-validator": "^5.0.3", "rc-util": "^5.32.2" }, "engines": { @@ -15949,9 +15987,9 @@ } }, "node_modules/rc-notification": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.3.0.tgz", - "integrity": "sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.4.0.tgz", + "integrity": "sha512-li19y9RoYJciF3WRFvD+DvWS70jdL8Fr+Gfb/OshK+iY6iTkwzoigmSIp76/kWh5tF5i/i9im12X3nsF85GYdA==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -15996,9 +16034,9 @@ } }, "node_modules/rc-picker": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.3.0.tgz", - "integrity": "sha512-bQNB/+NdW55jlQ5lPnNqF5J90Tq4SihLbAF7tzPBvGDJyoYmDgwLm4FN0ZB3Ot9i1v6vJY/1mgqZZTT9jbYc5w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.5.0.tgz", + "integrity": "sha512-suqz9bzuhBQlf7u+bZd1bJLPzhXpk12w6AjQ9BTPTiFwexVZgUKViG1KNLyfFvW6tCUZZK0HmCCX7JAyM+JnCg==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/trigger": "^2.0.0", @@ -16034,9 +16072,9 @@ } }, "node_modules/rc-progress": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.5.1.tgz", - "integrity": "sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz", + "integrity": "sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.6", @@ -16095,12 +16133,12 @@ } }, "node_modules/rc-select": { - "version": "14.13.0", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.13.0.tgz", - "integrity": "sha512-ew34FsaqHokK4dxVrcIxSYrgWJ2XJYlkk32eiOIiEo3GkHUExdCzmozMYaUc2P67c5QJRUvvY0uqCs3QG67h5A==", + "version": "14.13.3", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.13.3.tgz", + "integrity": "sha512-AMEfdE40RhlqahMGN3Q7OKVd1txNph0zIn2Xpvn0ZJiUYafCsqoGv+Rj6v1umgm8ZOEAJ3LefnkznAYNMMzACg==", "dependencies": { "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^2.0.0", + "@rc-component/trigger": "^2.1.1", "classnames": "2.x", "rc-motion": "^2.0.1", "rc-overflow": "^1.3.1", @@ -16116,13 +16154,13 @@ } }, "node_modules/rc-slider": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.5.0.tgz", - "integrity": "sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==", + "version": "10.6.2", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.6.2.tgz", + "integrity": "sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.5", - "rc-util": "^5.27.0" + "rc-util": "^5.36.0" }, "engines": { "node": ">=8.x" @@ -16164,9 +16202,9 @@ } }, "node_modules/rc-table": { - "version": "7.42.0", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.42.0.tgz", - "integrity": "sha512-GwHV9Zs3HvWxBkoXatO/IeKoElzy3Ojf3dcyw1Rj3cyQVb+ZHtexslKdyzsrKRPJ0mUa62BoX+ZAg3zgTEql8w==", + "version": "7.45.5", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.45.5.tgz", + "integrity": "sha512-R5sOfToOk7CalSkebZpqM8lkKWOJR7uXPGEhjjTSoj5egyHBwMxaACoPj2oI+6qLSll9yZrG5K+8HTN57b2Ahg==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/context": "^1.4.0", @@ -16184,9 +16222,9 @@ } }, "node_modules/rc-tabs": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-14.1.1.tgz", - "integrity": "sha512-5nOr9PVpJy2SWHTLgv1+kESDOb0tFzl0cYU9r9d8LfL0Wg9i/n1B558rmkxdQHgBwMqxmwoyPSAbQROxMQe8nw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.0.0.tgz", + "integrity": "sha512-7m541VcEiJSpHZmosMZNMIhemxtIN+f0WDhZNyXQ1/cZ40aaWsknlbj0FH6HryLoKEQvBnCI89hgQuT7MBSOBA==", "dependencies": { "@babel/runtime": "^7.11.2", "classnames": "2.x", @@ -16235,9 +16273,9 @@ } }, "node_modules/rc-tree": { - "version": "5.8.5", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.5.tgz", - "integrity": "sha512-PRfcZtVDNkR7oh26RuNe1hpw11c1wfgzwmPFL0lnxGnYefe9lDAO6cg5wJKIAwyXFVt5zHgpjYmaz0CPy1ZtKg==", + "version": "5.8.7", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.7.tgz", + "integrity": "sha512-cpsIQZ4nNYwpj6cqPRt52e/69URuNdgQF9wZ10InmEf8W3+i0A41OVmZWwHuX9gegQSqj+DPmaDkZFKQZ+ZV1w==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -16254,9 +16292,9 @@ } }, "node_modules/rc-tree-select": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.19.0.tgz", - "integrity": "sha512-f4l5EsmSGF3ggj76YTzKNPY9SnXfFaer7ZccTSGb3urUf54L+cCqyT+UsPr+S5TAr8mZSxJ7g3CgkCe+cVQ6sw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.20.0.tgz", + "integrity": "sha512-zFtkHx5/6PnXSi3oSbBSFbIPiJJQdpSU3qz/joLe75URgvxmTHi989O8MtMgpwyZwrCMOJpGi6L1uy+13uzZPw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -16302,9 +16340,9 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/rc-virtual-list": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz", - "integrity": "sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.12.0.tgz", + "integrity": "sha512-43+/lr7bImpvEwTFw1FTYwSg42VHzRgO5PiCEEUROj8D2+M2SCvANqGIa9QyhoFLVQtc+2QXvgTB7VPGG7oOoQ==", "dependencies": { "@babel/runtime": "^7.20.0", "classnames": "^2.2.6", @@ -17862,9 +17900,9 @@ } }, "node_modules/stylis": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", - "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" }, "node_modules/sucrase": { "version": "3.35.0", diff --git a/public/background.js b/public/background.js index a2764e2..cecc2df 100644 --- a/public/background.js +++ b/public/background.js @@ -83,13 +83,14 @@ const pageFunction = (code) => { chrome.runtime.onConnect.addListener(function (port) { console.assert(port.name === "content-to-ex"); - port.onMessage.addListener(function (msg) { - console.log("[content-to-ex]", msg) - }); - port.onDisconnect.addListener(function () { - console.error("[content-to-ex] Disconnected from port."); - }); - // port.postMessage({action: "TEST POST MESSAGE"}); + if (!port.hasListener) { + port.onMessage.addListener(function (msg) { + console.log("[content-to-ex]", msg) + }); + port.onDisconnect.addListener(function () { + console.error("[content-to-ex] Disconnected from port."); + }); + // port.postMessage({action: "TEST POST MESSAGE"}); + port.hasListener = true; + } }); - - diff --git a/public/content.js b/public/content.js index 252852d..d0d22ad 100644 --- a/public/content.js +++ b/public/content.js @@ -1,15 +1,18 @@ console.log("Loaded content.js") -window.addEventListener("message", (event) => { - console.log(event) - if (event.data.yakitex.msg && (event.data.yakitex.msg.type === "TEST")) { - const name = event.data.yakitex.msg.fn_name - const args = event.data.yakitex.msg.args - const a = (fn, args) => { - return window[fn](args) +if (!window.hasAddedMessageListener) { + window.addEventListener("message", (event) => { + if (event.data?.yakitex?.msg && (event.data.yakitex.msg.type === "TEST")) { + const name = event.data.yakitex.msg.fn_name; + const args = event.data.yakitex.msg.args; + const a = (fn, args) => { + return window[fn](args); + } + const zz = a(name, args); + console.log("res ", zz); + window.postMessage({type: "FROM_PAGE", text: zz}, "*"); + return } - const zz = a(name, args) - console.log("res ", zz) - window.postMessage({type: "FROM_PAGE", text: zz}, "*") - } -},); \ No newline at end of file + }); + window.hasAddedMessageListener = true; +} diff --git a/public/inject.js b/public/inject.js index 3dde74f..b6de250 100644 --- a/public/inject.js +++ b/public/inject.js @@ -4,7 +4,7 @@ function injectScript(src, id, message) { const script = document.createElement('script') script.onload = () => { - const onMessage = ({data}) => { + const onMessage = ({ data }) => { console.log(data) if (!data.yakitex || !data.yakitex.msg) { return @@ -12,7 +12,7 @@ function injectScript(src, id, message) { window.removeEventListener('message', onMessage) - resolve(data.yakitex.msg) + // resolve(data.yakitex.msg) script.remove() } @@ -30,26 +30,34 @@ function injectScript(src, id, message) { }) } -chrome.runtime.onConnect.addListener(function (port) { +if (!window.hasAddedMessageListener2) { + window.addEventListener("message", (event) => { + if (event.data.type && (event.data.type === "FROM_PAGE")) { + const port = chrome.runtime.connect({ name: "content-to-ex" }); + port.postMessage(event.data.text); + port.disconnect(); + return + } + }) + window.hasAddedMessageListener2 = true; +} + + +function connectAddListenerFun(port) { console.assert(port.name === "ex-to-content"); - port.onMessage.addListener(function (msg) { - injectScript('content.js', 'sender', {yakitex: "123", id: "yakit", msg: msg}).then((res) => { - window.addEventListener("message", (event) => { - // if (event.source !== window) { - // return; - // } - if (event.data.type && (event.data.type === "FROM_PAGE")) { - console.log(event) - const port2 = chrome.runtime.connect({name: "content-to-ex"}); - port2.postMessage(event.data.text); - port2.disconnect(); - } - },); + if (!port.hasListener) { + port.onMessage.addListener(function (msg) { + console.log(111111111111111); + injectScript('content.js', 'sender', { yakitex: "123", id: "yakit", msg: msg }) + }); + + port.onDisconnect.addListener(function () { + console.error("[ex-to-content] Disconnected from port."); + }); + port.hasListener = true + } +} - }) - }); - - port.onDisconnect.addListener(function () { - console.error("[ex-to-content] Disconnected from port."); - }); -}); \ No newline at end of file +if (!chrome.runtime.onConnect.hasListener(connectAddListenerFun)) { + chrome.runtime.onConnect.addListener(connectAddListenerFun); +} diff --git a/src/components/EvalInTab.tsx b/src/components/EvalInTab.tsx index a6b47ec..8e5342b 100644 --- a/src/components/EvalInTab.tsx +++ b/src/components/EvalInTab.tsx @@ -8,7 +8,7 @@ interface EvalInTabProps { export const EvalInTab: React.FC = () => { const [inputData, setInputData] = useState(""); - const [isScriptInjected, setIsScriptInjected] = useState(false); + const [port, setPort] = useState() // useEffect(() => { // // const onConnectListener = (port: chrome.runtime.Port) => { @@ -29,29 +29,30 @@ export const EvalInTab: React.FC = () => { // // }; // }, [inputData]); - const handleClick = async () => { - const tabId = await wsc.getTabId(); - if (!isScriptInjected) { + useEffect(() => { + const injectFun = async () => { + const tabId = await wsc.getTabId(); chrome.scripting.executeScript({ - target: {tabId: await wsc.getTabId()}, + target: {tabId: tabId}, files: ['inject.js'], - }).then(injectResults => { - console.log(injectResults) - setIsScriptInjected(true); - - const port = chrome.tabs.connect(tabId, {name: "ex-to-content"}) - port.postMessage({type: "TEST", fn_name: "Encrypt", args: inputData}); - port.onMessage.addListener(function (msg) { + }).then(() => { + const newPort = chrome.tabs.connect(tabId, {name: "ex-to-content"}) + setPort(newPort) + newPort.onMessage.addListener(function (msg) { console.log(msg) }) - }); + }) } - console.log("injected script") - const port = chrome.tabs.connect(tabId, {name: "ex-to-content"}) + injectFun() + return () => { + if (port) { + port.disconnect() + } + } + }, []) + + const handleClick = async () => { port.postMessage({type: "TEST", fn_name: "Encrypt", args: inputData}); - port.onMessage.addListener(function (msg) { - console.log(msg) - }) }; const handleInputChange = (event: React.ChangeEvent) => {