mirror of
https://github.com/movie-web/extension.git
synced 2025-09-13 18:13:25 +00:00
Compare commits
14 Commits
1.0.1
...
less-permi
Author | SHA1 | Date | |
---|---|---|---|
|
75e8ca945b | ||
|
1a5d8c184b | ||
|
08f8fbbcfd | ||
|
bd2733a110 | ||
|
9f34642a96 | ||
|
e1fa034074 | ||
|
3b88b136e8 | ||
|
67ef3a1e88 | ||
|
302b6ef71c | ||
|
c740bc6685 | ||
|
f49cd01b7a | ||
|
65ff4ab91a | ||
|
a2647a58d6 | ||
|
658f59eb24 |
16
README.md
16
README.md
@@ -10,3 +10,19 @@ We use pnpm with the latest version of NodeJS.
|
|||||||
pnpm i
|
pnpm i
|
||||||
pnpm dev
|
pnpm dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## About permissions
|
||||||
|
|
||||||
|
The extension uses the following base permission:
|
||||||
|
- `activeTab` - This only gives access to knowing what tab is currently active, in this case we use it for making the on/off button per site on the popout. **This does not allow us to know the content of the site active tab** and because of that, this is not something that is prompted or shown to users.
|
||||||
|
- `declarativeNetRequestWithHostAccess` - This allows us to do network request manipulation, but only for sites we have host access for. **This only gives us access after the user has had to accept permission prompt** and because of that, this is not something that is prompted or shown to users.
|
||||||
|
- `scripting` - This allows us to inject helper scripts, but only for sites we have host access for. **This only gives us access after the user has had to accept permission prompt** and because of that, this is not something that is prompted or shown to users.
|
||||||
|
- `storage` - We need to store which sites are enabled or disabled by the user. This poses no risks to users so this is not something that is prompted or shown to users.
|
||||||
|
|
||||||
|
On top of this list, we get the ability to **request** access for the following origins:
|
||||||
|
- `https://*/*`
|
||||||
|
- `http://*/*`
|
||||||
|
|
||||||
|
This means we can request permissions for all possible sites. This is only a prompt where the browser asks if the extension can access a site, this does not give us access without the user knowing.
|
||||||
|
|
||||||
|
Once a user has requested to enable the extension for a site. It will inject a helper script so the site knows how to communicate with the extension. Then the extension will do the work that a normal site wouldn't be able to do (like making cross-origin requests or sending headers that are normally restricted). The helper script will be injected everytime they open that site.
|
||||||
|
19
package.json
19
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@movie-web/extension",
|
"name": "@movie-web/extension",
|
||||||
"displayName": "movie-web extension",
|
"displayName": "movie-web extension",
|
||||||
"version": "1.0.1",
|
"version": "1.0.3",
|
||||||
"description": "Enhance your movie-web experience with just one click",
|
"description": "Enhance your movie-web experience with just one click",
|
||||||
"author": "movie-web",
|
"author": "movie-web",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -18,11 +18,12 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@plasmohq/messaging": "^0.6.1",
|
"@plasmohq/messaging": "^0.6.1",
|
||||||
"@plasmohq/storage": "^1.9.0",
|
"@plasmohq/storage": "^1.9.0",
|
||||||
"plasmo": "0.84.0",
|
"plasmo": "0.84.2",
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "18.2.0"
|
"react-dom": "18.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@parcel/packager-ts": "2.9.3",
|
||||||
"@types/chrome": "0.0.251",
|
"@types/chrome": "0.0.251",
|
||||||
"@types/firefox-webext-browser": "^120.0.0",
|
"@types/firefox-webext-browser": "^120.0.0",
|
||||||
"@types/node": "20.9.0",
|
"@types/node": "20.9.0",
|
||||||
@@ -43,13 +44,13 @@
|
|||||||
},
|
},
|
||||||
"manifest": {
|
"manifest": {
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"declarativeNetRequest",
|
"declarativeNetRequestWithHostAccess",
|
||||||
"tabs"
|
"activeTab",
|
||||||
|
"scripting"
|
||||||
],
|
],
|
||||||
"host_permissions": [
|
"optional_host_permissions": [
|
||||||
"<all_urls>",
|
"https://*/*",
|
||||||
"https://dev.movie-web.app/*",
|
"http://*/*"
|
||||||
"https://movie-web.app/*"
|
|
||||||
],
|
],
|
||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
@@ -57,4 +58,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
215
pnpm-lock.yaml
generated
215
pnpm-lock.yaml
generated
@@ -12,8 +12,8 @@ dependencies:
|
|||||||
specifier: ^1.9.0
|
specifier: ^1.9.0
|
||||||
version: 1.9.0(react@18.2.0)
|
version: 1.9.0(react@18.2.0)
|
||||||
plasmo:
|
plasmo:
|
||||||
specifier: 0.84.0
|
specifier: 0.84.2
|
||||||
version: 0.84.0(react-dom@18.2.0)(react@18.2.0)
|
version: 0.84.2(react-dom@18.2.0)(react@18.2.0)
|
||||||
react:
|
react:
|
||||||
specifier: 18.2.0
|
specifier: 18.2.0
|
||||||
version: 18.2.0
|
version: 18.2.0
|
||||||
@@ -22,6 +22,9 @@ dependencies:
|
|||||||
version: 18.2.0(react@18.2.0)
|
version: 18.2.0(react@18.2.0)
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@parcel/packager-ts':
|
||||||
|
specifier: 2.9.3
|
||||||
|
version: 2.9.3(@parcel/core@2.9.3)
|
||||||
'@types/chrome':
|
'@types/chrome':
|
||||||
specifier: 0.0.251
|
specifier: 0.0.251
|
||||||
version: 0.0.251
|
version: 0.0.251
|
||||||
@@ -596,7 +599,6 @@ packages:
|
|||||||
|
|
||||||
/@lezer/common@1.2.0:
|
/@lezer/common@1.2.0:
|
||||||
resolution: {integrity: sha512-Wmvlm4q6tRpwiy20TnB3yyLTZim38Tkc50dPY8biQRwqE+ati/wD84rm3N15hikvdT4uSg9phs9ubjvcLmkpKg==}
|
resolution: {integrity: sha512-Wmvlm4q6tRpwiy20TnB3yyLTZim38Tkc50dPY8biQRwqE+ati/wD84rm3N15hikvdT4uSg9phs9ubjvcLmkpKg==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@lezer/lr@0.15.8:
|
/@lezer/lr@0.15.8:
|
||||||
resolution: {integrity: sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==}
|
resolution: {integrity: sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==}
|
||||||
@@ -608,7 +610,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==}
|
resolution: {integrity: sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lezer/common': 1.2.0
|
'@lezer/common': 1.2.0
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@ljharb/through@2.3.11:
|
/@ljharb/through@2.3.11:
|
||||||
resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==}
|
resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==}
|
||||||
@@ -630,7 +631,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@lmdb/lmdb-darwin-x64@2.5.2:
|
/@lmdb/lmdb-darwin-x64@2.5.2:
|
||||||
@@ -646,7 +646,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@lmdb/lmdb-linux-arm64@2.5.2:
|
/@lmdb/lmdb-linux-arm64@2.5.2:
|
||||||
@@ -662,7 +661,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@lmdb/lmdb-linux-arm@2.5.2:
|
/@lmdb/lmdb-linux-arm@2.5.2:
|
||||||
@@ -678,7 +676,6 @@ packages:
|
|||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@lmdb/lmdb-linux-x64@2.5.2:
|
/@lmdb/lmdb-linux-x64@2.5.2:
|
||||||
@@ -694,7 +691,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@lmdb/lmdb-win32-x64@2.5.2:
|
/@lmdb/lmdb-win32-x64@2.5.2:
|
||||||
@@ -710,7 +706,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@mischnic/json-sourcemap@0.1.0:
|
/@mischnic/json-sourcemap@0.1.0:
|
||||||
@@ -729,14 +724,12 @@ packages:
|
|||||||
'@lezer/common': 1.2.0
|
'@lezer/common': 1.2.0
|
||||||
'@lezer/lr': 1.3.14
|
'@lezer/lr': 1.3.14
|
||||||
json5: 2.2.3
|
json5: 2.2.3
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2:
|
/@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2:
|
||||||
resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==}
|
resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2:
|
/@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2:
|
||||||
@@ -744,7 +737,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2:
|
/@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2:
|
||||||
@@ -752,7 +744,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2:
|
/@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2:
|
||||||
@@ -760,7 +751,6 @@ packages:
|
|||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2:
|
/@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2:
|
||||||
@@ -768,7 +758,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2:
|
/@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2:
|
||||||
@@ -776,7 +765,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@nodelib/fs.scandir@2.1.5:
|
/@nodelib/fs.scandir@2.1.5:
|
||||||
@@ -835,7 +823,6 @@ packages:
|
|||||||
'@parcel/logger': 2.9.3
|
'@parcel/logger': 2.9.3
|
||||||
'@parcel/utils': 2.9.3
|
'@parcel/utils': 2.9.3
|
||||||
lmdb: 2.7.11
|
lmdb: 2.7.11
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/codeframe@2.8.3:
|
/@parcel/codeframe@2.8.3:
|
||||||
resolution: {integrity: sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==}
|
resolution: {integrity: sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==}
|
||||||
@@ -849,7 +836,6 @@ packages:
|
|||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/compressor-raw@2.9.3(@parcel/core@2.9.3):
|
/@parcel/compressor-raw@2.9.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==}
|
resolution: {integrity: sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==}
|
||||||
@@ -937,7 +923,6 @@ packages:
|
|||||||
msgpackr: 1.10.1
|
msgpackr: 1.10.1
|
||||||
nullthrows: 1.1.1
|
nullthrows: 1.1.1
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/diagnostic@2.8.3:
|
/@parcel/diagnostic@2.8.3:
|
||||||
resolution: {integrity: sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==}
|
resolution: {integrity: sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==}
|
||||||
@@ -953,7 +938,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@mischnic/json-sourcemap': 0.1.1
|
'@mischnic/json-sourcemap': 0.1.1
|
||||||
nullthrows: 1.1.1
|
nullthrows: 1.1.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/events@2.8.3:
|
/@parcel/events@2.8.3:
|
||||||
resolution: {integrity: sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==}
|
resolution: {integrity: sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==}
|
||||||
@@ -963,7 +947,6 @@ packages:
|
|||||||
/@parcel/events@2.9.3:
|
/@parcel/events@2.9.3:
|
||||||
resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==}
|
resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/fs-search@2.8.3:
|
/@parcel/fs-search@2.8.3:
|
||||||
resolution: {integrity: sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==}
|
resolution: {integrity: sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==}
|
||||||
@@ -975,7 +958,6 @@ packages:
|
|||||||
/@parcel/fs-search@2.9.3:
|
/@parcel/fs-search@2.9.3:
|
||||||
resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==}
|
resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/fs@2.8.3(@parcel/core@2.9.3):
|
/@parcel/fs@2.8.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==}
|
resolution: {integrity: sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==}
|
||||||
@@ -1003,14 +985,12 @@ packages:
|
|||||||
'@parcel/utils': 2.9.3
|
'@parcel/utils': 2.9.3
|
||||||
'@parcel/watcher': 2.2.0
|
'@parcel/watcher': 2.2.0
|
||||||
'@parcel/workers': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/workers': 2.9.3(@parcel/core@2.9.3)
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/graph@2.9.3:
|
/@parcel/graph@2.9.3:
|
||||||
resolution: {integrity: sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==}
|
resolution: {integrity: sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
nullthrows: 1.1.1
|
nullthrows: 1.1.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/hash@2.8.3:
|
/@parcel/hash@2.8.3:
|
||||||
resolution: {integrity: sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==}
|
resolution: {integrity: sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==}
|
||||||
@@ -1025,7 +1005,6 @@ packages:
|
|||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
xxhash-wasm: 0.4.2
|
xxhash-wasm: 0.4.2
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/logger@2.8.3:
|
/@parcel/logger@2.8.3:
|
||||||
resolution: {integrity: sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==}
|
resolution: {integrity: sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==}
|
||||||
@@ -1041,7 +1020,6 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/diagnostic': 2.9.3
|
'@parcel/diagnostic': 2.9.3
|
||||||
'@parcel/events': 2.9.3
|
'@parcel/events': 2.9.3
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/markdown-ansi@2.8.3:
|
/@parcel/markdown-ansi@2.8.3:
|
||||||
resolution: {integrity: sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==}
|
resolution: {integrity: sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==}
|
||||||
@@ -1055,7 +1033,6 @@ packages:
|
|||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/namer-default@2.9.3(@parcel/core@2.9.3):
|
/@parcel/namer-default@2.9.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==}
|
resolution: {integrity: sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==}
|
||||||
@@ -1080,7 +1057,6 @@ packages:
|
|||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/optimizer-css@2.9.3(@parcel/core@2.9.3):
|
/@parcel/optimizer-css@2.9.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==}
|
resolution: {integrity: sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==}
|
||||||
@@ -1201,7 +1177,6 @@ packages:
|
|||||||
'@parcel/utils': 2.9.3
|
'@parcel/utils': 2.9.3
|
||||||
'@parcel/workers': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/workers': 2.9.3(@parcel/core@2.9.3)
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/packager-css@2.9.3(@parcel/core@2.9.3):
|
/@parcel/packager-css@2.9.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==}
|
resolution: {integrity: sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==}
|
||||||
@@ -1265,6 +1240,15 @@ packages:
|
|||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@parcel/packager-ts@2.9.3(@parcel/core@2.9.3):
|
||||||
|
resolution: {integrity: sha512-Vd9dm1FqaFDw/kWCh95zgGS08HvIpSLg5Aa+AIhFiM0G+kpRSItcBSNJVwC7JKmLk1rmQhmQKoCKX26+nvyAzA==}
|
||||||
|
engines: {node: '>= 12.0.0', parcel: ^2.9.3}
|
||||||
|
dependencies:
|
||||||
|
'@parcel/plugin': 2.9.3(@parcel/core@2.9.3)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@parcel/core'
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@parcel/plugin@2.8.3(@parcel/core@2.9.3):
|
/@parcel/plugin@2.8.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==}
|
resolution: {integrity: sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
@@ -1281,7 +1265,6 @@ packages:
|
|||||||
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/profiler@2.9.3:
|
/@parcel/profiler@2.9.3:
|
||||||
resolution: {integrity: sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==}
|
resolution: {integrity: sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==}
|
||||||
@@ -1290,7 +1273,6 @@ packages:
|
|||||||
'@parcel/diagnostic': 2.9.3
|
'@parcel/diagnostic': 2.9.3
|
||||||
'@parcel/events': 2.9.3
|
'@parcel/events': 2.9.3
|
||||||
chrome-trace-event: 1.0.3
|
chrome-trace-event: 1.0.3
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/reporter-bundle-buddy@2.9.3(@parcel/core@2.9.3):
|
/@parcel/reporter-bundle-buddy@2.9.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-9ftzLZ161USdvnxueT55EWufLI48va0xJfB5MAJLG92VAS1N1FSFgYKdkGFzBKw0eK9UScQNYnntCGC17rBayQ==}
|
resolution: {integrity: sha512-9ftzLZ161USdvnxueT55EWufLI48va0xJfB5MAJLG92VAS1N1FSFgYKdkGFzBKw0eK9UScQNYnntCGC17rBayQ==}
|
||||||
@@ -1382,7 +1364,6 @@ packages:
|
|||||||
engines: {node: ^12.18.3 || >=14}
|
engines: {node: ^12.18.3 || >=14}
|
||||||
dependencies:
|
dependencies:
|
||||||
detect-libc: 1.0.3
|
detect-libc: 1.0.3
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/transformer-babel@2.9.3(@parcel/core@2.9.3):
|
/@parcel/transformer-babel@2.9.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==}
|
resolution: {integrity: sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==}
|
||||||
@@ -1631,7 +1612,6 @@ packages:
|
|||||||
utility-types: 3.10.0
|
utility-types: 3.10.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/utils@2.8.3:
|
/@parcel/utils@2.8.3:
|
||||||
resolution: {integrity: sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==}
|
resolution: {integrity: sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==}
|
||||||
@@ -1658,7 +1638,6 @@ packages:
|
|||||||
'@parcel/source-map': 2.1.1
|
'@parcel/source-map': 2.1.1
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
nullthrows: 1.1.1
|
nullthrows: 1.1.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/watcher-android-arm64@2.2.0:
|
/@parcel/watcher-android-arm64@2.2.0:
|
||||||
resolution: {integrity: sha512-nU2wh00CTQT9rr1TIKTjdQ9lAGYpmz6XuKw0nAwAN+S2A5YiD55BK1u+E5WMCT8YOIDe/n6gaj4o/Bi9294SSQ==}
|
resolution: {integrity: sha512-nU2wh00CTQT9rr1TIKTjdQ9lAGYpmz6XuKw0nAwAN+S2A5YiD55BK1u+E5WMCT8YOIDe/n6gaj4o/Bi9294SSQ==}
|
||||||
@@ -1666,7 +1645,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-darwin-arm64@2.2.0:
|
/@parcel/watcher-darwin-arm64@2.2.0:
|
||||||
@@ -1675,7 +1653,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-darwin-x64@2.2.0:
|
/@parcel/watcher-darwin-x64@2.2.0:
|
||||||
@@ -1684,7 +1661,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-linux-arm-glibc@2.2.0:
|
/@parcel/watcher-linux-arm-glibc@2.2.0:
|
||||||
@@ -1693,7 +1669,6 @@ packages:
|
|||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-linux-arm64-glibc@2.2.0:
|
/@parcel/watcher-linux-arm64-glibc@2.2.0:
|
||||||
@@ -1702,7 +1677,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-linux-arm64-musl@2.2.0:
|
/@parcel/watcher-linux-arm64-musl@2.2.0:
|
||||||
@@ -1711,7 +1685,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-linux-x64-glibc@2.2.0:
|
/@parcel/watcher-linux-x64-glibc@2.2.0:
|
||||||
@@ -1720,7 +1693,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-linux-x64-musl@2.2.0:
|
/@parcel/watcher-linux-x64-musl@2.2.0:
|
||||||
@@ -1729,7 +1701,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-win32-arm64@2.2.0:
|
/@parcel/watcher-win32-arm64@2.2.0:
|
||||||
@@ -1738,7 +1709,6 @@ packages:
|
|||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher-win32-x64@2.2.0:
|
/@parcel/watcher-win32-x64@2.2.0:
|
||||||
@@ -1747,7 +1717,6 @@ packages:
|
|||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@parcel/watcher@2.2.0:
|
/@parcel/watcher@2.2.0:
|
||||||
@@ -1769,7 +1738,6 @@ packages:
|
|||||||
'@parcel/watcher-linux-x64-musl': 2.2.0
|
'@parcel/watcher-linux-x64-musl': 2.2.0
|
||||||
'@parcel/watcher-win32-arm64': 2.2.0
|
'@parcel/watcher-win32-arm64': 2.2.0
|
||||||
'@parcel/watcher-win32-x64': 2.2.0
|
'@parcel/watcher-win32-x64': 2.2.0
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@parcel/workers@2.8.3(@parcel/core@2.9.3):
|
/@parcel/workers@2.8.3(@parcel/core@2.9.3):
|
||||||
resolution: {integrity: sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==}
|
resolution: {integrity: sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==}
|
||||||
@@ -1799,7 +1767,6 @@ packages:
|
|||||||
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
||||||
'@parcel/utils': 2.9.3
|
'@parcel/utils': 2.9.3
|
||||||
nullthrows: 1.1.1
|
nullthrows: 1.1.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@pkgjs/parseargs@0.11.0:
|
/@pkgjs/parseargs@0.11.0:
|
||||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||||
@@ -2000,8 +1967,8 @@ packages:
|
|||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@plasmohq/parcel-config@0.40.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2):
|
/@plasmohq/parcel-config@0.40.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2):
|
||||||
resolution: {integrity: sha512-aDyZIL3ScTmA1CsB/Sym7SxOMVSFUgNQrFovD+sl1M2nrYytqkLDFs7mspCpBlsxCGt97s8rD/kufke21UUHRA==}
|
resolution: {integrity: sha512-YuE2wxtmMcygz+YC0YZbFRsRp6Vqe+qs+TJs15sn5jKVcOu01RZeKuThKOmcTCc1M6Bcst5OkGsV8RmkpGKKCQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3)
|
||||||
'@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2)
|
'@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2)
|
||||||
@@ -2030,12 +1997,12 @@ packages:
|
|||||||
'@plasmohq/parcel-optimizer-encapsulate': 0.0.7
|
'@plasmohq/parcel-optimizer-encapsulate': 0.0.7
|
||||||
'@plasmohq/parcel-optimizer-es': 0.4.0
|
'@plasmohq/parcel-optimizer-es': 0.4.0
|
||||||
'@plasmohq/parcel-packager': 0.6.14
|
'@plasmohq/parcel-packager': 0.6.14
|
||||||
'@plasmohq/parcel-resolver': 0.13.1
|
'@plasmohq/parcel-resolver': 0.13.2
|
||||||
'@plasmohq/parcel-resolver-post': 0.4.2
|
'@plasmohq/parcel-resolver-post': 0.4.3
|
||||||
'@plasmohq/parcel-runtime': 0.23.0
|
'@plasmohq/parcel-runtime': 0.23.1
|
||||||
'@plasmohq/parcel-transformer-inject-env': 0.2.11
|
'@plasmohq/parcel-transformer-inject-env': 0.2.11
|
||||||
'@plasmohq/parcel-transformer-inline-css': 0.3.9
|
'@plasmohq/parcel-transformer-inline-css': 0.3.11
|
||||||
'@plasmohq/parcel-transformer-manifest': 0.17.8
|
'@plasmohq/parcel-transformer-manifest': 0.17.9
|
||||||
'@plasmohq/parcel-transformer-svelte': 0.5.2
|
'@plasmohq/parcel-transformer-svelte': 0.5.2
|
||||||
'@plasmohq/parcel-transformer-vue': 0.5.0(react-dom@18.2.0)(react@18.2.0)
|
'@plasmohq/parcel-transformer-vue': 0.5.0(react-dom@18.2.0)(react@18.2.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -2167,8 +2134,8 @@ packages:
|
|||||||
nullthrows: 1.1.1
|
nullthrows: 1.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@plasmohq/parcel-resolver-post@0.4.2:
|
/@plasmohq/parcel-resolver-post@0.4.3:
|
||||||
resolution: {integrity: sha512-dbrwjUQEhKqKBEgVJjL5ls1p6bpQ3VlDXI5REoaSpwoPcB7TRAcUfTwV4oNGE4eTnw4ElF08JkyslYvKgxosAw==}
|
resolution: {integrity: sha512-+KxdAOyBJNK7wxLUbLhx0d4AWQg2trcCK8rwOSNL8JP0OgtSDaOFa2NqCTFwuccGco4PzmK+27U17LWSGTFAOQ==}
|
||||||
engines: {parcel: '>= 2.7.0'}
|
engines: {parcel: '>= 2.7.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/core': 2.9.3
|
'@parcel/core': 2.9.3
|
||||||
@@ -2185,21 +2152,21 @@ packages:
|
|||||||
- ts-node
|
- ts-node
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@plasmohq/parcel-resolver@0.13.1:
|
/@plasmohq/parcel-resolver@0.13.2:
|
||||||
resolution: {integrity: sha512-IuKr3Ue1+2fsyJPQuHh4Yh36L3FI/2I27X6hC+NHlX/1j9fVYiFk89dTSPNhvAdGN/hwsMjQ/jCiKZGW1157xg==}
|
resolution: {integrity: sha512-JVXk65c5g5rOci9xmuvEqpemOFc6yTlGO1A1LCllFeByl2hBszRCBBSNp9wsaes2gQIbClgzFjbOSijKV3acNw==}
|
||||||
engines: {parcel: '>= 2.7.0'}
|
engines: {parcel: '>= 2.7.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/core': 2.9.3
|
'@parcel/core': 2.9.3
|
||||||
'@parcel/hash': 2.9.3
|
'@parcel/hash': 2.9.3
|
||||||
'@parcel/plugin': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/plugin': 2.9.3(@parcel/core@2.9.3)
|
||||||
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
||||||
fast-glob: 3.2.12
|
fast-glob: 3.3.2
|
||||||
fs-extra: 11.1.1
|
fs-extra: 11.1.1
|
||||||
got: 13.0.0
|
got: 13.0.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@plasmohq/parcel-runtime@0.23.0:
|
/@plasmohq/parcel-runtime@0.23.1:
|
||||||
resolution: {integrity: sha512-+ZqH9XksSbWPC6pnvjmvmykxh1SfyYkSKyOeNQSeHsPFo40fADUKOda8Hw/vm/g5p8GIlv5YSb2iYZzCWmKs1g==}
|
resolution: {integrity: sha512-EiBjAJcJjVFarUmiIqywKd+MHGIThWTkcZe5IYfR7ecaJRNhhZF1B/gPgoAwv1nLcxfvRIC2CF9z9frwQvrOYQ==}
|
||||||
engines: {parcel: '>= 2.7.0'}
|
engines: {parcel: '>= 2.7.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/core': 2.9.3
|
'@parcel/core': 2.9.3
|
||||||
@@ -2216,19 +2183,19 @@ packages:
|
|||||||
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/types': 2.9.3(@parcel/core@2.9.3)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@plasmohq/parcel-transformer-inline-css@0.3.9:
|
/@plasmohq/parcel-transformer-inline-css@0.3.11:
|
||||||
resolution: {integrity: sha512-da1gVe3TX7J5lC6M04iHzp2NPwhh40n/Gx/Di9o2KLLEYe0q+pKlI5OjN9zf5kpXwXfVO7QzE5B1/tRGoEu2Bw==}
|
resolution: {integrity: sha512-EUSwEowFNSgC/F1q/V4H4NXJ23wwLzlmRI6lvIr6S0mIuG/FCga+lAV3IZ+yAuXqUM2VexX6JyYYpNVidrMSxw==}
|
||||||
engines: {parcel: '>= 2.7.0'}
|
engines: {parcel: '>= 2.7.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/core': 2.9.3
|
'@parcel/core': 2.9.3
|
||||||
'@parcel/plugin': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/plugin': 2.9.3(@parcel/core@2.9.3)
|
||||||
'@parcel/utils': 2.9.3
|
'@parcel/utils': 2.9.3
|
||||||
browserslist: 4.21.10
|
browserslist: 4.22.1
|
||||||
lightningcss: 1.21.7
|
lightningcss: 1.21.8
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@plasmohq/parcel-transformer-manifest@0.17.8:
|
/@plasmohq/parcel-transformer-manifest@0.17.9:
|
||||||
resolution: {integrity: sha512-G6XISWddf900Q/4ABlFLBJcqvN1VTYF06NytTOMSDO4dOraxGhgZ0CyC990b+LJEa7nc5xf4xhHQxf3mkjALPQ==}
|
resolution: {integrity: sha512-syL5AbC7sKCNd6jpNU6qKdeUVWUDhiWLoHC5IYTVGcdVjKBql6lgs+e2JehjNB1BYW2lTrY5v3lI26Z6P6+/9Q==}
|
||||||
engines: {parcel: '>= 2.7.0'}
|
engines: {parcel: '>= 2.7.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@mischnic/json-sourcemap': 0.1.0
|
'@mischnic/json-sourcemap': 0.1.0
|
||||||
@@ -3046,7 +3013,6 @@ packages:
|
|||||||
|
|
||||||
/abortcontroller-polyfill@1.7.5:
|
/abortcontroller-polyfill@1.7.5:
|
||||||
resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==}
|
resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/acorn-jsx@5.3.2(acorn@8.11.3):
|
/acorn-jsx@5.3.2(acorn@8.11.3):
|
||||||
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
|
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
|
||||||
@@ -3236,7 +3202,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==}
|
resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/base64-js@1.5.1:
|
/base64-js@1.5.1:
|
||||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||||
@@ -3281,15 +3246,15 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fill-range: 7.0.1
|
fill-range: 7.0.1
|
||||||
|
|
||||||
/browserslist@4.21.10:
|
/browserslist@4.22.1:
|
||||||
resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
|
resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
|
||||||
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
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001574
|
caniuse-lite: 1.0.30001574
|
||||||
electron-to-chromium: 1.4.623
|
electron-to-chromium: 1.4.623
|
||||||
node-releases: 2.0.14
|
node-releases: 2.0.14
|
||||||
update-browserslist-db: 1.0.13(browserslist@4.21.10)
|
update-browserslist-db: 1.0.13(browserslist@4.22.1)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/browserslist@4.22.2:
|
/browserslist@4.22.2:
|
||||||
@@ -3301,7 +3266,6 @@ packages:
|
|||||||
electron-to-chromium: 1.4.623
|
electron-to-chromium: 1.4.623
|
||||||
node-releases: 2.0.14
|
node-releases: 2.0.14
|
||||||
update-browserslist-db: 1.0.13(browserslist@4.22.2)
|
update-browserslist-db: 1.0.13(browserslist@4.22.2)
|
||||||
dev: false
|
|
||||||
|
|
||||||
/buffer@5.7.1:
|
/buffer@5.7.1:
|
||||||
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
||||||
@@ -3368,7 +3332,6 @@ packages:
|
|||||||
|
|
||||||
/caniuse-lite@1.0.30001574:
|
/caniuse-lite@1.0.30001574:
|
||||||
resolution: {integrity: sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==}
|
resolution: {integrity: sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/chalk@2.4.2:
|
/chalk@2.4.2:
|
||||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||||
@@ -3421,7 +3384,6 @@ packages:
|
|||||||
/chrome-trace-event@1.0.3:
|
/chrome-trace-event@1.0.3:
|
||||||
resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
|
resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
|
||||||
engines: {node: '>=6.0'}
|
engines: {node: '>=6.0'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/cli-cursor@3.1.0:
|
/cli-cursor@3.1.0:
|
||||||
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
|
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
|
||||||
@@ -3448,7 +3410,6 @@ packages:
|
|||||||
/clone@2.1.2:
|
/clone@2.1.2:
|
||||||
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
|
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
|
||||||
engines: {node: '>=0.8'}
|
engines: {node: '>=0.8'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/code-red@1.0.4:
|
/code-red@1.0.4:
|
||||||
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
|
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
|
||||||
@@ -3700,7 +3661,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
|
resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
|
||||||
engines: {node: '>=0.10'}
|
engines: {node: '>=0.10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: false
|
|
||||||
|
|
||||||
/detect-libc@2.0.2:
|
/detect-libc@2.0.2:
|
||||||
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
|
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
|
||||||
@@ -3761,7 +3721,6 @@ packages:
|
|||||||
|
|
||||||
/dotenv-expand@5.1.0:
|
/dotenv-expand@5.1.0:
|
||||||
resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
|
resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/dotenv@16.3.1:
|
/dotenv@16.3.1:
|
||||||
resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
|
resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
|
||||||
@@ -3771,7 +3730,6 @@ packages:
|
|||||||
/dotenv@7.0.0:
|
/dotenv@7.0.0:
|
||||||
resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==}
|
resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/eastasianwidth@0.2.0:
|
/eastasianwidth@0.2.0:
|
||||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||||
@@ -3779,7 +3737,6 @@ packages:
|
|||||||
|
|
||||||
/electron-to-chromium@1.4.623:
|
/electron-to-chromium@1.4.623:
|
||||||
resolution: {integrity: sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==}
|
resolution: {integrity: sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/emoji-regex@8.0.0:
|
/emoji-regex@8.0.0:
|
||||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||||
@@ -3952,7 +3909,6 @@ packages:
|
|||||||
/escalade@3.1.1:
|
/escalade@3.1.1:
|
||||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/escape-string-regexp@1.0.5:
|
/escape-string-regexp@1.0.5:
|
||||||
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
||||||
@@ -4340,17 +4296,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
|
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/fast-glob@3.2.12:
|
|
||||||
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
|
|
||||||
engines: {node: '>=8.6.0'}
|
|
||||||
dependencies:
|
|
||||||
'@nodelib/fs.stat': 2.0.5
|
|
||||||
'@nodelib/fs.walk': 1.2.8
|
|
||||||
glob-parent: 5.1.2
|
|
||||||
merge2: 1.4.1
|
|
||||||
micromatch: 4.0.5
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/fast-glob@3.3.2:
|
/fast-glob@3.3.2:
|
||||||
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
|
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
|
||||||
engines: {node: '>=8.6.0'}
|
engines: {node: '>=8.6.0'}
|
||||||
@@ -5143,7 +5088,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
|
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: false
|
|
||||||
|
|
||||||
/jsonfile@6.1.0:
|
/jsonfile@6.1.0:
|
||||||
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
|
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
|
||||||
@@ -5205,8 +5149,8 @@ packages:
|
|||||||
type-check: 0.4.0
|
type-check: 0.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/lightningcss-darwin-arm64@1.21.7:
|
/lightningcss-darwin-arm64@1.21.8:
|
||||||
resolution: {integrity: sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==}
|
resolution: {integrity: sha512-BOMoGfcgkk2f4ltzsJqmkjiqRtlZUK+UdwhR+P6VgIsnpQBV3G01mlL6GzYxYqxq+6/3/n/D+4oy2NeknmADZw==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
@@ -5223,8 +5167,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-darwin-x64@1.21.7:
|
/lightningcss-darwin-x64@1.21.8:
|
||||||
resolution: {integrity: sha512-F4gS4bf7eWekfPT+TxJNm/pF+QRgZiTrTkQH6cw4/UWfdeZISfuhD5El2dm16giFnY0K5ylIwO+ZusgYNkGSXA==}
|
resolution: {integrity: sha512-YhF64mcVDPKKufL4aNFBnVH7uvzE0bW3YUsPXdP4yUcT/8IXChypOZ/PE1pmt2RlbmsyVuuIIeZU4zTyZe5Amw==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
@@ -5241,8 +5185,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-freebsd-x64@1.21.7:
|
/lightningcss-freebsd-x64@1.21.8:
|
||||||
resolution: {integrity: sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==}
|
resolution: {integrity: sha512-CV6A/vTG2Ryd3YpChEgfWWv4TXCAETo9TcHSNx0IP0dnKcnDEiAko4PIKhCqZL11IGdN1ZLBCVPw+vw5ZYwzfA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
@@ -5259,8 +5203,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-linux-arm-gnueabihf@1.21.7:
|
/lightningcss-linux-arm-gnueabihf@1.21.8:
|
||||||
resolution: {integrity: sha512-biSRUDZNx7vubWP1jArw/qqfZKPGpkV/qzunasZzxmqijbZ43sW9faDQYxWNcxPWljJJdF/qs6qcurYFovWtrQ==}
|
resolution: {integrity: sha512-9PMbqh8n/Xq0F4/j2NR/hHM2HRDiFXFSF0iOvV67pNWKJkHIO6mR8jBw/88Aro5Ye/ILsX5OuWsxIVJDFv0NXA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -5277,8 +5221,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-linux-arm64-gnu@1.21.7:
|
/lightningcss-linux-arm64-gnu@1.21.8:
|
||||||
resolution: {integrity: sha512-PENY8QekqL9TG3AY/A7rkUBb5ymefGxea7Oe7+x7Hbw4Bz4Hpj5cec5OoMypMqFbURPmpi0fTWx4vSWUPzpDcA==}
|
resolution: {integrity: sha512-JTM/TuMMllkzaXV7/eDjG4IJKLlCl+RfYZwtsVmC82gc0QX0O37csGAcY2OGleiuA4DnEo/Qea5WoFfZUNC6zg==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -5295,8 +5239,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-linux-arm64-musl@1.21.7:
|
/lightningcss-linux-arm64-musl@1.21.8:
|
||||||
resolution: {integrity: sha512-pfOipKvA/0X1OjRaZt3870vnV9UGBSjayIqHh0fGx/+aRz3O0MVFHE/60P2UWXpM3YGJEw/hMWtNkrFwqOge8A==}
|
resolution: {integrity: sha512-01gWShXrgoIb8urzShpn1RWtZuaSyKSzF2hfO+flzlTPoACqcO3rgcu/3af4Cw54e8vKzL5hPRo4kROmgaOMLg==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -5313,8 +5257,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-linux-x64-gnu@1.21.7:
|
/lightningcss-linux-x64-gnu@1.21.8:
|
||||||
resolution: {integrity: sha512-dgcsis4TAA7s0ia4f31QHX+G4PWPwxk+wJaEQLaV0NdJs09O5hHoA8DpLEr8nrvc/tsRTyVNBP1rDtgzySjpXg==}
|
resolution: {integrity: sha512-yVB5vYJjJb/Aku0V9QaGYIntvK/1TJOlNB9GmkNpXX5bSSP2pYW4lWW97jxFMHO908M0zjEt1qyOLMyqojHL+Q==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -5331,8 +5275,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-linux-x64-musl@1.21.7:
|
/lightningcss-linux-x64-musl@1.21.8:
|
||||||
resolution: {integrity: sha512-A+9dXpxld3p4Cd6fxev2eqEvaauYtrgNpXV3t7ioCJy30Oj9nYiNGwiGusM+4MJVcEpUPGUGiuAqY4sWilRDwA==}
|
resolution: {integrity: sha512-TYi+KNtBVK0+FZvxTX/d5XJb+tw3Jq+2Rr9hW359wp1afsi1Vkg+uVGgbn+m2dipa5XwpCseQq81ylMlXuyfPw==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -5349,8 +5293,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss-win32-x64-msvc@1.21.7:
|
/lightningcss-win32-x64-msvc@1.21.8:
|
||||||
resolution: {integrity: sha512-07/8vogEq+C/mF99pdMhh/f19/xreq8N9Ca6AWeVHZIdODyF/pt6KdKSCWDZWIn+3CUxI8gCJWuUWyOc3xymvw==}
|
resolution: {integrity: sha512-mww+kqbPx0/C44l2LEloECtRUuOFDjq9ftp+EHTPiCp2t+avy0sh8MaFwGsrKkj2XfZhaRhi4CPVKBoqF1Qlwg==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -5367,21 +5311,21 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/lightningcss@1.21.7:
|
/lightningcss@1.21.8:
|
||||||
resolution: {integrity: sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==}
|
resolution: {integrity: sha512-jEqaL7m/ZckZJjlMAfycr1Kpz7f93k6n7KGF5SJjuPSm6DWI6h3ayLZmgRHgy1OfrwoCed6h4C/gHYPOd1OFMA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
detect-libc: 1.0.3
|
detect-libc: 1.0.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
lightningcss-darwin-arm64: 1.21.7
|
lightningcss-darwin-arm64: 1.21.8
|
||||||
lightningcss-darwin-x64: 1.21.7
|
lightningcss-darwin-x64: 1.21.8
|
||||||
lightningcss-freebsd-x64: 1.21.7
|
lightningcss-freebsd-x64: 1.21.8
|
||||||
lightningcss-linux-arm-gnueabihf: 1.21.7
|
lightningcss-linux-arm-gnueabihf: 1.21.8
|
||||||
lightningcss-linux-arm64-gnu: 1.21.7
|
lightningcss-linux-arm64-gnu: 1.21.8
|
||||||
lightningcss-linux-arm64-musl: 1.21.7
|
lightningcss-linux-arm64-musl: 1.21.8
|
||||||
lightningcss-linux-x64-gnu: 1.21.7
|
lightningcss-linux-x64-gnu: 1.21.8
|
||||||
lightningcss-linux-x64-musl: 1.21.7
|
lightningcss-linux-x64-musl: 1.21.8
|
||||||
lightningcss-win32-x64-msvc: 1.21.7
|
lightningcss-win32-x64-msvc: 1.21.8
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/lightningcss@1.22.1:
|
/lightningcss@1.22.1:
|
||||||
@@ -5445,7 +5389,6 @@ packages:
|
|||||||
'@lmdb/lmdb-linux-arm64': 2.7.11
|
'@lmdb/lmdb-linux-arm64': 2.7.11
|
||||||
'@lmdb/lmdb-linux-x64': 2.7.11
|
'@lmdb/lmdb-linux-x64': 2.7.11
|
||||||
'@lmdb/lmdb-win32-x64': 2.7.11
|
'@lmdb/lmdb-win32-x64': 2.7.11
|
||||||
dev: false
|
|
||||||
|
|
||||||
/load-tsconfig@0.2.5:
|
/load-tsconfig@0.2.5:
|
||||||
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
|
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
|
||||||
@@ -5624,20 +5567,17 @@ packages:
|
|||||||
'@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2
|
'@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2
|
||||||
'@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2
|
'@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2
|
||||||
'@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2
|
'@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/msgpackr@1.10.1:
|
/msgpackr@1.10.1:
|
||||||
resolution: {integrity: sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==}
|
resolution: {integrity: sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==}
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
msgpackr-extract: 3.0.2
|
msgpackr-extract: 3.0.2
|
||||||
dev: false
|
|
||||||
|
|
||||||
/msgpackr@1.8.5:
|
/msgpackr@1.8.5:
|
||||||
resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==}
|
resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==}
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
msgpackr-extract: 3.0.2
|
msgpackr-extract: 3.0.2
|
||||||
dev: false
|
|
||||||
|
|
||||||
/mute-stream@1.0.0:
|
/mute-stream@1.0.0:
|
||||||
resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
|
resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
|
||||||
@@ -5692,7 +5632,6 @@ packages:
|
|||||||
|
|
||||||
/node-addon-api@4.3.0:
|
/node-addon-api@4.3.0:
|
||||||
resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
|
resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/node-addon-api@6.1.0:
|
/node-addon-api@6.1.0:
|
||||||
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
|
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
|
||||||
@@ -5700,7 +5639,6 @@ packages:
|
|||||||
|
|
||||||
/node-addon-api@7.0.0:
|
/node-addon-api@7.0.0:
|
||||||
resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==}
|
resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/node-gyp-build-optional-packages@5.0.3:
|
/node-gyp-build-optional-packages@5.0.3:
|
||||||
resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==}
|
resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==}
|
||||||
@@ -5710,13 +5648,11 @@ packages:
|
|||||||
/node-gyp-build-optional-packages@5.0.6:
|
/node-gyp-build-optional-packages@5.0.6:
|
||||||
resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==}
|
resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: false
|
|
||||||
|
|
||||||
/node-gyp-build-optional-packages@5.0.7:
|
/node-gyp-build-optional-packages@5.0.7:
|
||||||
resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==}
|
resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/node-object-hash@3.0.0:
|
/node-object-hash@3.0.0:
|
||||||
@@ -5726,7 +5662,6 @@ packages:
|
|||||||
|
|
||||||
/node-releases@2.0.14:
|
/node-releases@2.0.14:
|
||||||
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
|
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/normalize-path@3.0.0:
|
/normalize-path@3.0.0:
|
||||||
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
|
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
|
||||||
@@ -5753,7 +5688,6 @@ packages:
|
|||||||
|
|
||||||
/nullthrows@1.1.1:
|
/nullthrows@1.1.1:
|
||||||
resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
|
resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/object-assign@4.1.1:
|
/object-assign@4.1.1:
|
||||||
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
|
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
|
||||||
@@ -5862,7 +5796,6 @@ packages:
|
|||||||
|
|
||||||
/ordered-binary@1.5.1:
|
/ordered-binary@1.5.1:
|
||||||
resolution: {integrity: sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==}
|
resolution: {integrity: sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/os-tmpdir@1.0.2:
|
/os-tmpdir@1.0.2:
|
||||||
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
|
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
|
||||||
@@ -5959,7 +5892,6 @@ packages:
|
|||||||
|
|
||||||
/picocolors@1.0.0:
|
/picocolors@1.0.0:
|
||||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/picomatch@2.3.1:
|
/picomatch@2.3.1:
|
||||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||||
@@ -5982,8 +5914,8 @@ packages:
|
|||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/plasmo@0.84.0(react-dom@18.2.0)(react@18.2.0):
|
/plasmo@0.84.2(react-dom@18.2.0)(react@18.2.0):
|
||||||
resolution: {integrity: sha512-SK6A/uX5mo4EsYiF7JySTOCp2aMo3ejfpbNey89M0zat9p0yDTKEClvMs9MWKXld5Ae0CXPaMYcZPAMvCMngPQ==}
|
resolution: {integrity: sha512-9fyuQubUdYOHEs7plvppB7tPfyqTpA1UlWEYUGeVOgKQ6/rhvpvjBLCWyhzy/S3CrzXL8nZ7HQ1xHka4Coe0PA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@expo/spawn-async': 1.7.2
|
'@expo/spawn-async': 1.7.2
|
||||||
@@ -5992,7 +5924,7 @@ packages:
|
|||||||
'@parcel/package-manager': 2.9.3(@parcel/core@2.9.3)
|
'@parcel/package-manager': 2.9.3(@parcel/core@2.9.3)
|
||||||
'@parcel/watcher': 2.2.0
|
'@parcel/watcher': 2.2.0
|
||||||
'@plasmohq/init': 0.7.0
|
'@plasmohq/init': 0.7.0
|
||||||
'@plasmohq/parcel-config': 0.40.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)
|
'@plasmohq/parcel-config': 0.40.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)
|
||||||
'@plasmohq/parcel-core': 0.1.8
|
'@plasmohq/parcel-core': 0.1.8
|
||||||
buffer: 6.0.3
|
buffer: 6.0.3
|
||||||
chalk: 5.3.0
|
chalk: 5.3.0
|
||||||
@@ -6417,7 +6349,6 @@ packages:
|
|||||||
|
|
||||||
/safe-buffer@5.2.1:
|
/safe-buffer@5.2.1:
|
||||||
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/safe-regex-test@1.0.0:
|
/safe-regex-test@1.0.0:
|
||||||
resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
|
resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
|
||||||
@@ -7029,13 +6960,13 @@ packages:
|
|||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/update-browserslist-db@1.0.13(browserslist@4.21.10):
|
/update-browserslist-db@1.0.13(browserslist@4.22.1):
|
||||||
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
|
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
browserslist: '>= 4.21.0'
|
browserslist: '>= 4.21.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.21.10
|
browserslist: 4.22.1
|
||||||
escalade: 3.1.1
|
escalade: 3.1.1
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
dev: false
|
dev: false
|
||||||
@@ -7049,7 +6980,6 @@ packages:
|
|||||||
browserslist: 4.22.2
|
browserslist: 4.22.2
|
||||||
escalade: 3.1.1
|
escalade: 3.1.1
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
dev: false
|
|
||||||
|
|
||||||
/uri-js@4.4.1:
|
/uri-js@4.4.1:
|
||||||
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
||||||
@@ -7064,7 +6994,6 @@ packages:
|
|||||||
/utility-types@3.10.0:
|
/utility-types@3.10.0:
|
||||||
resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==}
|
resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==}
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/vue@3.3.4:
|
/vue@3.3.4:
|
||||||
resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
|
resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
|
||||||
@@ -7084,7 +7013,6 @@ packages:
|
|||||||
|
|
||||||
/weak-lru-cache@1.2.2:
|
/weak-lru-cache@1.2.2:
|
||||||
resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==}
|
resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/webidl-conversions@4.0.2:
|
/webidl-conversions@4.0.2:
|
||||||
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
|
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
|
||||||
@@ -7185,7 +7113,6 @@ packages:
|
|||||||
|
|
||||||
/xxhash-wasm@0.4.2:
|
/xxhash-wasm@0.4.2:
|
||||||
resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==}
|
resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/yallist@3.1.1:
|
/yallist@3.1.1:
|
||||||
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
||||||
|
@@ -1,6 +1,13 @@
|
|||||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@500;800&display=swap');
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@500;800&display=swap');
|
||||||
|
|
||||||
|
html {
|
||||||
|
min-height: 300px;
|
||||||
|
min-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
min-height: 300px;
|
||||||
|
min-width: 300px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: 'Inter', sans-serif;
|
||||||
}
|
}
|
||||||
@@ -11,4 +18,4 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
20
src/background.ts
Normal file
20
src/background.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import { isChrome } from '~utils/extension';
|
||||||
|
import { injectScript } from '~utils/injection';
|
||||||
|
import { listenToTabChanges } from '~utils/tabs';
|
||||||
|
|
||||||
|
// Both brave and firefox for some reason need this extension reload,
|
||||||
|
// If this isn't done, they will never load properly and will fail updateDynamicRules()
|
||||||
|
if (isChrome()) {
|
||||||
|
chrome.runtime.onStartup.addListener(() => {
|
||||||
|
chrome.runtime.reload();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
browser.runtime.onStartup.addListener(() => {
|
||||||
|
browser.runtime.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// We need to do some programatic script injection,
|
||||||
|
// since we may not have permission everytime, so inject when we switch tab.
|
||||||
|
listenToTabChanges(() => injectScript());
|
||||||
|
injectScript();
|
@@ -4,6 +4,7 @@ import { hasPermission } from '~hooks/usePermission';
|
|||||||
import { getVersion } from '~hooks/useVersion';
|
import { getVersion } from '~hooks/useVersion';
|
||||||
import type { BaseRequest } from '~types/request';
|
import type { BaseRequest } from '~types/request';
|
||||||
import type { BaseResponse } from '~types/response';
|
import type { BaseResponse } from '~types/response';
|
||||||
|
import { makeUrlIntoDomain } from '~utils/domains';
|
||||||
import { isDomainWhitelisted } from '~utils/storage';
|
import { isDomainWhitelisted } from '~utils/storage';
|
||||||
|
|
||||||
type Response = BaseResponse<{
|
type Response = BaseResponse<{
|
||||||
@@ -14,12 +15,13 @@ type Response = BaseResponse<{
|
|||||||
|
|
||||||
const handler: PlasmoMessaging.MessageHandler<BaseRequest, Response> = async (req, res) => {
|
const handler: PlasmoMessaging.MessageHandler<BaseRequest, Response> = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
|
const domain = makeUrlIntoDomain(req.sender.url ?? '');
|
||||||
const version = getVersion();
|
const version = getVersion();
|
||||||
res.send({
|
res.send({
|
||||||
success: true,
|
success: true,
|
||||||
version,
|
version,
|
||||||
allowed: await isDomainWhitelisted(req.sender.tab.url),
|
allowed: await isDomainWhitelisted(req.sender.tab.url),
|
||||||
hasPermission: await hasPermission(),
|
hasPermission: await hasPermission(domain),
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
res.send({
|
res.send({
|
||||||
|
10
src/background/messages/inject.ts
Normal file
10
src/background/messages/inject.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import type { PlasmoMessaging } from '@plasmohq/messaging';
|
||||||
|
|
||||||
|
import { injectScript } from '~utils/injection';
|
||||||
|
|
||||||
|
const handler: PlasmoMessaging.MessageHandler = async (_req, res) => {
|
||||||
|
injectScript();
|
||||||
|
res.send({});
|
||||||
|
};
|
||||||
|
|
||||||
|
export default handler;
|
@@ -2,9 +2,12 @@ import type { PlasmoMessaging } from '@plasmohq/messaging';
|
|||||||
|
|
||||||
import type { BaseRequest } from '~types/request';
|
import type { BaseRequest } from '~types/request';
|
||||||
import type { BaseResponse } from '~types/response';
|
import type { BaseResponse } from '~types/response';
|
||||||
|
import { removeDynamicRules, setDynamicRules } from '~utils/declarativeNetRequest';
|
||||||
import { makeFullUrl } from '~utils/fetcher';
|
import { makeFullUrl } from '~utils/fetcher';
|
||||||
import { assertDomainWhitelist } from '~utils/storage';
|
import { assertDomainWhitelist } from '~utils/storage';
|
||||||
|
|
||||||
|
const MAKE_REQUEST_DYNAMIC_RULE = 23498;
|
||||||
|
|
||||||
export interface Request extends BaseRequest {
|
export interface Request extends BaseRequest {
|
||||||
baseUrl?: string;
|
baseUrl?: string;
|
||||||
headers?: Record<string, string>;
|
headers?: Record<string, string>;
|
||||||
@@ -12,7 +15,8 @@ export interface Request extends BaseRequest {
|
|||||||
query?: Record<string, string>;
|
query?: Record<string, string>;
|
||||||
readHeaders?: Record<string, string>;
|
readHeaders?: Record<string, string>;
|
||||||
url: string;
|
url: string;
|
||||||
body?: string | FormData | URLSearchParams;
|
body?: any;
|
||||||
|
bodyType?: 'string' | 'FormData' | 'URLSearchParams' | 'object';
|
||||||
}
|
}
|
||||||
|
|
||||||
type Response<T> = BaseResponse<{
|
type Response<T> = BaseResponse<{
|
||||||
@@ -24,15 +28,46 @@ type Response<T> = BaseResponse<{
|
|||||||
};
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
|
const mapBodyToFetchBody = (body: Request['body'], bodyType: Request['bodyType']): BodyInit => {
|
||||||
|
if (bodyType === 'FormData') {
|
||||||
|
const formData = new FormData();
|
||||||
|
body.forEach(([key, value]) => {
|
||||||
|
formData.append(key, value.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (bodyType === 'URLSearchParams') {
|
||||||
|
return new URLSearchParams(body);
|
||||||
|
}
|
||||||
|
if (bodyType === 'object') {
|
||||||
|
return JSON.stringify(body);
|
||||||
|
}
|
||||||
|
if (bodyType === 'string') {
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
};
|
||||||
|
|
||||||
const handler: PlasmoMessaging.MessageHandler<Request, Response<any>> = async (req, res) => {
|
const handler: PlasmoMessaging.MessageHandler<Request, Response<any>> = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
|
const url = makeFullUrl(req.body.url, req.body);
|
||||||
await assertDomainWhitelist(req.sender.tab.url);
|
await assertDomainWhitelist(req.sender.tab.url);
|
||||||
|
|
||||||
const response = await fetch(makeFullUrl(req.body.url, req.body), {
|
if (req.body.headers['User-Agent']) {
|
||||||
|
await setDynamicRules({
|
||||||
|
ruleId: MAKE_REQUEST_DYNAMIC_RULE,
|
||||||
|
targetDomains: [new URL(url).hostname],
|
||||||
|
requestHeaders: {
|
||||||
|
'User-Agent': req.body.headers['User-Agent'],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(url, {
|
||||||
method: req.body.method,
|
method: req.body.method,
|
||||||
headers: req.body.headers,
|
headers: req.body.headers,
|
||||||
body: req.body.body,
|
body: mapBodyToFetchBody(req.body.body, req.body.bodyType),
|
||||||
});
|
});
|
||||||
|
await removeDynamicRules([MAKE_REQUEST_DYNAMIC_RULE]);
|
||||||
const contentType = response.headers.get('content-type');
|
const contentType = response.headers.get('content-type');
|
||||||
const body = contentType?.includes('application/json') ? await response.json() : await response.text();
|
const body = contentType?.includes('application/json') ? await response.json() : await response.text();
|
||||||
|
|
||||||
@@ -46,6 +81,7 @@ const handler: PlasmoMessaging.MessageHandler<Request, Response<any>> = async (r
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.error('failed request', err);
|
||||||
res.send({
|
res.send({
|
||||||
success: false,
|
success: false,
|
||||||
error: err.message,
|
error: err.message,
|
||||||
|
@@ -2,7 +2,7 @@ import type { PlasmoMessaging } from '@plasmohq/messaging';
|
|||||||
|
|
||||||
import type { BaseRequest } from '~types/request';
|
import type { BaseRequest } from '~types/request';
|
||||||
import type { BaseResponse } from '~types/response';
|
import type { BaseResponse } from '~types/response';
|
||||||
import { isChrome } from '~utils/extension';
|
import { setDynamicRules } from '~utils/declarativeNetRequest';
|
||||||
import { assertDomainWhitelist } from '~utils/storage';
|
import { assertDomainWhitelist } from '~utils/storage';
|
||||||
|
|
||||||
interface Request extends BaseRequest {
|
interface Request extends BaseRequest {
|
||||||
@@ -13,108 +13,10 @@ interface Request extends BaseRequest {
|
|||||||
responseHeaders?: Record<string, string>;
|
responseHeaders?: Record<string, string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapHeadersToDeclarativeNetRequestHeaders = (
|
|
||||||
headers: Record<string, string>,
|
|
||||||
op: string,
|
|
||||||
): { header: string; operation: any; value: string }[] => {
|
|
||||||
return Object.entries(headers).map(([name, value]) => ({
|
|
||||||
header: name,
|
|
||||||
operation: op,
|
|
||||||
value,
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
const handler: PlasmoMessaging.MessageHandler<Request, BaseResponse> = async (req, res) => {
|
const handler: PlasmoMessaging.MessageHandler<Request, BaseResponse> = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
await assertDomainWhitelist(req.sender.tab.url);
|
await assertDomainWhitelist(req.sender.tab.url);
|
||||||
if (isChrome()) {
|
await setDynamicRules(req.body);
|
||||||
await chrome.declarativeNetRequest.updateDynamicRules({
|
|
||||||
removeRuleIds: [req.body.ruleId],
|
|
||||||
addRules: [
|
|
||||||
{
|
|
||||||
id: req.body.ruleId,
|
|
||||||
condition: {
|
|
||||||
...(req.body.targetDomains && { requestDomains: req.body.targetDomains }),
|
|
||||||
...(req.body.targetRegex && { regexFilter: req.body.targetRegex }),
|
|
||||||
},
|
|
||||||
action: {
|
|
||||||
type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
|
|
||||||
...(req.body.requestHeaders && Object.keys(req.body.requestHeaders).length > 0
|
|
||||||
? {
|
|
||||||
requestHeaders: mapHeadersToDeclarativeNetRequestHeaders(
|
|
||||||
req.body.requestHeaders,
|
|
||||||
chrome.declarativeNetRequest.HeaderOperation.SET,
|
|
||||||
),
|
|
||||||
}
|
|
||||||
: {}),
|
|
||||||
responseHeaders: [
|
|
||||||
{
|
|
||||||
header: 'Access-Control-Allow-Origin',
|
|
||||||
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
|
||||||
value: '*',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: 'Access-Control-Allow-Methods',
|
|
||||||
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
|
||||||
value: 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: 'Access-Control-Allow-Headers',
|
|
||||||
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
|
||||||
value: '*',
|
|
||||||
},
|
|
||||||
...mapHeadersToDeclarativeNetRequestHeaders(
|
|
||||||
req.body.responseHeaders ?? {},
|
|
||||||
chrome.declarativeNetRequest.HeaderOperation.SET,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
if (chrome.runtime.lastError?.message) throw new Error(chrome.runtime.lastError.message);
|
|
||||||
} else {
|
|
||||||
await browser.declarativeNetRequest.updateDynamicRules({
|
|
||||||
removeRuleIds: [req.body.ruleId],
|
|
||||||
addRules: [
|
|
||||||
{
|
|
||||||
id: req.body.ruleId,
|
|
||||||
condition: {
|
|
||||||
...(req.body.targetDomains && { requestDomains: req.body.targetDomains }),
|
|
||||||
...(req.body.targetRegex && { regexFilter: req.body.targetRegex }),
|
|
||||||
},
|
|
||||||
action: {
|
|
||||||
type: 'modifyHeaders',
|
|
||||||
...(req.body.requestHeaders && Object.keys(req.body.requestHeaders).length > 0
|
|
||||||
? {
|
|
||||||
requestHeaders: mapHeadersToDeclarativeNetRequestHeaders(req.body.requestHeaders, 'set'),
|
|
||||||
}
|
|
||||||
: {}),
|
|
||||||
responseHeaders: [
|
|
||||||
{
|
|
||||||
header: 'Access-Control-Allow-Origin',
|
|
||||||
operation: 'set',
|
|
||||||
value: '*',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: 'Access-Control-Allow-Methods',
|
|
||||||
operation: 'set',
|
|
||||||
value: 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: 'Access-Control-Allow-Headers',
|
|
||||||
operation: 'set',
|
|
||||||
value: '*',
|
|
||||||
},
|
|
||||||
...mapHeadersToDeclarativeNetRequestHeaders(req.body.responseHeaders ?? {}, 'set'),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
if (browser.runtime.lastError?.message) throw new Error(browser.runtime.lastError.message);
|
|
||||||
}
|
|
||||||
|
|
||||||
res.send({
|
res.send({
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
.frame {
|
.frame {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
background-color: #0a080e;
|
background-color: #0a080e;
|
||||||
background-image: radial-gradient(271.48% 132.05% at 136.13% 65.62%, #271945b3 0%, #1c1c2c00 100%), radial-gradient(671.15% 123.02% at 76.68% -34.38%, #272753 0%, #17172000 100%);
|
background-image: radial-gradient(271.48% 132.05% at 136.13% 65.62%, #271945b3 0%, #1c1c2c00 100%), radial-gradient(671.15% 123.02% at 76.68% -34.38%, #272753 0%, #17172000 100%);
|
||||||
}
|
}
|
||||||
|
@@ -7,9 +7,5 @@ export interface FrameProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function Frame(props: FrameProps) {
|
export function Frame(props: FrameProps) {
|
||||||
return (
|
return <div className="frame">{props.children}</div>;
|
||||||
<div className="frame" style={{ width: 300, height: 300 }}>
|
|
||||||
{props.children}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@@ -1,10 +1,7 @@
|
|||||||
import { relayMessage } from '@plasmohq/messaging';
|
import { relayMessage } from '@plasmohq/messaging';
|
||||||
import type { PlasmoCSConfig } from 'plasmo';
|
import type { PlasmoCSConfig } from 'plasmo';
|
||||||
|
|
||||||
export const config: PlasmoCSConfig = {
|
export const config: PlasmoCSConfig = {};
|
||||||
// <all_urls> works for chrome, but not for firefox, so we add explicit domains for firefox
|
|
||||||
matches: ['<all_urls>', 'https://dev.movie-web.app/*', 'https://movie-web.app/*'],
|
|
||||||
};
|
|
||||||
|
|
||||||
relayMessage({
|
relayMessage({
|
||||||
name: 'hello',
|
name: 'hello',
|
||||||
|
@@ -26,7 +26,7 @@ export function useDomainWhitelist() {
|
|||||||
export function useToggleWhitelistDomain(domain: string) {
|
export function useToggleWhitelistDomain(domain: string) {
|
||||||
const { domainWhitelist, addDomain, removeDomain } = useDomainWhitelist();
|
const { domainWhitelist, addDomain, removeDomain } = useDomainWhitelist();
|
||||||
const isWhitelisted = domainWhitelist.includes(domain);
|
const isWhitelisted = domainWhitelist.includes(domain);
|
||||||
const { grantPermission } = usePermission();
|
const { grantPermission } = usePermission(domain);
|
||||||
|
|
||||||
const toggle = useCallback(() => {
|
const toggle = useCallback(() => {
|
||||||
if (!isWhitelisted) {
|
if (!isWhitelisted) {
|
||||||
|
@@ -1,29 +1,39 @@
|
|||||||
|
import { sendToBackground } from '@plasmohq/messaging';
|
||||||
import { useCallback, useEffect, useState } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { useDomainWhitelist } from './useDomainWhitelist';
|
import { useDomainWhitelist } from './useDomainWhitelist';
|
||||||
|
|
||||||
export async function hasPermission() {
|
function makeDomainIntoOriginMatchers(domain: string): string[] {
|
||||||
|
return [`http://${domain}/*`, `https://${domain}/*`];
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function hasPermission(domain: string) {
|
||||||
return chrome.permissions.contains({
|
return chrome.permissions.contains({
|
||||||
origins: ['<all_urls>'],
|
origins: makeDomainIntoOriginMatchers(domain),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function usePermission() {
|
export function usePermission(domain: string) {
|
||||||
const { addDomain } = useDomainWhitelist();
|
const { addDomain } = useDomainWhitelist();
|
||||||
const [permission, setPermission] = useState(false);
|
const [permission, setPermission] = useState(false);
|
||||||
|
|
||||||
const grantPermission = useCallback(async (domain?: string) => {
|
const grantPermission = useCallback(async () => {
|
||||||
const granted = await chrome.permissions.request({
|
const granted = await chrome.permissions.request({
|
||||||
origins: ['<all_urls>'],
|
origins: makeDomainIntoOriginMatchers(domain),
|
||||||
});
|
});
|
||||||
setPermission(granted);
|
setPermission(granted);
|
||||||
if (granted && domain) addDomain(domain);
|
if (granted && domain) {
|
||||||
|
await sendToBackground({
|
||||||
|
name: 'inject',
|
||||||
|
});
|
||||||
|
addDomain(domain);
|
||||||
|
}
|
||||||
return granted;
|
return granted;
|
||||||
}, []);
|
}, [domain]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
hasPermission().then((has) => setPermission(has));
|
hasPermission(domain).then((has) => setPermission(has));
|
||||||
}, []);
|
}, [domain]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
hasPermission: permission,
|
hasPermission: permission,
|
||||||
|
@@ -11,7 +11,7 @@ import { usePermission } from '~hooks/usePermission';
|
|||||||
function IndexPopup() {
|
function IndexPopup() {
|
||||||
const domain = useDomain();
|
const domain = useDomain();
|
||||||
const { isWhitelisted, toggle } = useToggleWhitelistDomain(domain);
|
const { isWhitelisted, toggle } = useToggleWhitelistDomain(domain);
|
||||||
const { grantPermission, hasPermission } = usePermission();
|
const { grantPermission, hasPermission } = usePermission(domain);
|
||||||
|
|
||||||
let page = 'toggle';
|
let page = 'toggle';
|
||||||
if (!hasPermission) page = 'perm';
|
if (!hasPermission) page = 'perm';
|
||||||
|
@@ -6,12 +6,12 @@ import './PermissionGrant.css';
|
|||||||
|
|
||||||
export default function PermissionGrant() {
|
export default function PermissionGrant() {
|
||||||
const { domainWhitelist } = useDomainWhitelist();
|
const { domainWhitelist } = useDomainWhitelist();
|
||||||
const { hasPermission, grantPermission } = usePermission();
|
|
||||||
|
|
||||||
const queryParams = new URLSearchParams(window.location.search);
|
const queryParams = new URLSearchParams(window.location.search);
|
||||||
const redirectUrl = queryParams.get('redirectUrl') ?? 'https://movie-web.app';
|
const redirectUrl = queryParams.get('redirectUrl') ?? 'https://movie-web.app';
|
||||||
const domain = makeUrlIntoDomain(redirectUrl);
|
const domain = makeUrlIntoDomain(redirectUrl);
|
||||||
|
|
||||||
|
const { hasPermission, grantPermission } = usePermission(domain);
|
||||||
const permissionsGranted = domainWhitelist.includes(domain) && hasPermission;
|
const permissionsGranted = domainWhitelist.includes(domain) && hasPermission;
|
||||||
|
|
||||||
const redirectBack = () => {
|
const redirectBack = () => {
|
||||||
@@ -21,7 +21,7 @@ export default function PermissionGrant() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleGrantPermission = () => {
|
const handleGrantPermission = () => {
|
||||||
grantPermission(domain).then(() => {
|
grantPermission().then(() => {
|
||||||
redirectBack();
|
redirectBack();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
117
src/utils/declarativeNetRequest.ts
Normal file
117
src/utils/declarativeNetRequest.ts
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
import { isChrome } from './extension';
|
||||||
|
|
||||||
|
interface DynamicRule {
|
||||||
|
ruleId: number;
|
||||||
|
targetDomains?: [string, ...string[]];
|
||||||
|
targetRegex?: string;
|
||||||
|
requestHeaders?: Record<string, string>;
|
||||||
|
responseHeaders?: Record<string, string>;
|
||||||
|
}
|
||||||
|
|
||||||
|
const mapHeadersToDeclarativeNetRequestHeaders = (
|
||||||
|
headers: Record<string, string>,
|
||||||
|
op: string,
|
||||||
|
): { header: string; operation: any; value: string }[] => {
|
||||||
|
return Object.entries(headers).map(([name, value]) => ({
|
||||||
|
header: name,
|
||||||
|
operation: op,
|
||||||
|
value,
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
export const setDynamicRules = async (body: DynamicRule) => {
|
||||||
|
if (isChrome()) {
|
||||||
|
await chrome.declarativeNetRequest.updateDynamicRules({
|
||||||
|
removeRuleIds: [body.ruleId],
|
||||||
|
addRules: [
|
||||||
|
{
|
||||||
|
id: body.ruleId,
|
||||||
|
condition: {
|
||||||
|
...(body.targetDomains && { requestDomains: body.targetDomains }),
|
||||||
|
...(body.targetRegex && { regexFilter: body.targetRegex }),
|
||||||
|
},
|
||||||
|
action: {
|
||||||
|
type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
|
||||||
|
...(body.requestHeaders && Object.keys(body.requestHeaders).length > 0
|
||||||
|
? {
|
||||||
|
requestHeaders: mapHeadersToDeclarativeNetRequestHeaders(
|
||||||
|
body.requestHeaders,
|
||||||
|
chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
: {}),
|
||||||
|
responseHeaders: [
|
||||||
|
{
|
||||||
|
header: 'Access-Control-Allow-Origin',
|
||||||
|
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||||
|
value: '*',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Access-Control-Allow-Methods',
|
||||||
|
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||||
|
value: 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Access-Control-Allow-Headers',
|
||||||
|
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||||
|
value: '*',
|
||||||
|
},
|
||||||
|
...mapHeadersToDeclarativeNetRequestHeaders(
|
||||||
|
body.responseHeaders ?? {},
|
||||||
|
chrome.declarativeNetRequest.HeaderOperation.SET,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
if (chrome.runtime.lastError?.message) throw new Error(chrome.runtime.lastError.message);
|
||||||
|
} else {
|
||||||
|
await browser.declarativeNetRequest.updateDynamicRules({
|
||||||
|
removeRuleIds: [body.ruleId],
|
||||||
|
addRules: [
|
||||||
|
{
|
||||||
|
id: body.ruleId,
|
||||||
|
condition: {
|
||||||
|
...(body.targetDomains && { requestDomains: body.targetDomains }),
|
||||||
|
...(body.targetRegex && { regexFilter: body.targetRegex }),
|
||||||
|
},
|
||||||
|
action: {
|
||||||
|
type: 'modifyHeaders',
|
||||||
|
...(body.requestHeaders && Object.keys(body.requestHeaders).length > 0
|
||||||
|
? {
|
||||||
|
requestHeaders: mapHeadersToDeclarativeNetRequestHeaders(body.requestHeaders, 'set'),
|
||||||
|
}
|
||||||
|
: {}),
|
||||||
|
responseHeaders: [
|
||||||
|
{
|
||||||
|
header: 'Access-Control-Allow-Origin',
|
||||||
|
operation: 'set',
|
||||||
|
value: '*',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Access-Control-Allow-Methods',
|
||||||
|
operation: 'set',
|
||||||
|
value: 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Access-Control-Allow-Headers',
|
||||||
|
operation: 'set',
|
||||||
|
value: '*',
|
||||||
|
},
|
||||||
|
...mapHeadersToDeclarativeNetRequestHeaders(body.responseHeaders ?? {}, 'set'),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
if (browser.runtime.lastError?.message) throw new Error(browser.runtime.lastError.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const removeDynamicRules = async (ruleIds: number[]) => {
|
||||||
|
await (chrome || browser).declarativeNetRequest.updateDynamicRules({
|
||||||
|
removeRuleIds: ruleIds,
|
||||||
|
});
|
||||||
|
if ((chrome || browser).runtime.lastError?.message) throw new Error((chrome || browser).runtime.lastError.message);
|
||||||
|
};
|
20
src/utils/injection.ts
Normal file
20
src/utils/injection.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
// raw urls don't work with eslint, so its a false positive
|
||||||
|
// eslint-disable-next-line import/no-unresolved
|
||||||
|
import contentScriptUrl from 'url:~contents/movie-web';
|
||||||
|
|
||||||
|
import { queryCurrentTab } from '~utils/tabs';
|
||||||
|
|
||||||
|
export function injectScript() {
|
||||||
|
queryCurrentTab((tab) => {
|
||||||
|
if (!tab.id) return;
|
||||||
|
chrome.scripting
|
||||||
|
.executeScript({
|
||||||
|
target: {
|
||||||
|
tabId: tab.id,
|
||||||
|
},
|
||||||
|
world: 'MAIN',
|
||||||
|
files: [contentScriptUrl],
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
});
|
||||||
|
}
|
@@ -3,11 +3,11 @@ import { useStorage } from '@plasmohq/storage/hook';
|
|||||||
|
|
||||||
import { makeUrlIntoDomain } from '~utils/domains';
|
import { makeUrlIntoDomain } from '~utils/domains';
|
||||||
|
|
||||||
export const DEFAULT_DOMAIN_WHITELIST = ['movie-web.app', 'dev.movie-web.app'];
|
export const DEFAULT_DOMAIN_WHITELIST = [];
|
||||||
|
|
||||||
export const storage = new Storage();
|
export const storage = new Storage();
|
||||||
|
|
||||||
const getDomainWhiteList = async () => {
|
export const getDomainWhiteList = async () => {
|
||||||
const whitelist = await storage.get<string[]>('domainWhitelist');
|
const whitelist = await storage.get<string[]>('domainWhitelist');
|
||||||
if (!whitelist) await storage.set('domainWhitelist', DEFAULT_DOMAIN_WHITELIST);
|
if (!whitelist) await storage.set('domainWhitelist', DEFAULT_DOMAIN_WHITELIST);
|
||||||
return whitelist ?? DEFAULT_DOMAIN_WHITELIST;
|
return whitelist ?? DEFAULT_DOMAIN_WHITELIST;
|
||||||
@@ -15,7 +15,7 @@ const getDomainWhiteList = async () => {
|
|||||||
|
|
||||||
const domainIsInWhitelist = async (domain: string) => {
|
const domainIsInWhitelist = async (domain: string) => {
|
||||||
const whitelist = await getDomainWhiteList();
|
const whitelist = await getDomainWhiteList();
|
||||||
return whitelist?.some((d) => d.includes(domain)) ?? false;
|
return whitelist?.some((d) => d === domain) ?? false;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function useDomainStorage() {
|
export function useDomainStorage() {
|
||||||
|
@@ -1,14 +1,17 @@
|
|||||||
import { isChrome } from './extension';
|
import { isChrome } from './extension';
|
||||||
|
|
||||||
export function queryCurrentDomain(cb: (domain: string | null) => void) {
|
export function queryCurrentTab(cb: (tab: chrome.tabs.Tab | browser.tabs.Tab) => void) {
|
||||||
const handle = (tabUrl: string | null) => {
|
const handle = (tab: chrome.tabs.Tab | browser.tabs.Tab) => {
|
||||||
if (!tabUrl) cb(null);
|
cb(tab);
|
||||||
else cb(tabUrl);
|
|
||||||
};
|
};
|
||||||
const ops = { active: true, currentWindow: true } as const;
|
const ops = { active: true, currentWindow: true } as const;
|
||||||
|
|
||||||
if (isChrome()) chrome.tabs.query(ops).then((tabs) => handle(tabs[0]?.url));
|
if (isChrome()) chrome.tabs.query(ops).then((tabs) => handle(tabs[0]));
|
||||||
else browser.tabs.query(ops).then((tabs) => handle(tabs[0]?.url));
|
else browser.tabs.query(ops).then((tabs) => handle(tabs[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryCurrentDomain(cb: (domain: string | null) => void) {
|
||||||
|
queryCurrentTab((tab) => cb(tab.url ?? null));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function listenToTabChanges(cb: () => void) {
|
export function listenToTabChanges(cb: () => void) {
|
||||||
|
Reference in New Issue
Block a user