modified: package-lock.json

modified:   package.json
	modified:   pnpm-lock.yaml
	modified:   src/providers/sources/florence/thunderleaf.ts
	modified:   vite.config.ts
This commit is contained in:
XSWY 2026-03-15 12:38:18 +00:00
parent 6d14ddeb6c
commit 403b1e50e9
5 changed files with 3222 additions and 2428 deletions

5083
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -65,7 +65,7 @@
"cross-env": "^7.0.3",
"dotenv": "^16.6.1",
"enquirer": "^2.4.1",
"eslint": "^10.0.3",
"eslint": "^9.39.4",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^9.1.2",
"eslint-import-resolver-typescript": "^3.10.1",
@ -73,6 +73,7 @@
"eslint-plugin-prettier": "^5.5.4",
"node-fetch": "^3.3.2",
"prettier": "^3.6.2",
"puppeteer": "^24.39.1",
"spinnies": "^0.5.1",
"terser": "^5.44.0",
"tsc-alias": "^1.8.16",
@ -93,12 +94,12 @@
"hls-parser": "^0.13.6",
"iso-639-1": "^3.1.5",
"json5": "^2.2.3",
"kolorist": "^1.8.0",
"nanoid": "^3.3.11",
"node-fetch": "^3.3.2",
"rollup-plugin-visualizer": "^7.0.1",
"set-cookie-parser": "^2.7.1",
"unpacker": "^1.0.1",
"puppeteer": "^22.15.0"
"unpacker": "^1.0.1"
},
"packageManager": "pnpm@9.14.4"
}
}

View file

