Compare commits

..
Author SHA1 Message Date
renovate[bot] affc8aba9e chore(deps): update dependency eslint to v10.10.0 2026-09-07 17:04:45 +00:00
Den Ilin a21555ddd2 fix(http): stop unhandled rejections from the fetch cleanup path (#3566)
* fix(http): stop unhandled rejections from the fetch cleanup path

The request/body cleanup commands are fired as floating promises, and the
Rust side releases a resource only once: fetch_cancel_body is
resources_table.close(rid)?, and fetch_read_body also closes the rid at
end-of-body. So every release after the first rejects with BadResourceId
into a promise nobody is listening to.

Make dropBody idempotent and let both cleanup calls handle their own
rejection.

* chore: add changefile

* chore(http): rebuild api-iife.js
2026-09-03 21:00:34 +03:00
Tony 845d8989cb fix: ignore and fix audits (#3564)
* fix: ignore and fix audits

* openssl-sys 0.9.114
2026-09-01 17:38:21 +08:00
7 changed files with 163 additions and 81 deletions
+3
View File
@@ -14,4 +14,7 @@ ignore = [
"RUSTSEC-2026-0195",
# quinn-proto, can't be updated in the repo because of MSRV, users are unaffected
"RUSTSEC-2026-0185",
# rkyv is not used, it's brought in by `rust_decimal`'s `rkyv` feature to the lockfile,
# but that feature is not enabled by anything
"RUSTSEC-2026-0235",
]
@@ -0,0 +1,6 @@
---
"http": patch
"http-js": patch
---
Fix unhandled promise rejections on every `fetch` teardown: the request/body cleanup commands were fired as floating promises, and releasing an already-released resource rejects with `The resource id N is invalid.`. `dropBody` is now idempotent and both cleanup calls handle their own rejection.
Generated
+9 -7
View File
@@ -3826,7 +3826,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro-crate 1.3.1",
"proc-macro2",
"quote",
"syn 2.0.100",
@@ -4123,9 +4123,9 @@ dependencies = [
[[package]]
name = "openssl"
version = "0.10.72"
version = "0.10.78"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
checksum = "f38c4372413cdaaf3cc79dd92d29d7d9f5ab09b51b10dded508fb90bb70b9222"
dependencies = [
"bitflags 2.9.0",
"cfg-if",
@@ -4164,9 +4164,9 @@ dependencies = [
[[package]]
name = "openssl-sys"
version = "0.9.107"
version = "0.9.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
checksum = "13ce1245cd07fcc4cfdb438f7507b0c7e4f3849a69fd84d52374c66d83741bb6"
dependencies = [
"cc",
"libc",
@@ -5122,9 +5122,9 @@ dependencies = [
[[package]]
name = "rust_decimal"
version = "1.37.1"
version = "1.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50"
checksum = "be2a24f50780bc85f09cc6ac299bdf1424302742d77221106859c9d8b102126a"
dependencies = [
"arrayvec",
"borsh",
@@ -5134,6 +5134,7 @@ dependencies = [
"rkyv",
"serde",
"serde_json",
"wasm-bindgen",
]
[[package]]
@@ -7837,6 +7838,7 @@ dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"serde",
"wasm-bindgen-macro",
]
+1 -1
View File
@@ -15,7 +15,7 @@
"@rollup/plugin-node-resolve": "16.0.3",
"@rollup/plugin-terser": "1.0.0",
"@rollup/plugin-typescript": "12.3.0",
"eslint": "10.4.0",
"eslint": "10.10.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-security": "4.0.1",
"prettier": "3.8.3",
+1 -1
View File
@@ -1 +1 @@
if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request cancelled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,i=n?.connectTimeout,s=n?.proxy,d=n?.danger;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy,delete n.danger);const c=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,l=new Request(e,n),u=await l.arrayBuffer(),f=0!==u.byteLength?Array.from(new Uint8Array(u)):null;for(const[e,t]of l.headers)c.get(e)||c.set(e,t);const _=(c instanceof Headers?Array.from(c.entries()):Array.isArray(c)?c:Object.entries(c)).map(([e,t])=>[e,"string"==typeof t?t:t.toString()]);if(a?.aborted)throw new Error(r);const h=await t("plugin:http|fetch",{clientConfig:{method:l.method,url:l.url,headers:_,data:f,maxRedirections:o,connectTimeout:i,proxy:s,danger:d}}),p=()=>t("plugin:http|fetch_cancel",{rid:h});if(a?.aborted)throw p(),new Error(r);a?.addEventListener("abort",()=>{p()});const{status:w,statusText:y,url:b,headers:g,rid:T}=await t("plugin:http|fetch_send",{rid:h}),R=()=>t("plugin:http|fetch_cancel_body",{rid:T}),m=[101,103,204,205,304].includes(w)?null:new ReadableStream({start:e=>{a?.addEventListener("abort",()=>{e.error(r),R()})},pull:e=>(async e=>{let r;try{r=await t("plugin:http|fetch_read_body",{rid:T})}catch(t){return e.error(t),void R()}const n=new Uint8Array(r),a=n[n.byteLength-1],o=n.slice(0,n.byteLength-1);1!==a?e.enqueue(o):e.close()})(e),cancel:()=>{R()}}),A=new Response(m,{status:w,statusText:y});Object.defineProperty(A,"url",{value:b,writable:!1}),Object.defineProperty(A,"headers",{value:new Headers(g),writable:!1});const v=A.clone.bind(A);return Object.defineProperty(A,"clone",{value:()=>{const e=v();return Object.defineProperty(e,"url",{value:b,writable:!1}),Object.defineProperty(e,"headers",{value:new Headers(g),writable:!1}),e}}),A},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}
if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request cancelled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,s=n?.connectTimeout,i=n?.proxy,c=n?.danger;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy,delete n.danger);const d=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,l=new Request(e,n),u=await l.arrayBuffer(),h=0!==u.byteLength?Array.from(new Uint8Array(u)):null;for(const[e,t]of l.headers)d.get(e)||d.set(e,t);const f=(d instanceof Headers?Array.from(d.entries()):Array.isArray(d)?d:Object.entries(d)).map(([e,t])=>[e,"string"==typeof t?t:t.toString()]);if(a?.aborted)throw new Error(r);const _=await t("plugin:http|fetch",{clientConfig:{method:l.method,url:l.url,headers:f,data:h,maxRedirections:o,connectTimeout:s,proxy:i,danger:c}}),p=()=>t("plugin:http|fetch_cancel",{rid:_}).catch(()=>{});if(a?.aborted)throw p(),new Error(r);a?.addEventListener("abort",()=>{p()});const{status:w,statusText:y,url:b,headers:g,rid:T}=await t("plugin:http|fetch_send",{rid:_});let m=!1;const R=()=>m?Promise.resolve():(m=!0,t("plugin:http|fetch_cancel_body",{rid:T}).catch(()=>{})),v=[101,103,204,205,304].includes(w)?null:new ReadableStream({start:e=>{a?.addEventListener("abort",()=>{e.error(r),R()})},pull:e=>(async e=>{let r;try{r=await t("plugin:http|fetch_read_body",{rid:T})}catch(t){return e.error(t),void R()}const n=new Uint8Array(r),a=n[n.byteLength-1],o=n.slice(0,n.byteLength-1);1!==a?e.enqueue(o):e.close()})(e),cancel:()=>{R()}}),A=new Response(v,{status:w,statusText:y});Object.defineProperty(A,"url",{value:b,writable:!1}),Object.defineProperty(A,"headers",{value:new Headers(g),writable:!1});const P=A.clone.bind(A);return Object.defineProperty(A,"clone",{value:()=>{const e=P();return Object.defineProperty(e,"url",{value:b,writable:!1}),Object.defineProperty(e,"headers",{value:new Headers(g),writable:!1}),e}}),A},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}
+10 -5
View File
@@ -199,14 +199,14 @@ export async function fetch(
}
})
const abort = () => invoke('plugin:http|fetch_cancel', { rid })
const abort = () =>
invoke('plugin:http|fetch_cancel', { rid }).catch(() => {})
// Optimistically check for abort signal
// and avoid doing any work after doing intial work on the Rust side
if (signal?.aborted) {
// we don't care about the result of this proimse
// eslint-disable-next-line @typescript-eslint/no-floating-promises
abort()
// we don't care about the result of this promise
void abort()
throw new Error(ERROR_REQUEST_CANCELLED)
}
@@ -230,8 +230,13 @@ export async function fetch(
rid
})
let bodyDropped = false
const dropBody = () => {
return invoke('plugin:http|fetch_cancel_body', { rid: responseRid })
if (bodyDropped) return Promise.resolve()
bodyDropped = true
return invoke('plugin:http|fetch_cancel_body', { rid: responseRid }).catch(
() => {}
)
}
const readChunk = async (
+133 -67
View File
@@ -10,7 +10,7 @@ importers:
devDependencies:
'@eslint/js':
specifier: 10.0.1
version: 10.0.1(eslint@10.4.0(jiti@2.6.1))
version: 10.0.1(eslint@10.10.0(jiti@2.6.1))
'@rollup/plugin-node-resolve':
specifier: 16.0.3
version: 16.0.3(rollup@4.62.5)
@@ -21,11 +21,11 @@ importers:
specifier: 12.3.0
version: 12.3.0(rollup@4.62.5)(tslib@2.8.1)(typescript@6.0.3)
eslint:
specifier: 10.4.0
version: 10.4.0(jiti@2.6.1)
specifier: 10.10.0
version: 10.10.0(jiti@2.6.1)
eslint-config-prettier:
specifier: 10.1.8
version: 10.1.8(eslint@10.4.0(jiti@2.6.1))
version: 10.1.8(eslint@10.10.0(jiti@2.6.1))
eslint-plugin-security:
specifier: 4.0.1
version: 4.0.1
@@ -43,7 +43,7 @@ importers:
version: 6.0.3
typescript-eslint:
specifier: 8.66.0
version: 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
version: 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
examples/api:
dependencies:
@@ -360,6 +360,12 @@ packages:
'@antfu/install-pkg@1.1.0':
resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
'@cacheable/memory@2.2.0':
resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==}
'@cacheable/utils@2.5.0':
resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==}
'@emnapi/core@1.10.0':
resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
@@ -539,8 +545,8 @@ packages:
resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/config-helpers@0.6.0':
resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==}
'@eslint/config-helpers@0.7.0':
resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/core@1.2.1':
@@ -560,8 +566,8 @@ packages:
resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/plugin-kit@0.7.1':
resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==}
'@eslint/plugin-kit@0.7.3':
resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@humanfs/core@0.19.1':
@@ -611,6 +617,15 @@ packages:
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@keyv/bigmap@1.3.1':
resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==}
engines: {node: '>= 18'}
peerDependencies:
keyv: ^5.6.0
'@keyv/serialize@1.1.1':
resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
'@napi-rs/lzma-linux-x64-gnu@1.5.1':
resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==}
engines: {node: ^22.20 || ^24.12 || >=25}
@@ -1323,6 +1338,9 @@ packages:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
cacheable@2.5.0:
resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==}
chokidar@5.0.0:
resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
engines: {node: '>= 20.19.0'}
@@ -1415,8 +1433,8 @@ packages:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint@10.4.0:
resolution: {integrity: sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==}
eslint@10.10.0:
resolution: {integrity: sha512-NPXn6r5zl4uET1DAVPaOwzX3rut4c0wcmw3dWJAfOsTM5+TogXo0DDjz8pwm/hL8cyVNpHqeK4JpN0NjnyFFNw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
@@ -1480,17 +1498,15 @@ packages:
picomatch:
optional: true
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
file-entry-cache@11.1.5:
resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==}
find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
flat-cache@6.1.23:
resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==}
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
@@ -1511,10 +1527,20 @@ packages:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
hashery@1.5.1:
resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==}
engines: {node: '>=20'}
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
hookified@1.15.1:
resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==}
hookified@2.2.0:
resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==}
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -1552,17 +1578,14 @@ packages:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
keyv@5.6.0:
resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==}
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
@@ -1658,8 +1681,8 @@ packages:
mdn-data@2.27.1:
resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
minimatch@10.2.4:
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
minimatch@10.2.6:
resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
engines: {node: 18 || 20 || >=22}
mlly@1.8.2:
@@ -1757,6 +1780,10 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
qified@0.10.1:
resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==}
engines: {node: '>=20'}
quansync@1.0.0:
resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==}
@@ -1992,6 +2019,18 @@ snapshots:
package-manager-detector: 1.6.0
tinyexec: 1.0.4
'@cacheable/memory@2.2.0':
dependencies:
'@cacheable/utils': 2.5.0
'@keyv/bigmap': 1.3.1(keyv@5.6.0)
hookified: 1.15.1
keyv: 5.6.0
'@cacheable/utils@2.5.0':
dependencies:
hashery: 1.5.1
keyv: 5.6.0
'@emnapi/core@1.10.0':
dependencies:
'@emnapi/wasi-threads': 1.2.1
@@ -2086,9 +2125,9 @@ snapshots:
'@esbuild/win32-x64@0.28.1':
optional: true
'@eslint-community/eslint-utils@4.9.1(eslint@10.4.0(jiti@2.6.1))':
'@eslint-community/eslint-utils@4.9.1(eslint@10.10.0(jiti@2.6.1))':
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
@@ -2097,11 +2136,11 @@ snapshots:
dependencies:
'@eslint/object-schema': 3.0.5
debug: 4.4.3
minimatch: 10.2.4
minimatch: 10.2.6
transitivePeerDependencies:
- supports-color
'@eslint/config-helpers@0.6.0':
'@eslint/config-helpers@0.7.0':
dependencies:
'@eslint/core': 1.2.1
@@ -2109,13 +2148,13 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
'@eslint/js@10.0.1(eslint@10.4.0(jiti@2.6.1))':
'@eslint/js@10.0.1(eslint@10.10.0(jiti@2.6.1))':
optionalDependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
'@eslint/object-schema@3.0.5': {}
'@eslint/plugin-kit@0.7.1':
'@eslint/plugin-kit@0.7.3':
dependencies:
'@eslint/core': 1.2.1
levn: 0.4.1
@@ -2171,6 +2210,14 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@keyv/bigmap@1.3.1(keyv@5.6.0)':
dependencies:
hashery: 1.5.1
hookified: 1.15.1
keyv: 5.6.0
'@keyv/serialize@1.1.1': {}
'@napi-rs/lzma-linux-x64-gnu@1.5.1':
optional: true
@@ -2494,15 +2541,15 @@ snapshots:
'@types/trusted-types@2.0.7': {}
'@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)':
'@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/parser': 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/scope-manager': 8.66.0
'@typescript-eslint/type-utils': 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/utils': 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/type-utils': 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/utils': 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.66.0
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@6.0.3)
@@ -2510,14 +2557,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)':
'@typescript-eslint/parser@8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.66.0
'@typescript-eslint/types': 8.66.0
'@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.66.0
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -2540,13 +2587,13 @@ snapshots:
dependencies:
typescript: 6.0.3
'@typescript-eslint/type-utils@8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)':
'@typescript-eslint/type-utils@8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)':
dependencies:
'@typescript-eslint/types': 8.66.0
'@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3)
'@typescript-eslint/utils': 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/utils': 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
ts-api-utils: 2.5.0(typescript@6.0.3)
typescript: 6.0.3
transitivePeerDependencies:
@@ -2561,7 +2608,7 @@ snapshots:
'@typescript-eslint/types': 8.66.0
'@typescript-eslint/visitor-keys': 8.66.0
debug: 4.4.3
minimatch: 10.2.4
minimatch: 10.2.6
semver: 7.7.4
tinyglobby: 0.2.17
ts-api-utils: 2.5.0(typescript@6.0.3)
@@ -2569,13 +2616,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)':
'@typescript-eslint/utils@8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.6.1))
'@eslint-community/eslint-utils': 4.9.1(eslint@10.10.0(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.66.0
'@typescript-eslint/types': 8.66.0
'@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3)
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -2750,6 +2797,14 @@ snapshots:
cac@6.7.14: {}
cacheable@2.5.0:
dependencies:
'@cacheable/memory': 2.2.0
'@cacheable/utils': 2.5.0
hookified: 1.15.1
keyv: 5.6.0
qified: 0.10.1
chokidar@5.0.0:
dependencies:
readdirp: 5.0.0
@@ -2825,9 +2880,9 @@ snapshots:
escape-string-regexp@4.0.0: {}
eslint-config-prettier@10.1.8(eslint@10.4.0(jiti@2.6.1)):
eslint-config-prettier@10.1.8(eslint@10.10.0(jiti@2.6.1)):
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.10.0(jiti@2.6.1)
eslint-plugin-security@4.0.1:
dependencies:
@@ -2844,14 +2899,14 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
eslint@10.4.0(jiti@2.6.1):
eslint@10.10.0(jiti@2.6.1):
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.6.1))
'@eslint-community/eslint-utils': 4.9.1(eslint@10.10.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
'@eslint/config-helpers': 0.6.0
'@eslint/config-helpers': 0.7.0
'@eslint/core': 1.2.1
'@eslint/plugin-kit': 0.7.1
'@eslint/plugin-kit': 0.7.3
'@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
@@ -2866,14 +2921,14 @@ snapshots:
esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 8.0.0
file-entry-cache: 11.1.5
find-up: 5.0.0
glob-parent: 6.0.2
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1
minimatch: 10.2.4
minimatch: 10.2.6
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
@@ -2923,19 +2978,20 @@ snapshots:
optionalDependencies:
picomatch: 4.0.4
file-entry-cache@8.0.0:
file-entry-cache@11.1.5:
dependencies:
flat-cache: 4.0.1
flat-cache: 6.1.23
find-up@5.0.0:
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
flat-cache@4.0.1:
flat-cache@6.1.23:
dependencies:
cacheable: 2.5.0
flatted: 3.4.2
keyv: 4.5.4
hookified: 1.15.1
flatted@3.4.2: {}
@@ -2952,10 +3008,18 @@ snapshots:
dependencies:
duplexer: 0.1.2
hashery@1.5.1:
dependencies:
hookified: 1.15.1
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
hookified@1.15.1: {}
hookified@2.2.0: {}
ignore@5.3.2: {}
ignore@7.0.5: {}
@@ -2982,15 +3046,13 @@ snapshots:
jiti@2.6.1: {}
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
json-stable-stringify-without-jsonify@1.0.1: {}
keyv@4.5.4:
keyv@5.6.0:
dependencies:
json-buffer: 3.0.1
'@keyv/serialize': 1.1.1
levn@0.4.1:
dependencies:
@@ -3068,7 +3130,7 @@ snapshots:
mdn-data@2.27.1: {}
minimatch@10.2.4:
minimatch@10.2.6:
dependencies:
brace-expansion: 5.0.9
@@ -3181,6 +3243,10 @@ snapshots:
punycode@2.3.1: {}
qified@0.10.1:
dependencies:
hookified: 2.2.0
quansync@1.0.0: {}
readdirp@5.0.0: {}
@@ -3335,13 +3401,13 @@ snapshots:
type-level-regexp@0.1.17: {}
typescript-eslint@8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3):
typescript-eslint@8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/parser': 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/parser': 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
'@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3)
'@typescript-eslint/utils': 8.66.0(eslint@10.4.0(jiti@2.6.1))(typescript@6.0.3)
eslint: 10.4.0(jiti@2.6.1)
'@typescript-eslint/utils': 8.66.0(eslint@10.10.0(jiti@2.6.1))(typescript@6.0.3)
eslint: 10.10.0(jiti@2.6.1)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color