diff --git a/package.json b/package.json index 1f0c4c3..2988414 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,8 @@ "eslint": "^9.39.1", "eslint-config-unjs": "^0.5.0", "expect-type": "^1.2.2", + "valibot": "^1.0.0", + "zod": "^3.24.2", "magicast": "^0.5.1", "obuild": "^0.4.1", "prettier": "^3.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81e23ff..ce22ecb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,10 +47,10 @@ importers: devDependencies: '@types/node': specifier: ^24.10.0 - version: 24.10.0 + version: 24.10.1 '@vitest/coverage-v8': specifier: ^4.0.8 - version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)) + version: 4.0.13(vitest@4.0.13(@types/node@24.10.1)(jiti@2.6.1)) automd: specifier: ^0.4.2 version: 0.4.2(magicast@0.5.1) @@ -71,16 +71,22 @@ importers: version: 0.5.1 obuild: specifier: ^0.4.1 - version: 0.4.1(magicast@0.5.1)(typescript@5.9.3) + version: 0.4.2(magicast@0.5.1)(typescript@5.9.3) prettier: specifier: ^3.6.2 version: 3.6.2 typescript: specifier: ^5.9.3 version: 5.9.3 + valibot: + specifier: ^1.0.0 + version: 1.1.0(typescript@5.9.3) vitest: specifier: ^4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1) + version: 4.0.13(@types/node@24.10.1)(jiti@2.6.1) + zod: + specifier: ^3.24.2 + version: 3.25.76 packages: @@ -113,11 +119,11 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@emnapi/core@1.7.0': - resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.7.0': - resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -368,272 +374,272 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-minify/binding-android-arm64@0.96.0': - resolution: {integrity: sha512-lzeIEMu/v6Y+La5JSesq4hvyKtKBq84cgQpKYTYM/yGuNk2tfd5Ha31hnC+mTh48lp/5vZH+WBfjVUjjINCfug==} + '@oxc-minify/binding-android-arm64@0.98.0': + resolution: {integrity: sha512-fQ9zAfwQvQE+FboIU7dgeDTOBGNQhV8xafXlyhay3jFjOcjqnvokWE1pcJSIRnhaVxahTXzMYvYJzizqWvluhQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-minify/binding-darwin-arm64@0.96.0': - resolution: {integrity: sha512-i0LkJAUXb4BeBFrJQbMKQPoxf8+cFEffDyLSb7NEzzKuPcH8qrVsnEItoOzeAdYam8Sr6qCHVwmBNEQzl7PWpw==} + '@oxc-minify/binding-darwin-arm64@0.98.0': + resolution: {integrity: sha512-0cwHg1aHGbf8FtR69luAD9Fd7WJr2HyDO12aUC5mQCPdOmfMPFQYYlaziZhyt3gVcgzSq+988GQtDGtcJNU2ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-minify/binding-darwin-x64@0.96.0': - resolution: {integrity: sha512-C5vI0WPR+KPIFAD5LMOJk2J8iiT+Nv65vDXmemzXEXouzfEOLYNqnW+u6NSsccpuZHHWAiLyPFkYvKFduveAUQ==} + '@oxc-minify/binding-darwin-x64@0.98.0': + resolution: {integrity: sha512-kftNK3NyfzPMSJduFU1B0ntVnMlr4zOjzVztJHyalelSi86UpItSCNu+GH9sYGc6WE2qd6r8gXokQqd0Vi4QQQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-minify/binding-freebsd-x64@0.96.0': - resolution: {integrity: sha512-3//5DNx+xUjVBMLLk2sl6hfe4fwfENJtjVQUBXjxzwPuv8xgZUqASG4cRG3WqG5Qe8dV6SbCI4EgKQFjO4KCZA==} + '@oxc-minify/binding-freebsd-x64@0.98.0': + resolution: {integrity: sha512-rf3KZNYs4Wk4eQgyT2rjaYXs3/UBgCeM+13iNiUl0sbgMT2OuP63Wb7A/ICbaPaCcoA9cXJA1Y84SPM2vPTkCQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-minify/binding-linux-arm-gnueabihf@0.96.0': - resolution: {integrity: sha512-WXChFKV7VdDk1NePDK1J31cpSvxACAVztJ7f7lJVYBTkH+iz5D0lCqPcE7a9eb7nC3xvz4yk7DM6dA9wlUQkQg==} + '@oxc-minify/binding-linux-arm-gnueabihf@0.98.0': + resolution: {integrity: sha512-Dtw9jkzssB2JbZ4Q9lZCfrl9r8r2Q60QABNQaIcpDILDoD4yk3GivOhjSuf3vQCYRlvHjPUmLmazZxaNuRK/Jg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-minify/binding-linux-arm-musleabihf@0.96.0': - resolution: {integrity: sha512-7B18glYMX4Z/YoqgE3VRLs/2YhVLxlxNKSgrtsRpuR8xv58xca+hEhiFwZN1Rn+NSMZ29Z33LWD7iYWnqYFvRA==} + '@oxc-minify/binding-linux-arm-musleabihf@0.98.0': + resolution: {integrity: sha512-gKgjKnHQLvEZqIPvp2D4AxFjtHDwEmNoNcfg6WePhkzNO7ud8M3F1x60GMKn6Nb/8CX2Y67GVISs+xivzYPo1A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-minify/binding-linux-arm64-gnu@0.96.0': - resolution: {integrity: sha512-Yl+KcTldsEJNcaYxxonwAXZ2q3gxIzn3kXYQWgKWdaGIpNhOCWqF+KE5WLsldoh5Ro5SHtomvb8GM6cXrIBMog==} + '@oxc-minify/binding-linux-arm64-gnu@0.98.0': + resolution: {integrity: sha512-0TYQjHk/bzxo/Q0oF0BVM2bs4mIoTS7ee+m+r1B6QxMdmENMq1Q1EKgiGnwvhIu07srJJdJBYJoScaXbssmExA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-minify/binding-linux-arm64-musl@0.96.0': - resolution: {integrity: sha512-rNqoFWOWaxwMmUY5fspd/h5HfvgUlA3sv9CUdA2MpnHFiyoJNovR7WU8tGh+Yn0qOAs0SNH0a05gIthHig14IA==} + '@oxc-minify/binding-linux-arm64-musl@0.98.0': + resolution: {integrity: sha512-TOGEzv2tr/lGttB6MIYExXdkMxWDVUqxFcu4AQ25e/Jk0kq5IVyDNmLfKzUin5r/1nmOJEpuBeS3xq0VPmtU7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-minify/binding-linux-riscv64-gnu@0.96.0': - resolution: {integrity: sha512-3paajIuzGnukHwSI3YBjYVqbd72pZd8NJxaayaNFR0AByIm8rmIT5RqFXbq8j2uhtpmNdZRXiu0em1zOmIScWA==} + '@oxc-minify/binding-linux-riscv64-gnu@0.98.0': + resolution: {integrity: sha512-zTyb36zh3s2ZDwRP3c5VEs2aS+CECXmpmgEWds+1bawELuueozsr455lqDE1qNcIMUS/AxeX9DCE4vM+LHYHfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-minify/binding-linux-s390x-gnu@0.96.0': - resolution: {integrity: sha512-9ESrpkB2XG0lQ89JlsxlZa86iQCOs+jkDZLl6O+u5wb7ynUy21bpJJ1joauCOSYIOUlSy3+LbtJLiqi7oSQt5Q==} + '@oxc-minify/binding-linux-s390x-gnu@0.98.0': + resolution: {integrity: sha512-UafNlOq0Uy/PmfkMuSWSpBAW+55QlGny1ysLMK1D6l2xC8SjFTheWHVjQVChHhgKFZxT1NypV/cbTQyh06mAYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-minify/binding-linux-x64-gnu@0.96.0': - resolution: {integrity: sha512-UMM1jkns+p+WwwmdjC5giI3SfR2BCTga18x3C0cAu6vDVf4W37uTZeTtSIGmwatTBbgiq++Te24/DE0oCdm1iQ==} + '@oxc-minify/binding-linux-x64-gnu@0.98.0': + resolution: {integrity: sha512-P/9krmxwtLbxdT339jEm4XUHUFMN4lzjqqvGwBug6NxPvN1sppSl06CNXzHQ6H7/oSftZIyAmsOaLWknhm30uw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-minify/binding-linux-x64-musl@0.96.0': - resolution: {integrity: sha512-8b1naiC7MdP7xeMi7cQ5tb9W1rZAP9Qz/jBRqp1Y5EOZ1yhSGnf1QWuZ/0pCc+XiB9vEHXEY3Aki/H+86m2eOg==} + '@oxc-minify/binding-linux-x64-musl@0.98.0': + resolution: {integrity: sha512-XpbZ15Lm3eFg8+VLAKgTmu+9VVMb7B2Cz6LOGd0EqMwPYaC+I84O8RM55/vU1fSH58BZByOnjeVWf4RPOSz7UA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-minify/binding-wasm32-wasi@0.96.0': - resolution: {integrity: sha512-bjGDjkGzo3GWU9Vg2qiFUrfoo5QxojPNV/2RHTlbIB5FWkkV4ExVjsfyqihFiAuj0NXIZqd2SAiEq9htVd3RFw==} + '@oxc-minify/binding-wasm32-wasi@0.98.0': + resolution: {integrity: sha512-VVNRbDWHZ7+Viv14Vy1y2yutOzLdivtVKKtcSt+xFSoS2wDhkn0KtRMnNTBVUnxjYqkwrDaDfcqhez5jA5bAUA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-minify/binding-win32-arm64-msvc@0.96.0': - resolution: {integrity: sha512-4L4DlHUT47qMWQuTyUghpncR3NZHWtxvd0G1KgSjVgXf+cXzFdWQCWZZtCU0yrmOoVCNUf4S04IFCJyAe+Ie7A==} + '@oxc-minify/binding-win32-arm64-msvc@0.98.0': + resolution: {integrity: sha512-i0hcvKlWa8CcBDo8BGjKSkmWOPWcdvQXNwpYjMeuTIyzUEhstDC35us9pmhqOwnBDgIJfSPcjFMGA32W8VbKWw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-minify/binding-win32-x64-msvc@0.96.0': - resolution: {integrity: sha512-T2ijfqZLpV2bgGGocXV4SXTuMoouqN0asYTIm+7jVOLvT5XgDogf3ZvCmiEnSWmxl21+r5wHcs8voU2iUROXAg==} + '@oxc-minify/binding-win32-x64-msvc@0.98.0': + resolution: {integrity: sha512-ts2pD2yf+92hiJYEitsq0XmidmZCyEmKWTDCoGezBZtNmEXovnKOUjQq6bruJrUnxxCBKDo8+S74g4wMziO2Ww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-parser/binding-android-arm64@0.96.0': - resolution: {integrity: sha512-CofbPOiW1PG+hi8bgElJPK0ioHfw8nt4Vw9d+Q9JuMhygS6LbQyu1W6tIFZ1OPFofeFRdWus3vD29FBx+tvFOA==} + '@oxc-parser/binding-android-arm64@0.98.0': + resolution: {integrity: sha512-/4S2BATZLxH94smwxLSvQsnzYjtyh/0mekgMnK/efCaU+92VNYir4+HOs/dvspYsWUooxPvj+AkwRUsLk9IuSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.96.0': - resolution: {integrity: sha512-+HZ2L1a/1BsUXYik8XqQwT2Tl5Z3jRQ/RRQiPV9UsB2skKyd91NLDlQlMpdhjLGs9Qe7Y42unFjRg2iHjIiwnw==} + '@oxc-parser/binding-darwin-arm64@0.98.0': + resolution: {integrity: sha512-joNn+2n+TrDJ79GlwR32LK1gctKIxvSJm93teROFiYEde0Dhq9IZpnxiX9ctw4R2zwmSTf1yistTXIR84UGGDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.96.0': - resolution: {integrity: sha512-GC8wH1W0XaCLyTeGsmyaMdnItiYQkqfTcn9Ygc55AWI+m11lCjQeoKDIsDCm/QwrKLCN07u3WWWsuPs5ubfXpA==} + '@oxc-parser/binding-darwin-x64@0.98.0': + resolution: {integrity: sha512-FUVDRGkMpx41bJI+seN57vmkwOp2uSATrU7e3mEjyP6lWTCvJWmD20/fxaXRY/Kh0xHvy1KBn4jPyKoK1ya/cg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.96.0': - resolution: {integrity: sha512-8SeXi2FmlN15uPY5oM03cua5RXBDYmY34Uewongv6RUiAaU/kWxLvzuijpyNC+yQ1r4fC2LbWJhAsKpX5qkA6g==} + '@oxc-parser/binding-freebsd-x64@0.98.0': + resolution: {integrity: sha512-2ysH/IYALz2mDCnqu0xmJ/s0u2f+LZtDOaTkLhwTSQrLOqK4Pr3n4n564Jd1pxNabr07pAMUvBjQNzvWrKfmOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.96.0': - resolution: {integrity: sha512-UEs+Zf6T2/FwQlLgv7gfZsKmY19sl3hK57r2BQVc2eCmCmF/deeqDcWyFjzkNLgdDDucY60PoNhNGClDm605uQ==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.98.0': + resolution: {integrity: sha512-7wwkjeCGzGP9gzmJcHyUDT67MP5szMvjlJs3VvWzGaPiQPaMnWzRpuLkycPlslT5/ch8j+rZm2vByPIKz6cIuw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.96.0': - resolution: {integrity: sha512-1kuWvjR2+ORJMoyxt9LSbLcDhXZnL25XOuv9VmH6NmSPvLgewzuubSlm++W03x+U7SzWFilBsdwIHtD/0mjERw==} + '@oxc-parser/binding-linux-arm-musleabihf@0.98.0': + resolution: {integrity: sha512-p93J3cNgVCiCcshXiaq+A+bws8AH0h5LmoEKtt1rJHkZH3uY3dEuuh/3T7arMd+mStVsBM8h+PQ2V/0MyI0rUw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.96.0': - resolution: {integrity: sha512-PHH4ETR1t0fymxuhpQNj3Z9t/78/zZa2Lj3Z3I0ZOd+/Ex+gtdhGoB5xYyy7lcYGAPMfZ+Gmr+dTCr1GYNZ3BA==} + '@oxc-parser/binding-linux-arm64-gnu@0.98.0': + resolution: {integrity: sha512-wiIHSaNbAj7F8Ac5BERGJq2dSy+abNrZILY7s8PNK2VdwWXhfBSeRV+wUt3tC9zdsrvmRaLAUiM9IaRHEwKWsw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-parser/binding-linux-arm64-musl@0.96.0': - resolution: {integrity: sha512-fjDPbZjkqaDSTBe0FM8nZ9zBw4B/NF/I0gH7CfvNDwIj9smISaNFypYeomkvubORpnbX9ORhvhYwg3TxQ60OGA==} + '@oxc-parser/binding-linux-arm64-musl@0.98.0': + resolution: {integrity: sha512-Z/PBmbYZ+uBxqiKr3FGvg45rUr52FZQed26gJZZWFLt7a7l3AbfAL9bxUG5a+HiDC9+sDZrezJbjSRmTlPPg7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-parser/binding-linux-riscv64-gnu@0.96.0': - resolution: {integrity: sha512-59KAHd/6/LmjkdSAuJn0piKmwSavMasWNUKuYLX/UnqI5KkGIp14+LBwwaBG6KzOtIq1NrRCnmlL4XSEaNkzTg==} + '@oxc-parser/binding-linux-riscv64-gnu@0.98.0': + resolution: {integrity: sha512-H4i91pTgQlCWmbVTye2YH0mgSw3YYf5vyJtCzk18IHtSRaYJ6QokyIkXAMStQv5iMBg6CibEKTv3/1vlemW5/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-parser/binding-linux-s390x-gnu@0.96.0': - resolution: {integrity: sha512-VtupojtgahY8XmLwpVpM3C1WQEgMD1JxpB8lzUtdSLwosWaaz1EAl+VXWNuxTTZusNuLBtmR+F0qql22ISi/9g==} + '@oxc-parser/binding-linux-s390x-gnu@0.98.0': + resolution: {integrity: sha512-yNS5u0/K4Zyi7f43mvqMogXe9GedllLWGEwW6btp/sQce7GnGbMV6oDRiDs0C6UlnJMbctEU6qM4LsNkEobCSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-parser/binding-linux-x64-gnu@0.96.0': - resolution: {integrity: sha512-8XSY9aUYY+5I4I1mhSEWmYqdUrJi3J5cCAInvEVHyTnDAPkhb+tnLGVZD696TpW+lFOLrTFF2V5GMWJVafqIUA==} + '@oxc-parser/binding-linux-x64-gnu@0.98.0': + resolution: {integrity: sha512-gmljgOLJvPljYk4pDxglK9Zg/dYrdnwIINYnNyMmEMl9/5Xn7MoJIR9QN52Vh+Fyq09ftDH89R3R2ef57MRKKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-parser/binding-linux-x64-musl@0.96.0': - resolution: {integrity: sha512-IIVNtqhA0uxKkD8Y6aZinKO/sOD5O62VlduE54FnUU2rzZEszrZQLL8nMGVZhTdPaKW5M1aeLmjcdnOs6er1Jg==} + '@oxc-parser/binding-linux-x64-musl@0.98.0': + resolution: {integrity: sha512-zcD9b22Mb1/JsU3nCMGboiFZPFLtqNzViaQoPlN6ceDNejt4SsRDlChmLs/u6PluYn1V1SrvAThx1Skq2esD/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-parser/binding-wasm32-wasi@0.96.0': - resolution: {integrity: sha512-TJ/sNPbVD4u6kUwm7sDKa5iRDEB8vd7ZIMjYqFrrAo9US1RGYOSvt6Ie9sDRekUL9fZhNsykvSrpmIj6dg/C2w==} + '@oxc-parser/binding-wasm32-wasi@0.98.0': + resolution: {integrity: sha512-vp2OlfPGYMudNlDLL5+UJPPRn/RUI2VMFhKBnpC+nuAOz69IOf70ajwDATw+9jc8vVftuDzn06u+XTWJZGkGvQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.96.0': - resolution: {integrity: sha512-zCOhRB7MYVIHLj+2QYoTuLyaipiD8JG/ggUjfsMUaupRPpvwQNhsxINLIcTcb0AS+OsT7/OREhydjO74STqQzQ==} + '@oxc-parser/binding-win32-arm64-msvc@0.98.0': + resolution: {integrity: sha512-2SJI5E46/lBknEsTtxzFvlyUWAWBs6hSYbj46uIBfNpnLbF/lqo3ekuk1w5evEJjZdgYk7ayDSaRE1bm+7XUaw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.96.0': - resolution: {integrity: sha512-J6zfx9TE0oS+TrqBUjMVMOi/d/j3HMj69Pip263pETOEPm788N0HXKPsc2X2jUfSTHzD9vmdjq0QFymbf2LhWg==} + '@oxc-parser/binding-win32-x64-msvc@0.98.0': + resolution: {integrity: sha512-o5PfFt85u0nx2VLiKr2e+8j7kN4WaQR5sUTMZv2X0SOXfsLmmvr7DldQTeV/uWWLi0kFw0qpekKLBheHK1V2tA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-project/types@0.96.0': - resolution: {integrity: sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==} + '@oxc-project/types@0.98.0': + resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==} - '@oxc-transform/binding-android-arm64@0.96.0': - resolution: {integrity: sha512-wOm+ZsqFvyZ7B9RefUMsj0zcXw77Z2pXA51nbSQyPXqr+g0/pDGxriZWP8Sdpz/e4AEaKPA9DvrwyOZxu7GRDQ==} + '@oxc-transform/binding-android-arm64@0.98.0': + resolution: {integrity: sha512-QSvm4pd3wLUA6YBiQozT8EGCb2qQeO3Osb6VWcgpyWG41RErV4EHFVFkG2Ukw5lrHF5qDnb41w97BPblmokl/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-transform/binding-darwin-arm64@0.96.0': - resolution: {integrity: sha512-td1sbcvzsyuoNRiNdIRodPXRtFFwxzPpC/6/yIUtRRhKn30XQcizxupIvQQVpJWWchxkphbBDh6UN+u+2CJ8Zw==} + '@oxc-transform/binding-darwin-arm64@0.98.0': + resolution: {integrity: sha512-y+AuTFZ267EbaG9eMMTEQFTqcQdy+QvhlTeqzlb1o0exUiQ5S+0poPkuDs9rCV1rA26xHZIZ/Mn3yZ0UIVVylQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-transform/binding-darwin-x64@0.96.0': - resolution: {integrity: sha512-xgqxnqhPYH2NYkgbqtnCJfhbXvxIf/pnhF/ig5UBK8PYpCEWIP/cfLpQRQ9DcQnRfuxi7RMIF6LdmB1AiS6Fkg==} + '@oxc-transform/binding-darwin-x64@0.98.0': + resolution: {integrity: sha512-hlGweAypNLl5jAiVQeCZQgWZzgNvb5Ey9CYJj48xpVCXivzYJQjPz0CbjKAqUy4hiWJqSSzrZpjcUModODBDXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-transform/binding-freebsd-x64@0.96.0': - resolution: {integrity: sha512-1i67OXdl/rvSkcTXqDlh6qGRXYseEmf0rl/R+/i88scZ/o3A+FzlX56sThuaPzSSv9eVgesnoYUjIBJELFc1oA==} + '@oxc-transform/binding-freebsd-x64@0.98.0': + resolution: {integrity: sha512-Ar2Lw3XParxMSdmCTv9EziDh9C2vaMf2iwfzM5GEiNUrPpC52i0OUtnDEts3NdgpBgyWaPFpJfCufLTLDQhCuA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-transform/binding-linux-arm-gnueabihf@0.96.0': - resolution: {integrity: sha512-9MJBs0SWODsqyzO3eAnacXgJ/sZu1xqinjEwBzkcZ3tQI8nKhMADOzu2NzbVWDWujeoC8DESXaO08tujvUru+Q==} + '@oxc-transform/binding-linux-arm-gnueabihf@0.98.0': + resolution: {integrity: sha512-VoBLB1IdseTxXm5dXieTFNB29gjLuXH84oykhSXE0wyr3bTSbEPLfdTGdJP1hAepcJ/plSQlDIXajx5ByuXEDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-transform/binding-linux-arm-musleabihf@0.96.0': - resolution: {integrity: sha512-BQom57I2ScccixljNYh2Wy+5oVZtF1LXiiUPxSLtDHbsanpEvV/+kzCagQpTjk1BVzSQzOxfEUWjvL7mY53pRQ==} + '@oxc-transform/binding-linux-arm-musleabihf@0.98.0': + resolution: {integrity: sha512-Ix1TSJBtzEHWzXLM/qHeZcnSSnFPfzOUvvF6IAPd50eAKZrKh7RsDDwBbEsKxKex8DMWnYvN03uSBAueU+r7tw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-transform/binding-linux-arm64-gnu@0.96.0': - resolution: {integrity: sha512-kaqvUzNu8LL4aBSXqcqGVLFG13GmJEplRI2+yqzkgAItxoP/LfFMdEIErlTWLGyBwd0OLiNMHrOvkcCQRWadVg==} + '@oxc-transform/binding-linux-arm64-gnu@0.98.0': + resolution: {integrity: sha512-vbRO3WC8aPuEf3XCdnxGHC9mdfb3PNr/fvw9VjZYCHJEJCmOnbigjGpl4nF5kXD7yaecVzbxAu7oP7DI4x58Cg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-transform/binding-linux-arm64-musl@0.96.0': - resolution: {integrity: sha512-EiG/L3wEkPgTm4p906ufptyblBgtiQWTubGg/JEw82f8uLRroayr5zhbUqx40EgH037a3SfJthIyLZi7XPRFJw==} + '@oxc-transform/binding-linux-arm64-musl@0.98.0': + resolution: {integrity: sha512-D0NMh0ZmIiF7QMgCfOxA5bgMUbhFlYnP4lZyhujSBn+KCLKzfwXIRP8y9K+hrRAwKTKJklh0zm9yJec6FQsXug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-transform/binding-linux-riscv64-gnu@0.96.0': - resolution: {integrity: sha512-r01CY6OxKGtVeYnvH4mGmtkQMlLkXdPWWNXwo5o7fE2s/fgZPMpqh8bAuXEhuMXipZRJrjxTk1+ZQ4KCHpMn3Q==} + '@oxc-transform/binding-linux-riscv64-gnu@0.98.0': + resolution: {integrity: sha512-AIa9agE28pgFjWdB1c3WGuYWWxd9hNBNfkBjOxBzQqh0/jp4QuPS89lRvU8bfRxKme2U5bgtTK/OMpqDlQOmFw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-transform/binding-linux-s390x-gnu@0.96.0': - resolution: {integrity: sha512-4djg2vYLGbVeS8YiA2K4RPPpZE4fxTGCX5g/bOMbCYyirDbmBAIop4eOAj8vOA9i1CcWbDtmp+PVJ1dSw7f3IQ==} + '@oxc-transform/binding-linux-s390x-gnu@0.98.0': + resolution: {integrity: sha512-Xuhm/aN2/aj3RyRMl6ewaTHLHdGSbrtPGbkEievZ9PYgOgMyWJc/QrWwFKj7Y2JxgOyF5xCYGD4ugYmiUtF+Jg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-transform/binding-linux-x64-gnu@0.96.0': - resolution: {integrity: sha512-f6pcWVz57Y8jXa2OS7cz3aRNuks34Q3j61+3nQ4xTE8H1KbalcEvHNmM92OEddaJ8QLs9YcE0kUC6eDTbY34+A==} + '@oxc-transform/binding-linux-x64-gnu@0.98.0': + resolution: {integrity: sha512-QFPmI40hyGlU/ehirCsRofpN5/ErUc6ZA9u3B6SsIQN2sY1yX7Orje/5HcyWaJtc9mjItlJeGcqAjrhnk6zTrQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-transform/binding-linux-x64-musl@0.96.0': - resolution: {integrity: sha512-NSiRtFvR7Pbhv3mWyPMkTK38czIjcnK0+K5STo3CuzZRVbX1TM17zGdHzKBUHZu7v6IQ6/XsQ3ELa1BlEHPGWQ==} + '@oxc-transform/binding-linux-x64-musl@0.98.0': + resolution: {integrity: sha512-S9fh6/+qf6Rrn+Db0QBJencQXt/6tFAnUk9ctEAjea1zrTr4Ykc5/Ps68Yl4q4k6pd97gC5q5A/csCs4mN3Svg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-transform/binding-wasm32-wasi@0.96.0': - resolution: {integrity: sha512-A91ARLiuZHGN4hBds9s7bW3czUuLuHLsV+cz44iF9j8e1zX9m2hNGXf/acQRbg/zcFUXmjz5nmk8EkZyob876w==} + '@oxc-transform/binding-wasm32-wasi@0.98.0': + resolution: {integrity: sha512-aGogNfRPf0+MBivq4X+yvBbkywG2H+Ejr604P6Q1ZPtM2W2HG5f2JHNvNei2zE5QRP9CB2Go8vaGQSQ5H98a/g==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-transform/binding-win32-arm64-msvc@0.96.0': - resolution: {integrity: sha512-IedJf40djKgDObomhYjdRAlmSYUEdfqX3A3M9KfUltl9AghTBBLkTzUMA7O09oo71vYf5TEhbFM7+Vn5vqw7AQ==} + '@oxc-transform/binding-win32-arm64-msvc@0.98.0': + resolution: {integrity: sha512-lEr5iO6ou91mzxkbGp3brpQ0bIFS0WWURKNIdShkH4q4qUW4GdW8AHEeCX4ZiZdJk+gsduk6jrvYajo1jGCDxg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-transform/binding-win32-x64-msvc@0.96.0': - resolution: {integrity: sha512-0fI0P0W7bSO/GCP/N5dkmtB9vBqCA4ggo1WmXTnxNJVmFFOtcA1vYm1I9jl8fxo+sucW2WnlpnI4fjKdo3JKxA==} + '@oxc-transform/binding-win32-x64-msvc@0.98.0': + resolution: {integrity: sha512-KEfME/+uceR1M5WhqHXrlDzt9GuSK4+XgaMdrqPxOlcs6GKbUKKupysor3Ftu1csL2ihTVUkeveXyhiRqc+T9A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -720,199 +726,199 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@rolldown/binding-android-arm64@1.0.0-beta.48': - resolution: {integrity: sha512-ilb/XxTbudXJscCx7n8Vei+3pIYlzhMWZPvvCoZToKcHh0jR8VMn+/tzoMHLv2q7mSBD/uuim+lgtztQPMx4JQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.48': - resolution: {integrity: sha512-ysTBwFbj5Kpa9aRoTQQpLdM2c5W5pLh91CWOj/7gm0qaemZLrsJ6ltIp4xMY+eWlbkSyFCL9Z/MM0KWX3INIMA==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.48': - resolution: {integrity: sha512-bLSI7KKXtHwbz5LxlWKPJxB3xA5STBJV3GTMPi5tHdJzC4zCPnYr7wqoUvxp03UbW0hvGcuifcGtybr89SMTHA==} + '@rolldown/binding-darwin-x64@1.0.0-beta.51': + resolution: {integrity: sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.48': - resolution: {integrity: sha512-yqBPtgmkgL0tMc4va8KAO3dKqqawRulNZd3/Z0bUmKG3RXaqbq3YtgWfoVcBUl64T7psgWct8LAlO77Mw28syA==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': + resolution: {integrity: sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.48': - resolution: {integrity: sha512-NYuat1VAGKBrjCdDVD8K1dImoBrQTfZWYg2AlseblGIavQbpSC4PC3R2Ue9qkdEeshMikpceIvxcN87mB1YPiA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': + resolution: {integrity: sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.48': - resolution: {integrity: sha512-pKqY0/vmfO7zv1o8+vilP9GhO+PHo9aGf1OFZ8GQlnAFzPlA2yZ9Bk0V/IyigHES95Ou2bksqJGDkjD7nrhjqA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.48': - resolution: {integrity: sha512-IelpPnZJWQfYt+It7GebuZjr8hdvbeODrppuY3XpfkkHkj0uRjC2jqshtdyo2bK6Ga31BG5PWaVu8/FKKmkD4A==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.48': - resolution: {integrity: sha512-dhhk6yq8VWoC9bEPqYbsZL09mHSwfI9VuTW5V0AKiE91R0FhcJyIPsOaDcvd1FXPZL6miTqlILwM2kRpGdEr2w==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.48': - resolution: {integrity: sha512-6BGNHjnjuixsalWkCGPSKlm0mL3BuGS7hMd0Va8zF4m0uH2VlxIfyNMDcYiNB0mlspeyd6oLRAblFw0gH7S8Ew==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.48': - resolution: {integrity: sha512-klH6AN7aPYPRxLk/BRdbg6XIgl4oQc2le4pNnwNxdjMxsp+o0p4FR8ftSVrB+V5zCAeyNpB0ojCEWXcd+9P6Xw==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.48': - resolution: {integrity: sha512-ewcpFt5Nw3nQqmjyqAeIB9051xQR14OOcOfC18gyUIJiVKE7jYVdN+/62gschmaMWgj/gsKpuarGaoPZ//nFJQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': + resolution: {integrity: sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.48': - resolution: {integrity: sha512-rqxWV0gODPgmScNXbWpNJHu88uebtQUGNrsTyOmBKbfgf6WSnbV6pHFR1iU3r+P+VRhpSHh4OQQQIrh7vIMvXg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.48': - resolution: {integrity: sha512-FI0m3LpKeqUPlD3MXhK1NW8Pp69Q2SanF4HSgeAhsypn/vEn+G0hIo5kQu3sR8ljQYjVefFI3Jhen5t9LFPsPg==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.48': - resolution: {integrity: sha512-6SqI9aiobEUPHohxE1RKd6rqOlGHy1LdtZF4hK4z5Y4rkTSWTtSy4H0qjIkGLiDb5ilz9+IyS+kevGB839Tclw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.48': - resolution: {integrity: sha512-SpLVwSWXRT+GLjNDR57DRm6v+3eqYBz1qU5jP3jB1k/fV28DjNenRa4kPHYn46JeT/vRE6naDlNvRFDaxvXPPg==} + '@rolldown/pluginutils@1.0.0-beta.51': + resolution: {integrity: sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==} - '@rollup/rollup-android-arm-eabi@4.53.2': - resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.2': - resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.2': - resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.2': - resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.2': - resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.2': - resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.2': - resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.2': - resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.2': - resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.2': - resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.2': - resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.2': - resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.2': - resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.2': - resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.2': - resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.2': - resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.2': - resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.2': - resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] @@ -937,85 +943,85 @@ packages: '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - '@types/node@24.10.0': - resolution: {integrity: sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@typescript-eslint/eslint-plugin@8.46.4': - resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==} + '@typescript-eslint/eslint-plugin@8.47.0': + resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.4 + '@typescript-eslint/parser': ^8.47.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.4': - resolution: {integrity: sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==} + '@typescript-eslint/parser@8.47.0': + resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.4': - resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==} + '@typescript-eslint/project-service@8.47.0': + resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.4': - resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} + '@typescript-eslint/scope-manager@8.47.0': + resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.4': - resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} + '@typescript-eslint/tsconfig-utils@8.47.0': + resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.4': - resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==} + '@typescript-eslint/type-utils@8.47.0': + resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.4': - resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} + '@typescript-eslint/types@8.47.0': + resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.4': - resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} + '@typescript-eslint/typescript-estree@8.47.0': + resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.4': - resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} + '@typescript-eslint/utils@8.47.0': + resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.4': - resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} + '@typescript-eslint/visitor-keys@8.47.0': + resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/coverage-v8@4.0.8': - resolution: {integrity: sha512-wQgmtW6FtPNn4lWUXi8ZSYLpOIb92j3QCujxX3sQ81NTfQ/ORnE0HtK7Kqf2+7J9jeveMGyGyc4NWc5qy3rC4A==} + '@vitest/coverage-v8@4.0.13': + resolution: {integrity: sha512-w77N6bmtJ3CFnL/YHiYotwW/JI3oDlR3K38WEIqegRfdMSScaYxwYKB/0jSNpOTZzUjQkG8HHEz4sdWQMWpQ5g==} peerDependencies: - '@vitest/browser': 4.0.8 - vitest: 4.0.8 + '@vitest/browser': 4.0.13 + vitest: 4.0.13 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.8': - resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} + '@vitest/expect@4.0.13': + resolution: {integrity: sha512-zYtcnNIBm6yS7Gpr7nFTmq8ncowlMdOJkWLqYvhr/zweY6tFbDkDi8BPPOeHxEtK1rSI69H7Fd4+1sqvEGli6w==} - '@vitest/mocker@4.0.8': - resolution: {integrity: sha512-9FRM3MZCedXH3+pIh+ME5Up2NBBHDq0wqwhOKkN4VnvCiKbVxddqH9mSGPZeawjd12pCOGnl+lo/ZGHt0/dQSg==} + '@vitest/mocker@4.0.13': + resolution: {integrity: sha512-eNCwzrI5djoauklwP1fuslHBjrbR8rqIVbvNlAnkq1OTa6XT+lX68mrtPirNM9TnR69XUPt4puBCx2Wexseylg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -1025,20 +1031,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.8': - resolution: {integrity: sha512-qRrjdRkINi9DaZHAimV+8ia9Gq6LeGz2CgIEmMLz3sBDYV53EsnLZbJMR1q84z1HZCMsf7s0orDgZn7ScXsZKg==} + '@vitest/pretty-format@4.0.13': + resolution: {integrity: sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==} - '@vitest/runner@4.0.8': - resolution: {integrity: sha512-mdY8Sf1gsM8hKJUQfiPT3pn1n8RF4QBcJYFslgWh41JTfrK1cbqY8whpGCFzBl45LN028g0njLCYm0d7XxSaQQ==} + '@vitest/runner@4.0.13': + resolution: {integrity: sha512-9IKlAru58wcVaWy7hz6qWPb2QzJTKt+IOVKjAx5vb5rzEFPTL6H4/R9BMvjZ2ppkxKgTrFONEJFtzvnyEpiT+A==} - '@vitest/snapshot@4.0.8': - resolution: {integrity: sha512-Nar9OTU03KGiubrIOFhcfHg8FYaRaNT+bh5VUlNz8stFhCZPNrJvmZkhsr1jtaYvuefYFwK2Hwrq026u4uPWCw==} + '@vitest/snapshot@4.0.13': + resolution: {integrity: sha512-hb7Usvyika1huG6G6l191qu1urNPsq1iFc2hmdzQY3F5/rTgqQnwwplyf8zoYHkpt7H6rw5UfIw6i/3qf9oSxQ==} - '@vitest/spy@4.0.8': - resolution: {integrity: sha512-nvGVqUunyCgZH7kmo+Ord4WgZ7lN0sOULYXUOYuHr55dvg9YvMz3izfB189Pgp28w0vWFbEEfNc/c3VTrqrXeA==} + '@vitest/spy@4.0.13': + resolution: {integrity: sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==} - '@vitest/utils@4.0.8': - resolution: {integrity: sha512-pdk2phO5NDvEFfUTxcTP8RFYjVj/kfLSPIN5ebP2Mu9kcIMeAQTbknqcFEyBcC4z2pJlJI9aS5UQjcYfhmKAow==} + '@vitest/utils@4.0.13': + resolution: {integrity: sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -1078,8 +1084,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.8.25: - resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==} + baseline-browser-mapping@2.8.30: + resolution: {integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==} hasBin: true birpc@2.8.0: @@ -1108,10 +1114,10 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - c12@3.3.1: - resolution: {integrity: sha512-LcWQ01LT9tkoUINHgpIOv3mMs+Abv7oVCrtpMRi1PaapVEpWoMga5WuT7/DqFTu7URP9ftbOmimNw1KNIGh9DQ==} + c12@3.3.2: + resolution: {integrity: sha512-QkikB2X5voO1okL3QsES0N690Sn/K9WokXqUsDQsWy5SnYb+psYQFGA10iy1bZHj3fjISKsI67Q90gruvWWM3A==} peerDependencies: - magicast: ^0.3.5 + magicast: '*' peerDependenciesMeta: magicast: optional: true @@ -1120,11 +1126,11 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} + caniuse-lite@1.0.30001756: + resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} - chai@6.2.0: - resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} + chai@6.2.1: + resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} engines: {node: '>=18'} chalk@4.1.2: @@ -1182,8 +1188,8 @@ packages: convert-gitmoji@0.1.5: resolution: {integrity: sha512-4wqOafJdk2tqZC++cjcbGcaJ13BZ3kwldf06PTiAQRAB76Z1KJwZNL1SaRZMi2w1FM9RYTgZ6QErS8NUl/GBmQ==} - core-js-compat@3.46.0: - resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -1201,12 +1207,12 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} engines: {node: '>=18'} define-lazy-prop@3.0.0: @@ -1241,8 +1247,8 @@ packages: oxc-resolver: optional: true - electron-to-chromium@1.5.249: - resolution: {integrity: sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==} + electron-to-chromium@1.5.259: + resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==} es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -1513,8 +1519,8 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsesc@3.0.2: @@ -1539,8 +1545,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - knitwork@1.2.0: - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} + knitwork@1.3.0: + resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -1628,8 +1634,11 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true - obuild@0.4.1: - resolution: {integrity: sha512-RANVgI8sIAxCpCPgrS+5CJHWD4tJ4P5C1P/M1XEC2CRf6FBOOCH4mH/CTQsGKpG6E9i0TDT8XI+v3J6Te0yteA==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + obuild@0.4.2: + resolution: {integrity: sha512-n7NrWD0KHG7g5jEztyI3iXAb+deHyxJm/HOOEgqlNq/Ia+vjTMIIUh5CDjXW6FtdRd0dnQKDo1JbGMn+t5tKRA==} hasBin: true ofetch@1.5.1: @@ -1646,16 +1655,16 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - oxc-minify@0.96.0: - resolution: {integrity: sha512-dXeeGrfPJJ4rMdw+NrqiCRtbzVX2ogq//R0Xns08zql2HjV3Zi2SBJ65saqfDaJzd2bcHqvGWH+M44EQCHPAcA==} + oxc-minify@0.98.0: + resolution: {integrity: sha512-4/Hv1NgOTtb893cxkmJM7YF+mLzqODHOvkCoPLRsnXm5rVXDa2tc1kMQn4b6JYAUh+TvRfH8rqJxFAJDeRt0Zg==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-parser@0.96.0: - resolution: {integrity: sha512-ucs6niJ5mZlYP3oTl4AK2eD2m7WLoSaljswnSFVYWrXzme5PtM97S7Ve1Tjx+/TKjanmEZuSt1f1qYi6SZvntw==} + oxc-parser@0.98.0: + resolution: {integrity: sha512-gt99VUKRlZ6ZB3VBgqMJD858E8V5UpBQWX7cVI9XaYzuS8e3nN63uRlwPfkFoE4JN+MGxJ/WSRhBUhxUv23A/Q==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-transform@0.96.0: - resolution: {integrity: sha512-dQPNIF+gHpSkmC0+Vg9IktNyhcn28Y8R3eTLyzn52UNymkasLicl3sFAtz7oEVuFmCpgGjaUTKkwk+jW2cHpDQ==} + oxc-transform@0.98.0: + resolution: {integrity: sha512-MyjfR/lTUmHNnkNDEzHQ9pIZL/bCSRXRxyq51LJYE/We+/MsnFeTejow1GbrmbVg8TbTqV0HNAIc5dLo6hLRtA==} engines: {node: ^20.19.0 || >=22.12.0} p-limit@3.1.0: @@ -1758,13 +1767,13 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown-plugin-dts@0.17.5: - resolution: {integrity: sha512-dYzjLdhgsSIPmOCPJdDXiD6AUotAHVkGLNlSMdi3VmvTqk7O9H7uGzG2WGzgnDxZq6kZh31vZUbp9ZFoOhpySA==} - engines: {node: '>=20.18.0'} + rolldown-plugin-dts@0.18.0: + resolution: {integrity: sha512-2CJtKYa9WPClZxkJeCt4bGUegQvQKQ1VJp9jFJzG0h8I/80XI6qDgoWfVJUOEhT2swbsRQh/42N1RIWvbXT4rA==} + engines: {node: '>=20.19.0'} peerDependencies: '@ts-macro/tsc': ^0.3.6 '@typescript/native-preview': '>=7.0.0-dev.20250601.1' - rolldown: ^1.0.0-beta.44 + rolldown: ^1.0.0-beta.51 typescript: ^5.0.0 vue-tsc: ~3.1.0 peerDependenciesMeta: @@ -1777,13 +1786,13 @@ packages: vue-tsc: optional: true - rolldown@1.0.0-beta.48: - resolution: {integrity: sha512-QQLvjMSxeIjC7k9xIeSUR/Q64Vp2ItwiHP378pH0/rNaMcHvuBR43cLx1ak2t2Cg34NL7MR7hHk+Hxk4IVtmbA==} + rolldown@1.0.0-beta.51: + resolution: {integrity: sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1870,8 +1879,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.46.4: - resolution: {integrity: sha512-KALyxkpYV5Ix7UhvjTwJXZv76VWsHG+NjNlt/z+a17SOQSiOcBdUXdbJdyXi7RPxrBFECtFOiPwUJQusJuCqrg==} + typescript-eslint@8.47.0: + resolution: {integrity: sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1904,8 +1913,16 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - vite@7.2.2: - resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} + valibot@1.1.0: + resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + + vite@7.2.4: + resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1944,23 +1961,26 @@ packages: yaml: optional: true - vitest@4.0.8: - resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} + vitest@4.0.13: + resolution: {integrity: sha512-QSD4I0fN6uZQfftryIXuqvqgBxTvJ3ZNkF6RWECd82YGAYAfhcppBLFXzXJHQAAhVFyYEuFTrq6h0hQqjB7jIQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.8 - '@vitest/browser-preview': 4.0.8 - '@vitest/browser-webdriverio': 4.0.8 - '@vitest/ui': 4.0.8 + '@vitest/browser-playwright': 4.0.13 + '@vitest/browser-preview': 4.0.13 + '@vitest/browser-webdriverio': 4.0.13 + '@vitest/ui': 4.0.13 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@opentelemetry/api': + optional: true '@types/debug': optional: true '@types/node': @@ -2000,6 +2020,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + snapshots: '@babel/generator@7.28.5': @@ -2027,13 +2050,13 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@emnapi/core@1.7.0': + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.0': + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 optional: true @@ -2156,7 +2179,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -2203,8 +2226,8 @@ snapshots: '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.7.0 - '@emnapi/runtime': 1.7.0 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -2220,147 +2243,147 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@oxc-minify/binding-android-arm64@0.96.0': + '@oxc-minify/binding-android-arm64@0.98.0': optional: true - '@oxc-minify/binding-darwin-arm64@0.96.0': + '@oxc-minify/binding-darwin-arm64@0.98.0': optional: true - '@oxc-minify/binding-darwin-x64@0.96.0': + '@oxc-minify/binding-darwin-x64@0.98.0': optional: true - '@oxc-minify/binding-freebsd-x64@0.96.0': + '@oxc-minify/binding-freebsd-x64@0.98.0': optional: true - '@oxc-minify/binding-linux-arm-gnueabihf@0.96.0': + '@oxc-minify/binding-linux-arm-gnueabihf@0.98.0': optional: true - '@oxc-minify/binding-linux-arm-musleabihf@0.96.0': + '@oxc-minify/binding-linux-arm-musleabihf@0.98.0': optional: true - '@oxc-minify/binding-linux-arm64-gnu@0.96.0': + '@oxc-minify/binding-linux-arm64-gnu@0.98.0': optional: true - '@oxc-minify/binding-linux-arm64-musl@0.96.0': + '@oxc-minify/binding-linux-arm64-musl@0.98.0': optional: true - '@oxc-minify/binding-linux-riscv64-gnu@0.96.0': + '@oxc-minify/binding-linux-riscv64-gnu@0.98.0': optional: true - '@oxc-minify/binding-linux-s390x-gnu@0.96.0': + '@oxc-minify/binding-linux-s390x-gnu@0.98.0': optional: true - '@oxc-minify/binding-linux-x64-gnu@0.96.0': + '@oxc-minify/binding-linux-x64-gnu@0.98.0': optional: true - '@oxc-minify/binding-linux-x64-musl@0.96.0': + '@oxc-minify/binding-linux-x64-musl@0.98.0': optional: true - '@oxc-minify/binding-wasm32-wasi@0.96.0': + '@oxc-minify/binding-wasm32-wasi@0.98.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-minify/binding-win32-arm64-msvc@0.96.0': + '@oxc-minify/binding-win32-arm64-msvc@0.98.0': optional: true - '@oxc-minify/binding-win32-x64-msvc@0.96.0': + '@oxc-minify/binding-win32-x64-msvc@0.98.0': optional: true - '@oxc-parser/binding-android-arm64@0.96.0': + '@oxc-parser/binding-android-arm64@0.98.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.96.0': + '@oxc-parser/binding-darwin-arm64@0.98.0': optional: true - '@oxc-parser/binding-darwin-x64@0.96.0': + '@oxc-parser/binding-darwin-x64@0.98.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.96.0': + '@oxc-parser/binding-freebsd-x64@0.98.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.96.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.98.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.96.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.98.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.96.0': + '@oxc-parser/binding-linux-arm64-gnu@0.98.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.96.0': + '@oxc-parser/binding-linux-arm64-musl@0.98.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.96.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.98.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.96.0': + '@oxc-parser/binding-linux-s390x-gnu@0.98.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.96.0': + '@oxc-parser/binding-linux-x64-gnu@0.98.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.96.0': + '@oxc-parser/binding-linux-x64-musl@0.98.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.96.0': + '@oxc-parser/binding-wasm32-wasi@0.98.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.96.0': + '@oxc-parser/binding-win32-arm64-msvc@0.98.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.96.0': + '@oxc-parser/binding-win32-x64-msvc@0.98.0': optional: true - '@oxc-project/types@0.96.0': {} + '@oxc-project/types@0.98.0': {} - '@oxc-transform/binding-android-arm64@0.96.0': + '@oxc-transform/binding-android-arm64@0.98.0': optional: true - '@oxc-transform/binding-darwin-arm64@0.96.0': + '@oxc-transform/binding-darwin-arm64@0.98.0': optional: true - '@oxc-transform/binding-darwin-x64@0.96.0': + '@oxc-transform/binding-darwin-x64@0.98.0': optional: true - '@oxc-transform/binding-freebsd-x64@0.96.0': + '@oxc-transform/binding-freebsd-x64@0.98.0': optional: true - '@oxc-transform/binding-linux-arm-gnueabihf@0.96.0': + '@oxc-transform/binding-linux-arm-gnueabihf@0.98.0': optional: true - '@oxc-transform/binding-linux-arm-musleabihf@0.96.0': + '@oxc-transform/binding-linux-arm-musleabihf@0.98.0': optional: true - '@oxc-transform/binding-linux-arm64-gnu@0.96.0': + '@oxc-transform/binding-linux-arm64-gnu@0.98.0': optional: true - '@oxc-transform/binding-linux-arm64-musl@0.96.0': + '@oxc-transform/binding-linux-arm64-musl@0.98.0': optional: true - '@oxc-transform/binding-linux-riscv64-gnu@0.96.0': + '@oxc-transform/binding-linux-riscv64-gnu@0.98.0': optional: true - '@oxc-transform/binding-linux-s390x-gnu@0.96.0': + '@oxc-transform/binding-linux-s390x-gnu@0.98.0': optional: true - '@oxc-transform/binding-linux-x64-gnu@0.96.0': + '@oxc-transform/binding-linux-x64-gnu@0.98.0': optional: true - '@oxc-transform/binding-linux-x64-musl@0.96.0': + '@oxc-transform/binding-linux-x64-musl@0.98.0': optional: true - '@oxc-transform/binding-wasm32-wasi@0.96.0': + '@oxc-transform/binding-wasm32-wasi@0.98.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-transform/binding-win32-arm64-msvc@0.96.0': + '@oxc-transform/binding-win32-arm64-msvc@0.98.0': optional: true - '@oxc-transform/binding-win32-x64-msvc@0.96.0': + '@oxc-transform/binding-win32-x64-msvc@0.98.0': optional: true '@parcel/watcher-android-arm64@2.5.1': @@ -2423,116 +2446,116 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1 - '@rolldown/binding-android-arm64@1.0.0-beta.48': + '@rolldown/binding-android-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.48': + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.48': + '@rolldown/binding-darwin-x64@1.0.0-beta.51': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.48': + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.48': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.48': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.48': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.48': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.48': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.48': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.48': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.48': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.48': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.48': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': optional: true - '@rolldown/pluginutils@1.0.0-beta.48': {} + '@rolldown/pluginutils@1.0.0-beta.51': {} - '@rollup/rollup-android-arm-eabi@4.53.2': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.53.2': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.53.2': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.53.2': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.53.2': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.53.2': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.2': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.2': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.2': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.2': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.2': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.2': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.2': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.2': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.2': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.53.2': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.53.2': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.2': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.2': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.2': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.2': + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true '@standard-schema/spec@1.0.0': {} @@ -2557,20 +2580,20 @@ snapshots: dependencies: '@types/unist': 2.0.11 - '@types/node@24.10.0': + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 '@types/unist@2.0.11': {} - '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.47.0 eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -2580,41 +2603,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.47.0 debug: 4.4.3 eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': + '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) + '@typescript-eslint/types': 8.47.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.4': + '@typescript-eslint/scope-manager@8.47.0': dependencies: - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/visitor-keys': 8.47.0 - '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -2622,14 +2645,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.4': {} + '@typescript-eslint/types@8.47.0': {} - '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/project-service': 8.47.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/visitor-keys': 8.47.0 debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -2640,26 +2663,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.4': + '@typescript-eslint/visitor-keys@8.47.0': dependencies: - '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/types': 8.47.0 eslint-visitor-keys: 4.2.1 - '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1))': + '@vitest/coverage-v8@4.0.13(vitest@4.0.13(@types/node@24.10.1)(jiti@2.6.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.13 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3 istanbul-lib-coverage: 3.2.2 @@ -2669,47 +2692,47 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1) + vitest: 4.0.13(@types/node@24.10.1)(jiti@2.6.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.8': + '@vitest/expect@4.0.13': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.8 - '@vitest/utils': 4.0.8 - chai: 6.2.0 + '@vitest/spy': 4.0.13 + '@vitest/utils': 4.0.13 + chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1))': + '@vitest/mocker@4.0.13(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1))': dependencies: - '@vitest/spy': 4.0.8 + '@vitest/spy': 4.0.13 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1) - '@vitest/pretty-format@4.0.8': + '@vitest/pretty-format@4.0.13': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.8': + '@vitest/runner@4.0.13': dependencies: - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.13 pathe: 2.0.3 - '@vitest/snapshot@4.0.8': + '@vitest/snapshot@4.0.13': dependencies: - '@vitest/pretty-format': 4.0.8 + '@vitest/pretty-format': 4.0.13 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.8': {} + '@vitest/spy@4.0.13': {} - '@vitest/utils@4.0.8': + '@vitest/utils@4.0.13': dependencies: - '@vitest/pretty-format': 4.0.8 + '@vitest/pretty-format': 4.0.13 tinyrainbow: 3.0.3 acorn-jsx@5.3.2(acorn@8.15.0): @@ -2747,7 +2770,7 @@ snapshots: automd@0.4.2(magicast@0.5.1): dependencies: '@parcel/watcher': 2.5.1 - c12: 3.3.1(magicast@0.5.1) + c12: 3.3.2(magicast@0.5.1) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 @@ -2768,7 +2791,7 @@ snapshots: balanced-match@1.0.2: {} - baseline-browser-mapping@2.8.25: {} + baseline-browser-mapping@2.8.30: {} birpc@2.8.0: {} @@ -2787,9 +2810,9 @@ snapshots: browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.25 - caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.249 + baseline-browser-mapping: 2.8.30 + caniuse-lite: 1.0.30001756 + electron-to-chromium: 1.5.259 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) @@ -2799,7 +2822,7 @@ snapshots: dependencies: run-applescript: 7.1.0 - c12@3.3.1(magicast@0.5.1): + c12@3.3.2(magicast@0.5.1): dependencies: chokidar: 4.0.3 confbox: 0.2.2 @@ -2818,9 +2841,9 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001754: {} + caniuse-lite@1.0.30001756: {} - chai@6.2.0: {} + chai@6.2.1: {} chalk@4.1.2: dependencies: @@ -2829,7 +2852,7 @@ snapshots: changelogen@0.6.2(magicast@0.5.1): dependencies: - c12: 3.3.1(magicast@0.5.1) + c12: 3.3.2(magicast@0.5.1) confbox: 0.2.2 consola: 3.4.2 convert-gitmoji: 0.1.5 @@ -2881,7 +2904,7 @@ snapshots: convert-gitmoji@0.1.5: {} - core-js-compat@3.46.0: + core-js-compat@3.47.0: dependencies: browserslist: 4.28.0 @@ -2897,12 +2920,12 @@ snapshots: deep-is@0.1.4: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.4.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 define-lazy-prop@3.0.0: {} @@ -2922,7 +2945,7 @@ snapshots: dts-resolver@2.1.3: {} - electron-to-chromium@1.5.249: {} + electron-to-chromium@1.5.259: {} es-module-lexer@1.7.0: {} @@ -2969,7 +2992,7 @@ snapshots: eslint-plugin-unicorn: 59.0.1(eslint@9.39.1(jiti@2.6.1)) globals: 16.5.0 typescript: 5.9.3 - typescript-eslint: 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -2987,7 +3010,7 @@ snapshots: '@eslint/plugin-kit': 0.2.8 ci-info: 4.3.1 clean-regexp: 1.0.0 - core-js-compat: 3.46.0 + core-js-compat: 3.47.0 eslint: 9.39.1(jiti@2.6.1) esquery: 1.6.0 find-up-simple: 1.0.1 @@ -3230,7 +3253,7 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -3248,7 +3271,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - knitwork@1.2.0: {} + knitwork@1.3.0: {} levn@0.4.1: dependencies: @@ -3346,27 +3369,28 @@ snapshots: pkg-types: 2.3.0 tinyexec: 1.0.2 - obuild@0.4.1(magicast@0.5.1)(typescript@5.9.3): + obug@2.1.1: {} + + obuild@0.4.2(magicast@0.5.1)(typescript@5.9.3): dependencies: - c12: 3.3.1(magicast@0.5.1) + c12: 3.3.2(magicast@0.5.1) consola: 3.4.2 defu: 6.1.4 exsolve: 1.0.8 magic-string: 0.30.21 - oxc-minify: 0.96.0 - oxc-parser: 0.96.0 - oxc-transform: 0.96.0 + oxc-minify: 0.98.0 + oxc-parser: 0.98.0 + oxc-transform: 0.98.0 pathe: 2.0.3 pretty-bytes: 7.1.0 - rolldown: 1.0.0-beta.48 - rolldown-plugin-dts: 0.17.5(rolldown@1.0.0-beta.48)(typescript@5.9.3) + rolldown: 1.0.0-beta.51 + rolldown-plugin-dts: 0.18.0(rolldown@1.0.0-beta.51)(typescript@5.9.3) tinyglobby: 0.2.15 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' - magicast - oxc-resolver - - supports-color - typescript - vue-tsc @@ -3380,7 +3404,7 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.4.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -3394,61 +3418,61 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - oxc-minify@0.96.0: + oxc-minify@0.98.0: optionalDependencies: - '@oxc-minify/binding-android-arm64': 0.96.0 - '@oxc-minify/binding-darwin-arm64': 0.96.0 - '@oxc-minify/binding-darwin-x64': 0.96.0 - '@oxc-minify/binding-freebsd-x64': 0.96.0 - '@oxc-minify/binding-linux-arm-gnueabihf': 0.96.0 - '@oxc-minify/binding-linux-arm-musleabihf': 0.96.0 - '@oxc-minify/binding-linux-arm64-gnu': 0.96.0 - '@oxc-minify/binding-linux-arm64-musl': 0.96.0 - '@oxc-minify/binding-linux-riscv64-gnu': 0.96.0 - '@oxc-minify/binding-linux-s390x-gnu': 0.96.0 - '@oxc-minify/binding-linux-x64-gnu': 0.96.0 - '@oxc-minify/binding-linux-x64-musl': 0.96.0 - '@oxc-minify/binding-wasm32-wasi': 0.96.0 - '@oxc-minify/binding-win32-arm64-msvc': 0.96.0 - '@oxc-minify/binding-win32-x64-msvc': 0.96.0 - - oxc-parser@0.96.0: - dependencies: - '@oxc-project/types': 0.96.0 + '@oxc-minify/binding-android-arm64': 0.98.0 + '@oxc-minify/binding-darwin-arm64': 0.98.0 + '@oxc-minify/binding-darwin-x64': 0.98.0 + '@oxc-minify/binding-freebsd-x64': 0.98.0 + '@oxc-minify/binding-linux-arm-gnueabihf': 0.98.0 + '@oxc-minify/binding-linux-arm-musleabihf': 0.98.0 + '@oxc-minify/binding-linux-arm64-gnu': 0.98.0 + '@oxc-minify/binding-linux-arm64-musl': 0.98.0 + '@oxc-minify/binding-linux-riscv64-gnu': 0.98.0 + '@oxc-minify/binding-linux-s390x-gnu': 0.98.0 + '@oxc-minify/binding-linux-x64-gnu': 0.98.0 + '@oxc-minify/binding-linux-x64-musl': 0.98.0 + '@oxc-minify/binding-wasm32-wasi': 0.98.0 + '@oxc-minify/binding-win32-arm64-msvc': 0.98.0 + '@oxc-minify/binding-win32-x64-msvc': 0.98.0 + + oxc-parser@0.98.0: + dependencies: + '@oxc-project/types': 0.98.0 optionalDependencies: - '@oxc-parser/binding-android-arm64': 0.96.0 - '@oxc-parser/binding-darwin-arm64': 0.96.0 - '@oxc-parser/binding-darwin-x64': 0.96.0 - '@oxc-parser/binding-freebsd-x64': 0.96.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.96.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.96.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.96.0 - '@oxc-parser/binding-linux-arm64-musl': 0.96.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.96.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.96.0 - '@oxc-parser/binding-linux-x64-gnu': 0.96.0 - '@oxc-parser/binding-linux-x64-musl': 0.96.0 - '@oxc-parser/binding-wasm32-wasi': 0.96.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.96.0 - '@oxc-parser/binding-win32-x64-msvc': 0.96.0 - - oxc-transform@0.96.0: + '@oxc-parser/binding-android-arm64': 0.98.0 + '@oxc-parser/binding-darwin-arm64': 0.98.0 + '@oxc-parser/binding-darwin-x64': 0.98.0 + '@oxc-parser/binding-freebsd-x64': 0.98.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.98.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.98.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.98.0 + '@oxc-parser/binding-linux-arm64-musl': 0.98.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.98.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.98.0 + '@oxc-parser/binding-linux-x64-gnu': 0.98.0 + '@oxc-parser/binding-linux-x64-musl': 0.98.0 + '@oxc-parser/binding-wasm32-wasi': 0.98.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.98.0 + '@oxc-parser/binding-win32-x64-msvc': 0.98.0 + + oxc-transform@0.98.0: optionalDependencies: - '@oxc-transform/binding-android-arm64': 0.96.0 - '@oxc-transform/binding-darwin-arm64': 0.96.0 - '@oxc-transform/binding-darwin-x64': 0.96.0 - '@oxc-transform/binding-freebsd-x64': 0.96.0 - '@oxc-transform/binding-linux-arm-gnueabihf': 0.96.0 - '@oxc-transform/binding-linux-arm-musleabihf': 0.96.0 - '@oxc-transform/binding-linux-arm64-gnu': 0.96.0 - '@oxc-transform/binding-linux-arm64-musl': 0.96.0 - '@oxc-transform/binding-linux-riscv64-gnu': 0.96.0 - '@oxc-transform/binding-linux-s390x-gnu': 0.96.0 - '@oxc-transform/binding-linux-x64-gnu': 0.96.0 - '@oxc-transform/binding-linux-x64-musl': 0.96.0 - '@oxc-transform/binding-wasm32-wasi': 0.96.0 - '@oxc-transform/binding-win32-arm64-msvc': 0.96.0 - '@oxc-transform/binding-win32-x64-msvc': 0.96.0 + '@oxc-transform/binding-android-arm64': 0.98.0 + '@oxc-transform/binding-darwin-arm64': 0.98.0 + '@oxc-transform/binding-darwin-x64': 0.98.0 + '@oxc-transform/binding-freebsd-x64': 0.98.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.98.0 + '@oxc-transform/binding-linux-arm-musleabihf': 0.98.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.98.0 + '@oxc-transform/binding-linux-arm64-musl': 0.98.0 + '@oxc-transform/binding-linux-riscv64-gnu': 0.98.0 + '@oxc-transform/binding-linux-s390x-gnu': 0.98.0 + '@oxc-transform/binding-linux-x64-gnu': 0.98.0 + '@oxc-transform/binding-linux-x64-musl': 0.98.0 + '@oxc-transform/binding-wasm32-wasi': 0.98.0 + '@oxc-transform/binding-win32-arm64-msvc': 0.98.0 + '@oxc-transform/binding-win32-x64-msvc': 0.98.0 p-limit@3.1.0: dependencies: @@ -3534,70 +3558,69 @@ snapshots: reusify@1.1.0: {} - rolldown-plugin-dts@0.17.5(rolldown@1.0.0-beta.48)(typescript@5.9.3): + rolldown-plugin-dts@0.18.0(rolldown@1.0.0-beta.51)(typescript@5.9.3): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 '@babel/types': 7.28.5 ast-kit: 2.2.0 birpc: 2.8.0 - debug: 4.4.3 dts-resolver: 2.1.3 get-tsconfig: 4.13.0 magic-string: 0.30.21 - rolldown: 1.0.0-beta.48 + obug: 2.1.1 + rolldown: 1.0.0-beta.51 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver - - supports-color - rolldown@1.0.0-beta.48: + rolldown@1.0.0-beta.51: dependencies: - '@oxc-project/types': 0.96.0 - '@rolldown/pluginutils': 1.0.0-beta.48 + '@oxc-project/types': 0.98.0 + '@rolldown/pluginutils': 1.0.0-beta.51 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.48 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.48 - '@rolldown/binding-darwin-x64': 1.0.0-beta.48 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.48 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.48 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.48 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.48 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.48 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.48 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.48 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.48 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.48 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.48 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.48 - - rollup@4.53.2: + '@rolldown/binding-android-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-x64': 1.0.0-beta.51 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.51 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.51 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.51 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.51 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.51 + + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.2 - '@rollup/rollup-android-arm64': 4.53.2 - '@rollup/rollup-darwin-arm64': 4.53.2 - '@rollup/rollup-darwin-x64': 4.53.2 - '@rollup/rollup-freebsd-arm64': 4.53.2 - '@rollup/rollup-freebsd-x64': 4.53.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 - '@rollup/rollup-linux-arm-musleabihf': 4.53.2 - '@rollup/rollup-linux-arm64-gnu': 4.53.2 - '@rollup/rollup-linux-arm64-musl': 4.53.2 - '@rollup/rollup-linux-loong64-gnu': 4.53.2 - '@rollup/rollup-linux-ppc64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-musl': 4.53.2 - '@rollup/rollup-linux-s390x-gnu': 4.53.2 - '@rollup/rollup-linux-x64-gnu': 4.53.2 - '@rollup/rollup-linux-x64-musl': 4.53.2 - '@rollup/rollup-openharmony-arm64': 4.53.2 - '@rollup/rollup-win32-arm64-msvc': 4.53.2 - '@rollup/rollup-win32-ia32-msvc': 4.53.2 - '@rollup/rollup-win32-x64-gnu': 4.53.2 - '@rollup/rollup-win32-x64-msvc': 4.53.2 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 run-applescript@7.1.0: {} @@ -3660,12 +3683,12 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -3686,7 +3709,7 @@ snapshots: citty: 0.1.6 defu: 6.1.4 jiti: 2.6.1 - knitwork: 1.2.0 + knitwork: 1.3.0 scule: 1.3.0 update-browserslist-db@1.1.4(browserslist@4.28.0): @@ -3699,28 +3722,32 @@ snapshots: dependencies: punycode: 2.3.1 - vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1): + valibot@1.1.0(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + + vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.2 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 fsevents: 2.3.3 jiti: 2.6.1 - vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1): + vitest@4.0.13(@types/node@24.10.1)(jiti@2.6.1): dependencies: - '@vitest/expect': 4.0.8 - '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)) - '@vitest/pretty-format': 4.0.8 - '@vitest/runner': 4.0.8 - '@vitest/snapshot': 4.0.8 - '@vitest/spy': 4.0.8 - '@vitest/utils': 4.0.8 + '@vitest/expect': 4.0.13 + '@vitest/mocker': 4.0.13(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)) + '@vitest/pretty-format': 4.0.13 + '@vitest/runner': 4.0.13 + '@vitest/snapshot': 4.0.13 + '@vitest/spy': 4.0.13 + '@vitest/utils': 4.0.13 debug: 4.4.3 es-module-lexer: 1.7.0 expect-type: 1.2.2 @@ -3732,10 +3759,10 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 transitivePeerDependencies: - jiti - less @@ -3766,3 +3793,5 @@ snapshots: is-wsl: 3.1.0 yocto-queue@0.1.0: {} + + zod@3.25.76: {} diff --git a/src/loader.ts b/src/loader.ts index a3092a5..f8aacb4 100644 --- a/src/loader.ts +++ b/src/loader.ts @@ -21,6 +21,7 @@ import type { InputConfig, ConfigSource, ConfigFunctionContext, + StandardSchemaV1, } from "./types"; const _normalize = (p?: string) => p?.replace(/\\/g, "/"); @@ -53,7 +54,8 @@ export const SUPPORTED_EXTENSIONS = Object.freeze([ export async function loadConfig< T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta, ->(options: LoadConfigOptions): Promise> { + S extends StandardSchemaV1 = StandardSchemaV1, +>(options: LoadConfigOptions): Promise> { // Normalize options options.cwd = resolve(process.cwd(), options.cwd || "."); options.name = options.name || "config"; @@ -224,6 +226,15 @@ export async function loadConfig< throw new Error(`Required config (${r.configFile}) cannot be resolved.`); } + // Validate config + if (options.schema) { + let result = options.schema["~standard"].validate(r); + if (result instanceof Promise) result = await result; + if (result.issues) { + throw new Error(JSON.stringify(result.issues, undefined, 2)); + } + } + // Return resolved config return r; } @@ -231,7 +242,8 @@ export async function loadConfig< async function extendConfig< T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta, ->(config: InputConfig, options: LoadConfigOptions) { + S extends StandardSchemaV1 = StandardSchemaV1, +>(config: InputConfig, options: LoadConfigOptions) { (config as any)._layers = config._layers || []; if (!options.extend) { return; @@ -305,9 +317,10 @@ const NPM_PACKAGE_RE = async function resolveConfig< T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta, + S extends StandardSchemaV1 = StandardSchemaV1, >( source: string, - options: LoadConfigOptions, + options: LoadConfigOptions, sourceOptions: SourceOptions = {}, ): Promise> { // Custom user resolver @@ -452,7 +465,7 @@ async function resolveConfig< // --- internal --- -function tryResolve(id: string, options: LoadConfigOptions) { +function tryResolve(id: string, options: LoadConfigOptions) { const res = resolveModulePath(id, { try: true, from: pathToFileURL(join(options.cwd || ".", options.configFile || "/")), diff --git a/src/types.ts b/src/types.ts index 8470ae9..ee0cde3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -2,6 +2,82 @@ import type { Jiti, JitiOptions } from "jiti"; import type { DownloadTemplateOptions } from "giget"; import type { DotenvOptions } from "./dotenv"; +// https://github.com/standard-schema/standard-schema/blob/main/packages/spec/src/index.ts +/** The Standard Schema interface. */ +export interface StandardSchemaV1 { + /** The Standard Schema properties. */ + readonly "~standard": StandardSchemaV1.Props; +} + +// eslint-disable-next-line @typescript-eslint/no-namespace +export declare namespace StandardSchemaV1 { + /** The Standard Schema properties interface. */ + export interface Props { + /** The version number of the standard. */ + readonly version: 1; + /** The vendor name of the schema library. */ + readonly vendor: string; + /** Validates unknown input values. */ + readonly validate: ( + value: unknown, + ) => Result | Promise>; + /** Inferred types associated with the schema. */ + readonly types?: Types | undefined; + } + + /** The result interface of the validate function. */ + export type Result = SuccessResult | FailureResult; + + /** The result interface if validation succeeds. */ + export interface SuccessResult { + /** The typed output value. */ + readonly value: Output; + /** The non-existent issues. */ + readonly issues?: undefined; + } + + /** The result interface if validation fails. */ + export interface FailureResult { + /** The issues of failed validation. */ + readonly issues: ReadonlyArray; + } + + /** The issue interface of the failure output. */ + export interface Issue { + /** The error message of the issue. */ + readonly message: string; + /** The path of the issue, if any. */ + readonly path?: ReadonlyArray | undefined; + } + + /** The path segment interface of the issue. */ + export interface PathSegment { + /** The key representing a path segment. */ + readonly key: PropertyKey; + } + + /** The Standard Schema types interface. */ + export interface Types { + /** The input type of the schema. */ + readonly input: Input; + /** The output type of the schema. */ + readonly output: Output; + } + + /** Infers the input type of a Standard Schema. */ + export type InferInput = NonNullable< + Schema["~standard"]["types"] + >["input"]; + + /** Infers the output type of a Standard Schema. */ + export type InferOutput = NonNullable< + Schema["~standard"]["types"] + >["output"]; + + // biome-ignore lint/complexity/noUselessEmptyExport: needed for granular visibility control of TS namespace + export {}; +} + export interface ConfigLayerMeta { name?: string; [key: string]: any; @@ -107,6 +183,7 @@ export type ResolvableConfig = export interface LoadConfigOptions< T extends UserInputConfig = UserInputConfig, MT extends ConfigLayerMeta = ConfigLayerMeta, + S extends StandardSchemaV1 = StandardSchemaV1, > { name?: string; cwd?: string; @@ -134,7 +211,7 @@ export interface LoadConfigOptions< resolve?: ( id: string, - options: LoadConfigOptions, + options: LoadConfigOptions, ) => | null | undefined @@ -155,6 +232,8 @@ export interface LoadConfigOptions< }; configFileRequired?: boolean; + + schema?: S; } export type DefineConfig< diff --git a/test/loader.test.ts b/test/loader.test.ts index dd3f14f..2a41cfb 100644 --- a/test/loader.test.ts +++ b/test/loader.test.ts @@ -1,8 +1,20 @@ import { fileURLToPath } from "node:url"; -import { expect, it, describe } from "vitest"; -import { normalize } from "pathe"; +import { rmSync } from "node:fs"; +import { expect, it, describe, beforeEach } from "vitest"; +import { normalize, resolve } from "pathe"; import type { ConfigLayer, ConfigLayerMeta, UserInputConfig } from "../src"; import { loadConfig } from "../src"; +import { z } from "zod"; +import { + object, + string, + boolean, + array, + optional, + union, + record, + any, +} from "valibot"; const r = (path: string) => normalize(fileURLToPath(new URL(path, import.meta.url))); @@ -10,6 +22,13 @@ const transformPaths = (object: object) => JSON.parse(JSON.stringify(object).replaceAll(r("."), "/")); describe("loader", () => { + beforeEach(() => { + rmSync(resolve(r("./fixture"), "node_modules", ".c12"), { + recursive: true, + force: true, + }); + }); + it("load fixture config", async () => { type UserConfig = Partial<{ virtual: boolean; @@ -336,21 +355,466 @@ describe("loader", () => { expect(Object.keys(baseLayerConfig.config!)).toContain("$env"); }); - it("no config loaded and configFileRequired is default setting", async () => { - await expect( - loadConfig({ - configFile: "CUSTOM", + it("load fixture config with validate for zod - toThrow", async () => { + const ColorsSchema = z.object({ + primary: z.string().optional(), + text: z.number().optional(), // error cause + secondary: z.string().optional(), + }); + + const EnvSchema = z.object({ + test: z + .object({ + baseEnvConfig: z.boolean(), + }) + .optional(), + }); + + const TestSchema = z.object({ + extends: z.array(z.union([z.string(), z.array(z.any())])), + envConfig: z.boolean(), + }); + + const ConfigSchema = z.object({ + defaultConfig: z.boolean().optional(), + virtual: z.boolean().optional(), + githubLayer: z.boolean().optional(), + npmConfig: z.boolean().optional(), + devConfig: z.boolean().optional(), + baseConfig: z.boolean().optional(), + colors: ColorsSchema.optional(), + array: z.array(z.string()).optional(), + $env: EnvSchema.optional(), + baseEnvConfig: z.boolean().optional(), + packageJSON2: z.boolean().optional(), + packageJSON: z.boolean().optional(), + testConfig: z.boolean().optional(), + rcFile: z.boolean().optional(), + $test: TestSchema.optional(), + configFile: z.union([z.string(), z.boolean()]).optional(), + overridden: z.boolean().optional(), + enableDefault: z.boolean().optional(), + envConfig: z.boolean().optional(), + theme: z.string().optional(), + }); + + const LayerSchema = z.object({ + config: ConfigSchema, + configFile: z.string().optional(), + cwd: z.string().optional(), + source: z.string().optional(), + sourceOptions: z + .object({ + giget: z.record(z.string(), z.any()).optional(), + }) + .optional(), + meta: z + .object({ + name: z.string().optional(), + version: z.string().optional(), + }) + .optional(), + }); + + const MainSchema = z.object({ + config: ConfigSchema, + cwd: z.string(), + configFile: z.string(), + layers: z.array(LayerSchema), + meta: z.object({}).optional(), + }); + type UserConfig = Partial<{ + virtual: boolean; + overridden: boolean; + enableDefault: boolean; + defaultConfig: boolean; + extends: string[]; + }>; + expect( + loadConfig({ + cwd: r("./fixture"), + name: "test", + dotenv: true, + packageJson: ["c12", "c12-alt"], + globalRc: true, + envName: "test", + extend: { + extendKey: ["theme", "extends"], + }, + resolve: (id) => { + if (id === "virtual") { + return { config: { virtual: true } }; + } + }, + overrides: { + overridden: true, + }, + defaults: { + defaultConfig: true, + }, + defaultConfig: ({ configs }) => { + if (configs?.main?.enableDefault) { + return Promise.resolve({ + extends: ["virtual"], + }); + } + return {}; + }, + schema: MainSchema, }), - ).resolves.not.toThrowError(); + ).rejects.toThrow(); }); + it("load fixture config with validate for zod - not.toThrow", async () => { + const ColorsSchema = z.object({ + primary: z.string().optional(), + text: z.string().optional(), + secondary: z.string().optional(), + }); + + const EnvSchema = z + .object({ + test: z + .object({ + baseEnvConfig: z.boolean(), + }) + .optional(), + }) + .optional(); + + const TestSchema = z + .object({ + extends: z.array( + z.union([ + z.string(), + z.array(z.any()), + z.record(z.string(), z.any()), + ]), + ), + envConfig: z.boolean(), + }) + .optional(); + + const ConfigSchema = z.object({ + defaultConfig: z.boolean().optional(), + virtual: z.boolean().optional(), + githubLayer: z.boolean().optional(), + npmConfig: z.boolean().optional(), + devConfig: z.boolean().optional(), + baseConfig: z.boolean().optional(), + colors: ColorsSchema.optional(), + array: z.array(z.string()).optional(), + $env: EnvSchema, + baseEnvConfig: z.boolean().optional(), + packageJSON2: z.boolean().optional(), + packageJSON: z.boolean().optional(), + testConfig: z.boolean().optional(), + rcFile: z.boolean().optional(), + $test: TestSchema, + configFile: z.union([z.string(), z.boolean(), z.undefined()]).optional(), + overridden: z.boolean().optional(), + enableDefault: z.boolean().optional(), + envConfig: z.boolean().optional(), + theme: z.string().optional(), + }); + + const LayerSchema = z.object({ + config: ConfigSchema, + configFile: z.union([z.string(), z.undefined()]).optional(), + cwd: z.union([z.string(), z.undefined()]).optional(), + source: z.string().optional(), + sourceOptions: z + .object({ + giget: z.record(z.string(), z.any()).optional(), + }) + .optional(), + meta: z.record(z.string(), z.any()).optional(), + }); + + const MainSchema = z.object({ + config: ConfigSchema, + cwd: z.string(), + configFile: z.string(), + layers: z.array(LayerSchema), + meta: z.record(z.string(), z.any()).optional(), + }); + + type UserConfig = Partial<{ + virtual: boolean; + overridden: boolean; + enableDefault: boolean; + defaultConfig: boolean; + extends: string[]; + }>; + expect( + loadConfig({ + cwd: r("./fixture"), + name: "test", + dotenv: true, + packageJson: ["c12", "c12-alt"], + globalRc: true, + envName: "test", + extend: { + extendKey: ["theme", "extends"], + }, + resolve: (id) => { + if (id === "virtual") { + return { config: { virtual: true } }; + } + }, + overrides: { + overridden: true, + }, + defaults: { + defaultConfig: true, + }, + defaultConfig: ({ configs }) => { + if (configs?.main?.enableDefault) { + return Promise.resolve({ + extends: ["virtual"], + }); + } + return {}; + }, + schema: MainSchema, + }), + ).resolves.not.toThrow(); + }); it("no config loaded and configFileRequired is true", async () => { await expect( loadConfig({ configFile: "CUSTOM", configFileRequired: true, }), - ).rejects.toThrowError("Required config (CUSTOM) cannot be resolved."); + ).rejects.toThrow(); + }); + + it("load fixture config with validate for valibot - toThrow", async () => { + const ColorsSchema = object({ + primary: optional(string()), + text: optional(boolean()), // error cause + secondary: optional(string()), + }); + + const EnvSchema = object({ + test: optional( + object({ + baseEnvConfig: boolean(), + }), + ), + }); + + const TestSchema = object({ + extends: array(union([string(), array(any()), record(string(), any())])), + envConfig: boolean(), + }); + + const ConfigSchema = object({ + defaultConfig: optional(boolean()), + virtual: optional(boolean()), + githubLayer: optional(boolean()), + npmConfig: optional(boolean()), + devConfig: optional(boolean()), + baseConfig: optional(boolean()), + colors: optional(ColorsSchema), + array: optional(array(string())), + $env: optional(EnvSchema), + baseEnvConfig: optional(boolean()), + packageJSON2: optional(boolean()), + packageJSON: optional(boolean()), + testConfig: optional(boolean()), + rcFile: optional(boolean()), + $test: optional(TestSchema), + configFile: optional(union([string(), boolean()])), + overridden: optional(boolean()), + enableDefault: optional(boolean()), + envConfig: optional(boolean()), + theme: optional(string()), + }); + + const LayerSchema = object({ + config: ConfigSchema, + configFile: optional(string()), + cwd: optional(string()), + source: optional(string()), + sourceOptions: optional( + object({ + giget: optional(record(string(), any())), + }), + ), + meta: optional(record(string(), any())), + }); + + const MainSchema = object({ + config: ConfigSchema, + cwd: string(), + configFile: string(), + layers: array(LayerSchema), + meta: optional(record(string(), any())), + }); + type UserConfig = Partial<{ + virtual: boolean; + overridden: boolean; + enableDefault: boolean; + defaultConfig: boolean; + extends: string[]; + }>; + expect( + loadConfig({ + cwd: r("./fixture"), + name: "test", + dotenv: true, + packageJson: ["c12", "c12-alt"], + globalRc: true, + envName: "test", + extend: { + extendKey: ["theme", "extends"], + }, + resolve: (id) => { + if (id === "virtual") { + return { config: { virtual: true } }; + } + }, + overrides: { + overridden: true, + }, + defaults: { + defaultConfig: true, + }, + defaultConfig: ({ configs }) => { + if (configs?.main?.enableDefault) { + return Promise.resolve({ + extends: ["virtual"], + }); + } + return {}; + }, + schema: MainSchema, + }), + ).rejects.toThrow(); + }); + + describe("load fixture config with validate for zod - not.toThrow", async () => { + const ColorsSchema = object({ + primary: optional(string()), + text: optional(string()), + secondary: optional(string()), + }); + + const EnvSchema = object({ + test: optional( + object({ + baseEnvConfig: boolean(), + }), + ), + }); + + const TestSchema = object({ + extends: array(union([string(), array(any()), record(string(), any())])), + envConfig: boolean(), + }); + + const ConfigSchema = object({ + defaultConfig: optional(boolean()), + virtual: optional(boolean()), + githubLayer: optional(boolean()), + npmConfig: optional(boolean()), + devConfig: optional(boolean()), + baseConfig: optional(boolean()), + colors: optional(ColorsSchema), + array: optional(array(string())), + $env: optional(EnvSchema), + baseEnvConfig: optional(boolean()), + packageJSON2: optional(boolean()), + packageJSON: optional(boolean()), + testConfig: optional(boolean()), + rcFile: optional(boolean()), + $test: optional(TestSchema), + configFile: optional(union([string(), boolean()])), + overridden: optional(boolean()), + enableDefault: optional(boolean()), + envConfig: optional(boolean()), + theme: optional(string()), + }); + + const LayerSchema = object({ + config: ConfigSchema, + configFile: optional(string()), + cwd: optional(string()), + source: optional(string()), + sourceOptions: optional( + object({ + giget: optional(record(string(), any())), + }), + ), + meta: optional(record(string(), any())), + }); + + const MainSchema = object({ + config: ConfigSchema, + cwd: string(), + configFile: string(), + layers: array(LayerSchema), + meta: optional(record(string(), any())), + }); + + type UserConfig = Partial<{ + virtual: boolean; + overridden: boolean; + enableDefault: boolean; + defaultConfig: boolean; + extends: string[]; + }>; + expect( + loadConfig({ + cwd: r("./fixture"), + name: "test", + dotenv: true, + packageJson: ["c12", "c12-alt"], + globalRc: true, + envName: "test", + extend: { + extendKey: ["theme", "extends"], + }, + resolve: (id) => { + if (id === "virtual") { + return { config: { virtual: true } }; + } + }, + overrides: { + overridden: true, + }, + defaults: { + defaultConfig: true, + }, + defaultConfig: ({ configs }) => { + if (configs?.main?.enableDefault) { + return Promise.resolve({ + extends: ["virtual"], + }); + } + return {}; + }, + schema: MainSchema, + }), + ).resolves.not.toThrow(); + + it("no config loaded and configFileRequired is default setting", async () => { + await expect( + loadConfig({ + configFile: "CUSTOM", + }), + ).resolves.not.toThrowError(); + }); + + it("no config loaded and configFileRequired is true", async () => { + expect( + loadConfig({ + configFile: "CUSTOM", + configFileRequired: true, + }), + ).rejects.toThrowError("Required config (CUSTOM) cannot be resolved."); + }); }); it("loads arrays exported from config without merging", async () => {