@ -35,15 +35,15 @@ importers:
json5:
specifier: ^2.2.3
version: 2.2.3
kolorist:
specifier: ^1.8.0
version: 1.8.0
nanoid:
specifier: ^3.3.11
version: 3.3.11
node-fetch:
specifier: ^3.3.2
version: 3.3.2
puppeteer:
specifier: ^22.15.0
version: 22.15.0(typescript@5.9.3)
rollup-plugin-visualizer:
specifier: ^7.0.1
version: 7.0.1(rolldown@1.0.0-rc.9)(rollup@4.59.0)
@ -56,7 +56,7 @@ importers:
devDependencies:
'@nabla/vite-plugin-eslint':
specifier: ^2.0.6
version: 2.0.6(eslint@10.0.3)(vite@8.0.0(@types/node@25.5.0)(terser@5.46.0))
version: 2.0.6(eslint@9.39.4)(vite@8.0.0(@types/node@25.5.0)(terser@5.46.0))
'@types/cookie':
specifier: ^0.6.0
version: 0.6.0
@ -77,10 +77,10 @@ importers:
version: 0.5.3
'@typescript-eslint/eslint-plugin':
specifier: ^7.18.0
version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)
version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: ^7.18.0
version: 7.18.0(eslint@10.0.3)(typescript@5.9.3)
version: 7.18.0(eslint@9.39.4)(typescript@5.9.3)
'@vitejs/plugin-react':
specifier: ^5.2.0
version: 5.2.0(vite@8.0.0(@types/node@25.5.0)(terser@5.46.0))
@ -100,26 +100,29 @@ importers:
specifier: ^2.4.1
version: 2.4.1
eslint:
specifier: ^10.0.3
version: 10.0.3
specifier: ^9.39.4
version: 9.39.4
eslint-config-airbnb-base:
specifier: ^15.0.0
version: 15.0.0(eslint-plugin-import@2.32.0)(eslint@10.0.3)
version: 15.0.0(eslint-plugin-import@2.32.0)(eslint@9.39.4)
eslint-config-prettier:
specifier: ^9.1.2
version: 9.1.2(eslint@10.0.3)
version: 9.1.2(eslint@9.39.4)
eslint-import-resolver-typescript:
specifier: ^3.10.1
version: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.0.3)
version: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4)
eslint-plugin-import:
specifier: ^2.32.0
version: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.3)
version: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4)
eslint-plugin-prettier:
specifier: ^5.5.4
version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1)
version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.4))(eslint@9.39.4)(prettier@3.8.1)
prettier:
specifier: ^3.6.2
version: 3.8.1
puppeteer:
specifier: ^24.39.1
version: 24.39.1(typescript@5.9.3)
spinnies:
specifier: ^0.5.1
version: 0.5.1
@ -397,25 +400,33 @@ packages:
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint/config-array@0.23.3':
resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/config-array@0.21.2':
resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/config-helpers@0.5.3':
resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/config-helpers@0.4.2':
resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@1.1.1':
resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/core@0.17.0':
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@3.0.3':
resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/eslintrc@3.3.5':
resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/plugin-kit@0.6.1':
resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/js@9.39.4':
resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.7':
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/plugin-kit@0.4.1':
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
@ -512,8 +523,8 @@ packages:
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
'@puppeteer/browsers@2.3.0':
resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==}
'@puppeteer/browsers@2.13.0':
resolution: {integrity: sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==}
engines: {node: '>=18'}
hasBin: true
@ -804,9 +815,6 @@ packages:
'@types/eslint@9.6.1':
resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
'@types/esrecurse@4.3.1':
resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@ -1166,10 +1174,6 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.4:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
bare-events@2.8.2:
resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
peerDependencies:
@ -1208,9 +1212,6 @@ packages:
bare-url@2.3.2:
resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.10.8:
resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==}
engines: {node: '>=6.0.0'}
@ -1233,10 +1234,6 @@ packages:
brace-expansion@2.0.2:
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
brace-expansion@5.0.4:
resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
engines: {node: 18 || 20 || >=22}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
@ -1252,9 +1249,6 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
bundle-name@4.1.0:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'}
@ -1279,8 +1273,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
caniuse-lite@1.0.30001778:
resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==}
caniuse-lite@1.0.30001779:
resolution: {integrity: sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==}
chai@4.5.0:
resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
@ -1308,8 +1302,8 @@ packages:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
chromium-bidi@0.6.3:
resolution: {integrity: sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==}
chromium-bidi@14.0.0:
resolution: {integrity: sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==}
peerDependencies:
devtools-protocol: '*'
@ -1479,8 +1473,8 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
devtools-protocol@0.0.1312386:
resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==}
devtools-protocol@0.0.1581282:
resolution: {integrity: sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==}
diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
@ -1674,21 +1668,21 @@ packages:
eslint-config-prettier:
optional: true
eslint-scope@9.1.2:
resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint-scope@8.4.0:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@5.0.1:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint-visitor-keys@4.2.1:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@10.0.3:
resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint@9.39.4:
resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
jiti: '*'
@ -1696,9 +1690,9 @@ packages:
jiti:
optional: true
espree@11.2.0:
resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
espree@10.4.0:
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
@ -1896,6 +1890,10 @@ packages:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
@ -1970,9 +1968,6 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@ -2307,6 +2302,9 @@ packages:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
lodash@4.17.23:
resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
@ -2365,10 +2363,6 @@ packages:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
minimatch@10.2.4:
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
engines: {node: 18 || 20 || >=22}
minimatch@3.0.8:
resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==}
@ -2626,14 +2620,13 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
puppeteer-core@22.15.0:
resolution: {integrity: sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==}
puppeteer-core@24.39.1:
resolution: {integrity: sha512-AMqQIKoEhPS6CilDzw0Gd1brLri3emkC+1N2J6ZCCuY1Cglo56M63S0jOeBZDQlemOiRd686MYVMl9ELJBzN3A==}
engines: {node: '>=18'}
puppeteer@22.15.0:
resolution: {integrity: sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==}
puppeteer@24.39.1:
resolution: {integrity: sha512-68Zc9QpcVvfxp2C+3UL88TyUogEAn5tSylXidbEuEXvhiqK1+v65zeBU5ubinAgEHMGr3dcSYqvYrGtdzsPI3w==}
engines: {node: '>=18'}
deprecated: < 24.15.0 is no longer supported
hasBin: true
queue-lit@1.5.2:
@ -2939,9 +2932,6 @@ packages:
text-decoder@1.2.7:
resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==}
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
@ -3006,6 +2996,9 @@ packages:
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
typed-query-selector@2.12.1:
resolution: {integrity: sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==}
typescript@5.4.2:
resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==}
engines: {node: '>=14.17'}
@ -3023,9 +3016,6 @@ packages:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
unbzip2-stream@1.4.3:
resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
undici-types@7.18.2:
resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
@ -3048,9 +3038,6 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
urlpattern-polyfill@10.0.0:
resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==}
validator@13.15.26:
resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==}
engines: {node: '>= 0.10'}
@ -3182,6 +3169,9 @@ packages:
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
engines: {node: '>= 8'}
webdriver-bidi-protocol@0.4.1:
resolution: {integrity: sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==}
which-boxed-primitive@1.1.1:
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
engines: {node: '>= 0.4'}
@ -3281,8 +3271,8 @@ packages:
engines: {node: '>=8.0.0'}
hasBin: true
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
snapshots:
@ -3490,34 +3480,50 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
'@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)':
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)':
dependencies:
eslint: 10.0.3
eslint: 9.39.4
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
'@eslint/config-array@0.23.3':
'@eslint/config-array@0.21.2':
dependencies:
'@eslint/object-schema': 3.0.3
'@eslint/object-schema': 2.1.7
debug: 4.4.3
minimatch: 10.2.4
minimatch: 3.1.5
transitivePeerDependencies:
- supports-color
'@eslint/config-helpers@0.5.3':
'@eslint/config-helpers@0.4.2':
dependencies:
'@eslint/core': 1.1.1
'@eslint/core': 0.17.0
'@eslint/core@1.1.1':
'@eslint/core@0.17.0':
dependencies:
'@types/json-schema': 7.0.15
'@eslint/object-schema@3.0.3': {}
'@eslint/plugin-kit@0.6.1':
'@eslint/eslintrc@3.3.5':
dependencies:
'@eslint/core': 1.1.1
ajv: 6.14.0
debug: 4.4.3
espree: 10.4.0
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
js-yaml: 4.1.1
minimatch: 3.1.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
'@eslint/js@9.39.4': {}
'@eslint/object-schema@2.1.7': {}
'@eslint/plugin-kit@0.4.1':
dependencies:
'@eslint/core': 0.17.0
levn: 0.4.1
'@humanfs/core@0.19.1': {}
@ -3596,12 +3602,12 @@ snapshots:
'@microsoft/tsdoc@0.14.2': {}
'@nabla/vite-plugin-eslint@2.0.6(eslint@10.0.3)(vite@8.0.0(@types/node@25.5.0)(terser@5.46.0))':
'@nabla/vite-plugin-eslint@2.0.6(eslint@9.39.4)(vite@8.0.0(@types/node@25.5.0)(terser@5.46.0))':
dependencies:
'@types/eslint': 9.6.1
chalk: 4.1.2
debug: 4.4.3
eslint: 10.0.3
eslint: 9.39.4
vite: 8.0.0(@types/node@25.5.0)(terser@5.46.0)
transitivePeerDependencies:
- supports-color
@ -3640,7 +3646,7 @@ snapshots:
'@pkgr/core@0.2.9': {}
'@puppeteer/browsers@2.3.0':
'@puppeteer/browsers@2.13.0':
dependencies:
debug: 4.4.3
extract-zip: 2.0.1
@ -3648,7 +3654,6 @@ snapshots:
proxy-agent: 6.5.0
semver: 7.7.4
tar-fs: 3.1.2
unbzip2-stream: 1.4.3
yargs: 17.7.2
transitivePeerDependencies:
- bare-abort-controller
@ -3865,8 +3870,6 @@ snapshots:
'@types/estree': 1.0.8
'@types/json-schema': 7.0.15
'@types/esrecurse@4.3.1': {}
'@types/estree@1.0.8': {}
'@types/json-schema@7.0.15': {}
@ -3897,15 +3900,15 @@ snapshots:
'@types/node': 25.5.0
optional: true
'@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)':
'@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 7.18.0(eslint@10.0.3)(typescript@5.9.3)
'@typescript-eslint/parser': 7.18.0(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/type-utils': 7.18.0(eslint@10.0.3)(typescript@5.9.3)
'@typescript-eslint/utils': 7.18.0(eslint@10.0.3)(typescript@5.9.3)
'@typescript-eslint/type-utils': 7.18.0(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/utils': 7.18.0(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 7.18.0
eslint: 10.0.3
eslint: 9.39.4
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@ -3915,14 +3918,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3)':
'@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 7.18.0
debug: 4.4.3
eslint: 10.0.3
eslint: 9.39.4
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
@ -3933,12 +3936,12 @@ snapshots:
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/visitor-keys': 7.18.0
'@typescript-eslint/type-utils@7.18.0(eslint@10.0.3)(typescript@5.9.3)':
'@typescript-eslint/type-utils@7.18.0(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
'@typescript-eslint/utils': 7.18.0(eslint@10.0.3)(typescript@5.9.3)
'@typescript-eslint/utils': 7.18.0(eslint@9.39.4)(typescript@5.9.3)
debug: 4.4.3
eslint: 10.0.3
eslint: 9.39.4
ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
@ -3962,13 +3965,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@7.18.0(eslint@10.0.3)(typescript@5.9.3)':
'@typescript-eslint/utils@7.18.0(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3)
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4)
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
eslint: 10.0.3
eslint: 9.39.4
transitivePeerDependencies:
- supports-color
- typescript
@ -4270,8 +4273,6 @@ snapshots:
balanced-match@1.0.2: {}
balanced-match@4.0.4: {}
bare-events@2.8.2: {}
bare-fs@4.5.5:
@ -4305,8 +4306,6 @@ snapshots:
dependencies:
bare-path: 3.0.0
base64-js@1.5.1: {}
baseline-browser-mapping@2.10.8: {}
basic-ftp@5.2.0: {}
@ -4324,10 +4323,6 @@ snapshots:
dependencies:
balanced-match: 1.0.2
brace-expansion@5.0.4:
dependencies:
balanced-match: 4.0.4
braces@3.0.3:
dependencies:
fill-range: 7.1.1
@ -4335,7 +4330,7 @@ snapshots:
browserslist@4.28.1:
dependencies:
baseline-browser-mapping: 2.10.8
caniuse-lite: 1.0.30001778
caniuse-lite: 1.0.30001779
electron-to-chromium: 1.5.313
node-releases: 2.0.36
update-browserslist-db: 1.2.3(browserslist@4.28.1)
@ -4344,11 +4339,6 @@ snapshots:
buffer-from@1.1.2: {}
buffer@5.7.1:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
bundle-name@4.1.0:
dependencies:
run-applescript: 7.1.0
@ -4374,7 +4364,7 @@ snapshots:
callsites@3.1.0: {}
caniuse-lite@1.0.30001778: {}
caniuse-lite@1.0.30001779: {}
chai@4.5.0:
dependencies:
@ -4432,12 +4422,11 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
chromium-bidi@0.6.3(devtools-protocol@0.0.1312386):
chromium-bidi@14.0.0(devtools-protocol@0.0.1581282):
dependencies:
devtools-protocol: 0.0.1312386
devtools-protocol: 0.0.1581282
mitt: 3.0.1
urlpattern-polyfill: 10.0.0
zod: 3.23.8
zod: 3.25.76
cli-cursor@3.1.0:
dependencies:
@ -4589,7 +4578,7 @@ snapshots:
detect-libc@2.1.2: {}
devtools-protocol@0.0.1312386: {}
devtools-protocol@0.0.1581282: {}
diff-sequences@29.6.3: {}
@ -4776,18 +4765,18 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0)(eslint@10.0.3):
eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0)(eslint@9.39.4):
dependencies:
confusing-browser-globals: 1.0.11
eslint: 10.0.3
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.3)
eslint: 9.39.4
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4)
object.assign: 4.1.7
object.entries: 1.1.9
semver: 6.3.1
eslint-config-prettier@9.1.2(eslint@10.0.3):
eslint-config-prettier@9.1.2(eslint@9.39.4):
dependencies:
eslint: 10.0.3
eslint: 9.39.4
eslint-import-resolver-node@0.3.9:
dependencies:
@ -4797,33 +4786,33 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.0.3):
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
eslint: 10.0.3
eslint: 9.39.4
get-tsconfig: 4.13.6
is-bun-module: 2.0.0
stable-hash: 0.0.5
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.3)
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4)
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.3):
eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@10.0.3)(typescript@5.9.3)
eslint: 10.0.3
'@typescript-eslint/parser': 7.18.0(eslint@9.39.4)(typescript@5.9.3)
eslint: 9.39.4
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.0.3)
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4)
transitivePeerDependencies:
- supports-color
eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.3):
eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@ -4832,9 +4821,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
eslint: 10.0.3
eslint: 9.39.4
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@10.0.3)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.3)
eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@ -4846,52 +4835,53 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@10.0.3)(typescript@5.9.3)
'@typescript-eslint/parser': 7.18.0(eslint@9.39.4)(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1):
eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.4))(eslint@9.39.4)(prettier@3.8.1):
dependencies:
eslint: 10.0.3
eslint: 9.39.4
prettier: 3.8.1
prettier-linter-helpers: 1.0.1
synckit: 0.11.12
optionalDependencies:
'@types/eslint': 9.6.1
eslint-config-prettier: 9.1.2(eslint@10.0.3)
eslint-config-prettier: 9.1.2(eslint@9.39.4)
eslint-scope@9.1.2:
eslint-scope@8.4.0:
dependencies:
'@types/esrecurse': 4.3.1
'@types/estree': 1.0.8
esrecurse: 4.3.0
estraverse: 5.3.0
eslint-visitor-keys@3.4.3: {}
eslint-visitor-keys@5.0.1: {}
eslint-visitor-keys@4.2.1: {}
eslint@10.0.3:
eslint@9.39.4:
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3)
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4)
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.3
'@eslint/config-helpers': 0.5.3
'@eslint/core': 1.1.1
'@eslint/plugin-kit': 0.6.1
'@eslint/config-array': 0.21.2
'@eslint/config-helpers': 0.4.2
'@eslint/core': 0.17.0
'@eslint/eslintrc': 3.3.5
'@eslint/js': 9.39.4
'@eslint/plugin-kit': 0.4.1
'@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8
ajv: 6.14.0
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.3
escape-string-regexp: 4.0.0
eslint-scope: 9.1.2
eslint-visitor-keys: 5.0.1
espree: 11.2.0
eslint-scope: 8.4.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@ -4902,17 +4892,18 @@ snapshots:
imurmurhash: 0.1.4
is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1
minimatch: 10.2.4
lodash.merge: 4.6.2
minimatch: 3.1.5
natural-compare: 1.4.0
optionator: 0.9.4
transitivePeerDependencies:
- supports-color
espree@11.2.0:
espree@10.4.0:
dependencies:
acorn: 8.16.0
acorn-jsx: 5.3.2(acorn@8.16.0)
eslint-visitor-keys: 5.0.1
eslint-visitor-keys: 4.2.1
esprima@4.0.1: {}
@ -5130,6 +5121,8 @@ snapshots:
once: 1.4.0
path-is-absolute: 1.0.1
globals@14.0.0: {}
globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
@ -5203,8 +5196,6 @@ snapshots:
human-signals@5.0.0: {}
ieee754@1.2.1: {}
ignore@5.3.2: {}
import-fresh@3.3.1:
@ -5497,6 +5488,8 @@ snapshots:
lodash.isequal@4.5.0: {}
lodash.merge@4.6.2: {}
lodash@4.17.23: {}
loupe@2.3.7:
@ -5548,10 +5541,6 @@ snapshots:
mimic-fn@4.0.0: {}
minimatch@10.2.4:
dependencies:
brace-expansion: 5.0.4
minimatch@3.0.8:
dependencies:
brace-expansion: 1.1.12
@ -5821,12 +5810,14 @@ snapshots:
punycode@2.3.1: {}
puppeteer-core@22.15.0:
puppeteer-core@24.39.1:
dependencies:
'@puppeteer/browsers': 2.3.0
chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386)
'@puppeteer/browsers': 2.13.0
chromium-bidi: 14.0.0(devtools-protocol@0.0.1581282)
debug: 4.4.3
devtools-protocol: 0.0.1312386
devtools-protocol: 0.0.1581282
typed-query-selector: 2.12.1
webdriver-bidi-protocol: 0.4.1
ws: 8.19.0
transitivePeerDependencies:
- bare-abort-controller
@ -5836,12 +5827,14 @@ snapshots:
- supports-color
- utf-8-validate
puppeteer@22.15.0(typescript@5.9.3):
puppeteer@24.39.1(typescript@5.9.3):
dependencies:
'@puppeteer/browsers': 2.3.0
'@puppeteer/browsers': 2.13.0
chromium-bidi: 14.0.0(devtools-protocol@0.0.1581282)
cosmiconfig: 9.0.1(typescript@5.9.3)
devtools-protocol: 0.0.1312386
puppeteer-core: 22.15.0
devtools-protocol: 0.0.1581282
puppeteer-core: 24.39.1
typed-query-selector: 2.12.1
transitivePeerDependencies:
- bare-abort-controller
- bare-buffer
@ -6248,8 +6241,6 @@ snapshots:
transitivePeerDependencies:
- react-native-b4a
through@2.3.8: {}
tinybench@2.9.0: {}
tinyglobby@0.2.15:
@ -6333,6 +6324,8 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
typed-query-selector@2.12.1: {}
typescript@5.4.2: {}
typescript@5.9.3: {}
@ -6346,11 +6339,6 @@ snapshots:
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
unbzip2-stream@1.4.3:
dependencies:
buffer: 5.7.1
through: 2.3.8
undici-types@7.18.2: {}
universalify@0.1.2: {}
@ -6391,8 +6379,6 @@ snapshots:
dependencies:
punycode: 2.3.1
urlpattern-polyfill@10.0.0: {}
validator@13.15.26: {}
vite-node@1.6.1(@types/node@25.5.0)(lightningcss@1.32.0)(terser@5.46.0):
@ -6502,6 +6488,8 @@ snapshots:
web-streams-polyfill@3.3.3: {}
webdriver-bidi-protocol@0.4.1: {}
which-boxed-primitive@1.1.1:
dependencies:
is-bigint: 1.1.0
@ -6621,4 +6609,4 @@ snapshots:
optionalDependencies:
commander: 9.5.0
zod@3.23.8: {}
zod@3.25.76: {}

