diff --git a/package.json b/package.json index 8ce387d..bac150c 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "url": "https://github.com/webdeveric/utils/issues" }, "homepage": "https://github.com/webdeveric/utils/#readme", - "packageManager": "pnpm@10.6.3+sha512.bb45e34d50a9a76e858a95837301bfb6bd6d35aea2c5d52094fa497a467c43f5c440103ce2511e9e0a2f89c3d6071baac3358fc68ac6fb75e2ceb3d2736065e6", + "packageManager": "pnpm@10.6.4+sha512.da3d715bfd22a9a105e6e8088cfc7826699332ded60c423b14ec613a185f1602206702ff0fe4c438cb15c979081ce4cb02568e364b15174503a63c7a8e2a5f6c", "scripts": { "clean": "rimraf ./dist/", "prebuild": "pnpm clean", @@ -88,7 +88,7 @@ "@commitlint/config-conventional": "^19.8.0", "@commitlint/types": "^19.8.0", "@types/node": "^22.13.10", - "@vitest/coverage-v8": "^3.0.8", + "@vitest/coverage-v8": "^3.0.9", "@webdeveric/eslint-config-ts": "^0.11.0", "@webdeveric/prettier-config": "^0.3.0", "commitlint": "^19.8.0", @@ -107,7 +107,7 @@ "semantic-release": "^24.2.3", "typescript": "^5.8.2", "validate-package-exports": "^0.8.0", - "vitest": "^3.0.8" + "vitest": "^3.0.9" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82251c1..4a3f19c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^22.13.10 version: 22.13.10 '@vitest/coverage-v8': - specifier: ^3.0.8 - version: 3.0.8(vitest@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0)) + specifier: ^3.0.9 + version: 3.0.9(vitest@3.0.9(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0)) '@webdeveric/eslint-config-ts': specifier: ^0.11.0 version: 0.11.0(eslint@8.57.1)(typescript@5.8.2) @@ -75,8 +75,8 @@ importers: specifier: ^0.8.0 version: 0.8.0 vitest: - specifier: ^3.0.8 - version: 3.0.8(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0) + specifier: ^3.0.9 + version: 3.0.9(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0) packages: @@ -748,23 +748,23 @@ packages: resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==} engines: {node: '>= 18'} - '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} + '@octokit/openapi-types@24.1.0': + resolution: {integrity: sha512-FnYcCZ7MV5dEB+E5ejjhFeg6IFLDcaCCCYcISBeSuTN891Oju1QPnR7k6v/JTwcn2+LjcVhVRcTtUIkVMyzHiw==} - '@octokit/plugin-paginate-rest@11.4.3': - resolution: {integrity: sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==} + '@octokit/plugin-paginate-rest@11.5.0': + resolution: {integrity: sha512-crHS+QeHSiZgWKGgrf+Bpk7DjxSOqtujDHjTTTnzR9OI72Q9+YCWazl95dosDV/1Vyzr64ccW0eLBDHFCkSfzA==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-retry@7.1.4': - resolution: {integrity: sha512-7AIP4p9TttKN7ctygG4BtR7rrB0anZqoU9ThXFk8nETqIfvgPUANTSYHqWYknK7W3isw59LpZeLI8pcEwiJdRg==} + '@octokit/plugin-retry@7.2.0': + resolution: {integrity: sha512-psMbEYb/Fh+V+ZaFo8J16QiFz4sVTv3GntCSU+hYqzHiMdc3P+hhHLVv+dJt0PGIPAGoIA5u+J2DCJdK6lEPsQ==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-throttling@9.4.0': - resolution: {integrity: sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ==} + '@octokit/plugin-throttling@9.5.0': + resolution: {integrity: sha512-qYGE38beMhYvbhs8AvhqDlJSyTwQHZLO08XXFkBUBuIsalX63W56nBFEqb+eaTVlLVhKSXRrnPlrandY77+GVg==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': ^6.1.3 @@ -777,8 +777,8 @@ packages: resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==} engines: {node: '>= 18'} - '@octokit/types@13.8.0': - resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} + '@octokit/types@13.9.0': + resolution: {integrity: sha512-gRWS+SLIhZV3JUWn9BJt+jd9L4hON2YxRTuZBw20ExPFbqTj7/2kjwzHX1V00wAN4/qJGLz1GF9Kr1DILxTBqg==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -796,98 +796,98 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} - '@rollup/rollup-android-arm-eabi@4.35.0': - resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} + '@rollup/rollup-android-arm-eabi@4.36.0': + resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.35.0': - resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} + '@rollup/rollup-android-arm64@4.36.0': + resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.35.0': - resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} + '@rollup/rollup-darwin-arm64@4.36.0': + resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.35.0': - resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} + '@rollup/rollup-darwin-x64@4.36.0': + resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.35.0': - resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} + '@rollup/rollup-freebsd-arm64@4.36.0': + resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.35.0': - resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} + '@rollup/rollup-freebsd-x64@4.36.0': + resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.35.0': - resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.35.0': - resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} + '@rollup/rollup-linux-arm-musleabihf@4.36.0': + resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.35.0': - resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} + '@rollup/rollup-linux-arm64-gnu@4.36.0': + resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.35.0': - resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} + '@rollup/rollup-linux-arm64-musl@4.36.0': + resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.35.0': - resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': - resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.35.0': - resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} + '@rollup/rollup-linux-riscv64-gnu@4.36.0': + resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.35.0': - resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} + '@rollup/rollup-linux-s390x-gnu@4.36.0': + resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.35.0': - resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} + '@rollup/rollup-linux-x64-gnu@4.36.0': + resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.35.0': - resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} + '@rollup/rollup-linux-x64-musl@4.36.0': + resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.35.0': - resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} + '@rollup/rollup-win32-arm64-msvc@4.36.0': + resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.35.0': - resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} + '@rollup/rollup-win32-ia32-msvc@4.36.0': + resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.35.0': - resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} + '@rollup/rollup-win32-x64-msvc@4.36.0': + resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} cpu: [x64] os: [win32] @@ -1048,75 +1048,75 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unrs/rspack-resolver-binding-darwin-arm64@1.1.2': - resolution: {integrity: sha512-bQx2L40UF5XxsXwkD26PzuspqUbUswWVbmclmUC+c83Cv/EFrFJ1JaZj5Q5jyYglKGOtyIWY/hXTCdWRN9vT0Q==} + '@unrs/rspack-resolver-binding-darwin-arm64@1.2.1': + resolution: {integrity: sha512-xgSjy64typsn/lhQk/uKaS363H7ZeIBlWSh25FJFWXSCeLMHpEZ0umDo5Vzqi5iS26OZ5R1SpQkwiS78GhQRjw==} cpu: [arm64] os: [darwin] - '@unrs/rspack-resolver-binding-darwin-x64@1.1.2': - resolution: {integrity: sha512-dMi9a7//BsuPTnhWEDxmdKZ6wxQlPnAob8VSjefGbKX/a+pHfTaX1pm/jv2VPdarP96IIjCKPatJS/TtLQeGQA==} + '@unrs/rspack-resolver-binding-darwin-x64@1.2.1': + resolution: {integrity: sha512-3maDtW0vehzciEbuLxc2g+0FmDw5LGfCt+yMN1ZDn0lW0ikEBEFp6ul3h2fRphtfuCc7IvBJE9WWTt1UHkS7Nw==} cpu: [x64] os: [darwin] - '@unrs/rspack-resolver-binding-freebsd-x64@1.1.2': - resolution: {integrity: sha512-RiBZQ+LSORQObfhV1yH7jGz+4sN3SDYtV53jgc8tUVvqdqVDaUm1KA3zHLffmoiYNGrYkE3sSreGC+FVpsB4Vg==} + '@unrs/rspack-resolver-binding-freebsd-x64@1.2.1': + resolution: {integrity: sha512-aN6ifws9rNLjK2+6sIU9wvHyjXEf3S5+EZTHRarzd4jfa8i5pA7Mwt28un2DZVrBtIxhWDQvUPVKGI7zSBfVCA==} cpu: [x64] os: [freebsd] - '@unrs/rspack-resolver-binding-linux-arm-gnueabihf@1.1.2': - resolution: {integrity: sha512-IyKIFBtOvuPCJt1WPx9e9ovTGhZzrIbW11vWzw4aPmx3VShE+YcMpAldqQubdCep0UVKZyFt+2hQDQZwFiJ4jg==} + '@unrs/rspack-resolver-binding-linux-arm-gnueabihf@1.2.1': + resolution: {integrity: sha512-tKqu9VQyCO1yEUX6n6jgOHi7SJA9e6lvHczK60gur4VBITxnPmVYiCj2aekrOOIavvvjjuWAL2rqPQuc4g7RHQ==} cpu: [arm] os: [linux] - '@unrs/rspack-resolver-binding-linux-arm64-gnu@1.1.2': - resolution: {integrity: sha512-RfYtlCtJrv5i6TO4dSlpbyOJX9Zbhmkqrr9hjDfr6YyE5KD0ywLRzw8UjXsohxG1XWgRpb2tvPuRYtURJwbqWg==} + '@unrs/rspack-resolver-binding-linux-arm64-gnu@1.2.1': + resolution: {integrity: sha512-+xDI0kvwPiCR7334O83TPfaUXSe0UMVi5srQpQxP4+SDVYuONWsbwAC1IXe+yfOwRVGZsUdW9wE0ZiWs4Z+egw==} cpu: [arm64] os: [linux] - '@unrs/rspack-resolver-binding-linux-arm64-musl@1.1.2': - resolution: {integrity: sha512-MaITzkoqsn1Rm3+YnplubgAQEfOt+2jHfFvuFhXseUfcfbxe8Zyc3TM7LKwgv7mRVjIl+/yYN5JqL0cjbnhAnQ==} + '@unrs/rspack-resolver-binding-linux-arm64-musl@1.2.1': + resolution: {integrity: sha512-fcrVHlw+6UgQliMbI0znFD4ASWKuyY17FdH67ZmyNH62b0hRhhxQuJE0D6N3410m8lKVu4QW4EzFiHxYFUC0cg==} cpu: [arm64] os: [linux] - '@unrs/rspack-resolver-binding-linux-x64-gnu@1.1.2': - resolution: {integrity: sha512-Nu981XmzQqis/uB3j4Gi3p5BYCd/zReU5zbJmjMrEH7IIRH0dxZpdOmS/+KwEk6ao7Xd8P2D2gDHpHD/QTp0aQ==} + '@unrs/rspack-resolver-binding-linux-x64-gnu@1.2.1': + resolution: {integrity: sha512-xISTyUJ2PiAT4x9nlh8FdciDcdKbsatgK9qO7EEsILt9VB7Y1mHYGaszj3ouxfZnaKQ13WwW+dFLGxkZLP/WVg==} cpu: [x64] os: [linux] - '@unrs/rspack-resolver-binding-linux-x64-musl@1.1.2': - resolution: {integrity: sha512-xJupeDvaRpV0ADMuG1dY9jkOjhUzTqtykvchiU2NldSD+nafSUcMWnoqzNUx7HGiqbTMOw9d9xT8ZiFs+6ZFyQ==} + '@unrs/rspack-resolver-binding-linux-x64-musl@1.2.1': + resolution: {integrity: sha512-LE8EjE/iPlvSsFbZ6P9c0Jh5/pifAi03UYeXYwOnQqt1molKAPMB0R4kGWOM7dnDYaNgkk1MN9MOTCLsqe97Fw==} cpu: [x64] os: [linux] - '@unrs/rspack-resolver-binding-wasm32-wasi@1.1.2': - resolution: {integrity: sha512-un6X/xInks+KEgGpIHFV8BdoODHRohaDRvOwtjq+FXuoI4Ga0P6sLRvf4rPSZDvoMnqUhZtVNG0jG9oxOnrrLQ==} + '@unrs/rspack-resolver-binding-wasm32-wasi@1.2.1': + resolution: {integrity: sha512-XERT3B88+G55RgG96May8QvAdgGzHr8qtQ70cIdbuWTpIcA0I76cnxSZ8Qwx33y73jE5N/myX2YKDlFksn4z6w==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/rspack-resolver-binding-win32-arm64-msvc@1.1.2': - resolution: {integrity: sha512-2lCFkeT1HYUb/OOStBS1m67aZOf9BQxRA+Wf/xs94CGgzmoQt7H4V/BrkB/GSGKsudXjkiwt2oHNkHiowAS90A==} + '@unrs/rspack-resolver-binding-win32-arm64-msvc@1.2.1': + resolution: {integrity: sha512-I8OLI6JbmNx2E/SG8MOEuo/d6rNx8dwgL09rcItSMcP82v1oZ8AY8HNA+axxuxEH95nkb6MPJU09p63isDvzrA==} cpu: [arm64] os: [win32] - '@unrs/rspack-resolver-binding-win32-x64-msvc@1.1.2': - resolution: {integrity: sha512-EYfya5HCQ/8Yfy7rvAAX2rGytu81+d/CIhNCbZfNKLQ690/qFsdEeTXRsMQW1afHoluMM50PsjPYu8ndy8fSQg==} + '@unrs/rspack-resolver-binding-win32-x64-msvc@1.2.1': + resolution: {integrity: sha512-s5WvCljhFqiE3McvaD3lDIsQpmk7gEJRUHy1PRwLPzEB7snq9P2xQeqgzdjGhJQq62jBFz7NDy7NbMkocWr2pw==} cpu: [x64] os: [win32] - '@vitest/coverage-v8@3.0.8': - resolution: {integrity: sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==} + '@vitest/coverage-v8@3.0.9': + resolution: {integrity: sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==} peerDependencies: - '@vitest/browser': 3.0.8 - vitest: 3.0.8 + '@vitest/browser': 3.0.9 + vitest: 3.0.9 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.0.8': - resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} - '@vitest/mocker@3.0.8': - resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} + '@vitest/mocker@3.0.9': + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -1126,20 +1126,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.8': - resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} - '@vitest/runner@3.0.8': - resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} + '@vitest/runner@3.0.9': + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} - '@vitest/snapshot@3.0.8': - resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} + '@vitest/snapshot@3.0.9': + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} - '@vitest/spy@3.0.8': - resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - '@vitest/utils@3.0.8': - resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} '@webdeveric/eslint-config-ts@0.11.0': resolution: {integrity: sha512-QClsqZWRhESB1CT3uZl2As2INzNq/VD3bQRwhL9sUmxHcXfhcnGXFBwt+4UseDIni5u9RXtVfGaR0kUj+3tbpg==} @@ -2894,8 +2894,8 @@ packages: - which - write-file-atomic - nwsapi@2.2.18: - resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} + nwsapi@2.2.19: + resolution: {integrity: sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -3267,16 +3267,16 @@ packages: engines: {node: 20 || >=22} hasBin: true - rollup@4.35.0: - resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} + rollup@4.36.0: + resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - rspack-resolver@1.1.2: - resolution: {integrity: sha512-eHhz+9JWHFdbl/CVVqEP6kviLFZqw1s0MWxLdsGMtUKUspSO3SERptPohmrUIC9jT1bGV9Bd3+r8AmWbdfNAzQ==} + rspack-resolver@1.2.1: + resolution: {integrity: sha512-yTaWGUvHOjcoyFMdVTdYt2nq2Hu8sw6ia3X9szloXFJlWLQZnQ9g/4TPhL3Bb3qN58Mkye8mFG7MCaKhya7fOw==} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -3754,8 +3754,8 @@ packages: engines: {node: '>=20.17.0'} hasBin: true - vite-node@3.0.8: - resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} + vite-node@3.0.9: + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -3799,16 +3799,16 @@ packages: yaml: optional: true - vitest@3.0.8: - resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} + vitest@3.0.9: + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.8 - '@vitest/ui': 3.0.8 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -4675,56 +4675,56 @@ snapshots: '@octokit/graphql': 8.2.1 '@octokit/request': 9.2.2 '@octokit/request-error': 6.1.7 - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 '@octokit/endpoint@10.1.3': dependencies: - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 universal-user-agent: 7.0.2 '@octokit/graphql@8.2.1': dependencies: '@octokit/request': 9.2.2 - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 universal-user-agent: 7.0.2 - '@octokit/openapi-types@23.0.1': {} + '@octokit/openapi-types@24.1.0': {} - '@octokit/plugin-paginate-rest@11.4.3(@octokit/core@6.1.4)': + '@octokit/plugin-paginate-rest@11.5.0(@octokit/core@6.1.4)': dependencies: '@octokit/core': 6.1.4 - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 - '@octokit/plugin-retry@7.1.4(@octokit/core@6.1.4)': + '@octokit/plugin-retry@7.2.0(@octokit/core@6.1.4)': dependencies: '@octokit/core': 6.1.4 '@octokit/request-error': 6.1.7 - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 bottleneck: 2.19.5 - '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.4)': + '@octokit/plugin-throttling@9.5.0(@octokit/core@6.1.4)': dependencies: '@octokit/core': 6.1.4 - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 bottleneck: 2.19.5 '@octokit/request-error@6.1.7': dependencies: - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 '@octokit/request@9.2.2': dependencies: '@octokit/endpoint': 10.1.3 '@octokit/request-error': 6.1.7 - '@octokit/types': 13.8.0 + '@octokit/types': 13.9.0 fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 - '@octokit/types@13.8.0': + '@octokit/types@13.9.0': dependencies: - '@octokit/openapi-types': 23.0.1 + '@octokit/openapi-types': 24.1.0 '@pkgjs/parseargs@0.11.0': optional: true @@ -4741,61 +4741,61 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@rollup/rollup-android-arm-eabi@4.35.0': + '@rollup/rollup-android-arm-eabi@4.36.0': optional: true - '@rollup/rollup-android-arm64@4.35.0': + '@rollup/rollup-android-arm64@4.36.0': optional: true - '@rollup/rollup-darwin-arm64@4.35.0': + '@rollup/rollup-darwin-arm64@4.36.0': optional: true - '@rollup/rollup-darwin-x64@4.35.0': + '@rollup/rollup-darwin-x64@4.36.0': optional: true - '@rollup/rollup-freebsd-arm64@4.35.0': + '@rollup/rollup-freebsd-arm64@4.36.0': optional: true - '@rollup/rollup-freebsd-x64@4.35.0': + '@rollup/rollup-freebsd-x64@4.36.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.35.0': + '@rollup/rollup-linux-arm-musleabihf@4.36.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.35.0': + '@rollup/rollup-linux-arm64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.35.0': + '@rollup/rollup-linux-arm64-musl@4.36.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.35.0': + '@rollup/rollup-linux-riscv64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.35.0': + '@rollup/rollup-linux-s390x-gnu@4.36.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.35.0': + '@rollup/rollup-linux-x64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-x64-musl@4.35.0': + '@rollup/rollup-linux-x64-musl@4.36.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.35.0': + '@rollup/rollup-win32-arm64-msvc@4.36.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.35.0': + '@rollup/rollup-win32-ia32-msvc@4.36.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.35.0': + '@rollup/rollup-win32-x64-msvc@4.36.0': optional: true '@rtsao/scc@1.1.0': {} @@ -4821,9 +4821,9 @@ snapshots: '@semantic-release/github@11.0.1(semantic-release@24.2.3(typescript@5.8.2))': dependencies: '@octokit/core': 6.1.4 - '@octokit/plugin-paginate-rest': 11.4.3(@octokit/core@6.1.4) - '@octokit/plugin-retry': 7.1.4(@octokit/core@6.1.4) - '@octokit/plugin-throttling': 9.4.0(@octokit/core@6.1.4) + '@octokit/plugin-paginate-rest': 11.5.0(@octokit/core@6.1.4) + '@octokit/plugin-retry': 7.2.0(@octokit/core@6.1.4) + '@octokit/plugin-throttling': 9.5.0(@octokit/core@6.1.4) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 debug: 4.4.0 @@ -5020,42 +5020,42 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unrs/rspack-resolver-binding-darwin-arm64@1.1.2': + '@unrs/rspack-resolver-binding-darwin-arm64@1.2.1': optional: true - '@unrs/rspack-resolver-binding-darwin-x64@1.1.2': + '@unrs/rspack-resolver-binding-darwin-x64@1.2.1': optional: true - '@unrs/rspack-resolver-binding-freebsd-x64@1.1.2': + '@unrs/rspack-resolver-binding-freebsd-x64@1.2.1': optional: true - '@unrs/rspack-resolver-binding-linux-arm-gnueabihf@1.1.2': + '@unrs/rspack-resolver-binding-linux-arm-gnueabihf@1.2.1': optional: true - '@unrs/rspack-resolver-binding-linux-arm64-gnu@1.1.2': + '@unrs/rspack-resolver-binding-linux-arm64-gnu@1.2.1': optional: true - '@unrs/rspack-resolver-binding-linux-arm64-musl@1.1.2': + '@unrs/rspack-resolver-binding-linux-arm64-musl@1.2.1': optional: true - '@unrs/rspack-resolver-binding-linux-x64-gnu@1.1.2': + '@unrs/rspack-resolver-binding-linux-x64-gnu@1.2.1': optional: true - '@unrs/rspack-resolver-binding-linux-x64-musl@1.1.2': + '@unrs/rspack-resolver-binding-linux-x64-musl@1.2.1': optional: true - '@unrs/rspack-resolver-binding-wasm32-wasi@1.1.2': + '@unrs/rspack-resolver-binding-wasm32-wasi@1.2.1': dependencies: '@napi-rs/wasm-runtime': 0.2.7 optional: true - '@unrs/rspack-resolver-binding-win32-arm64-msvc@1.1.2': + '@unrs/rspack-resolver-binding-win32-arm64-msvc@1.2.1': optional: true - '@unrs/rspack-resolver-binding-win32-x64-msvc@1.1.2': + '@unrs/rspack-resolver-binding-win32-x64-msvc@1.2.1': optional: true - '@vitest/coverage-v8@3.0.8(vitest@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0))': + '@vitest/coverage-v8@3.0.9(vitest@3.0.9(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -5069,47 +5069,47 @@ snapshots: std-env: 3.8.1 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.8(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0) + vitest: 3.0.9(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.8': + '@vitest/expect@3.0.9': dependencies: - '@vitest/spy': 3.0.8 - '@vitest/utils': 3.0.8 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0))': + '@vitest/mocker@3.0.9(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0))': dependencies: - '@vitest/spy': 3.0.8 + '@vitest/spy': 3.0.9 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0) - '@vitest/pretty-format@3.0.8': + '@vitest/pretty-format@3.0.9': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.8': + '@vitest/runner@3.0.9': dependencies: - '@vitest/utils': 3.0.8 + '@vitest/utils': 3.0.9 pathe: 2.0.3 - '@vitest/snapshot@3.0.8': + '@vitest/snapshot@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.8 + '@vitest/pretty-format': 3.0.9 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.8': + '@vitest/spy@3.0.9': dependencies: tinyspy: 3.0.2 - '@vitest/utils@3.0.8': + '@vitest/utils@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.8 + '@vitest/pretty-format': 3.0.9 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -5867,7 +5867,7 @@ snapshots: eslint: 8.57.1 get-tsconfig: 4.10.0 is-bun-module: 1.3.0 - rspack-resolver: 1.1.2 + rspack-resolver: 1.2.1 stable-hash: 0.0.5 tinyglobby: 0.2.12 optionalDependencies: @@ -6638,7 +6638,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.18 + nwsapi: 2.2.19 parse5: 7.2.1 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -7025,7 +7025,7 @@ snapshots: npm@10.9.2: {} - nwsapi@2.2.18: {} + nwsapi@2.2.19: {} object-assign@4.1.1: {} @@ -7412,46 +7412,46 @@ snapshots: glob: 11.0.1 package-json-from-dist: 1.0.1 - rollup@4.35.0: + rollup@4.36.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.35.0 - '@rollup/rollup-android-arm64': 4.35.0 - '@rollup/rollup-darwin-arm64': 4.35.0 - '@rollup/rollup-darwin-x64': 4.35.0 - '@rollup/rollup-freebsd-arm64': 4.35.0 - '@rollup/rollup-freebsd-x64': 4.35.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 - '@rollup/rollup-linux-arm-musleabihf': 4.35.0 - '@rollup/rollup-linux-arm64-gnu': 4.35.0 - '@rollup/rollup-linux-arm64-musl': 4.35.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 - '@rollup/rollup-linux-riscv64-gnu': 4.35.0 - '@rollup/rollup-linux-s390x-gnu': 4.35.0 - '@rollup/rollup-linux-x64-gnu': 4.35.0 - '@rollup/rollup-linux-x64-musl': 4.35.0 - '@rollup/rollup-win32-arm64-msvc': 4.35.0 - '@rollup/rollup-win32-ia32-msvc': 4.35.0 - '@rollup/rollup-win32-x64-msvc': 4.35.0 + '@rollup/rollup-android-arm-eabi': 4.36.0 + '@rollup/rollup-android-arm64': 4.36.0 + '@rollup/rollup-darwin-arm64': 4.36.0 + '@rollup/rollup-darwin-x64': 4.36.0 + '@rollup/rollup-freebsd-arm64': 4.36.0 + '@rollup/rollup-freebsd-x64': 4.36.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 + '@rollup/rollup-linux-arm-musleabihf': 4.36.0 + '@rollup/rollup-linux-arm64-gnu': 4.36.0 + '@rollup/rollup-linux-arm64-musl': 4.36.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 + '@rollup/rollup-linux-riscv64-gnu': 4.36.0 + '@rollup/rollup-linux-s390x-gnu': 4.36.0 + '@rollup/rollup-linux-x64-gnu': 4.36.0 + '@rollup/rollup-linux-x64-musl': 4.36.0 + '@rollup/rollup-win32-arm64-msvc': 4.36.0 + '@rollup/rollup-win32-ia32-msvc': 4.36.0 + '@rollup/rollup-win32-x64-msvc': 4.36.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} - rspack-resolver@1.1.2: + rspack-resolver@1.2.1: optionalDependencies: - '@unrs/rspack-resolver-binding-darwin-arm64': 1.1.2 - '@unrs/rspack-resolver-binding-darwin-x64': 1.1.2 - '@unrs/rspack-resolver-binding-freebsd-x64': 1.1.2 - '@unrs/rspack-resolver-binding-linux-arm-gnueabihf': 1.1.2 - '@unrs/rspack-resolver-binding-linux-arm64-gnu': 1.1.2 - '@unrs/rspack-resolver-binding-linux-arm64-musl': 1.1.2 - '@unrs/rspack-resolver-binding-linux-x64-gnu': 1.1.2 - '@unrs/rspack-resolver-binding-linux-x64-musl': 1.1.2 - '@unrs/rspack-resolver-binding-wasm32-wasi': 1.1.2 - '@unrs/rspack-resolver-binding-win32-arm64-msvc': 1.1.2 - '@unrs/rspack-resolver-binding-win32-x64-msvc': 1.1.2 + '@unrs/rspack-resolver-binding-darwin-arm64': 1.2.1 + '@unrs/rspack-resolver-binding-darwin-x64': 1.2.1 + '@unrs/rspack-resolver-binding-freebsd-x64': 1.2.1 + '@unrs/rspack-resolver-binding-linux-arm-gnueabihf': 1.2.1 + '@unrs/rspack-resolver-binding-linux-arm64-gnu': 1.2.1 + '@unrs/rspack-resolver-binding-linux-arm64-musl': 1.2.1 + '@unrs/rspack-resolver-binding-linux-x64-gnu': 1.2.1 + '@unrs/rspack-resolver-binding-linux-x64-musl': 1.2.1 + '@unrs/rspack-resolver-binding-wasm32-wasi': 1.2.1 + '@unrs/rspack-resolver-binding-win32-arm64-msvc': 1.2.1 + '@unrs/rspack-resolver-binding-win32-x64-msvc': 1.2.1 run-parallel@1.2.0: dependencies: @@ -7988,7 +7988,7 @@ snapshots: transitivePeerDependencies: - supports-color - vite-node@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0): + vite-node@3.0.9(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 @@ -8013,22 +8013,22 @@ snapshots: dependencies: esbuild: 0.25.1 postcss: 8.5.3 - rollup: 4.35.0 + rollup: 4.36.0 optionalDependencies: '@types/node': 22.13.10 fsevents: 2.3.3 jiti: 2.4.2 yaml: 2.7.0 - vitest@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0): + vitest@3.0.9(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.0.0)(yaml@2.7.0): dependencies: - '@vitest/expect': 3.0.8 - '@vitest/mocker': 3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.8 - '@vitest/runner': 3.0.8 - '@vitest/snapshot': 3.0.8 - '@vitest/spy': 3.0.8 - '@vitest/utils': 3.0.8 + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 debug: 4.4.0 expect-type: 1.2.0 @@ -8040,7 +8040,7 @@ snapshots: tinypool: 1.0.2 tinyrainbow: 2.0.0 vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0) - vite-node: 3.0.8(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0) + vite-node: 3.0.9(@types/node@22.13.10)(jiti@2.4.2)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.13.10 diff --git a/src/predicate/factory/fromEnum.ts b/src/predicate/factory/fromEnum.ts index cd2ef95..1cc0500 100644 --- a/src/predicate/factory/fromEnum.ts +++ b/src/predicate/factory/fromEnum.ts @@ -1,10 +1,10 @@ import type { TypePredicateFn } from '../../types/functions.js'; -import type { UnknownRecord } from '../../types/records.js'; +import type { EnumRecord } from '../../types/records.js'; /** * @internal */ -const getEnumValues = (enumObject: T): Set => { +const getEnumValues = (enumObject: T): Set => { const entries = Object.entries(enumObject); const ignoreKeys = entries.reduce((keys, [, value]) => { @@ -27,7 +27,7 @@ const getEnumValues = (enumObject: T): Set => /** * Create a type predicate function that checks if the input is a member of the TypeScript `enum` */ -export const fromEnum = (enumObject: T): TypePredicateFn => { +export const fromEnum = (enumObject: T): TypePredicateFn => { const values = getEnumValues(enumObject); return (input: unknown): input is T[keyof T] => values.has(input); diff --git a/src/predicate/factory/index.ts b/src/predicate/factory/index.ts index 2e39b8c..0f96c5e 100644 --- a/src/predicate/factory/index.ts +++ b/src/predicate/factory/index.ts @@ -7,8 +7,9 @@ export * from './is.js'; export * from './literal.js'; export * from './matching.js'; export * from './maybeArray.js'; -export * from './maybeNull.js'; -export * from './maybeUndefined.js'; +export * from './nonNullable.js'; +export * from './nullable.js'; +export * from './optional.js'; export * from './range.js'; export * from './shape.js'; export * from './stringLength.js'; diff --git a/src/predicate/factory/nonNullable.ts b/src/predicate/factory/nonNullable.ts new file mode 100644 index 0000000..e6bbe1e --- /dev/null +++ b/src/predicate/factory/nonNullable.ts @@ -0,0 +1,9 @@ +import type { TypePredicateFn } from '../../types/functions.js'; + +/** + * @see https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullabletype + */ +export const nonNullable = + (predicate: TypePredicateFn): TypePredicateFn> => + (input: unknown): input is NonNullable => + input != null && predicate(input); diff --git a/src/predicate/factory/maybeNull.ts b/src/predicate/factory/nullable.ts similarity index 89% rename from src/predicate/factory/maybeNull.ts rename to src/predicate/factory/nullable.ts index 58970aa..0bbab9e 100644 --- a/src/predicate/factory/maybeNull.ts +++ b/src/predicate/factory/nullable.ts @@ -1,6 +1,6 @@ import type { TypePredicateFn } from '../../types/functions.js'; -export const maybeNull = +export const nullable = (predicate: TypePredicateFn): TypePredicateFn => (input: unknown): input is T | null => input === null || predicate(input); diff --git a/src/predicate/factory/maybeUndefined.ts b/src/predicate/factory/optional.ts similarity index 88% rename from src/predicate/factory/maybeUndefined.ts rename to src/predicate/factory/optional.ts index 1f8a66b..4d5e75e 100644 --- a/src/predicate/factory/maybeUndefined.ts +++ b/src/predicate/factory/optional.ts @@ -1,6 +1,6 @@ import type { TypePredicateFn } from '../../types/functions.js'; -export const maybeUndefined = +export const optional = (predicate: TypePredicateFn): TypePredicateFn => (input: unknown): input is T | undefined => typeof input === 'undefined' || predicate(input); diff --git a/src/predicate/factory/withLength.ts b/src/predicate/factory/withLength.ts index 248d5a4..985c11e 100644 --- a/src/predicate/factory/withLength.ts +++ b/src/predicate/factory/withLength.ts @@ -21,7 +21,11 @@ export function withLength, Lengt lengthRange: LengthOrRange, ): TypePredicateFn & { length: number }> { if (Array.isArray(lengthRange)) { - const [min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY] = lengthRange; + const [min = 0, max = Number.POSITIVE_INFINITY] = lengthRange; + + if (min < 0) { + throw new RangeError('min must be greater than or equal to 0'); + } if (min > max) { throw new RangeError('min cannot be greater than max'); diff --git a/src/predicate/factory/withSize.ts b/src/predicate/factory/withSize.ts index f2aa743..733881d 100644 --- a/src/predicate/factory/withSize.ts +++ b/src/predicate/factory/withSize.ts @@ -21,7 +21,11 @@ export function withSize, SizeOrRan sizeRange: SizeOrRange, ): TypePredicateFn & { size: number }> { if (Array.isArray(sizeRange)) { - const [min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY] = sizeRange; + const [min = 0, max = Number.POSITIVE_INFINITY] = sizeRange; + + if (min < 0) { + throw new RangeError('min must be greater than or equal to 0'); + } if (min > max) { throw new RangeError('min cannot be greater than max'); diff --git a/src/predicate/isOptionalBigInt.ts b/src/predicate/isOptionalBigInt.ts index b70627d..0524d12 100644 --- a/src/predicate/isOptionalBigInt.ts +++ b/src/predicate/isOptionalBigInt.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isBigInt } from './isBigInt.js'; -export const isOptionalBigInt = maybeUndefined(isBigInt); +export const isOptionalBigInt = optional(isBigInt); diff --git a/src/predicate/isOptionalBoolean.ts b/src/predicate/isOptionalBoolean.ts index b77bd8d..e215096 100644 --- a/src/predicate/isOptionalBoolean.ts +++ b/src/predicate/isOptionalBoolean.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isBoolean } from './isBoolean.js'; -export const isOptionalBoolean = maybeUndefined(isBoolean); +export const isOptionalBoolean = optional(isBoolean); diff --git a/src/predicate/isOptionalISODateString.ts b/src/predicate/isOptionalISODateString.ts index f060994..94e63ae 100644 --- a/src/predicate/isOptionalISODateString.ts +++ b/src/predicate/isOptionalISODateString.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isISODateString } from './isISODateString.js'; -export const isOptionalISODateString = maybeUndefined(isISODateString); +export const isOptionalISODateString = optional(isISODateString); diff --git a/src/predicate/isOptionalNull.ts b/src/predicate/isOptionalNull.ts index 4b96cdb..a092975 100644 --- a/src/predicate/isOptionalNull.ts +++ b/src/predicate/isOptionalNull.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isNull } from './isNull.js'; -export const isOptionalNull = maybeUndefined(isNull); +export const isOptionalNull = optional(isNull); diff --git a/src/predicate/isOptionalNumber.ts b/src/predicate/isOptionalNumber.ts index 3995b0a..49bfcc2 100644 --- a/src/predicate/isOptionalNumber.ts +++ b/src/predicate/isOptionalNumber.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isNumber } from './isNumber.js'; -export const isOptionalNumber = maybeUndefined(isNumber); +export const isOptionalNumber = optional(isNumber); diff --git a/src/predicate/isOptionalString.ts b/src/predicate/isOptionalString.ts index 96f2f62..520a2dc 100644 --- a/src/predicate/isOptionalString.ts +++ b/src/predicate/isOptionalString.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isString } from './isString.js'; -export const isOptionalString = maybeUndefined(isString); +export const isOptionalString = optional(isString); diff --git a/src/predicate/isOptionalSymbol.ts b/src/predicate/isOptionalSymbol.ts index 2b8926a..4fed21a 100644 --- a/src/predicate/isOptionalSymbol.ts +++ b/src/predicate/isOptionalSymbol.ts @@ -1,4 +1,4 @@ -import { maybeUndefined } from './factory/maybeUndefined.js'; +import { optional } from './factory/optional.js'; import { isSymbol } from './isSymbol.js'; -export const isOptionalSymbol = maybeUndefined(isSymbol); +export const isOptionalSymbol = optional(isSymbol); diff --git a/src/types/records.ts b/src/types/records.ts index 2990bf7..2f264d9 100644 --- a/src/types/records.ts +++ b/src/types/records.ts @@ -7,6 +7,8 @@ export type NeverRecord = Record; export type StringRecord = Record; +export type EnumRecord = Record; + export type RemoveIndex = { [Key in keyof Type as symbol extends Key ? never diff --git a/test/predicate/factory/nonNullable.test.ts b/test/predicate/factory/nonNullable.test.ts new file mode 100644 index 0000000..53c0f7d --- /dev/null +++ b/test/predicate/factory/nonNullable.test.ts @@ -0,0 +1,24 @@ +import { describe, it, expect } from 'vitest'; + +import { nonNullable } from '../../../src/predicate/factory/nonNullable.js'; + +describe('nonNullable()', () => { + const predicate = (input: unknown): input is 'testing' | null | undefined => { + const values: unknown[] = ['testing', null, undefined]; + + return values.includes(input); + }; + + it('Returns a type predicate function', () => { + expect(nonNullable(predicate)).toBeInstanceOf(Function); + }); + + it('Calls a type predicate function', () => { + const fn = nonNullable(predicate); + + expect(fn('testing')).toBeTruthy(); + expect(fn('something else')).toBeFalsy(); + expect(fn(null)).toBeFalsy(); + expect(fn(undefined)).toBeFalsy(); + }); +}); diff --git a/test/predicate/factory/maybeNull.test.ts b/test/predicate/factory/nullable.test.ts similarity index 69% rename from test/predicate/factory/maybeNull.test.ts rename to test/predicate/factory/nullable.test.ts index 7602706..17c3657 100644 --- a/test/predicate/factory/maybeNull.test.ts +++ b/test/predicate/factory/nullable.test.ts @@ -1,17 +1,17 @@ import { describe, it, expect, vi } from 'vitest'; -import { maybeNull } from '../../../src/predicate/factory/maybeNull.js'; +import { nullable } from '../../../src/predicate/factory/nullable.js'; import { isBoolean } from '../../../src/predicate/isBoolean.js'; -describe('maybeNull()', () => { +describe('nullable()', () => { it('Returns a type predicate function', () => { - expect(maybeNull(isBoolean)).toBeInstanceOf(Function); + expect(nullable(isBoolean)).toBeInstanceOf(Function); }); it('Calls a type predicate function', () => { const predicate = vi.fn(isBoolean) as unknown as typeof isBoolean; - const fn = maybeNull(predicate); + const fn = nullable(predicate); expect(fn(true)).toBeTruthy(); expect(fn(null)).toBeTruthy(); diff --git a/test/predicate/factory/maybeUndefined.test.ts b/test/predicate/factory/optional.test.ts similarity index 67% rename from test/predicate/factory/maybeUndefined.test.ts rename to test/predicate/factory/optional.test.ts index 6397318..ef21484 100644 --- a/test/predicate/factory/maybeUndefined.test.ts +++ b/test/predicate/factory/optional.test.ts @@ -1,17 +1,17 @@ import { describe, it, expect, vi } from 'vitest'; -import { maybeUndefined } from '../../../src/predicate/factory/maybeUndefined.js'; +import { optional } from '../../../src/predicate/factory/optional.js'; import { isBoolean } from '../../../src/predicate/isBoolean.js'; -describe('maybeUndefined()', () => { +describe('optional()', () => { it('Returns a type predicate function', () => { - expect(maybeUndefined(isBoolean)).toBeInstanceOf(Function); + expect(optional(isBoolean)).toBeInstanceOf(Function); }); it('Calls a type predicate function', () => { const predicate = vi.fn(isBoolean) as unknown as typeof isBoolean; - const fn = maybeUndefined(predicate); + const fn = optional(predicate); expect(fn(true)).toBeTruthy(); expect(fn(undefined)).toBeTruthy(); diff --git a/test/predicate/factory/withLength.test.ts b/test/predicate/factory/withLength.test.ts index 48ec3a6..3aa78df 100644 --- a/test/predicate/factory/withLength.test.ts +++ b/test/predicate/factory/withLength.test.ts @@ -16,6 +16,10 @@ describe('withLength()', () => { expect(() => { withLength(isString, [100, 1]); }).toThrowError(); + + expect(() => { + withLength(isString, [-100, 100]); + }).toThrowError(); }); it('Returns true for strings with the specified length', () => { diff --git a/test/predicate/factory/withSize.test.ts b/test/predicate/factory/withSize.test.ts index 26c91e2..72131c2 100644 --- a/test/predicate/factory/withSize.test.ts +++ b/test/predicate/factory/withSize.test.ts @@ -15,6 +15,10 @@ describe('withSize()', () => { expect(() => { withSize(instanceOf(Set), [100, 1]); }).toThrowError(); + + expect(() => { + withSize(instanceOf(Set), [-100, 100]); + }).toThrowError(); }); it('Returns true for strings with the specified length', () => {