1 Commits

Author SHA1 Message Date
William Oldham
6a3d32dcc3 Merge pull request #9 from movie-web/dev
Extension v1.0.2
2024-01-25 21:39:15 +00:00
15 changed files with 182 additions and 190 deletions

View File

@@ -10,19 +10,3 @@ 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.

View File

@@ -1,7 +1,7 @@
{ {
"name": "@movie-web/extension", "name": "@movie-web/extension",
"displayName": "movie-web extension", "displayName": "movie-web extension",
"version": "1.0.3", "version": "1.0.2",
"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,12 +18,11 @@
"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.2", "plasmo": "0.84.0",
"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",
@@ -44,13 +43,13 @@
}, },
"manifest": { "manifest": {
"permissions": [ "permissions": [
"declarativeNetRequestWithHostAccess", "declarativeNetRequest",
"activeTab", "tabs"
"scripting"
], ],
"optional_host_permissions": [ "host_permissions": [
"https://*/*", "<all_urls>",
"http://*/*" "https://dev.movie-web.app/*",
"https://movie-web.app/*"
], ],
"browser_specific_settings": { "browser_specific_settings": {
"gecko": { "gecko": {

215
pnpm-lock.yaml generated
View File

@@ -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.2 specifier: 0.84.0
version: 0.84.2(react-dom@18.2.0)(react@18.2.0) version: 0.84.0(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,9 +22,6 @@ 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
@@ -599,6 +596,7 @@ 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==}
@@ -610,6 +608,7 @@ 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==}
@@ -631,6 +630,7 @@ 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,6 +646,7 @@ 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:
@@ -661,6 +662,7 @@ 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:
@@ -676,6 +678,7 @@ 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:
@@ -691,6 +694,7 @@ 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:
@@ -706,6 +710,7 @@ 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:
@@ -724,12 +729,14 @@ 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:
@@ -737,6 +744,7 @@ 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:
@@ -744,6 +752,7 @@ 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:
@@ -751,6 +760,7 @@ 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:
@@ -758,6 +768,7 @@ 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:
@@ -765,6 +776,7 @@ 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:
@@ -823,6 +835,7 @@ 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==}
@@ -836,6 +849,7 @@ 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==}
@@ -923,6 +937,7 @@ 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==}
@@ -938,6 +953,7 @@ 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==}
@@ -947,6 +963,7 @@ 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==}
@@ -958,6 +975,7 @@ 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==}
@@ -985,12 +1003,14 @@ 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==}
@@ -1005,6 +1025,7 @@ 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==}
@@ -1020,6 +1041,7 @@ 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==}
@@ -1033,6 +1055,7 @@ 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==}
@@ -1057,6 +1080,7 @@ 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==}
@@ -1177,6 +1201,7 @@ 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==}
@@ -1240,15 +1265,6 @@ 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'}
@@ -1265,6 +1281,7 @@ 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==}
@@ -1273,6 +1290,7 @@ 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==}
@@ -1364,6 +1382,7 @@ 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==}
@@ -1612,6 +1631,7 @@ 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==}
@@ -1638,6 +1658,7 @@ 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==}
@@ -1645,6 +1666,7 @@ 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:
@@ -1653,6 +1675,7 @@ 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:
@@ -1661,6 +1684,7 @@ 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:
@@ -1669,6 +1693,7 @@ 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:
@@ -1677,6 +1702,7 @@ 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:
@@ -1685,6 +1711,7 @@ 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:
@@ -1693,6 +1720,7 @@ 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:
@@ -1701,6 +1729,7 @@ 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:
@@ -1709,6 +1738,7 @@ 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:
@@ -1717,6 +1747,7 @@ 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:
@@ -1738,6 +1769,7 @@ 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==}
@@ -1767,6 +1799,7 @@ 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==}
@@ -1967,8 +2000,8 @@ packages:
- '@parcel/core' - '@parcel/core'
dev: false dev: false
/@plasmohq/parcel-config@0.40.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): /@plasmohq/parcel-config@0.40.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2):
resolution: {integrity: sha512-YuE2wxtmMcygz+YC0YZbFRsRp6Vqe+qs+TJs15sn5jKVcOu01RZeKuThKOmcTCc1M6Bcst5OkGsV8RmkpGKKCQ==} resolution: {integrity: sha512-aDyZIL3ScTmA1CsB/Sym7SxOMVSFUgNQrFovD+sl1M2nrYytqkLDFs7mspCpBlsxCGt97s8rD/kufke21UUHRA==}
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)
@@ -1997,12 +2030,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.2 '@plasmohq/parcel-resolver': 0.13.1
'@plasmohq/parcel-resolver-post': 0.4.3 '@plasmohq/parcel-resolver-post': 0.4.2
'@plasmohq/parcel-runtime': 0.23.1 '@plasmohq/parcel-runtime': 0.23.0
'@plasmohq/parcel-transformer-inject-env': 0.2.11 '@plasmohq/parcel-transformer-inject-env': 0.2.11
'@plasmohq/parcel-transformer-inline-css': 0.3.11 '@plasmohq/parcel-transformer-inline-css': 0.3.9
'@plasmohq/parcel-transformer-manifest': 0.17.9 '@plasmohq/parcel-transformer-manifest': 0.17.8
'@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:
@@ -2134,8 +2167,8 @@ packages:
nullthrows: 1.1.1 nullthrows: 1.1.1
dev: false dev: false
/@plasmohq/parcel-resolver-post@0.4.3: /@plasmohq/parcel-resolver-post@0.4.2:
resolution: {integrity: sha512-+KxdAOyBJNK7wxLUbLhx0d4AWQg2trcCK8rwOSNL8JP0OgtSDaOFa2NqCTFwuccGco4PzmK+27U17LWSGTFAOQ==} resolution: {integrity: sha512-dbrwjUQEhKqKBEgVJjL5ls1p6bpQ3VlDXI5REoaSpwoPcB7TRAcUfTwV4oNGE4eTnw4ElF08JkyslYvKgxosAw==}
engines: {parcel: '>= 2.7.0'} engines: {parcel: '>= 2.7.0'}
dependencies: dependencies:
'@parcel/core': 2.9.3 '@parcel/core': 2.9.3
@@ -2152,21 +2185,21 @@ packages:
- ts-node - ts-node
dev: false dev: false
/@plasmohq/parcel-resolver@0.13.2: /@plasmohq/parcel-resolver@0.13.1:
resolution: {integrity: sha512-JVXk65c5g5rOci9xmuvEqpemOFc6yTlGO1A1LCllFeByl2hBszRCBBSNp9wsaes2gQIbClgzFjbOSijKV3acNw==} resolution: {integrity: sha512-IuKr3Ue1+2fsyJPQuHh4Yh36L3FI/2I27X6hC+NHlX/1j9fVYiFk89dTSPNhvAdGN/hwsMjQ/jCiKZGW1157xg==}
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.3.2 fast-glob: 3.2.12
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.1: /@plasmohq/parcel-runtime@0.23.0:
resolution: {integrity: sha512-EiBjAJcJjVFarUmiIqywKd+MHGIThWTkcZe5IYfR7ecaJRNhhZF1B/gPgoAwv1nLcxfvRIC2CF9z9frwQvrOYQ==} resolution: {integrity: sha512-+ZqH9XksSbWPC6pnvjmvmykxh1SfyYkSKyOeNQSeHsPFo40fADUKOda8Hw/vm/g5p8GIlv5YSb2iYZzCWmKs1g==}
engines: {parcel: '>= 2.7.0'} engines: {parcel: '>= 2.7.0'}
dependencies: dependencies:
'@parcel/core': 2.9.3 '@parcel/core': 2.9.3
@@ -2183,19 +2216,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.11: /@plasmohq/parcel-transformer-inline-css@0.3.9:
resolution: {integrity: sha512-EUSwEowFNSgC/F1q/V4H4NXJ23wwLzlmRI6lvIr6S0mIuG/FCga+lAV3IZ+yAuXqUM2VexX6JyYYpNVidrMSxw==} resolution: {integrity: sha512-da1gVe3TX7J5lC6M04iHzp2NPwhh40n/Gx/Di9o2KLLEYe0q+pKlI5OjN9zf5kpXwXfVO7QzE5B1/tRGoEu2Bw==}
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.22.1 browserslist: 4.21.10
lightningcss: 1.21.8 lightningcss: 1.21.7
dev: false dev: false
/@plasmohq/parcel-transformer-manifest@0.17.9: /@plasmohq/parcel-transformer-manifest@0.17.8:
resolution: {integrity: sha512-syL5AbC7sKCNd6jpNU6qKdeUVWUDhiWLoHC5IYTVGcdVjKBql6lgs+e2JehjNB1BYW2lTrY5v3lI26Z6P6+/9Q==} resolution: {integrity: sha512-G6XISWddf900Q/4ABlFLBJcqvN1VTYF06NytTOMSDO4dOraxGhgZ0CyC990b+LJEa7nc5xf4xhHQxf3mkjALPQ==}
engines: {parcel: '>= 2.7.0'} engines: {parcel: '>= 2.7.0'}
dependencies: dependencies:
'@mischnic/json-sourcemap': 0.1.0 '@mischnic/json-sourcemap': 0.1.0
@@ -3013,6 +3046,7 @@ 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==}
@@ -3202,6 +3236,7 @@ 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==}
@@ -3246,15 +3281,15 @@ packages:
dependencies: dependencies:
fill-range: 7.0.1 fill-range: 7.0.1
/browserslist@4.22.1: /browserslist@4.21.10:
resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
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.22.1) update-browserslist-db: 1.0.13(browserslist@4.21.10)
dev: false dev: false
/browserslist@4.22.2: /browserslist@4.22.2:
@@ -3266,6 +3301,7 @@ 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==}
@@ -3332,6 +3368,7 @@ 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==}
@@ -3384,6 +3421,7 @@ 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==}
@@ -3410,6 +3448,7 @@ 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==}
@@ -3661,6 +3700,7 @@ 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==}
@@ -3721,6 +3761,7 @@ 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==}
@@ -3730,6 +3771,7 @@ 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==}
@@ -3737,6 +3779,7 @@ 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==}
@@ -3909,6 +3952,7 @@ 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==}
@@ -4296,6 +4340,17 @@ 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'}
@@ -5088,6 +5143,7 @@ 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==}
@@ -5149,8 +5205,8 @@ packages:
type-check: 0.4.0 type-check: 0.4.0
dev: true dev: true
/lightningcss-darwin-arm64@1.21.8: /lightningcss-darwin-arm64@1.21.7:
resolution: {integrity: sha512-BOMoGfcgkk2f4ltzsJqmkjiqRtlZUK+UdwhR+P6VgIsnpQBV3G01mlL6GzYxYqxq+6/3/n/D+4oy2NeknmADZw==} resolution: {integrity: sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@@ -5167,8 +5223,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-darwin-x64@1.21.8: /lightningcss-darwin-x64@1.21.7:
resolution: {integrity: sha512-YhF64mcVDPKKufL4aNFBnVH7uvzE0bW3YUsPXdP4yUcT/8IXChypOZ/PE1pmt2RlbmsyVuuIIeZU4zTyZe5Amw==} resolution: {integrity: sha512-F4gS4bf7eWekfPT+TxJNm/pF+QRgZiTrTkQH6cw4/UWfdeZISfuhD5El2dm16giFnY0K5ylIwO+ZusgYNkGSXA==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@@ -5185,8 +5241,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-freebsd-x64@1.21.8: /lightningcss-freebsd-x64@1.21.7:
resolution: {integrity: sha512-CV6A/vTG2Ryd3YpChEgfWWv4TXCAETo9TcHSNx0IP0dnKcnDEiAko4PIKhCqZL11IGdN1ZLBCVPw+vw5ZYwzfA==} resolution: {integrity: sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@@ -5203,8 +5259,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-linux-arm-gnueabihf@1.21.8: /lightningcss-linux-arm-gnueabihf@1.21.7:
resolution: {integrity: sha512-9PMbqh8n/Xq0F4/j2NR/hHM2HRDiFXFSF0iOvV67pNWKJkHIO6mR8jBw/88Aro5Ye/ILsX5OuWsxIVJDFv0NXA==} resolution: {integrity: sha512-biSRUDZNx7vubWP1jArw/qqfZKPGpkV/qzunasZzxmqijbZ43sW9faDQYxWNcxPWljJJdF/qs6qcurYFovWtrQ==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@@ -5221,8 +5277,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-linux-arm64-gnu@1.21.8: /lightningcss-linux-arm64-gnu@1.21.7:
resolution: {integrity: sha512-JTM/TuMMllkzaXV7/eDjG4IJKLlCl+RfYZwtsVmC82gc0QX0O37csGAcY2OGleiuA4DnEo/Qea5WoFfZUNC6zg==} resolution: {integrity: sha512-PENY8QekqL9TG3AY/A7rkUBb5ymefGxea7Oe7+x7Hbw4Bz4Hpj5cec5OoMypMqFbURPmpi0fTWx4vSWUPzpDcA==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -5239,8 +5295,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-linux-arm64-musl@1.21.8: /lightningcss-linux-arm64-musl@1.21.7:
resolution: {integrity: sha512-01gWShXrgoIb8urzShpn1RWtZuaSyKSzF2hfO+flzlTPoACqcO3rgcu/3af4Cw54e8vKzL5hPRo4kROmgaOMLg==} resolution: {integrity: sha512-pfOipKvA/0X1OjRaZt3870vnV9UGBSjayIqHh0fGx/+aRz3O0MVFHE/60P2UWXpM3YGJEw/hMWtNkrFwqOge8A==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -5257,8 +5313,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-linux-x64-gnu@1.21.8: /lightningcss-linux-x64-gnu@1.21.7:
resolution: {integrity: sha512-yVB5vYJjJb/Aku0V9QaGYIntvK/1TJOlNB9GmkNpXX5bSSP2pYW4lWW97jxFMHO908M0zjEt1qyOLMyqojHL+Q==} resolution: {integrity: sha512-dgcsis4TAA7s0ia4f31QHX+G4PWPwxk+wJaEQLaV0NdJs09O5hHoA8DpLEr8nrvc/tsRTyVNBP1rDtgzySjpXg==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -5275,8 +5331,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-linux-x64-musl@1.21.8: /lightningcss-linux-x64-musl@1.21.7:
resolution: {integrity: sha512-TYi+KNtBVK0+FZvxTX/d5XJb+tw3Jq+2Rr9hW359wp1afsi1Vkg+uVGgbn+m2dipa5XwpCseQq81ylMlXuyfPw==} resolution: {integrity: sha512-A+9dXpxld3p4Cd6fxev2eqEvaauYtrgNpXV3t7ioCJy30Oj9nYiNGwiGusM+4MJVcEpUPGUGiuAqY4sWilRDwA==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -5293,8 +5349,8 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss-win32-x64-msvc@1.21.8: /lightningcss-win32-x64-msvc@1.21.7:
resolution: {integrity: sha512-mww+kqbPx0/C44l2LEloECtRUuOFDjq9ftp+EHTPiCp2t+avy0sh8MaFwGsrKkj2XfZhaRhi4CPVKBoqF1Qlwg==} resolution: {integrity: sha512-07/8vogEq+C/mF99pdMhh/f19/xreq8N9Ca6AWeVHZIdODyF/pt6KdKSCWDZWIn+3CUxI8gCJWuUWyOc3xymvw==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -5311,21 +5367,21 @@ packages:
dev: false dev: false
optional: true optional: true
/lightningcss@1.21.8: /lightningcss@1.21.7:
resolution: {integrity: sha512-jEqaL7m/ZckZJjlMAfycr1Kpz7f93k6n7KGF5SJjuPSm6DWI6h3ayLZmgRHgy1OfrwoCed6h4C/gHYPOd1OFMA==} resolution: {integrity: sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==}
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.8 lightningcss-darwin-arm64: 1.21.7
lightningcss-darwin-x64: 1.21.8 lightningcss-darwin-x64: 1.21.7
lightningcss-freebsd-x64: 1.21.8 lightningcss-freebsd-x64: 1.21.7
lightningcss-linux-arm-gnueabihf: 1.21.8 lightningcss-linux-arm-gnueabihf: 1.21.7
lightningcss-linux-arm64-gnu: 1.21.8 lightningcss-linux-arm64-gnu: 1.21.7
lightningcss-linux-arm64-musl: 1.21.8 lightningcss-linux-arm64-musl: 1.21.7
lightningcss-linux-x64-gnu: 1.21.8 lightningcss-linux-x64-gnu: 1.21.7
lightningcss-linux-x64-musl: 1.21.8 lightningcss-linux-x64-musl: 1.21.7
lightningcss-win32-x64-msvc: 1.21.8 lightningcss-win32-x64-msvc: 1.21.7
dev: false dev: false
/lightningcss@1.22.1: /lightningcss@1.22.1:
@@ -5389,6 +5445,7 @@ 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==}
@@ -5567,17 +5624,20 @@ 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==}
@@ -5632,6 +5692,7 @@ 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==}
@@ -5639,6 +5700,7 @@ 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==}
@@ -5648,11 +5710,13 @@ 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:
@@ -5662,6 +5726,7 @@ 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==}
@@ -5688,6 +5753,7 @@ 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==}
@@ -5796,6 +5862,7 @@ 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==}
@@ -5892,6 +5959,7 @@ 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==}
@@ -5914,8 +5982,8 @@ packages:
engines: {node: '>= 6'} engines: {node: '>= 6'}
dev: false dev: false
/plasmo@0.84.2(react-dom@18.2.0)(react@18.2.0): /plasmo@0.84.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-9fyuQubUdYOHEs7plvppB7tPfyqTpA1UlWEYUGeVOgKQ6/rhvpvjBLCWyhzy/S3CrzXL8nZ7HQ1xHka4Coe0PA==} resolution: {integrity: sha512-SK6A/uX5mo4EsYiF7JySTOCp2aMo3ejfpbNey89M0zat9p0yDTKEClvMs9MWKXld5Ae0CXPaMYcZPAMvCMngPQ==}
hasBin: true hasBin: true
dependencies: dependencies:
'@expo/spawn-async': 1.7.2 '@expo/spawn-async': 1.7.2
@@ -5924,7 +5992,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.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@plasmohq/parcel-config': 0.40.0(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
@@ -6349,6 +6417,7 @@ 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==}
@@ -6960,13 +7029,13 @@ packages:
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
dev: false dev: false
/update-browserslist-db@1.0.13(browserslist@4.22.1): /update-browserslist-db@1.0.13(browserslist@4.21.10):
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.22.1 browserslist: 4.21.10
escalade: 3.1.1 escalade: 3.1.1
picocolors: 1.0.0 picocolors: 1.0.0
dev: false dev: false
@@ -6980,6 +7049,7 @@ 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==}
@@ -6994,6 +7064,7 @@ 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==}
@@ -7013,6 +7084,7 @@ 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==}
@@ -7113,6 +7185,7 @@ 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==}