View file

@ -1,102 +1,46 @@
/* eslint-disable no-console */
/* eslint-disable import/no-extraneous-dependencies */
import { flags } from "@/entrypoint/utils/targets";
import { makeSourcerer, SourcererOutput } from "@/providers/base";
import { MovieScrapeContext, ShowScrapeContext } from "@/utils/context";
import { NotFoundError } from "@/utils/errors";
import puppeteer from 'puppeteer';
import { flags } from '@/entrypoint/utils/targets';
import { SourcererOutput, makeSourcerer } from '@/providers/base';
import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context';
import { NotFoundError } from '@/utils/errors';
const UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36';
async function ThunderleafScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise<SourcererOutput> {
console.log('[Thunderleaf] Starting headless scraper');
const API = "https://ubiquitous-parakeet-pxqvgx7j57jhrrqx-3000.app.github.dev";
async function ThunderleafScraper(
ctx: MovieScrapeContext | ShowScrapeContext
): Promise<SourcererOutput> {
const tmdb = ctx.media.tmdbId;
if (!tmdb) throw new NotFoundError('Missing TMDB');
if (!tmdb) throw new NotFoundError("Missing TMDB");
const pageUrl =
ctx.media.type === 'movie'
? `https://vidlink.pro/movie/${tmdb}`
: `https://vidlink.pro/tv/${tmdb}/${ctx.media.season.number}/${ctx.media.episode.number}`;
let url: string;
console.log('[Thunderleaf] Opening page:', pageUrl);
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox'],
});
const page = await browser.newPage();
await page.setUserAgent(UA);
let stream: string | null = null;
/* capture network requests */
page.on('request', (req) => {
const url = req.url();
if (url.includes('videostr')) {
console.log('[Thunderleaf] Videostr request:', url);
}
if (url.includes('.m3u8')) {
console.log('[Thunderleaf] M3U8 request:', url);
if (!url.includes('playlist')) {
console.log('[Thunderleaf] FINAL STREAM FOUND:', url);
stream = url;
}
}
});
/* capture network responses */
page.on('response', async (res) => {
const url = res.url();
if (url.includes('.m3u8') && !url.includes('playlist')) {
console.log('[Thunderleaf] M3U8 response:', url);
stream = url;
}
});
await page.goto(pageUrl, {
waitUntil: 'networkidle2',
timeout: 60000,
});
/* wait for player network calls */
await new Promise<void>((resolve) => {
setTimeout(resolve, 8000);
});
await browser.close();
if (!stream) {
throw new NotFoundError('Thunderleaf stream not found');
if (ctx.media.type === "movie") {
url = `${API}/movie/${tmdb}`;
} else {
url = `${API}/tv/${tmdb}/${ctx.media.season.number}/${ctx.media.episode.number}`;
}
console.log('[Thunderleaf] Raw stream:', stream);
const res = await fetch(url);
const data = await res.json();
/* convert to Thunderleaf proxy */
const proxiedStream = `https://thunderleaf12.online/proxy?url=${encodeURIComponent(stream)}`;
if (!data.stream) {
throw new NotFoundError("Stream not found");
}
console.log('[Thunderleaf] Proxied stream:', proxiedStream);
const playlist: string = data.stream;
return {
embeds: [],
stream: [
{
id: 'primary',
type: 'hls',
playlist: stream,
id: "primary",
type: "hls" as const,
playlist,
flags: [flags.CORS_ALLOWED],
captions: [],
headers: {
origin: 'https://vidlink.pro',
referer: 'https://vidlink.pro/',
origin: "https://vidlink.pro",
referer: "https://vidlink.pro/",
},
},
],
@ -104,11 +48,11 @@ async function ThunderleafScraper(ctx: ShowScrapeContext | MovieScrapeContext):
}
export const thunderleafScraper = makeSourcerer({
id: 'thunderleaf',
name: 'Thunderleaf',
id: "thunderleaf",
name: "Thunderleaf",
rank: 171,
disabled: false,
flags: [flags.CORS_ALLOWED, flags.IP_LOCKED, flags.PROXY_BLOCKED],
flags: [flags.CORS_ALLOWED],
scrapeMovie: ThunderleafScraper,
scrapeShow: ThunderleafScraper,
});
});

