脚本打包
Some checks failed
build / Build (push) Failing after 6s
test / Run tests (push) Failing after 8s

This commit is contained in:
王一之 2025-04-09 22:33:46 +08:00
parent 0d86dae710
commit 259917545e
16 changed files with 540 additions and 125 deletions

View File

@ -3,11 +3,16 @@ import js from "@eslint/js";
import reactHooks from "eslint-plugin-react-hooks"; import reactHooks from "eslint-plugin-react-hooks";
import reactJsx from "eslint-plugin-react/configs/jsx-runtime.js"; import reactJsx from "eslint-plugin-react/configs/jsx-runtime.js";
import react from "eslint-plugin-react/configs/recommended.js"; import react from "eslint-plugin-react/configs/recommended.js";
import globals from "globals";
import ts from "typescript-eslint"; import ts from "typescript-eslint";
export default [ export default [
{ languageOptions: { globals: globals.browser } }, {
env: {
browser: true,
es2020: true,
webextensions: true,
},
},
js.configs.recommended, js.configs.recommended,
...ts.configs.recommended, ...ts.configs.recommended,
...fixupConfigRules([ ...fixupConfigRules([

View File

@ -11,6 +11,7 @@
"coverage": "vitest run --coverage", "coverage": "vitest run --coverage",
"build": "cross-env NODE_ENV=production rspack build", "build": "cross-env NODE_ENV=production rspack build",
"dev": "cross-env NODE_ENV=development rspack", "dev": "cross-env NODE_ENV=development rspack",
"pack": "node ./scripts/pack.js",
"format": "prettier --write .", "format": "prettier --write .",
"lint": "eslint .", "lint": "eslint .",
"lint-fix": "eslint --fix ." "lint-fix": "eslint --fix ."
@ -58,12 +59,14 @@
"@vitest/coverage-v8": "2.1.4", "@vitest/coverage-v8": "2.1.4",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"crx": "^5.0.1",
"eslint": "^9.24.0", "eslint": "^9.24.0",
"eslint-plugin-react": "^7.37.4", "eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"fake-indexeddb": "^6.0.0", "fake-indexeddb": "^6.0.0",
"globals": "^16.0.0", "globals": "^16.0.0",
"jsdom": "^25.0.1", "jsdom": "^25.0.1",
"jszip": "^3.10.1",
"mock-xmlhttprequest": "^8.4.1", "mock-xmlhttprequest": "^8.4.1",
"postcss": "^8.4.49", "postcss": "^8.4.49",
"postcss-loader": "^8.1.1", "postcss-loader": "^8.1.1",

View File

@ -168,12 +168,14 @@ export class ServiceWorkerMessageSend implements MessageSend {
constructor() {} constructor() {}
async init() { async init() {
if (!this.target) {
const list = await self.clients.matchAll({ includeUncontrolled: true, type: "window" }); const list = await self.clients.matchAll({ includeUncontrolled: true, type: "window" });
this.target = list[0]; this.target = list[0];
self.addEventListener("message", (e) => { self.addEventListener("message", (e) => {
this.messageHandle(e.data); this.messageHandle(e.data);
}); });
} }
}
messageHandle(data: WindowMessageBody) { messageHandle(data: WindowMessageBody) {
// 处理消息 // 处理消息
@ -187,20 +189,20 @@ export class ServiceWorkerMessageSend implements MessageSend {
} }
} }
connect(data: any): Promise<MessageConnect> { async connect(data: any): Promise<MessageConnect> {
return new Promise((resolve) => { await this.init();
const body: WindowMessageBody = { const body: WindowMessageBody = {
messageId: uuidv4(), messageId: uuidv4(),
type: "connect", type: "connect",
data, data,
}; };
this.target!.postMessage(body); this.target!.postMessage(body);
resolve(new WindowMessageConnect(body.messageId, this.EE, this.target!)); return new WindowMessageConnect(body.messageId, this.EE, this.target!);
});
} }
// 发送消息 注意不进行回调的内存泄漏 // 发送消息 注意不进行回调的内存泄漏
sendMessage(data: any): Promise<any> { async sendMessage(data: any): Promise<any> {
await this.init();
return new Promise((resolve) => { return new Promise((resolve) => {
const body: WindowMessageBody = { const body: WindowMessageBody = {
messageId: uuidv4(), messageId: uuidv4(),

297
pnpm-lock.yaml generated
View File

@ -129,6 +129,9 @@ importers:
cross-env: cross-env:
specifier: ^7.0.3 specifier: ^7.0.3
version: 7.0.3 version: 7.0.3
crx:
specifier: ^5.0.1
version: 5.0.1
eslint: eslint:
specifier: ^9.24.0 specifier: ^9.24.0
version: 9.24.0(jiti@1.21.7) version: 9.24.0(jiti@1.21.7)
@ -147,6 +150,9 @@ importers:
jsdom: jsdom:
specifier: ^25.0.1 specifier: ^25.0.1
version: 25.0.1 version: 25.0.1
jszip:
specifier: ^3.10.1
version: 3.10.1
mock-xmlhttprequest: mock-xmlhttprequest:
specifier: ^8.4.1 specifier: ^8.4.1
version: 8.4.1 version: 8.4.1
@ -1727,6 +1733,14 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
archiver-utils@2.1.0:
resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==}
engines: {node: '>= 6'}
archiver@3.1.1:
resolution: {integrity: sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==}
engines: {node: '>= 6'}
arg@4.1.3: arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
@ -1776,10 +1790,16 @@ packages:
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
asn1@0.2.6:
resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
assertion-error@2.0.1: assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'} engines: {node: '>=12'}
async@2.6.4:
resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
asynckit@0.4.0: asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
@ -1803,6 +1823,9 @@ packages:
balanced-match@1.0.2: balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
batch@0.6.1: batch@0.6.1:
resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
@ -1810,6 +1833,9 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'} engines: {node: '>=8'}
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
body-parser@1.20.3: body-parser@1.20.3:
resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@ -1840,9 +1866,15 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
buffer-from@1.1.2: buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
bundle-name@4.1.0: bundle-name@4.1.0:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
@ -1951,6 +1983,10 @@ packages:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
compress-commons@2.1.1:
resolution: {integrity: sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==}
engines: {node: '>= 6'}
compressible@2.0.18: compressible@2.0.18:
resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
@ -2014,6 +2050,13 @@ packages:
typescript: typescript:
optional: true optional: true
crc32-stream@3.0.1:
resolution: {integrity: sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==}
engines: {node: '>= 6.9.0'}
crc@3.8.0:
resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==}
create-require@1.1.1: create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
@ -2033,6 +2076,11 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
crx@5.0.1:
resolution: {integrity: sha512-n/PzBx/fR1+xZCiJBats9y5zw/a+YBcoJ0ABnUaY56xb1RpXuFhsiCMpNY6WjVtylLzhUUXSWsbitesVg7v2vg==}
engines: {node: '>=10'}
hasBin: true
crypto-js@4.2.0: crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
@ -2227,6 +2275,9 @@ packages:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
enhanced-resolve@5.18.1: enhanced-resolve@5.18.1:
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
@ -2561,6 +2612,12 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.3: fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@ -2626,6 +2683,10 @@ packages:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true hasBin: true
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
globals@14.0.0: globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
@ -2766,10 +2827,16 @@ packages:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@5.3.2: ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'} engines: {node: '>= 4'}
immediate@3.0.6:
resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
immer@10.1.1: immer@10.1.1:
resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==}
@ -2784,6 +2851,10 @@ packages:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'} engines: {node: '>=0.8.19'}
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.3: inherits@2.0.3:
resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
@ -3099,6 +3170,9 @@ packages:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
jszip@3.10.1:
resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
keyv@4.5.4: keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@ -3111,10 +3185,17 @@ packages:
launch-editor@2.9.1: launch-editor@2.9.1:
resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==}
lazystream@1.0.1:
resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
engines: {node: '>= 0.6.3'}
levn@0.4.1: levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
lie@3.3.0:
resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
lines-and-columns@1.2.4: lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@ -3134,9 +3215,24 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'} engines: {node: '>=10'}
lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
lodash.difference@4.5.0:
resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==}
lodash.flatten@4.4.0:
resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
lodash.merge@4.6.2: lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
lodash.union@4.6.0:
resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==}
lodash@4.17.21: lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
@ -3307,6 +3403,9 @@ packages:
node-releases@2.0.19: node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
node-rsa@1.1.1:
resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==}
normalize-path@3.0.0: normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -3379,6 +3478,9 @@ packages:
resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
onetime@5.1.2: onetime@5.1.2:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -3425,6 +3527,9 @@ packages:
package-manager-detector@0.2.5: package-manager-detector@0.2.5:
resolution: {integrity: sha512-3dS7y28uua+UDbRCLBqltMBrbI+A5U2mI9YuxHRxIWYmLj3DwntEBmERYzIAQ4DMeuCUOBSak7dBHHoXKpOTYQ==} resolution: {integrity: sha512-3dS7y28uua+UDbRCLBqltMBrbI+A5U2mI9YuxHRxIWYmLj3DwntEBmERYzIAQ4DMeuCUOBSak7dBHHoXKpOTYQ==}
pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
pako@2.1.0: pako@2.1.0:
resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
@ -3447,6 +3552,10 @@ packages:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'} engines: {node: '>=8'}
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
path-key@3.1.1: path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -3471,6 +3580,10 @@ packages:
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'} engines: {node: '>= 14.16'}
pbf@3.3.0:
resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==}
hasBin: true
perfect-debounce@1.0.0: perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
@ -3540,6 +3653,9 @@ packages:
prop-types@15.8.1: prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
protocol-buffers-schema@3.6.0:
resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==}
proxy-addr@2.0.7: proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'} engines: {node: '>= 0.10'}
@ -3745,6 +3861,9 @@ packages:
resolve-pkg-maps@1.0.0: resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
resolve-protobuf-schema@2.1.0:
resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==}
resolve@1.22.10: resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@ -3897,6 +4016,9 @@ packages:
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
setimmediate@1.0.5:
resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
setprototypeof@1.1.0: setprototypeof@1.1.0:
resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
@ -4079,6 +4201,10 @@ packages:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
terser-webpack-plugin@5.3.14: terser-webpack-plugin@5.3.14:
resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
@ -4627,6 +4753,9 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
ws@7.5.10: ws@7.5.10:
resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
engines: {node: '>=8.3.0'} engines: {node: '>=8.3.0'}
@ -4699,6 +4828,10 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
zip-stream@2.1.3:
resolution: {integrity: sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==}
engines: {node: '>= 6'}
snapshots: snapshots:
'@ampproject/remapping@2.3.0': '@ampproject/remapping@2.3.0':
@ -6286,6 +6419,29 @@ snapshots:
normalize-path: 3.0.0 normalize-path: 3.0.0
picomatch: 2.3.1 picomatch: 2.3.1
archiver-utils@2.1.0:
dependencies:
glob: 7.2.3
graceful-fs: 4.2.11
lazystream: 1.0.1
lodash.defaults: 4.2.0
lodash.difference: 4.5.0
lodash.flatten: 4.4.0
lodash.isplainobject: 4.0.6
lodash.union: 4.6.0
normalize-path: 3.0.0
readable-stream: 2.3.8
archiver@3.1.1:
dependencies:
archiver-utils: 2.1.0
async: 2.6.4
buffer-crc32: 0.2.13
glob: 7.2.3
readable-stream: 3.6.2
tar-stream: 2.2.0
zip-stream: 2.1.3
arg@4.1.3: {} arg@4.1.3: {}
argparse@2.0.1: {} argparse@2.0.1: {}
@ -6370,8 +6526,16 @@ snapshots:
get-intrinsic: 1.2.7 get-intrinsic: 1.2.7
is-array-buffer: 3.0.5 is-array-buffer: 3.0.5
asn1@0.2.6:
dependencies:
safer-buffer: 2.1.2
assertion-error@2.0.1: {} assertion-error@2.0.1: {}
async@2.6.4:
dependencies:
lodash: 4.17.21
asynckit@0.4.0: {} asynckit@0.4.0: {}
autoprefixer@10.4.20(postcss@8.4.49): autoprefixer@10.4.20(postcss@8.4.49):
@ -6394,10 +6558,18 @@ snapshots:
balanced-match@1.0.2: {} balanced-match@1.0.2: {}
base64-js@1.5.1: {}
batch@0.6.1: {} batch@0.6.1: {}
binary-extensions@2.3.0: {} binary-extensions@2.3.0: {}
bl@4.1.0:
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
body-parser@1.20.3: body-parser@1.20.3:
dependencies: dependencies:
bytes: 3.1.2 bytes: 3.1.2
@ -6453,9 +6625,16 @@ snapshots:
update-browserslist-db: 1.1.3(browserslist@4.24.4) update-browserslist-db: 1.1.3(browserslist@4.24.4)
optional: true optional: true
buffer-crc32@0.2.13: {}
buffer-from@1.1.2: buffer-from@1.1.2:
optional: true optional: true
buffer@5.7.1:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
bundle-name@4.1.0: bundle-name@4.1.0:
dependencies: dependencies:
run-applescript: 7.0.0 run-applescript: 7.0.0
@ -6568,11 +6747,17 @@ snapshots:
dependencies: dependencies:
delayed-stream: 1.0.0 delayed-stream: 1.0.0
commander@2.20.3: commander@2.20.3: {}
optional: true
commander@7.2.0: {} commander@7.2.0: {}
compress-commons@2.1.1:
dependencies:
buffer-crc32: 0.2.13
crc32-stream: 3.0.1
normalize-path: 3.0.0
readable-stream: 2.3.8
compressible@2.0.18: compressible@2.0.18:
dependencies: dependencies:
mime-db: 1.54.0 mime-db: 1.54.0
@ -6636,6 +6821,15 @@ snapshots:
optionalDependencies: optionalDependencies:
typescript: 5.7.3 typescript: 5.7.3
crc32-stream@3.0.1:
dependencies:
crc: 3.8.0
readable-stream: 3.6.2
crc@3.8.0:
dependencies:
buffer: 5.7.1
create-require@1.1.1: {} create-require@1.1.1: {}
cron@3.2.1: cron@3.2.1:
@ -6659,6 +6853,13 @@ snapshots:
shebang-command: 2.0.0 shebang-command: 2.0.0
which: 2.0.2 which: 2.0.2
crx@5.0.1:
dependencies:
archiver: 3.1.1
commander: 2.20.3
node-rsa: 1.1.1
pbf: 3.3.0
crypto-js@4.2.0: {} crypto-js@4.2.0: {}
css-tree@3.0.1: css-tree@3.0.1:
@ -6822,6 +7023,10 @@ snapshots:
encodeurl@2.0.0: {} encodeurl@2.0.0: {}
end-of-stream@1.4.4:
dependencies:
once: 1.4.0
enhanced-resolve@5.18.1: enhanced-resolve@5.18.1:
dependencies: dependencies:
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -7464,6 +7669,10 @@ snapshots:
fresh@0.5.2: {} fresh@0.5.2: {}
fs-constants@1.0.0: {}
fs.realpath@1.0.0: {}
fsevents@2.3.3: fsevents@2.3.3:
optional: true optional: true
@ -7553,6 +7762,15 @@ snapshots:
package-json-from-dist: 1.0.1 package-json-from-dist: 1.0.1
path-scurry: 1.11.1 path-scurry: 1.11.1
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
globals@14.0.0: {} globals@14.0.0: {}
globals@15.11.0: {} globals@15.11.0: {}
@ -7694,8 +7912,12 @@ snapshots:
dependencies: dependencies:
safer-buffer: 2.1.2 safer-buffer: 2.1.2
ieee754@1.2.1: {}
ignore@5.3.2: {} ignore@5.3.2: {}
immediate@3.0.6: {}
immer@10.1.1: {} immer@10.1.1: {}
import-fresh@3.3.0: import-fresh@3.3.0:
@ -7717,6 +7939,11 @@ snapshots:
imurmurhash@0.1.4: {} imurmurhash@0.1.4: {}
inflight@1.0.6:
dependencies:
once: 1.4.0
wrappy: 1.0.2
inherits@2.0.3: {} inherits@2.0.3: {}
inherits@2.0.4: {} inherits@2.0.4: {}
@ -8044,6 +8271,13 @@ snapshots:
object.assign: 4.1.5 object.assign: 4.1.5
object.values: 1.2.1 object.values: 1.2.1
jszip@3.10.1:
dependencies:
lie: 3.3.0
pako: 1.0.11
readable-stream: 2.3.8
setimmediate: 1.0.5
keyv@4.5.4: keyv@4.5.4:
dependencies: dependencies:
json-buffer: 3.0.1 json-buffer: 3.0.1
@ -8060,11 +8294,19 @@ snapshots:
picocolors: 1.1.1 picocolors: 1.1.1
shell-quote: 1.8.1 shell-quote: 1.8.1
lazystream@1.0.1:
dependencies:
readable-stream: 2.3.8
levn@0.4.1: levn@0.4.1:
dependencies: dependencies:
prelude-ls: 1.2.1 prelude-ls: 1.2.1
type-check: 0.4.0 type-check: 0.4.0
lie@3.3.0:
dependencies:
immediate: 3.0.6
lines-and-columns@1.2.4: {} lines-and-columns@1.2.4: {}
load-tsconfig@0.2.5: {} load-tsconfig@0.2.5: {}
@ -8081,8 +8323,18 @@ snapshots:
dependencies: dependencies:
p-locate: 5.0.0 p-locate: 5.0.0
lodash.defaults@4.2.0: {}
lodash.difference@4.5.0: {}
lodash.flatten@4.4.0: {}
lodash.isplainobject@4.0.6: {}
lodash.merge@4.6.2: {} lodash.merge@4.6.2: {}
lodash.union@4.6.0: {}
lodash@4.17.21: {} lodash@4.17.21: {}
loose-envify@1.4.0: loose-envify@1.4.0:
@ -8218,6 +8470,10 @@ snapshots:
node-releases@2.0.19: node-releases@2.0.19:
optional: true optional: true
node-rsa@1.1.1:
dependencies:
asn1: 0.2.6
normalize-path@3.0.0: {} normalize-path@3.0.0: {}
normalize-range@0.1.2: {} normalize-range@0.1.2: {}
@ -8294,6 +8550,10 @@ snapshots:
on-headers@1.0.2: {} on-headers@1.0.2: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
onetime@5.1.2: onetime@5.1.2:
dependencies: dependencies:
mimic-fn: 2.1.0 mimic-fn: 2.1.0
@ -8351,6 +8611,8 @@ snapshots:
package-manager-detector@0.2.5: {} package-manager-detector@0.2.5: {}
pako@1.0.11: {}
pako@2.1.0: {} pako@2.1.0: {}
parent-module@1.0.1: parent-module@1.0.1:
@ -8372,6 +8634,8 @@ snapshots:
path-exists@4.0.0: {} path-exists@4.0.0: {}
path-is-absolute@1.0.1: {}
path-key@3.1.1: {} path-key@3.1.1: {}
path-parse@1.0.7: {} path-parse@1.0.7: {}
@ -8389,6 +8653,11 @@ snapshots:
pathval@2.0.0: {} pathval@2.0.0: {}
pbf@3.3.0:
dependencies:
ieee754: 1.2.1
resolve-protobuf-schema: 2.1.0
perfect-debounce@1.0.0: {} perfect-debounce@1.0.0: {}
picocolors@1.1.1: {} picocolors@1.1.1: {}
@ -8447,6 +8716,8 @@ snapshots:
object-assign: 4.1.1 object-assign: 4.1.1
react-is: 16.13.1 react-is: 16.13.1
protocol-buffers-schema@3.6.0: {}
proxy-addr@2.0.7: proxy-addr@2.0.7:
dependencies: dependencies:
forwarded: 0.2.0 forwarded: 0.2.0
@ -8670,6 +8941,10 @@ snapshots:
resolve-pkg-maps@1.0.0: {} resolve-pkg-maps@1.0.0: {}
resolve-protobuf-schema@2.1.0:
dependencies:
protocol-buffers-schema: 3.6.0
resolve@1.22.10: resolve@1.22.10:
dependencies: dependencies:
is-core-module: 2.16.1 is-core-module: 2.16.1
@ -8885,6 +9160,8 @@ snapshots:
es-errors: 1.3.0 es-errors: 1.3.0
es-object-atoms: 1.0.0 es-object-atoms: 1.0.0
setimmediate@1.0.5: {}
setprototypeof@1.1.0: {} setprototypeof@1.1.0: {}
setprototypeof@1.2.0: {} setprototypeof@1.2.0: {}
@ -9126,6 +9403,14 @@ snapshots:
tapable@2.2.1: tapable@2.2.1:
optional: true optional: true
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
end-of-stream: 1.4.4
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
terser-webpack-plugin@5.3.14(esbuild@0.23.1)(webpack@5.96.1(esbuild@0.23.1)): terser-webpack-plugin@5.3.14(esbuild@0.23.1)(webpack@5.96.1(esbuild@0.23.1)):
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.25 '@jridgewell/trace-mapping': 0.3.25
@ -9936,6 +10221,8 @@ snapshots:
string-width: 5.1.2 string-width: 5.1.2
strip-ansi: 7.1.0 strip-ansi: 7.1.0
wrappy@1.0.2: {}
ws@7.5.10: {} ws@7.5.10: {}
ws@8.18.0: {} ws@8.18.0: {}
@ -9975,3 +10262,9 @@ snapshots:
yn@3.1.1: {} yn@3.1.1: {}
yocto-queue@0.1.0: {} yocto-queue@0.1.0: {}
zip-stream@2.1.3:
dependencies:
archiver-utils: 2.1.0
compress-commons: 2.1.1
readable-stream: 3.6.2

View File

@ -20,7 +20,10 @@ export default defineConfig({
mode: "development", mode: "development",
devtool: "inline-source-map", devtool: "inline-source-map",
} }
: {}), : {
mode: "production",
devtool: false,
}),
context: __dirname, context: __dirname,
entry: { entry: {
service_worker: `${src}/service_worker.ts`, service_worker: `${src}/service_worker.ts`,
@ -116,15 +119,15 @@ export default defineConfig({
// 将manifest.json内版本号替换为package.json中版本号 // 将manifest.json内版本号替换为package.json中版本号
transform(content: Buffer) { transform(content: Buffer) {
const manifest = JSON.parse(content.toString()); const manifest = JSON.parse(content.toString());
if (isDev) { if (isDev || isBeta) {
manifest.name = "ScriptCat - Dev"; manifest.name = "__MSG_scriptcat_beta__";
// manifest.content_security_policy = "script-src 'self' https://cdn.crowdin.com; object-src 'self'"; // manifest.content_security_policy = "script-src 'self' https://cdn.crowdin.com; object-src 'self'";
} }
return JSON.stringify(manifest); return JSON.stringify(manifest);
}, },
}, },
{ {
from: `${assets}/logo${isDev ? "-beta" : ""}.png`, from: `${assets}/logo${isDev || isBeta ? "-beta" : ""}.png`,
to: `${dist}/ext/assets/logo.png`, to: `${dist}/ext/assets/logo.png`,
}, },
{ from: `${assets}/logo`, to: `${dist}/ext/assets/logo` }, { from: `${assets}/logo`, to: `${dist}/ext/assets/logo` },
@ -175,7 +178,7 @@ export default defineConfig({
].filter(Boolean), ].filter(Boolean),
optimization: { optimization: {
minimizer: [ minimizer: [
new rspack.SwcJsMinimizerRspackPlugin(), new rspack.SwcJsMinimizerRspackPlugin({}),
new rspack.LightningCssMinimizerRspackPlugin({ new rspack.LightningCssMinimizerRspackPlugin({
minimizerOptions: { targets }, minimizerOptions: { targets },
}), }),

123
scripts/pack.js Normal file
View File

@ -0,0 +1,123 @@
const fs = require("fs");
const JSZip = require("jszip");
const ChromeExtension = require("crx");
const { execSync } = require("child_process");
const semver = require("semver");
const manifest = require("../src/manifest.json");
const package = require("../package.json");
// 判断是否为beta版本
const version = semver.parse(package.version);
if (version.prerelease.length) {
// 替换manifest中的版本
let betaVersion = 1000;
switch (version.prerelease[0]) {
case "alpha":
// 第一位进1
betaVersion += parseInt(version.prerelease[1] || "0", 10) + 1 || 1;
break;
case "beta":
// 第二位进1
betaVersion += 10 * (parseInt(version.prerelease[1] || "0", 10) + 1 || 1);
break;
default:
throw new Error("未知的版本类型");
}
manifest.version = `${version.major.toString()}.${version.minor.toString()}.${version.patch.toString()}.${betaVersion.toString()}`;
manifest.name = `${manifest.name} Beta`;
} else {
manifest.version = package.version;
}
// 处理manifest version
let str = fs.readFileSync("./src/manifest.json").toString();
str = str.replace(/"version": "(.*?)"/, `"version": "${manifest.version}"`);
fs.writeFileSync("./src/manifest.json", str);
// 处理configSystem version
let configSystem = fs.readFileSync("./src/app/const.ts").toString();
// 如果是由github action的分支触发的构建,在版本中再加上commit id
if (process.env.GITHUB_REF_TYPE === "branch") {
configSystem = configSystem.replace(
"ExtVersion = version;",
`ExtVersion = \`\${version}+${process.env.GITHUB_SHA.substring(0, 7)}\`;`
);
fs.writeFileSync("./src/app/const.ts", configSystem);
}
execSync("npm run build", { stdio: "inherit" });
// 处理firefox和chrome的zip压缩包
const firefoxManifest = { ...manifest };
const chromeManifest = { ...manifest };
delete chromeManifest.content_security_policy;
delete firefoxManifest.sandbox;
// firefoxManifest.content_security_policy =
// "script-src 'self' blob:; object-src 'self' blob:";
firefoxManifest.browser_specific_settings = {
gecko: { strict_min_version: "91.1.0" },
};
const chrome = new JSZip();
const firefox = new JSZip();
function addDir(zip, localDir, toDir, filters) {
const files = fs.readdirSync(localDir);
files.forEach((file) => {
const localPath = `${localDir}/${file}`;
const toPath = `${toDir}${file}`;
const stats = fs.statSync(localPath);
if (stats.isDirectory()) {
addDir(zip, localPath, `${toPath}/`, filters);
} else {
if (filters && filters.includes(file)) {
return;
}
zip.file(toPath, fs.readFileSync(localPath));
}
});
}
chrome.file("manifest.json", JSON.stringify(chromeManifest));
firefox.file("manifest.json", JSON.stringify(firefoxManifest));
addDir(chrome, "./dist/ext", "", ["manifest.json"]);
addDir(firefox, "./dist/ext", "", ["manifest.json", "ts.worker.js"]);
// 添加ts.worker.js名字为gz
firefox.file("src/ts.worker.js.gz", fs.readFileSync("./dist/ext/src/ts.worker.js"));
// 导出zip包
chrome
.generateNodeStream({
type: "nodebuffer",
streamFiles: true,
compression: "DEFLATE",
})
.pipe(fs.createWriteStream(`./dist/${package.name}-v${package.version}-chrome.zip`));
firefox
.generateNodeStream({
type: "nodebuffer",
streamFiles: true,
compression: "DEFLATE",
})
.pipe(fs.createWriteStream(`./dist/${package.name}-v${package.version}-firefox.zip`));
// 处理crx
const crx = new ChromeExtension({
privateKey: fs.readFileSync("./dist/scriptcat.pem"),
});
crx
.load("./dist/ext")
.then((crxFile) => crxFile.pack())
.then((crxBuffer) => {
fs.writeFileSync(`./dist/${package.name}-v${package.version}-chrome.crx`, crxBuffer);
})
.catch((err) => {
// eslint-disable-next-line no-console
console.error(err);
});

View File

@ -21,8 +21,8 @@ export default class GMApi {
readyState: <any>xhr.readyState, readyState: <any>xhr.readyState,
status: xhr.status, status: xhr.status,
statusText: xhr.statusText, statusText: xhr.statusText,
// header由service_worker处理 // header由service_worker处理但是存在特殊域名例如edge.microsoft.com无法获取的情况在这里增加一个默认值
// responseHeaders: xhr.getAllResponseHeaders().replace(removeXCat, ""), responseHeaders: xhr.getAllResponseHeaders(),
responseType: details.responseType, responseType: details.responseType,
}; };
if (xhr.readyState === 4) { if (xhr.readyState === 4) {

View File

@ -168,7 +168,7 @@ export default class GMApi {
"headersReceived:" + requestId, "headersReceived:" + requestId,
(details: chrome.webRequest.WebResponseHeadersDetails) => { (details: chrome.webRequest.WebResponseHeadersDetails) => {
details.responseHeaders?.forEach((header) => { details.responseHeaders?.forEach((header) => {
responseHeader += header.name + ": " + header.value + "\n"; responseHeader += header.name + ": " + header.value + "\r\n";
}); });
this.gmXhrHeadersReceived.removeAllListeners("headersReceived:" + requestId); this.gmXhrHeadersReceived.removeAllListeners("headersReceived:" + requestId);
} }
@ -178,7 +178,9 @@ export default class GMApi {
offscreenCon.onMessage((msg: { action: string; data: any }) => { offscreenCon.onMessage((msg: { action: string; data: any }) => {
// 发送到content // 发送到content
// 替换msg.data.responseHeaders // 替换msg.data.responseHeaders
if (responseHeader) {
msg.data.responseHeaders = responseHeader; msg.data.responseHeaders = responseHeader;
}
con.getConnect().sendMessage(msg); con.getConnect().sendMessage(msg);
}); });
} }

View File

@ -194,8 +194,6 @@ export class RuntimeService {
}) })
); );
console.log("pageLoad", enableScript);
this.mq.emit("pageLoad", { this.mq.emit("pageLoad", {
tabId: chromeSender.tab?.id, tabId: chromeSender.tab?.id,
frameId: chromeSender.frameId, frameId: chromeSender.frameId,

View File

@ -57,7 +57,6 @@ export class ValueService {
valueModel.data[key] = value; valueModel.data[key] = value;
await this.valueDAO.save(storageName, valueModel); await this.valueDAO.save(storageName, valueModel);
} }
console.log(valueModel);
return true; return true;
}); });
const sendData: ValueUpdateData = { const sendData: ValueUpdateData = {

View File

@ -5,6 +5,9 @@
"scriptcat": { "scriptcat": {
"message": "ScriptCat" "message": "ScriptCat"
}, },
"scriptcat_beta": {
"message": "ScriptCat Beta"
},
"scriptcat_description": { "scriptcat_description": {
"message": "Everything can be scripted, allowing your browser to do more!" "message": "Everything can be scripted, allowing your browser to do more!"
} }

View File

@ -5,6 +5,9 @@
"scriptcat": { "scriptcat": {
"message": "ScriptCat" "message": "ScriptCat"
}, },
"scriptcat_beta": {
"message": "ScriptCat Beta"
},
"scriptcat_description": { "scriptcat_description": {
"message": "Mọi thứ đều có thể viết được, cho phép trình duyệt của bạn làm được nhiều việc hơn!" "message": "Mọi thứ đều có thể viết được, cho phép trình duyệt của bạn làm được nhiều việc hơn!"
} }

View File

@ -5,6 +5,9 @@
"scriptcat": { "scriptcat": {
"message": "脚本猫" "message": "脚本猫"
}, },
"scriptcat_beta": {
"message": "脚本猫 Beta"
},
"scriptcat_description": { "scriptcat_description": {
"message": "万物皆可脚本化,让你的浏览器可以做更多的事情!" "message": "万物皆可脚本化,让你的浏览器可以做更多的事情!"
} }

View File

@ -23,7 +23,6 @@
"default_locale": "zh_CN", "default_locale": "zh_CN",
"permissions": [ "permissions": [
"tabs", "tabs",
"action",
"storage", "storage",
"offscreen", "offscreen",
"scripting", "scripting",
@ -35,7 +34,7 @@
"declarativeNetRequest" "declarativeNetRequest"
], ],
"host_permissions": [ "host_permissions": [
"*://*/*" "<all_urls>"
], ],
"sandbox": { "sandbox": {
"pages": [ "pages": [

View File

@ -8,6 +8,7 @@ import DBWriter from "@App/app/logger/db_writer.ts";
import "@arco-design/web-react/dist/css/arco.css"; import "@arco-design/web-react/dist/css/arco.css";
import "@App/locales/locales"; import "@App/locales/locales";
import "@App/index.css"; import "@App/index.css";
import "./index.css";
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { store } from "../store/store.ts"; import { store } from "../store/store.ts";

View File

@ -1,36 +1,14 @@
import dts from "@App/types/scriptcat.d.ts"; import dts from "@App/types/scriptcat.d.ts";
import { languages } from "monaco-editor"; import { languages } from "monaco-editor";
import pako from "pako";
import Cache from "@App/app/cache";
import { isDebug, isFirefox } from "./utils";
import EventEmitter from "eventemitter3";
// 注册eslint // 注册eslint
const linterWorker = new Worker("/src/linter.worker.js"); // const linterWorker = new Worker("/src/linter.worker.js");
export default function registerEditor() { export default function registerEditor() {
// @ts-ignore
window.tsUrl = "";
fetch(chrome.runtime.getURL(`/src/ts.worker.js${isFirefox() ? ".gz" : ""}`))
.then((resp) => resp.blob())
.then(async (blob) => {
let result: ArrayBuffer;
if (isDebug()) {
result = await blob.arrayBuffer();
} else {
result = pako.inflate(await blob.arrayBuffer());
}
// @ts-ignore
window.tsUrl = URL.createObjectURL(new Blob([result]));
});
// @ts-ignore
window.MonacoEnvironment = { window.MonacoEnvironment = {
getWorkerUrl(moduleId: any, label: any) { getWorkerUrl(moduleId: any, label: any) {
if (label === "typescript" || label === "javascript") { if (label === "typescript" || label === "javascript") {
// return "/src/ts.worker.js"; return "/src/ts.worker.js";
// @ts-ignore
return window.tsUrl;
} }
return "/src/editor.worker.js"; return "/src/editor.worker.js";
}, },
@ -81,74 +59,74 @@ export default function registerEditor() {
}, },
}); });
// 处理quick fix // // 处理quick fix
languages.registerCodeActionProvider("javascript", { // languages.registerCodeActionProvider("javascript", {
provideCodeActions: (model /** ITextModel */, range /** Range */, context /** CodeActionContext */) => { // provideCodeActions: (model /** ITextModel */, range /** Range */, context /** CodeActionContext */) => {
const actions: languages.CodeAction[] = []; // // const actions: languages.CodeAction[] = [];
const eslintFix = <Map<string, any>>Cache.getInstance().get("eslint-fix"); // // const eslintFix = <Map<string, any>>Cache.getInstance().get("eslint-fix");
for (let i = 0; i < context.markers.length; i += 1) { // // for (let i = 0; i < context.markers.length; i += 1) {
// 判断有没有修复方案 // // // 判断有没有修复方案
const val = context.markers[i]; // // const val = context.markers[i];
const code = typeof val.code === "string" ? val.code : val.code!.value; // // const code = typeof val.code === "string" ? val.code : val.code!.value;
const fix = eslintFix.get( // // const fix = eslintFix.get(
`${code}|${val.startLineNumber}|${val.endLineNumber}|${val.startColumn}|${val.endColumn}` // // `${code}|${val.startLineNumber}|${val.endLineNumber}|${val.startColumn}|${val.endColumn}`
); // // );
if (fix) { // // if (fix) {
const edit: languages.IWorkspaceTextEdit = { // // const edit: languages.IWorkspaceTextEdit = {
resource: model.uri, // // resource: model.uri,
textEdit: { // // textEdit: {
range: fix.range, // // range: fix.range,
text: fix.text, // // text: fix.text,
}, // // },
versionId: undefined, // // versionId: undefined,
}; // // };
actions.push(<languages.CodeAction>{ // // actions.push(<languages.CodeAction>{
title: `修复 ${code} 问题`, // // title: `修复 ${code} 问题`,
diagnostics: [val], // // diagnostics: [val],
kind: "quickfix", // // kind: "quickfix",
edit: { // // edit: {
edits: [edit], // // edits: [edit],
}, // // },
isPreferred: true, // // isPreferred: true,
}); // // });
} // // }
} // // }
// const actions = context.markers.map((error) => { // // const actions = context.markers.map((error) => {
// const edit: languages.IWorkspaceTextEdit = { // // const edit: languages.IWorkspaceTextEdit = {
// resource: model.uri, // // resource: model.uri,
// textEdit: { // // textEdit: {
// range, // // range,
// text: "console.log(1)", // // text: "console.log(1)",
// }, // // },
// versionId: undefined, // // versionId: undefined,
// // };
// // return <languages.CodeAction>{
// // title: ``,
// // diagnostics: [error],
// // kind: "quickfix",
// // edit: {
// // edits: [edit],
// // },
// // isPreferred: true,
// // };
// // });
// return {
// actions,
// dispose: () => {},
// }; // };
// return <languages.CodeAction>{
// title: ``,
// diagnostics: [error],
// kind: "quickfix",
// edit: {
// edits: [edit],
// }, // },
// isPreferred: true,
// };
// }); // });
return {
actions,
dispose: () => {},
};
},
});
} }
export class LinterWorker { // export class LinterWorker {
static hook = new EventEmitter(); // static hook = new EventEmitter();
static sendLinterMessage(data: unknown) { // static sendLinterMessage(data: unknown) {
linterWorker.postMessage(data); // linterWorker.postMessage(data);
} // }
} // }
linterWorker.onmessage = (event) => { // linterWorker.onmessage = (event) => {
LinterWorker.hook.emit("message", event.data); // LinterWorker.hook.emit("message", event.data);
}; // };