diff --git a/.oxlintrc.json b/.oxlintrc.json index 1951e01..bb8e4e1 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,3 +1,3 @@ { - "extends": ["@projectwallace/preset-oxlint"] + "extends": ["./node_modules/@projectwallace/preset-oxlint/index.json"] } diff --git a/package-lock.json b/package-lock.json index 7717bf9..b3f187b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,10 @@ }, "devDependencies": { "@codecov/rollup-plugin": "^1.9.1", - "@projectwallace/preset-oxlint": "^0.0.7", + "@projectwallace/preset-oxlint": "^0.0.10", "@types/node": "^25.5.0", "@vitest/coverage-v8": "^4.0.3", - "oxfmt": "^0.43.0", + "oxfmt": "^0.47.0", "oxlint": "^1.24.0", "publint": "^0.3.15", "tsdown": "^0.21.0", @@ -528,14 +528,15 @@ "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/Boshen" } }, "node_modules/@oxfmt/binding-android-arm-eabi": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.43.0.tgz", - "integrity": "sha512-CgU2s+/9hHZgo0IxVxrbMPrMj+tJ6VM3mD7Mr/4oiz4FNTISLoCvRmB5nk4wAAle045RtRjd86m673jwPyb1OQ==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.47.0.tgz", + "integrity": "sha512-KrMQRdMi/upr81qT4ijK6X6BNp6jqpMY7FwILQnwIy9QLc3qpnhUx5rsCLGzn4ewsCQ0CNAspN2ogmP1GXLyLw==", "cpu": [ "arm" ], @@ -550,9 +551,9 @@ } }, "node_modules/@oxfmt/binding-android-arm64": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.43.0.tgz", - "integrity": "sha512-T9OfRwjA/EdYxAqbvR7TtqLv5nIrwPXuCtTwOHtS7aR9uXyn74ZYgzgTo6/ZwvTq9DY4W+DsV09hB2EXgn9EbA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.47.0.tgz", + "integrity": "sha512-r4ixS/PeUpAFKgrpDoZ5pSkthjZzVzKd95525Aazj+aOv9H4ulK5zYHGb7wFY5n5kZxHK8TbOJUZgoEb1ohddQ==", "cpu": [ "arm64" ], @@ -567,9 +568,9 @@ } }, "node_modules/@oxfmt/binding-darwin-arm64": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.43.0.tgz", - "integrity": "sha512-o3i49ZUSJWANzXMAAVY1wnqb65hn4JVzwlRQ5qfcwhRzIA8lGVaud31Q3by5ALHPrksp5QEaKCQF9aAS3TXpZA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.47.0.tgz", + "integrity": "sha512-CLWxiKpMl+195cm09CuaWEhJK0CirRkoMa07aR9+9AFPat2LfIKtwx1JqxZM0MTvcMe6+adlJNdVL6jdInvq3g==", "cpu": [ "arm64" ], @@ -584,9 +585,9 @@ } }, "node_modules/@oxfmt/binding-darwin-x64": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.43.0.tgz", - "integrity": "sha512-vWECzzCFkb0kK6jaHjbtC5sC3adiNWtqawFCxhpvsWlzVeKmv5bNvkB4nux+o4JKWTpHCM57NDK/MeXt44txmA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.47.0.tgz", + "integrity": "sha512-Xq5fjTYDC50faUeLSm0rZdBqoTgleXEdD7NpJdARtQIczkCJn3xNjMUSQQkUmh4CtxkKTNL68lytcOK3e/osgg==", "cpu": [ "x64" ], @@ -601,9 +602,9 @@ } }, "node_modules/@oxfmt/binding-freebsd-x64": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.43.0.tgz", - "integrity": "sha512-rgz8JpkKiI/umOf7fl9gwKyQasC8bs5SYHy6g7e4SunfLBY3+8ATcD5caIg8KLGEtKFm5ujKaH8EfjcmnhzTLg==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.47.0.tgz", + "integrity": "sha512-QOU9ZIJ52p5askcEC0QJvvr8trHAWoonul8bgISo6gYUL3s50zkqafBYcNAr9LJZQbsZtPfIWHk9+5+nUp1qJQ==", "cpu": [ "x64" ], @@ -618,9 +619,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.43.0.tgz", - "integrity": "sha512-nWYnF3vIFzT4OM1qL/HSf1Yuj96aBuKWSaObXHSWliwAk2rcj7AWd6Lf7jowEBQMo4wCZVnueIGw/7C4u0KTBQ==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.47.0.tgz", + "integrity": "sha512-oJxDM1aBhPvz9gmElBv8UpxyiqhwfjcbrSxT5F0xtuUzY6dQI27/AQPIt3eu3Z5Yvn0kQl5R7MA3Z+MbnRvCBw==", "cpu": [ "arm" ], @@ -635,9 +636,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-musleabihf": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.43.0.tgz", - "integrity": "sha512-sFg+NWJbLfupYTF4WELHAPSnLPOn1jiDZ33Z1jfDnTaA+cC3iB35x0FMMZTFdFOz3icRIArncwCcemJFGXu6TQ==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.47.0.tgz", + "integrity": "sha512-g8Lh50VS4ibGz2q6v7r9UZY4D0dM16SdrFYOMzhqIoCwGcai8VMIRUAcqn1/jlCsOOzUXJ741+kCeJt0cofakQ==", "cpu": [ "arm" ], @@ -652,9 +653,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-gnu": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.43.0.tgz", - "integrity": "sha512-MelWqv68tX6wZEILDrTc9yewiGXe7im62+5x0bNXlCYFOZdA+VnYiJfAihbROsZ5fm90p9C3haFrqjj43XnlAA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.47.0.tgz", + "integrity": "sha512-YrNT1vQ0asaXoRbrvYENPqmBfOQ9Xr8enPNOULeYfg44VjCcrUowFy5QZr+WawE0zyP8cH9e9Gxxg0fDEFzhcg==", "cpu": [ "arm64" ], @@ -669,9 +670,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-musl": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.43.0.tgz", - "integrity": "sha512-ROaWfYh+6BSJ1Arwy5ujijTlwnZetxDxzBpDc1oBR4d7rfrPBqzeyjd5WOudowzQUgyavl2wEpzn1hw3jWcqLA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.47.0.tgz", + "integrity": "sha512-IxtQC/sbBi4ubbY+MdwdanRWrG9InQJVZqyMsBa5IUaQcnSg86gQme574HxXMC1p4bo4YhV99zQ+wNnGCvEgzw==", "cpu": [ "arm64" ], @@ -686,9 +687,9 @@ } }, "node_modules/@oxfmt/binding-linux-ppc64-gnu": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.43.0.tgz", - "integrity": "sha512-PJRs/uNxmFipJJ8+SyKHh7Y7VZIKQicqrrBzvfyM5CtKi8D7yZKTwUOZV3ffxmiC2e7l1SDJpkBEOyue5NAFsg==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.47.0.tgz", + "integrity": "sha512-EWXEhOMbWO0q6eJSbu0QLkU8cKi0ljlYLngeDs2Ocu/pm1rrLwyQiYzlFbdnMRURI4w9ndr1sI9rSbhlJ5o23Q==", "cpu": [ "ppc64" ], @@ -703,9 +704,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-gnu": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.43.0.tgz", - "integrity": "sha512-j6biGAgzIhj+EtHXlbNumvwG7XqOIdiU4KgIWRXAEj/iUbHKukKW8eXa4MIwpQwW1YkxovduKtzEAPnjlnAhVQ==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.47.0.tgz", + "integrity": "sha512-tZrjS11TUiDuEpRaqdk8K9F9xETRyKXfuZKmdeW+Gj7coBnm7+8sBEfyt033EAFEQSlkniAXvBLh+Qja2ioGBQ==", "cpu": [ "riscv64" ], @@ -720,9 +721,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-musl": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.43.0.tgz", - "integrity": "sha512-RYWxAcslKxvy7yri24Xm9cmD0RiANaiEPs007EFG6l9h1ChM69Q5SOzACaCoz4Z9dEplnhhneeBaTWMEdpgIbA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.47.0.tgz", + "integrity": "sha512-KBFy+2CFKUCZzYwX2ZOPQKck1vjQbz+hextuc19G4r0WRJwadfAeuQMQRQvB+Ivc8brlbOVg7et8K7E467440g==", "cpu": [ "riscv64" ], @@ -737,9 +738,9 @@ } }, "node_modules/@oxfmt/binding-linux-s390x-gnu": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.43.0.tgz", - "integrity": "sha512-DT6Q8zfQQy3jxpezAsBACEHNUUixKSYTwdXeXojNHe4DQOoxjPdjr3Szu6BRNjxLykZM/xMNmp9ElOIyDppwtw==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.47.0.tgz", + "integrity": "sha512-REUPFKVGSiK99B+9eaPhluEVglzaoj/SMykNC5SUiV2RSsBfV5lWN7Y0iCIc251Wz3GaeAGZsJ/zj3gjarxdFg==", "cpu": [ "s390x" ], @@ -754,9 +755,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-gnu": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.43.0.tgz", - "integrity": "sha512-R8Yk7iYcuZORXmCfFZClqbDxRZgZ9/HEidUuBNdoX8Ptx07cMePnMVJ/woB84lFIDjh2ROHVaOP40Ds3rBXFqg==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.47.0.tgz", + "integrity": "sha512-KVftVSVEDeIfRW3TIeLe3aNI/iY4m1fu5mDwHcisKMZSCMKLkrhFsjowC7o9RoqNPxbbglm2+/6KAKBIts2t0Q==", "cpu": [ "x64" ], @@ -771,9 +772,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-musl": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.43.0.tgz", - "integrity": "sha512-F2YYqyvnQNvi320RWZNAvsaWEHwmW3k4OwNJ1hZxRKXupY63expbBaNp6jAgvYs7y/g546vuQnGHQuCBhslhLQ==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.47.0.tgz", + "integrity": "sha512-DTsmGEaA2860Aq5VUyDO8/MT9NFxwVL93RnRYmpMwK6DsSkThmvEpqoUDDljziEpAedMRG19SCogrNbINSbLUQ==", "cpu": [ "x64" ], @@ -788,9 +789,9 @@ } }, "node_modules/@oxfmt/binding-openharmony-arm64": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.43.0.tgz", - "integrity": "sha512-OE6TdietLXV3F6c7pNIhx/9YC1/2YFwjU9DPc/fbjxIX19hNIaP1rS0cFjCGJlGX+cVJwIKWe8Mos+LdQ1yAJw==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.47.0.tgz", + "integrity": "sha512-8r5BDro7fLOBoq1JXHLVSs55OlrxQhEso4HVo0TcY7OXJUPYfjPoOaYL5us+yIwqyP9rQwN+rxuiNFSmaxSuOQ==", "cpu": [ "arm64" ], @@ -805,9 +806,9 @@ } }, "node_modules/@oxfmt/binding-win32-arm64-msvc": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.43.0.tgz", - "integrity": "sha512-0nWK6a7pGkbdoypfVicmV9k/N1FwjPZENoqhlTU+5HhZnAhpIO3za30nEE33u6l6tuy9OVfpdXUqxUgZ+4lbZw==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.47.0.tgz", + "integrity": "sha512-qtz/gzm8IjSPUlseZ0ofW8zyHLoZsuP5HTfcGGkWkUblB89JT8GNYH3ICqjbDsqsGqXum0/ZndXTFplSdXFIcg==", "cpu": [ "arm64" ], @@ -822,9 +823,9 @@ } }, "node_modules/@oxfmt/binding-win32-ia32-msvc": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.43.0.tgz", - "integrity": "sha512-9aokTR4Ft+tRdvgN/pKzSkVy2ksc4/dCpDm9L/xFrbIw0yhLtASLbvoG/5WOTUh/BRPPnfGTsWznEqv0dlOmhA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.47.0.tgz", + "integrity": "sha512-5vIcdcIDE7nCx+MXN6sm8kbC4zajDB31E86rez4i45iHNH/2NjdKlJ720xcHTr3eeiMcttCGPHPhE1TjtBDGZw==", "cpu": [ "ia32" ], @@ -839,9 +840,9 @@ } }, "node_modules/@oxfmt/binding-win32-x64-msvc": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.43.0.tgz", - "integrity": "sha512-4bPgdQux2ZLWn3bf2TTXXMHcJB4lenmuxrLqygPmvCJ104Yqzj1UctxSRzR31TiJ4MLaG22RK8dUsVpJtrCz5g==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.47.0.tgz", + "integrity": "sha512-Sr59Y5ms54ONBjxFeWhVlGyQcHXxcl9DxC23f6yXlRkcos7LXBLoO+KDfxexjHIOZh7cWqrWduzvUjJ+pHp8cQ==", "cpu": [ "x64" ], @@ -856,9 +857,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.58.0.tgz", - "integrity": "sha512-1T7UN3SsWWxpWyWGn1cT3ASNJOo+pI3eUkmEl7HgtowapcV8kslYpFQcYn431VuxghXakPNlbjRwhqmR37PFOg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.62.0.tgz", + "integrity": "sha512-pKsthNECyvJh8lPTICz6VcwVy2jOqdhhsp1rlxCkhgZR47aKvXPmaRWQDv+zlXpRae4qm1MaaTnutkaOk5aofg==", "cpu": [ "arm" ], @@ -873,9 +874,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.58.0.tgz", - "integrity": "sha512-GryzujxuiRv2YFF7bRy8mKcxlbuAN+euVUtGJt9KKbLT8JBUIosamVhcthLh+VEr6KE6cjeVMAQxKAzJcoN7dg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.62.0.tgz", + "integrity": "sha512-b1AUNViByvgmR2xJDubvLIr+dSuu3uraG7bsAoKo+xrpspPvu6RIn6Fhr2JUhobfep3jwUTy18Huco6GkwdvGQ==", "cpu": [ "arm64" ], @@ -890,9 +891,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.58.0.tgz", - "integrity": "sha512-7/bRSJIwl4GxeZL9rPZ11anNTyUO9epZrfEJH/ZMla3+/gbQ6xZixh9nOhsZ0QwsTW7/5J2A/fHbD1udC5DQQA==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.62.0.tgz", + "integrity": "sha512-iG+Tvf70UJ6otfwFYIHk36Sjq9cpPP5YLxkoggANNRtzgi3Tj3g8q6Ybqi6AtkU3+yg9QwF7bDCkCS6bbL4PCg==", "cpu": [ "arm64" ], @@ -907,9 +908,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.58.0.tgz", - "integrity": "sha512-EqdtJSiHweS2vfILNrpyJ6HUwpEq2g7+4Zx1FPi4hu3Hu7tC3znF6ufbXO8Ub2LD4mGgznjI7kSdku9NDD1Mkg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.62.0.tgz", + "integrity": "sha512-oOWI6YPPr5AJUx+yIDlxmuUbQjS5gZX3OH3QisawYvsZgLiQVvZtR0rPBcJTxLWqt2ClrWg0DlSrlUiG5SQNHg==", "cpu": [ "x64" ], @@ -924,9 +925,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.58.0.tgz", - "integrity": "sha512-VQt5TH4M42mY20F545G637RKxV/yjwVtKk2vfXuazfReSIiuvWBnv+FVSvIV5fKVTJNjt3GSJibh6JecbhGdBw==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.62.0.tgz", + "integrity": "sha512-dLP33T7VLCmLVv4cvjkVX+rmkcwNk2UfxmsZPNur/7BQHoQR60zJ7XLiRvNUawlzn0u8ngCa3itjEG73MAMa/w==", "cpu": [ "x64" ], @@ -941,9 +942,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.58.0.tgz", - "integrity": "sha512-fBYcj4ucwpAtjJT3oeBdFBYKvNyjRSK+cyuvBOTQjh0jvKp4yeA4S/D0IsCHus/VPaNG5L48qQkh+Vjy3HL2/Q==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.62.0.tgz", + "integrity": "sha512-fl//LWNks6qo9chNY60UDYyIwtp7a5cEx4Y/rHPjaarhuwqx6jtbzEpD5V5AqmdL4a6Y5D8zeXg5HF2Cr0QmSQ==", "cpu": [ "arm" ], @@ -958,9 +959,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.58.0.tgz", - "integrity": "sha512-0BeuFfwlUHlJ1xpEdSD1YO3vByEFGPg36uLjK1JgFaxFb4W6w17F8ET8sz5cheZ4+x5f2xzdnRrrWv83E3Yd8g==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.62.0.tgz", + "integrity": "sha512-i5vkAuxvueTODV3J2dL61/TXewDHhMFKvtD156cIsk7GsdfiAu7zW7kY0NJXhKeFHeiMZIh7eFNjkPYH6J47HQ==", "cpu": [ "arm" ], @@ -975,9 +976,9 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.58.0.tgz", - "integrity": "sha512-TXlZgnPTlxrQzxG9ZXU7BNwx1Ilrr17P3GwZY0If2EzrinqRH3zXPc3HrRcBJgcsoZNMuNL5YivtkJYgp467UQ==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.62.0.tgz", + "integrity": "sha512-QwN19LLuIGuOjEflSeJkZmOTfBdBMlTmW8xbMf8TZhjd//cxVNYQPq75q7oKZBJc6hRx3gY7sX0Egc8cEIFZYg==", "cpu": [ "arm64" ], @@ -992,9 +993,9 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.58.0.tgz", - "integrity": "sha512-zSoYRo5dxHLcUx93Stl2hW3hSNjPt99O70eRVWt5A1zwJ+FPjeCCANCD2a9R4JbHsdcl11TIQOjyigcRVOH2mw==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.62.0.tgz", + "integrity": "sha512-8eCy3FCDuWUM5hWujAv6heMvfZPbcCOU3SdQUAkixZLu5bSzOkNfirJiLGoQFO943xceOKkiQRMQNzH++jM3WA==", "cpu": [ "arm64" ], @@ -1009,9 +1010,9 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.58.0.tgz", - "integrity": "sha512-NQ0U/lqxH2/VxBYeAIvMNUK1y0a1bJ3ZicqkF2c6wfakbEciP9jvIE4yNzCFpZaqeIeRYaV7AVGqEO1yrfVPjA==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.62.0.tgz", + "integrity": "sha512-NjQ7K7tpTPDe9J+yq8p/s/J0E7lRCkK2uDBDqvT4XIT6f4Z0tlnr59OBg/WcrmVHER1AbrcfyxhGTXgcG8ytWg==", "cpu": [ "ppc64" ], @@ -1026,9 +1027,9 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.58.0.tgz", - "integrity": "sha512-X9J+kr3gIC9FT8GuZt0ekzpNUtkBVzMVU4KiKDSlocyQuEgi3gBbXYN8UkQiV77FTusLDPsovjo95YedHr+3yg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.62.0.tgz", + "integrity": "sha512-oKZed9gmSwze29dEt3/Wnsv6l/Ygw/FUst+8Kfpv2SGeS/glEoTGZAMQw37SVyzFV76UTHJN2snGgxK2t2+8ow==", "cpu": [ "riscv64" ], @@ -1043,9 +1044,9 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.58.0.tgz", - "integrity": "sha512-CDze3pi1OO3Wvb/QsXjmLEY4XPKGM6kIo82ssNOgmcl1IdndF9VSGAE38YLhADWmOac7fjqhBw82LozuUVxD0Q==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.62.0.tgz", + "integrity": "sha512-gBjBxQ+9lGpAYq+ELqw0w8QXsBnkZclFc7GRX2r0LnEVn3ZTEqeIKpKcGjucmp76Q53bvJD0i4qBWBhcfhSfGA==", "cpu": [ "riscv64" ], @@ -1060,9 +1061,9 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.58.0.tgz", - "integrity": "sha512-b/89glbxFaEAcA6Uf1FvCNecBJEgcUTsV1quzrqXM/o4R1M4u+2KCVuyGCayN2UpsRWtGGLb+Ver0tBBpxaPog==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.62.0.tgz", + "integrity": "sha512-Ew2Kxs9EQ9/mbAIJ2hvocMC0wsOu6YKzStI2eFBDt+Td5O8seVC/oxgRIHqCcl5sf5ratA1nozQBAuv7tphkHg==", "cpu": [ "s390x" ], @@ -1077,9 +1078,9 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.58.0.tgz", - "integrity": "sha512-0/yYpkq9VJFCEcuRlrViGj8pJUFFvNS4EkEREaN7CB1EcLXJIaVSSa5eCihwBGXtOZxhnblWgxks9juRdNQI7w==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.62.0.tgz", + "integrity": "sha512-5z25jcAA0gfKyVwz71A0VXgaPlocPoTAxhlv/hgoK6tlCrfoNuw7haWbDHvGMfjXhdic4EqVXGRv5XsTqFnbRQ==", "cpu": [ "x64" ], @@ -1094,9 +1095,9 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.58.0.tgz", - "integrity": "sha512-hr6FNvmcAXiH+JxSvaJ4SJ1HofkdqEElXICW9sm3/Rd5eC3t7kzvmLyRAB3NngKO2wzXRCAm4Z/mGWfrsS4X8w==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.62.0.tgz", + "integrity": "sha512-IWpHmMB6ZDllPvqWDkG6AmXrN7JF5e/c4g/0PuURsmlK+vHoYZPB70rr4u1bn3I4LsKCSpqqfveyx6UCOC8wdg==", "cpu": [ "x64" ], @@ -1111,9 +1112,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.58.0.tgz", - "integrity": "sha512-R+O368VXgRql1K6Xar+FEo7NEwfo13EibPMoTv3sesYQedRXd6m30Dh/7lZMxnrQVFfeo4EOfYIP4FpcgWQNHg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.62.0.tgz", + "integrity": "sha512-fjlSxxrD5pA594vkyikCS9MnPRjQawW6/BLgyTYkO+73wwPlYjkcZ7LSd974l0Q2zkHQmu4DPvJFLYA7o8xrxQ==", "cpu": [ "arm64" ], @@ -1128,9 +1129,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.58.0.tgz", - "integrity": "sha512-Q0FZiAY/3c4YRj4z3h9K1PgaByrifrfbBoODSeX7gy97UtB7pySPUQfC2B/GbxWU6k7CzQrRy5gME10PltLAFQ==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.62.0.tgz", + "integrity": "sha512-EiFXr8loNS0Ul3Gu80+9nr1T8jRmnKocqmHHg16tj5ZqTgUXyb97l2rrspVHdDluyFn9JfR4PoJFdNzw4paHww==", "cpu": [ "arm64" ], @@ -1145,9 +1146,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.58.0.tgz", - "integrity": "sha512-Y8FKBABrSPp9H0QkRLHDHOSUgM/309a3IvOVgPcVxYcX70wxJrk608CuTg7w+C6vEd724X5wJoNkBcGYfH7nNQ==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.62.0.tgz", + "integrity": "sha512-IgOFvL73li1bFgab+hThXYA0N2Xms2kV2MvZN95cebV+fmrZ9AVui1JSxfeeqRLo3CpPxKZlzhyq4G0cnaAvIw==", "cpu": [ "ia32" ], @@ -1162,9 +1163,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.58.0.tgz", - "integrity": "sha512-bCn5rbiz5My+Bj7M09sDcnqW0QJyINRVxdZ65x1/Y2tGrMwherwK/lpk+HRQCKvXa8pcaQdF5KY5j54VGZLwNg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.62.0.tgz", + "integrity": "sha512-6hMpyDWQ2zGA1OXFKBrdYMUveUCO8UJhkO6JdwZPd78xIdHZNhjx+pib+4fC2Cljuhjyl0QwA2F3df/bs4Bp6A==", "cpu": [ "x64" ], @@ -1185,9 +1186,9 @@ "license": "MIT" }, "node_modules/@projectwallace/preset-oxlint": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@projectwallace/preset-oxlint/-/preset-oxlint-0.0.7.tgz", - "integrity": "sha512-DuxHVQM7iU+3dWTb9Rfs4b9APm2gQlQT3AK74GD/UkNO4DFDf5aM7DyLKi8vX+kmuZcJiM9UAqPNRHPnJgdFag==", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@projectwallace/preset-oxlint/-/preset-oxlint-0.0.10.tgz", + "integrity": "sha512-mlkJ9g8ljpK4238cvRRpZWbL/+MHeBX876m038nu7A/HwznLCfjhK0Lu31ElL1eWOmEyXVitINei64GDXiwvog==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1250,6 +1251,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1267,6 +1269,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1284,6 +1287,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1301,6 +1305,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1318,6 +1323,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1335,6 +1341,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1352,6 +1359,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1369,6 +1377,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1386,6 +1395,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1403,6 +1413,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1420,6 +1431,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1437,6 +1449,7 @@ "os": [ "openharmony" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1451,6 +1464,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, @@ -1471,6 +1485,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1488,6 +1503,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } @@ -1497,7 +1513,8 @@ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz", "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.59.0", @@ -2862,9 +2879,9 @@ } }, "node_modules/oxfmt": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.43.0.tgz", - "integrity": "sha512-KTYNG5ISfHSdmeZ25Xzb3qgz9EmQvkaGAxgBY/p38+ZiAet3uZeu7FnMwcSQJg152Qwl0wnYAxDc+Z/H6cvrwA==", + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.47.0.tgz", + "integrity": "sha512-OFbkbzxKCpooQEnRmpTDnuwTX8KHXzZTQ4Df/hz85fpS67Pl+lxPEFvUtin56HIIS0B1k4X8oIzTXRZPufA2CA==", "dev": true, "license": "MIT", "dependencies": { @@ -2880,31 +2897,31 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxfmt/binding-android-arm-eabi": "0.43.0", - "@oxfmt/binding-android-arm64": "0.43.0", - "@oxfmt/binding-darwin-arm64": "0.43.0", - "@oxfmt/binding-darwin-x64": "0.43.0", - "@oxfmt/binding-freebsd-x64": "0.43.0", - "@oxfmt/binding-linux-arm-gnueabihf": "0.43.0", - "@oxfmt/binding-linux-arm-musleabihf": "0.43.0", - "@oxfmt/binding-linux-arm64-gnu": "0.43.0", - "@oxfmt/binding-linux-arm64-musl": "0.43.0", - "@oxfmt/binding-linux-ppc64-gnu": "0.43.0", - "@oxfmt/binding-linux-riscv64-gnu": "0.43.0", - "@oxfmt/binding-linux-riscv64-musl": "0.43.0", - "@oxfmt/binding-linux-s390x-gnu": "0.43.0", - "@oxfmt/binding-linux-x64-gnu": "0.43.0", - "@oxfmt/binding-linux-x64-musl": "0.43.0", - "@oxfmt/binding-openharmony-arm64": "0.43.0", - "@oxfmt/binding-win32-arm64-msvc": "0.43.0", - "@oxfmt/binding-win32-ia32-msvc": "0.43.0", - "@oxfmt/binding-win32-x64-msvc": "0.43.0" + "@oxfmt/binding-android-arm-eabi": "0.47.0", + "@oxfmt/binding-android-arm64": "0.47.0", + "@oxfmt/binding-darwin-arm64": "0.47.0", + "@oxfmt/binding-darwin-x64": "0.47.0", + "@oxfmt/binding-freebsd-x64": "0.47.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.47.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.47.0", + "@oxfmt/binding-linux-arm64-gnu": "0.47.0", + "@oxfmt/binding-linux-arm64-musl": "0.47.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.47.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.47.0", + "@oxfmt/binding-linux-riscv64-musl": "0.47.0", + "@oxfmt/binding-linux-s390x-gnu": "0.47.0", + "@oxfmt/binding-linux-x64-gnu": "0.47.0", + "@oxfmt/binding-linux-x64-musl": "0.47.0", + "@oxfmt/binding-openharmony-arm64": "0.47.0", + "@oxfmt/binding-win32-arm64-msvc": "0.47.0", + "@oxfmt/binding-win32-ia32-msvc": "0.47.0", + "@oxfmt/binding-win32-x64-msvc": "0.47.0" } }, "node_modules/oxlint": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.58.0.tgz", - "integrity": "sha512-t4s9leczDMqlvOSjnbCQe7gtoLkWgBGZ7sBdCJ9EOj5IXFSG/X7OAzK4yuH4iW+4cAYe8kLFbC8tuYMwWZm+Cg==", + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.62.0.tgz", + "integrity": "sha512-1uFkg6HakjsGIpW9wNdeW4/2LOHW9MEkoWjZUTUfQtIHyLIZPYt00w3Sg+H3lH+206FgBPHBbW5dVE5l2ExECQ==", "dev": true, "license": "MIT", "bin": { @@ -2917,25 +2934,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.58.0", - "@oxlint/binding-android-arm64": "1.58.0", - "@oxlint/binding-darwin-arm64": "1.58.0", - "@oxlint/binding-darwin-x64": "1.58.0", - "@oxlint/binding-freebsd-x64": "1.58.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.58.0", - "@oxlint/binding-linux-arm-musleabihf": "1.58.0", - "@oxlint/binding-linux-arm64-gnu": "1.58.0", - "@oxlint/binding-linux-arm64-musl": "1.58.0", - "@oxlint/binding-linux-ppc64-gnu": "1.58.0", - "@oxlint/binding-linux-riscv64-gnu": "1.58.0", - "@oxlint/binding-linux-riscv64-musl": "1.58.0", - "@oxlint/binding-linux-s390x-gnu": "1.58.0", - "@oxlint/binding-linux-x64-gnu": "1.58.0", - "@oxlint/binding-linux-x64-musl": "1.58.0", - "@oxlint/binding-openharmony-arm64": "1.58.0", - "@oxlint/binding-win32-arm64-msvc": "1.58.0", - "@oxlint/binding-win32-ia32-msvc": "1.58.0", - "@oxlint/binding-win32-x64-msvc": "1.58.0" + "@oxlint/binding-android-arm-eabi": "1.62.0", + "@oxlint/binding-android-arm64": "1.62.0", + "@oxlint/binding-darwin-arm64": "1.62.0", + "@oxlint/binding-darwin-x64": "1.62.0", + "@oxlint/binding-freebsd-x64": "1.62.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.62.0", + "@oxlint/binding-linux-arm-musleabihf": "1.62.0", + "@oxlint/binding-linux-arm64-gnu": "1.62.0", + "@oxlint/binding-linux-arm64-musl": "1.62.0", + "@oxlint/binding-linux-ppc64-gnu": "1.62.0", + "@oxlint/binding-linux-riscv64-gnu": "1.62.0", + "@oxlint/binding-linux-riscv64-musl": "1.62.0", + "@oxlint/binding-linux-s390x-gnu": "1.62.0", + "@oxlint/binding-linux-x64-gnu": "1.62.0", + "@oxlint/binding-linux-x64-musl": "1.62.0", + "@oxlint/binding-openharmony-arm64": "1.62.0", + "@oxlint/binding-win32-arm64-msvc": "1.62.0", + "@oxlint/binding-win32-ia32-msvc": "1.62.0", + "@oxlint/binding-win32-x64-msvc": "1.62.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.18.0" @@ -3047,6 +3064,7 @@ "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@oxc-project/types": "=0.122.0", "@rolldown/pluginutils": "1.0.0-rc.12" diff --git a/package.json b/package.json index 4430773..495c12c 100644 --- a/package.json +++ b/package.json @@ -45,10 +45,10 @@ }, "devDependencies": { "@codecov/rollup-plugin": "^1.9.1", - "@projectwallace/preset-oxlint": "^0.0.7", + "@projectwallace/preset-oxlint": "^0.0.10", "@types/node": "^25.5.0", "@vitest/coverage-v8": "^4.0.3", - "oxfmt": "^0.43.0", + "oxfmt": "^0.47.0", "oxlint": "^1.24.0", "publint": "^0.3.15", "tsdown": "^0.21.0", diff --git a/src/cli/cli.test.ts b/src/cli/cli.test.ts index dcd96b4..96961c1 100644 --- a/src/cli/cli.test.ts +++ b/src/cli/cli.test.ts @@ -15,11 +15,13 @@ describe('parse_arguments', () => { }) test('path traversal ../../etc throws', () => { - expect(() => parse_arguments(['../../etc'])).toThrowError() + expect(() => parse_arguments(['../../etc'])).toThrow('Invalid path: ../../etc') }) test('path traversal ../sibling throws', () => { - expect(() => parse_arguments(['../sibling/file.css'])).toThrowError() + expect(() => parse_arguments(['../sibling/file.css'])).toThrow( + 'Invalid path: ../sibling/file.css', + ) }) test('multiple valid files are all resolved', () => { @@ -52,32 +54,42 @@ describe('parse_arguments', () => { }) test('--tab-size=0 throws', () => { - expect(() => parse_arguments(['--tab-size=0'])).toThrowError() + expect(() => parse_arguments(['--tab-size=0'])).toThrow( + '--tab-size must be a positive integer', + ) }) test('--tab-size=-1 throws', () => { - expect(() => parse_arguments(['--tab-size=-1'])).toThrowError() + expect(() => parse_arguments(['--tab-size=-1'])).toThrow( + '--tab-size must be a positive integer', + ) }) test('--tab-size=abc throws', () => { - expect(() => parse_arguments(['--tab-size=abc'])).toThrowError() + expect(() => parse_arguments(['--tab-size=abc'])).toThrow( + '--tab-size must be a positive integer', + ) }) }) test('unknown flag throws', () => { - expect(() => parse_arguments(['--unknown'])).toThrowError() + expect(() => parse_arguments(['--unknown'])).toThrow( + `Unknown option '--unknown'. To specify a positional argument starting with a '-', place it at the end of the command after '--', as in '-- "--unknown"`, + ) }) }) describe('run', () => { function make_io(overrides: Partial[1]> = {}) { - return { - readFile: vi.fn(() => 'a{color:red}'), - readStdin: vi.fn(async () => 'a{color:red}'), - write: vi.fn(), - isTTY: false, - ...overrides, - } + return Object.assign( + { + readFile: vi.fn<() => string>(() => 'a{color:red}'), + readStdin: vi.fn<() => Promise>(() => Promise.resolve('a{color:red}')), + write: vi.fn<(s: string) => void>(), + isTTY: false, + }, + overrides, + ) } test('--help shows help text', async () => { @@ -108,7 +120,7 @@ describe('run', () => { }) test('formats file and writes output', async () => { - let io = make_io({ readFile: vi.fn(() => 'a{color:red}') }) + let io = make_io({ readFile: vi.fn<() => string>(() => 'a{color:red}') }) await run(['styles.css'], io) expect(io.readFile).toHaveBeenCalledOnce() expect(io.write).toHaveBeenCalledOnce() @@ -116,26 +128,26 @@ describe('run', () => { }) test('formats multiple files', async () => { - let io = make_io({ readFile: vi.fn(() => 'a{color:red}') }) + let io = make_io({ readFile: vi.fn<() => string>(() => 'a{color:red}') }) await run(['a.css', 'b.css'], io) expect(io.readFile).toHaveBeenCalledTimes(2) expect(io.write).toHaveBeenCalledTimes(2) }) test('--minify minifies the output', async () => { - let io = make_io({ readFile: vi.fn(() => 'a { color: red; }') }) + let io = make_io({ readFile: vi.fn<() => string>(() => 'a { color: red; }') }) await run(['styles.css', '--minify'], io) expect(io.write.mock.calls[0][0]).toBe('a{color:red}') }) test('--tab-size=2 uses 2-space indentation', async () => { - let io = make_io({ readFile: vi.fn(() => 'a{color:red}') }) + let io = make_io({ readFile: vi.fn<() => string>(() => 'a{color:red}') }) await run(['styles.css', '--tab-size=2'], io) expect(io.write.mock.calls[0][0]).toContain(' color') }) test('path traversal throws', async () => { let io = make_io() - await expect(run(['../../etc/passwd'], io)).rejects.toThrow() + await expect(run(['../../etc/passwd'], io)).rejects.toThrow('Invalid path: ../../etc/passwd') }) }) diff --git a/src/cli/cli.ts b/src/cli/cli.ts index ba977e2..5a9783d 100644 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -1,4 +1,5 @@ #!/usr/bin/env node +// oxlint-disable no-console import { parseArgs, styleText } from 'node:util' import { readFileSync } from 'node:fs' @@ -100,10 +101,10 @@ export async function run(args: string[], io: CliIO): Promise { for (const file of files) { io.write(format(io.readFile(file), options)) } - } else if (!io.isTTY) { - io.write(format(await io.readStdin(), options)) - } else { + } else if (io.isTTY) { io.write(help() + '\n') + } else { + io.write(format(await io.readStdin(), options)) } } @@ -115,7 +116,7 @@ async function read_stdin(): Promise { return Buffer.concat(chunks).toString('utf-8') } -if (process.argv[1] === fileURLToPath(import.meta.url)) { +if (process.argv[1] === import.meta.filename) { try { await run(process.argv.slice(2), { readFile: (path) => readFileSync(path, 'utf-8'), diff --git a/src/lib/index.ts b/src/lib/index.ts index 2cf80f0..5b3fb76 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -57,7 +57,7 @@ export type FormatOptions = { } export function unquote(str: string): string { - return str.replace(/(?:^['"])|(?:['"]$)/g, EMPTY_STRING) + return str.replaceAll(/(?:^['"])|(?:['"]$)/g, EMPTY_STRING) } function print_string(str: string | number | null): string { @@ -106,12 +106,8 @@ function print_list(nodes: CSSNode[], optional_space = SPACE): string { parts.push(node.text) } - if (!is_operator(node)) { - if (node.has_next) { - if (!is_operator(node.next_sibling)) { - parts.push(SPACE) - } - } + if (!is_operator(node) && node.has_next && !is_operator(node.next_sibling)) { + parts.push(SPACE) } } @@ -305,14 +301,14 @@ export function format_atrule_prelude( ): string { let optional_space = minify ? EMPTY_STRING : SPACE return prelude - .replace(/\s*([:,])/g, prelude.toLowerCase().includes('selector(') ? '$1' : '$1 ') // force whitespace after colon or comma, except inside `selector()` - .replace(/\)([a-zA-Z])/g, ') $1') // force whitespace between closing parenthesis and following text (usually and|or) - .replace(/\s*(=>|>=|<=)\s*/g, `${optional_space}$1${optional_space}`) // add optional spacing around =>, >= and <= - .replace(/([^<>=\s])([<>])([^<>=\s])/g, `$1${optional_space}$2${optional_space}$3`) // add spacing around < or > except when it's part of <=, >=, => - .replace(/([^<>=\s])\s+([<>])\s+([^<>=\s])/g, `$1${optional_space}$2${optional_space}$3`) // handle spaces around < or > when they already have surrounding whitespace - .replace(/\s+/g, SPACE) // collapse multiple whitespaces into one - .replace(/([:,]) /g, minify ? '$1' : '$1 ') // in minify mode, remove optional spaces after : and , - .replace( + .replaceAll(/\s*([:,])/g, prelude.toLowerCase().includes('selector(') ? '$1' : '$1 ') // force whitespace after colon or comma, except inside `selector()` + .replaceAll(/\)([a-zA-Z])/g, ') $1') // force whitespace between closing parenthesis and following text (usually and|or) + .replaceAll(/\s*(=>|>=|<=)\s*/g, `${optional_space}$1${optional_space}`) // add optional spacing around =>, >= and <= + .replaceAll(/([^<>=\s])([<>])([^<>=\s])/g, `$1${optional_space}$2${optional_space}$3`) // add spacing around < or > except when it's part of <=, >=, => + .replaceAll(/([^<>=\s])\s+([<>])\s+([^<>=\s])/g, `$1${optional_space}$2${optional_space}$3`) // handle spaces around < or > when they already have surrounding whitespace + .replaceAll(/\s+/g, SPACE) // collapse multiple whitespaces into one + .replaceAll(/([:,]) /g, minify ? '$1' : '$1 ') // in minify mode, remove optional spaces after : and , + .replaceAll( /calc\(\s*([^()+\-*/]+)\s*([*/+-])\s*([^()+\-*/]+)\s*\)/g, (_, left, operator, right) => { // force required or optional whitespace around * and / in calc() @@ -320,7 +316,7 @@ export function format_atrule_prelude( return `calc(${left.trim()}${space}${operator}${space}${right.trim()})` }, ) - .replace(/selector|url|supports|layer\(/gi, (match) => match.toLowerCase()) // lowercase function names + .replaceAll(/selector|url|supports|layer\(/gi, (match) => match.toLowerCase()) // lowercase function names } /** @@ -445,12 +441,12 @@ export function format( let semi = is_last ? LAST_SEMICOLON : SEMICOLON lines.push(indent(depth) + declaration + semi) } else if (is_rule(child)) { - if (prev_end !== undefined && lines.length !== 0) { + if (prev_end !== undefined && lines.length > 0) { lines.push(EMPTY_STRING) } lines.push(print_rule(child)) } else if (is_atrule(child)) { - if (prev_end !== undefined && lines.length !== 0) { + if (prev_end !== undefined && lines.length > 0) { lines.push(EMPTY_STRING) } lines.push(indent(depth) + print_atrule(child)) @@ -504,13 +500,13 @@ export function format( let block_has_content = node.has_block && (!node.block.is_empty || !!get_comment(node.block.start, node.block.end)) - if (!node.has_block) { - name += SEMICOLON - } else { + if (node.has_block) { name += OPTIONAL_SPACE + OPEN_BRACE if (!block_has_content) { name += CLOSE_BRACE } + } else { + name += SEMICOLON } if (block_has_content) { diff --git a/test/api.test.ts b/test/api.test.ts index 158c788..eeba20b 100644 --- a/test/api.test.ts +++ b/test/api.test.ts @@ -193,6 +193,7 @@ describe('format_declaration', () => { describe('format_value', () => { test('null returns empty string', () => { + // oxlint-disable-next-line unicorn/no-null expect(format_value(null)).toBe('') }) diff --git a/test/atrules.test.ts b/test/atrules.test.ts index 83686d0..db63db4 100644 --- a/test/atrules.test.ts +++ b/test/atrules.test.ts @@ -373,6 +373,7 @@ test('minify: keeps necessary whitespace between keywords', () => { expect(actual).toEqual(expected) }) +// oxlint-disable-next-line vitest/no-disabled-tests test.skip('preserves comments', () => { let actual = format(` @media /* comment */ all {} diff --git a/test/tab-size.test.ts b/test/tab-size.test.ts index 6790a76..6332db4 100644 --- a/test/tab-size.test.ts +++ b/test/tab-size.test.ts @@ -35,11 +35,13 @@ test('tab_size: 2', () => { }) test('invalid tab_size: 0', () => { - expect(() => format(fixture, { tab_size: 0 })).toThrow() + expect(() => format(fixture, { tab_size: 0 })).toThrow('tab_size must be a number greater than 0') }) test('invalid tab_size: negative', () => { - expect(() => format(fixture, { tab_size: -1 })).toThrow() + expect(() => format(fixture, { tab_size: -1 })).toThrow( + 'tab_size must be a number greater than 0', + ) }) test('combine tab_size and minify', () => {