View file

@ -1,25 +1,47 @@
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';
import path from 'path';
import { defineConfig } from 'vitest/config';
import eslintPlugin from '@nabla/vite-plugin-eslint';
import dts from 'vite-plugin-dts';
import pkg from './package.json';
export default defineConfig({
const shouldTestProviders = process.env.MW_TEST_PROVIDERS === 'true';
let tests: string[] = ['src/__test__/standard/**/*.test.ts'];
if (shouldTestProviders) tests = ['src/__test__/providers/**/*.test.ts'];
export default defineConfig((env) => ({
plugins: [
env.mode !== 'test' && eslintPlugin(),
dts({
rollupTypes: true,
}),
],
css: {
postcss: {
plugins: [],
},
},
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
build: {
lib: {
entry: path.resolve(__dirname, 'src/index.ts'),
name: 'Providers',
fileName: 'index',
formats: ['es', 'cjs', 'umd']
minify: false,
rollupOptions: {
external: Object.keys(pkg.dependencies),
output: {
globals: Object.fromEntries(Object.keys(pkg.dependencies).map((v) => [v, v])),
},
},
outDir: 'lib',
emptyOutDir: true,
rollupOptions: {
external: ['puppeteer'],
output: {
globals: {
puppeteer: 'puppeteer'
}
}
}
lib: {
entry: path.resolve(__dirname, 'src/index.ts'),
name: 'index',
fileName: 'index',
formats: ['umd', 'es'],
},
},
plugins: [dts()],
});
test: {
include: tests,
},
}));