View File

@@ -1,20 +0,0 @@
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();

View File

@@ -4,7 +4,6 @@ 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<{
@@ -15,13 +14,12 @@ 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(domain), hasPermission: await hasPermission(),
}); });
} catch (err) { } catch (err) {
res.send({ res.send({

View File

@@ -1,10 +0,0 @@
import type { PlasmoMessaging } from '@plasmohq/messaging';
import { injectScript } from '~utils/injection';
const handler: PlasmoMessaging.MessageHandler = async (_req, res) => {
injectScript();
res.send({});
};
export default handler;

View File

@@ -49,20 +49,19 @@ const mapBodyToFetchBody = (body: Request['body'], bodyType: Request['bodyType']
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);
if (req.body.headers['User-Agent']) { if (req.body.headers['User-Agent']) {
await setDynamicRules({ await setDynamicRules({
ruleId: MAKE_REQUEST_DYNAMIC_RULE, ruleId: MAKE_REQUEST_DYNAMIC_RULE,
targetDomains: [new URL(url).hostname], targetDomains: [new URL(req.body.url).hostname],
requestHeaders: { requestHeaders: {
'User-Agent': req.body.headers['User-Agent'], 'User-Agent': req.body.headers['User-Agent'],
}, },
}); });
} }
const response = await fetch(url, { const response = await fetch(makeFullUrl(req.body.url, req.body), {
method: req.body.method, method: req.body.method,
headers: req.body.headers, headers: req.body.headers,
body: mapBodyToFetchBody(req.body.body, req.body.bodyType), body: mapBodyToFetchBody(req.body.body, req.body.bodyType),
@@ -81,7 +80,6 @@ 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,

View File

@@ -1,7 +1,10 @@
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',

View File

@@ -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(domain); const { grantPermission } = usePermission();
const toggle = useCallback(() => { const toggle = useCallback(() => {
if (!isWhitelisted) { if (!isWhitelisted) {

View File

@@ -1,39 +1,29 @@
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';
function makeDomainIntoOriginMatchers(domain: string): string[] { export async function hasPermission() {
return [`http://${domain}/*`, `https://${domain}/*`];
}
export async function hasPermission(domain: string) {
return chrome.permissions.contains({ return chrome.permissions.contains({
origins: makeDomainIntoOriginMatchers(domain), origins: ['<all_urls>'],
}); });
} }
export function usePermission(domain: string) { export function usePermission() {
const { addDomain } = useDomainWhitelist(); const { addDomain } = useDomainWhitelist();
const [permission, setPermission] = useState(false); const [permission, setPermission] = useState(false);
const grantPermission = useCallback(async () => { const grantPermission = useCallback(async (domain?: string) => {
const granted = await chrome.permissions.request({ const granted = await chrome.permissions.request({
origins: makeDomainIntoOriginMatchers(domain), origins: ['<all_urls>'],
}); });
setPermission(granted); setPermission(granted);
if (granted && domain) { if (granted && domain) addDomain(domain);
await sendToBackground({
name: 'inject',
});
addDomain(domain);
}
return granted; return granted;
}, [domain]); }, []);
useEffect(() => { useEffect(() => {
hasPermission(domain).then((has) => setPermission(has)); hasPermission().then((has) => setPermission(has));
}, [domain]); }, []);
return { return {
hasPermission: permission, hasPermission: permission,

View File

@@ -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(domain); const { grantPermission, hasPermission } = usePermission();
let page = 'toggle'; let page = 'toggle';
if (!hasPermission) page = 'perm'; if (!hasPermission) page = 'perm';

View File

@@ -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().then(() => { grantPermission(domain).then(() => {
redirectBack(); redirectBack();
}); });
}; };

View File

@@ -1,20 +0,0 @@
// 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(() => {});
});
}

View File

@@ -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 = []; export const DEFAULT_DOMAIN_WHITELIST = ['movie-web.app', 'dev.movie-web.app'];
export const storage = new Storage(); export const storage = new Storage();
export const getDomainWhiteList = async () => { 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 @@ export 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 === domain) ?? false; return whitelist?.some((d) => d.includes(domain)) ?? false;
}; };
export function useDomainStorage() { export function useDomainStorage() {

View File

@@ -1,17 +1,14 @@
import { isChrome } from './extension'; import { isChrome } from './extension';
export function queryCurrentTab(cb: (tab: chrome.tabs.Tab | browser.tabs.Tab) => void) { export function queryCurrentDomain(cb: (domain: string | null) => void) {
const handle = (tab: chrome.tabs.Tab | browser.tabs.Tab) => { const handle = (tabUrl: string | null) => {
cb(tab); if (!tabUrl) cb(null);
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])); if (isChrome()) chrome.tabs.query(ops).then((tabs) => handle(tabs[0]?.url));
else browser.tabs.query(ops).then((tabs) => handle(tabs[0])); else browser.tabs.query(ops).then((tabs) => handle(tabs[0]?.url));
}
export function queryCurrentDomain(cb: (domain: string | null) => void) {
queryCurrentTab((tab) => cb(tab.url ?? null));
} }
export function listenToTabChanges(cb: () => void) { export function listenToTabChanges(cb: () => void) {