diff --git a/changelog.md b/changelog.md index 1fea1e4..c69bdba 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2026-03-29 - 1.7.0 - feat(rust-tests) +add end-to-end WireGuard UDP integration tests and align TypeScript build configuration + +- Add userspace Rust end-to-end tests that validate WireGuard handshake, encryption, peer isolation, and preshared-key data exchange over real UDP sockets. +- Update the TypeScript build setup by removing the allowimplicitany build flag and explicitly including Node types in tsconfig. +- Refresh development toolchain versions to support the updated test and build workflow. + ## 2026-03-29 - 1.6.0 - feat(readme) document WireGuard transport support, configuration, and usage examples diff --git a/package.json b/package.json index f5407dd..a675fda 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "main": "dist_ts/index.js", "typings": "dist_ts/index.d.ts", "scripts": { - "build": "(tsbuild tsfolders --allowimplicitany) && (tsrust)", + "build": "(tsbuild tsfolders) && (tsrust)", "test:before": "(tsrust)", "test": "tstest test/ --verbose", "buildDocs": "tsdoc" @@ -33,10 +33,10 @@ "@push.rocks/smartrust": "^1.3.2" }, "devDependencies": { - "@git.zone/tsbuild": "^4.3.0", - "@git.zone/tsrun": "^2.0.1", - "@git.zone/tsrust": "^1.3.0", - "@git.zone/tstest": "^3.5.0", + "@git.zone/tsbuild": "^4.4.0", + "@git.zone/tsrun": "^2.0.2", + "@git.zone/tsrust": "^1.3.2", + "@git.zone/tstest": "^3.6.3", "@types/node": "^25.5.0" }, "files": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7771523..bcda4df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,17 +16,17 @@ importers: version: 1.3.2 devDependencies: '@git.zone/tsbuild': - specifier: ^4.3.0 - version: 4.3.0 + specifier: ^4.4.0 + version: 4.4.0 '@git.zone/tsrun': - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^2.0.2 + version: 2.0.2 '@git.zone/tsrust': - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.3.2 + version: 1.3.2 '@git.zone/tstest': - specifier: ^3.5.0 - version: 3.5.0(socks@2.8.7)(typescript@5.9.3) + specifier: ^3.6.3 + version: 3.6.3(socks@2.8.7)(typescript@6.0.2) '@types/node': specifier: ^25.5.0 version: 25.5.0 @@ -246,178 +246,334 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.27.3': resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.27.3': resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.27.3': resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.27.3': resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.27.3': resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.27.3': resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.27.3': resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.27.3': resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.27.3': resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.27.3': resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.27.3': resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.27.3': resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.27.3': resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.27.3': resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.27.3': resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.27.3': resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.27.3': resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.27.3': resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.27.3': resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.27.3': resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.27.3': resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.27.3': resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.27.3': resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.27.3': resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.27.3': resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@git.zone/tsbuild@4.3.0': - resolution: {integrity: sha512-lb6eMQ8RQPaJqAB4kC++GIElOiTAH1pClmoND/q7XHuiMZxv6cXz2/U/sZt339mon2c40dXRG2tkLF2jRsP0pQ==} + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@git.zone/tsbuild@4.4.0': + resolution: {integrity: sha512-98igHfppi6blFYDyzNukNkj4FUO5ZlyXEaSyJh8vCkkZM8SyAgfZj+NUWA1D1iaPXE58UvK1Pt/o8p8iI9UHHw==} hasBin: true - '@git.zone/tsbundle@2.9.1': - resolution: {integrity: sha512-JW1xjSv7UjAm2lwAQPxhCWs14wqs+UIq5FqIGUPuI6rrDBWIMT2d0gpP6iP6TqXqgm6XpBlfU4rHcHheUXzXbQ==} + '@git.zone/tsbundle@2.10.0': + resolution: {integrity: sha512-dw2VFlgKssDlCxg92wSPiiAKwfCjJBOEOYXq1xO91OpjQLOkyogCxSLy0jzQ2BYnt4qmBnapjamzYzVjCr4CWg==} hasBin: true - '@git.zone/tspublish@1.11.2': - resolution: {integrity: sha512-BcGap1OzXDgXpfQXMh9W17r/CkWNhPsJ3WzjG2wrGE+ePUJCJAm9w6+J8G5WdZZcZKPqTB07cp707LbSiksc5A==} + '@git.zone/tspublish@1.11.5': + resolution: {integrity: sha512-3tCGhVbH6S/17n3A6Tc6H+ncRdxxbTT0ABcj8S1wRLA8YuBSj9bY7k6uj/iFRy/B/OepB94m1goCiaWESdcZYg==} hasBin: true - '@git.zone/tsrun@2.0.1': - resolution: {integrity: sha512-NEcnsjvlC1o3Z6SS3VhKCf6Ev+Sh4EAinmggslrIR/ppMrvjDbXNFXoyr3PB+GLeSAR0JRZ1fGvVYjpEzjBdIg==} + '@git.zone/tsrun@2.0.2': + resolution: {integrity: sha512-Rnp/wYHzI8A1pVBKOOePRJgQiBZdW+GEjpQk2uhvXz6A+ljUV2SXKc7NpQVVDsjEZaNFeAI9jMYOdk3lm3yMDA==} hasBin: true - '@git.zone/tsrust@1.3.0': - resolution: {integrity: sha512-dvmTAiM04Pkd7J1Gail3fu7aasmILQhC5vKL71/g6HYhpvl16/c+Dj3We5G4HsFr0jvAr+Xu570ZGEuZrtRcCg==} + '@git.zone/tsrust@1.3.2': + resolution: {integrity: sha512-bUGomPk++He47Q6rnd9bihX6qoYtXgp9BtroBnNADk3q8WGyHivAcPwqIe4Bk32eByzW1Acc37u/h5gb/V8ekA==} hasBin: true - '@git.zone/tstest@3.5.0': - resolution: {integrity: sha512-ugIJzdVkbgqSSw08SZajE7TB01GIYjEAmIy67O5skhvOyszGifwzJdR+8dS1VbQGlUUWQZMGQ2IowllHbAZYJQ==} + '@git.zone/tstest@3.6.3': + resolution: {integrity: sha512-xvHZia3VEYO3ztXNqN3+ytF07vA2imZJwpD7GOv/wVM/hY58bUVvs/YnJ0C4nwiCGiHV87LU27NDEGfoNPYZcw==} hasBin: true '@img/colour@1.1.0': @@ -781,8 +937,8 @@ packages: '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@oxc-project/types@0.99.0': - resolution: {integrity: sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} '@pdf-lib/standard-fonts@1.0.0': resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} @@ -856,12 +1012,12 @@ packages: '@push.rocks/lik@6.2.2': resolution: {integrity: sha512-j64FFPPyMXeeUorjKJVF6PWaJUfiIrF3pc41iJH4lOh0UUpBAHpcNzHVxTR58orwbVA/h3Hz+DQd4b1Rq0dFDQ==} + '@push.rocks/lik@6.4.0': + resolution: {integrity: sha512-GCdXyF2a6NP+i0W6Mib1PjtA6JGrl6Ae17SbaQwqTscn4JHNta6xm9r+D8/b83XGZsoU903FlJZli3YqJCxT9Q==} + '@push.rocks/mongodump@1.1.0': resolution: {integrity: sha512-kW0ZUGyf1e4nwloVwBQjNId+MzgTcNS834C+RxH21i1NqyOubbpWZtJtPP+K+s35nSJRyCTy3ICfBMdDBTAm2w==} - '@push.rocks/npmextra@5.3.3': - resolution: {integrity: sha512-snLpSHwaQ5OXlZzF1KX/FY71W5LwajjBzor82Vue0smjEPnSeUPY5/JcVdMwtdprdJe13pc/EQQuIiL/zw4/yg==} - '@push.rocks/qenv@6.1.3': resolution: {integrity: sha512-+z2hsAU/7CIgpYLFqvda8cn9rUBMHqLdQLjsFfRn5jPoD7dJ5rFlpkbhfM4Ws8mHMniwWaxGKo+q/YBhtzRBLg==} @@ -886,6 +1042,9 @@ packages: '@push.rocks/smartclickhouse@2.0.17': resolution: {integrity: sha512-IYO8Obor/Ruam2KQ2B/+5uQ+rL0exU5KZoSgOc3jkkrfjn+zZenN2xoV8lVqavAtxZVfG7MfxFrcv6I7I9ZMmA==} + '@push.rocks/smartconfig@6.1.0': + resolution: {integrity: sha512-B+xh63PhGAsSwuRyCKXr4PAjJ4HoVKhNysi67OGY6gGqGm6uopgEW1cvrUZ7T5ZSck9KlVx7ZTugbqm6dqBK1Q==} + '@push.rocks/smartcrypto@2.0.4': resolution: {integrity: sha512-1+/5bsjyataf5uUkUNnnVXGRAt+gHVk1KDzozjTqgqJxHvQk1d9fVDohL6CxUhUucTPtu5VR5xNBiV8YCDuGyw==} @@ -970,8 +1129,8 @@ packages: '@push.rocks/smartmongo@5.1.0': resolution: {integrity: sha512-2tpKf8K+SMdLHOEpafgKPIN+ypWTLwHc33hCUDNMQ1KaL7vokkavA44+fHxQydOGPMtDi22tSMFeVMCcUSzs4w==} - '@push.rocks/smartnetwork@4.4.0': - resolution: {integrity: sha512-OvFtz41cvQ7lcXwaIOhghNUUlNoMxvwKDctbDvMyuZyEH08SpLjhyv2FuKbKL/mgwA/WxakTbohoC8SW7t+kiw==} + '@push.rocks/smartnetwork@4.5.2': + resolution: {integrity: sha512-lbMMyc2f/WWd5+qzZyF1ynXndjCtasxPWmj/d8GUuis9rDrW7sLIT1PlAPC2F6Qsy4H/K32JrYU+01d/6sWObg==} '@push.rocks/smartnpm@2.0.6': resolution: {integrity: sha512-7anKDOjX6gXWs1IAc+YWz9ZZ8gDsTwaLh+CxRnGHjAawOmK788NrrgVCg2Fb3qojrPnoxecc46F8Ivp1BT7Izw==} @@ -988,9 +1147,6 @@ packages: '@push.rocks/smartpdf@4.2.0': resolution: {integrity: sha512-+egzby5QKJGO10MDvWp+N69cJ8i5M354l9ntc+uLRpxuq/FEY9kigpRwMvRYF5qwOBTuGTLqvmvILzlLtboAQg==} - '@push.rocks/smartping@1.0.8': - resolution: {integrity: sha512-Fvx1Db6hSsDOI6pdiCuS9GjtOX8ugx865YQrPg5vK2iw6Qj/srwyXcWLFYt+19WVKtvtWDJIAKbW+q3bXFsCeA==} - '@push.rocks/smartpromise@4.2.3': resolution: {integrity: sha512-Ycg/TJR+tMt+S3wSFurOpEoW6nXv12QBtKXgBcjMZ4RsdO28geN46U09osPn9N9WuwQy1PkmTV5J/V4F9U8qEw==} @@ -1015,11 +1171,8 @@ packages: '@push.rocks/smartrx@3.0.10': resolution: {integrity: sha512-USjIYcsSfzn14cwOsxgq/bBmWDTTzy3ouWAnW5NdMyRRzEbmeNrvmy6TRqNeDlJ2PsYNTt1rr/zGUqvIy72ITg==} - '@push.rocks/smartserve@2.0.1': - resolution: {integrity: sha512-YQb2qexfCzCqOlLWBBXKMg6xG4zahCPAxomz/KEKAwHtW6wMTtuHKSTSkRTQ0vl9jssLMAmRz2OyafiL9XGJXQ==} - - '@push.rocks/smartshell@3.3.0': - resolution: {integrity: sha512-m0w618H6YBs+vXGz1CgS4nPi5CUAnqRtckcS9/koGwfcIx1IpjqmiP47BoCTbdgcv0IPUxQVBG1IXTHPuZ8Z5g==} + '@push.rocks/smartserve@2.0.3': + resolution: {integrity: sha512-PttdFlh61lsDNSRvRCSlKjRzuxgD3WP2XLuBNXu1hLfqLpQXDESj0ZCRPDZslLZsyFT5aHP9godb4D4L3bzHWA==} '@push.rocks/smartshell@3.3.8': resolution: {integrity: sha512-t9J/py0vnea4ZtOs7Anc9dc6lcvg6EDvYBw5eE1mB+KUWxMQf/ROIQwWMo6B9SMNY4JS2UwvfuJQJ8makP/7Tg==} @@ -1030,8 +1183,8 @@ packages: '@push.rocks/smartstate@2.0.30': resolution: {integrity: sha512-IuNW8XtSumXIr7g7MIFyWg5PBwLF2mwsymTJbSEycK2Pa9ZLk4yjRHnR907xCilxgiMU9ixQZyNdpa5MMF999A==} - '@push.rocks/smartstorage@6.0.1': - resolution: {integrity: sha512-W5PEVwO0J2K9YUZRTbKXadC11h6/IBzzqU+P0TIE/xpJZC4K1duEXwEhxGWcbfhCkPRRa51xH8Z5mAmzzm8qxA==} + '@push.rocks/smartstorage@6.3.2': + resolution: {integrity: sha512-g8rXlVZ+6iKmzNoybtwQntdb7EWA6WnVmbXNOdwDKWR8w4o/7UMErj+H5mt57iqYIy1pzQAoTb8IWJNsti7XQw==} '@push.rocks/smartstream@3.2.5': resolution: {integrity: sha512-PLGGIFDy8JLNVUnnntMSIYN4W081YSbNC7Y/sWpvUT8PAXtbEXXUiDFgK5o3gcI0ptpKQxHAwxhzNlPj0sbFVg==} @@ -1051,8 +1204,8 @@ packages: '@push.rocks/smartversion@3.0.5': resolution: {integrity: sha512-8MZSo1yqyaKxKq0Q5N188l4un++9GFWVbhCAX5mXJwewZHn97ujffTeL+eOQYpWFTEpUhaq1QhL4NhqObBCt1Q==} - '@push.rocks/smartwatch@6.3.0': - resolution: {integrity: sha512-TeZ1PGBoBMpC4/CK8StIj5InEiFfKp7xWJSm3aYMjB/uaoeRP0vXqv1ORIC/TKYGJuEDuAXUsit8tZVjn0qT1Q==} + '@push.rocks/smartwatch@6.4.0': + resolution: {integrity: sha512-KDswRgE/siBmZRCsRA07MtW5oF4c9uQEBkwTGPIWneHzksbCDsvs/7agKFEL7WnNifLNwo8w1K1qoiVWkX1fvw==} engines: {node: '>=20.0.0'} '@push.rocks/smartyaml@2.0.5': @@ -1084,154 +1237,162 @@ packages: resolution: {integrity: sha512-bqorOaGXPOuiOSV81luTKrTghg4O4NBRD0zyv7TIqmrMGf4a0uoozaUMp1X8vQdZW+y0gTzUJP9wkzAE6Cci0g==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartpromise - '@rolldown/binding-android-arm64@1.0.0-beta.52': - resolution: {integrity: sha512-MBGIgysimZPqTDcLXI+i9VveijkP5C3EAncEogXhqfax6YXj1Tr2LY3DVuEOMIjWfMPMhtQSPup4fSTAmgjqIw==} + '@rolldown/binding-android-arm64@1.0.0-rc.11': + resolution: {integrity: sha512-SJ+/g+xNnOh6NqYxD0V3uVN4W3VfnrGsC9/hoglicgTNfABFG9JjISvkkU0dNY84MNHLWyOgxP9v9Y9pX4S7+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.52': - resolution: {integrity: sha512-MmKeoLnKu1d9j6r19K8B+prJnIZ7u+zQ+zGQ3YHXGnr41rzE3eqQLovlkvoZnRoxDGPA4ps0pGiwXy6YE3lJyg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.11': + resolution: {integrity: sha512-7WQgR8SfOPwmDZGFkThUvsmd/nwAWv91oCO4I5LS7RKrssPZmOt7jONN0cW17ydGC1n/+puol1IpoieKqQidmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.52': - resolution: {integrity: sha512-qpHedvQBmIjT8zdnjN3nWPR2qjQyJttbXniCEKKdHeAbZG9HyNPBUzQF7AZZGwmS9coQKL+hWg9FhWzh2dZ2IA==} + '@rolldown/binding-darwin-x64@1.0.0-rc.11': + resolution: {integrity: sha512-39Ks6UvIHq4rEogIfQBoBRusj0Q0nPVWIvqmwBLaT6aqQGIakHdESBVOPRRLacy4WwUPIx4ZKzfZ9PMW+IeyUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.52': - resolution: {integrity: sha512-dDp7WbPapj/NVW0LSiH/CLwMhmLwwKb3R7mh2kWX+QW85X1DGVnIEyKh9PmNJjB/+suG1dJygdtdNPVXK1hylg==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.11': + resolution: {integrity: sha512-jfsm0ZHfhiqrvWjJAmzsqiIFPz5e7mAoCOPBNTcNgkiid/LaFKiq92+0ojH+nmJmKYkre4t71BWXUZDNp7vsag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52': - resolution: {integrity: sha512-9e4l6vy5qNSliDPqNfR6CkBOAx6PH7iDV4OJiEJzajajGrVy8gc/IKKJUsoE52G8ud8MX6r3PMl97NfwgOzB7g==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11': + resolution: {integrity: sha512-zjQaUtSyq1nVe3nxmlSCuR96T1LPlpvmJ0SZy0WJFEsV4kFbXcq2u68L4E6O0XeFj4aex9bEauqjW8UQBeAvfQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52': - resolution: {integrity: sha512-V48oDR84feRU2KRuzpALp594Uqlx27+zFsT6+BgTcXOtu7dWy350J1G28ydoCwKB+oxwsRPx2e7aeQnmd3YJbQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-WMW1yE6IOnehTcFE9eipFkm3XN63zypWlrJQ2iF7NrQ9b2LDRjumFoOGJE8RJJTJCTBAdmLMnJ8uVitACUUo1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.52': - resolution: {integrity: sha512-ENLmSQCWqSA/+YN45V2FqTIemg7QspaiTjlm327eUAMeOLdqmSOVVyrQexJGNTQ5M8sDYCgVAig2Kk01Ggmqaw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.11': + resolution: {integrity: sha512-jfndI9tsfm4APzjNt6QdBkYwre5lRPUgHeDHoI7ydKUuJvz3lZeCfMsI56BZj+7BYqiKsJm7cfd/6KYV7ubrBg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.52': - resolution: {integrity: sha512-klahlb2EIFltSUubn/VLjuc3qxp1E7th8ukayPfdkcKvvYcQ5rJztgx8JsJSuAKVzKtNTqUGOhy4On71BuyV8g==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-ZlFgw46NOAGMgcdvdYwAGu2Q+SLFA9LzbJLW+iyMOJyhj5wk6P3KEE9Gct4xWwSzFoPI7JCdYmYMzVtlgQ+zfw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-hIOYmuT6ofM4K04XAZd3OzMySEO4K0/nc9+jmNcxNAxRi6c5UWpqfw3KMFV4MVFWL+jQsSh+bGw2VqmaPMTLyw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-qXBQQO9OvkjjQPLdUVr7Nr2t3QTZI7s4KZtfw7HzBgjbmAPSFwSv4rmET9lLSgq3rH/ndA3ngv3Qb8l2njoPNA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.52': - resolution: {integrity: sha512-UuA+JqQIgqtkgGN2c/AQ5wi8M6mJHrahz/wciENPTeI6zEIbbLGoth5XN+sQe2pJDejEVofN9aOAp0kaazwnVg==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.11': + resolution: {integrity: sha512-/tpFfoSTzUkH9LPY+cYbqZBDyyX62w5fICq9qzsHLL8uTI6BHip3Q9Uzft0wylk/i8OOwKik8OxW+QAhDmzwmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.52': - resolution: {integrity: sha512-1BNQW8u4ro8bsN1+tgKENJiqmvc+WfuaUhXzMImOVSMw28pkBKdfZtX2qJPADV3terx+vNJtlsgSGeb3+W6Jiw==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.11': + resolution: {integrity: sha512-mcp3Rio2w72IvdZG0oQ4bM2c2oumtwHfUfKncUM6zGgz0KgPz4YmDPQfnXEiY5t3+KD/i8HG2rOB/LxdmieK2g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.52': - resolution: {integrity: sha512-K/p7clhCqJOQpXGykrFaBX2Dp9AUVIDHGc+PtFGBwg7V+mvBTv/tsm3LC3aUmH02H2y3gz4y+nUTQ0MLpofEEg==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.11': + resolution: {integrity: sha512-LXk5Hii1Ph9asuGRjBuz8TUxdc1lWzB7nyfdoRgI0WGPZKmCxvlKk8KfYysqtr4MfGElu/f/pEQRh8fcEgkrWw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52': - resolution: {integrity: sha512-a4EkXBtnYYsKipjS7QOhEBM4bU5IlR9N1hU+JcVEVeuTiaslIyhWVKsvf7K2YkQHyVAJ+7/A9BtrGqORFcTgng==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11': + resolution: {integrity: sha512-dDwf5otnx0XgRY1yqxOC4ITizcdzS/8cQ3goOWv3jFAo4F+xQYni+hnMuO6+LssHHdJW7+OCVL3CoU4ycnh35Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52': - resolution: {integrity: sha512-5ZXcYyd4GxPA6QfbGrNcQjmjbuLGvfz6728pZMsQvGHI+06LT06M6TPtXvFvLgXtexc+OqvFe1yAIXJU1gob/w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.52': - resolution: {integrity: sha512-tzpnRQXJrSzb8Z9sm97UD3cY0toKOImx+xRKsDLX4zHaAlRXWh7jbaKBePJXEN7gNw7Nm03PBNwphdtA8KSUYQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.11': + resolution: {integrity: sha512-LN4/skhSggybX71ews7dAj6r2geaMJfm3kMbK2KhFMg9B10AZXnKoLCVVgzhMHL0S+aKtr4p8QbAW8k+w95bAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.52': - resolution: {integrity: sha512-/L0htLJZbaZFL1g9OHOblTxbCYIGefErJjtYOwgl9ZqNx27P3L0SDfjhhHIss32gu5NWgnxuT2a2Hnnv6QGHKA==} + '@rolldown/pluginutils@1.0.0-rc.11': + resolution: {integrity: sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ==} - '@rspack/binding-darwin-arm64@1.7.6': - resolution: {integrity: sha512-NZ9AWtB1COLUX1tA9HQQvWpTy07NSFfKBU8A6ylWd5KH8AePZztpNgLLAVPTuNO4CZXYpwcoclf8jG/luJcQdQ==} + '@rspack/binding-darwin-arm64@1.7.10': + resolution: {integrity: sha512-bsXi7I6TpH+a4L6okIUh1JDvwT+XcK/L7Yvhu5G2t5YYyd2fl5vMM5O9cePRpEb0RdqJZ3Z8i9WIWHap9aQ8Gw==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.7.6': - resolution: {integrity: sha512-J2g6xk8ZS7uc024dNTGTHxoFzFovAZIRixUG7PiciLKTMP78svbSSWrmW6N8oAsAkzYfJWwQpVgWfFNRHvYxSw==} + '@rspack/binding-darwin-x64@1.7.10': + resolution: {integrity: sha512-h/kOGL1bUflDDYnbiUjaRE9kagJpour4FatGihueV03+cRGQ6jpde+BjUakqzMx65CeDbeYI6jAiPhElnlAtRw==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.7.6': - resolution: {integrity: sha512-eQfcsaxhFrv5FmtaA7+O1F9/2yFDNIoPZzV/ZvqvFz5bBXVc4FAm/1fVpBg8Po/kX1h0chBc7Xkpry3cabFW8w==} + '@rspack/binding-linux-arm64-gnu@1.7.10': + resolution: {integrity: sha512-Z4reus7UxGM4+JuhiIht8KuGP1KgM7nNhOlXUHcQCMswP/Rymj5oJQN3TDWgijFUZs09ULl8t3T+AQAVTd/WvA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.7.6': - resolution: {integrity: sha512-DfQXKiyPIl7i1yECHy4eAkSmlUzzsSAbOjgMuKn7pudsWf483jg0UUYutNgXSlBjc/QSUp7906Cg8oty9OfwPA==} + '@rspack/binding-linux-arm64-musl@1.7.10': + resolution: {integrity: sha512-LYaoVmWizG4oQ3g+St3eM5qxsyfH07kLirP7NJcDMgvu3eQ29MeyTZ3ugkgW6LvlmJue7eTQyf6CZlanoF5SSg==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@1.7.6': - resolution: {integrity: sha512-NdA+2X3lk2GGrMMnTGyYTzM3pn+zNjaqXqlgKmFBXvjfZqzSsKq3pdD1KHZCd5QHN+Fwvoszj0JFsquEVhE1og==} + '@rspack/binding-linux-x64-gnu@1.7.10': + resolution: {integrity: sha512-aIm2G4Kcm3qxDTNqKarK0oaLY2iXnCmpRQQhAcMlR0aS2LmxL89XzVeRr9GFA1MzGrAsZONWCLkxQvn3WUbm4Q==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@1.7.6': - resolution: {integrity: sha512-rEy6MHKob02t/77YNgr6dREyJ0e0tv1X6Xsg8Z5E7rPXead06zefUbfazj4RELYySWnM38ovZyJAkPx/gOn3VA==} + '@rspack/binding-linux-x64-musl@1.7.10': + resolution: {integrity: sha512-SIHQbAgB9IPH0H3H+i5rN5jo9yA/yTMq8b7XfRkTMvZ7P7MXxJ0dE8EJu3BmCLM19sqnTc2eX+SVfE8ZMDzghA==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@1.7.6': - resolution: {integrity: sha512-YupOrz0daSG+YBbCIgpDgzfMM38YpChv+afZpaxx5Ml7xPeAZIIdgWmLHnQ2rts73N2M1NspAiBwV00Xx0N4Vg==} + '@rspack/binding-wasm32-wasi@1.7.10': + resolution: {integrity: sha512-J9HDXHD1tj+9FmX4+K3CTkO7dCE2bootlR37YuC2Owc0Lwl1/i2oGT71KHnMqI9faF/hipAaQM5OywkiiuNB7w==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.7.6': - resolution: {integrity: sha512-INj7aVXjBvlZ84kEhSK4kJ484ub0i+BzgnjDWOWM1K+eFYDZjLdAsQSS3fGGXwVc3qKbPIssFfnftATDMTEJHQ==} + '@rspack/binding-win32-arm64-msvc@1.7.10': + resolution: {integrity: sha512-FaQGSCXH89nMOYW0bVp0bKQDQbrOEFFm7yedla7g6mkWlFVQo5UyBxid5wJUCqGJBtJepRxeRfByWiaI5nVGvg==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.7.6': - resolution: {integrity: sha512-lXGvC+z67UMcw58In12h8zCa9IyYRmuptUBMItQJzu+M278aMuD1nETyGLL7e4+OZ2lvrnnBIcjXN1hfw2yRzw==} + '@rspack/binding-win32-ia32-msvc@1.7.10': + resolution: {integrity: sha512-/66TNLOeM4R5dHhRWRVbMTgWghgxz+32ym0c/zGGXQRoMbz7210EoL40ALUgdBdeeREO8LoV+Mn7v8/QZCwHzw==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.7.6': - resolution: {integrity: sha512-zeUxEc0ZaPpmaYlCeWcjSJUPuRRySiSHN23oJ2Xyw0jsQ01Qm4OScPdr0RhEOFuK/UE+ANyRtDo4zJsY52Hadw==} + '@rspack/binding-win32-x64-msvc@1.7.10': + resolution: {integrity: sha512-SUa3v1W7PGFCy6AHRmDsm43/tkfaZFi1TN2oIk5aCdT9T51baDVBjAbehRDu9xFbK4piL3k7uqIVSIrKgVqk1g==} cpu: [x64] os: [win32] - '@rspack/binding@1.7.6': - resolution: {integrity: sha512-/NrEcfo8Gx22hLGysanrV6gHMuqZSxToSci/3M4kzEQtF5cPjfOv5pqeLK/+B6cr56ul/OmE96cCdWcXeVnFjQ==} + '@rspack/binding@1.7.10': + resolution: {integrity: sha512-j+DPEaSJLRgasxXNpYQpvC7wUkQF5WoWPiTfm4fLczwlAmYwGSVkJiyWDrOlvVPiGGYiXIaXEjVWTw6fT6/vnA==} - '@rspack/core@1.7.6': - resolution: {integrity: sha512-Iax6UhrfZqJajA778c1d5DBFbSIqPOSrI34kpNIiNpWd8Jq7mFIa+Z60SQb5ZQDZuUxcCZikjz5BxinFjTkg7Q==} + '@rspack/core@1.7.10': + resolution: {integrity: sha512-dO7J0aHSa9Fg2kGT0+ZsM500lMdlNIyCHavIaz7dTDn6KXvFz1qbWQ/48x3OlNFw1mA0jxAjjw9e7h3sWQZUNg==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -1502,6 +1663,9 @@ packages: '@tsclass/tsclass@9.3.0': resolution: {integrity: sha512-KD3oTUN3RGu67tgjNHgWWZGsdYipr1RUDxQ9MMKSgIJ6oNZ4q5m2rg0ibrgyHWkAjTPlHVa6kHP3uVOY+8bnHw==} + '@tsclass/tsclass@9.5.0': + resolution: {integrity: sha512-HwMVwkrBnEFMjwOsMkGwWN/q+XEczSpf4a/PBAXgkDdV6sXdxAMFXUH1tW8Y5ecuvXFYMvFry4X57MCCT7Dm8A==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1559,9 +1723,6 @@ packages: '@types/node@25.5.0': resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} - '@types/ping@0.4.4': - resolution: {integrity: sha512-ifvo6w2f5eJYlXm+HiVx67iJe8WZp87sfa683nlqED5Vnt9Z93onkokNoWqOG21EaE8fMxyKPobE+mkPEyxsdw==} - '@types/relateurl@0.2.33': resolution: {integrity: sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw==} @@ -1976,6 +2137,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2304,17 +2470,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - isexe@3.1.5: - resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} - engines: {node: '>=18'} - isexe@4.0.0: resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} engines: {node: '>=20'} - isopen@1.3.0: - resolution: {integrity: sha512-AN6Q9J0UlqHFl1fN/2xJCHCBLCBCFDjZhpGBO1gh3wzgRPsFSFBUL36I2Lbfd9qkuoj58axmE7j83iejTQsk8Q==} - jackspeak@4.2.3: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} @@ -2407,6 +2566,10 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + maxmind@5.0.5: + resolution: {integrity: sha512-1lcH2kMjbBpCFhuHaMU32vz8CuOsKttRcWMQyXvtlklopCzN7NNHSVR/h9RYa8JPuFTGmkn2vYARm+7cIGuqDw==} + engines: {node: '>=12', npm: '>=6'} + mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -2586,6 +2749,10 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mmdb-lib@3.0.2: + resolution: {integrity: sha512-7e87vk0DdWT647wjcfEtWeMtjm+zVGqNohN/aeIymbUfjHQ2T4Sx5kM+1irVDBSloNC3CkGKxswdMoo8yhqTDg==} + engines: {node: '>=10', npm: '>=6'} + mongodb-connection-string-url@3.0.2: resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==} @@ -2792,10 +2959,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - ping@0.4.4: - resolution: {integrity: sha512-56ZMC0j7SCsMMLdOoUg12VZCfj/+ZO+yfOSjaNCRrmZZr6GLbN2X/Ui56T15dI8NhiHckaw5X2pvyfAomanwqQ==} - engines: {node: '>=4.0.0'} - pixelmatch@5.3.0: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true @@ -2936,8 +3099,8 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - rolldown@1.0.0-beta.52: - resolution: {integrity: sha512-Hbnpljue+JhMJrlOjQ1ixp9me7sUec7OjFvS+A1Qm8k8Xyxmw3ZhxFu7LlSXW1s9AX3POE9W9o2oqCEeR5uDmg==} + rolldown@1.0.0-rc.11: + resolution: {integrity: sha512-NRjoKMusSjfRbSYiH3VSumlkgFe7kYAa3pzVOsVYVFY3zb5d7nS+a3KGQ7hJKXuYWbzJKPVQ9Wxq2UvyK+ENpw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2998,8 +3161,8 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smol-toml@1.6.0: - resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} socks-proxy-agent@8.0.5: @@ -3069,11 +3232,9 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - systeminformation@5.31.1: - resolution: {integrity: sha512-6pRwxoGeV/roJYpsfcP6tN9mep6pPeCtXbUOCdVa0nme05Brwcwdge/fVNhIZn2wuUitAKZm4IYa7QjnRIa9zA==} - engines: {node: '>=8.0.0'} - os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] - hasBin: true + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} tar-fs@3.1.1: resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} @@ -3093,6 +3254,10 @@ packages: through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + tiny-lru@11.4.7: + resolution: {integrity: sha512-w/Te7uMUVeH0CR8vZIjr+XiN41V+30lkDdK+NRIDCUYKKuL9VcmaUEmaPISuwGhLlrTGh5yu18lENtR9axSxYw==} + engines: {node: '>=12'} + tiny-worker@2.3.0: resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} @@ -3154,11 +3319,15 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.5.0: + resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} + engines: {node: '>=20'} + typed-query-selector@2.12.1: resolution: {integrity: sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==} - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true @@ -3237,11 +3406,6 @@ packages: engines: {node: '>= 8'} hasBin: true - which@5.0.0: - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - which@6.0.1: resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} engines: {node: ^20.17.0 || >=22.9.0} @@ -3258,8 +3422,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3856,84 +4020,162 @@ snapshots: '@esbuild/aix-ppc64@0.27.3': optional: true + '@esbuild/aix-ppc64@0.27.4': + optional: true + '@esbuild/android-arm64@0.27.3': optional: true + '@esbuild/android-arm64@0.27.4': + optional: true + '@esbuild/android-arm@0.27.3': optional: true + '@esbuild/android-arm@0.27.4': + optional: true + '@esbuild/android-x64@0.27.3': optional: true + '@esbuild/android-x64@0.27.4': + optional: true + '@esbuild/darwin-arm64@0.27.3': optional: true + '@esbuild/darwin-arm64@0.27.4': + optional: true + '@esbuild/darwin-x64@0.27.3': optional: true + '@esbuild/darwin-x64@0.27.4': + optional: true + '@esbuild/freebsd-arm64@0.27.3': optional: true + '@esbuild/freebsd-arm64@0.27.4': + optional: true + '@esbuild/freebsd-x64@0.27.3': optional: true + '@esbuild/freebsd-x64@0.27.4': + optional: true + '@esbuild/linux-arm64@0.27.3': optional: true + '@esbuild/linux-arm64@0.27.4': + optional: true + '@esbuild/linux-arm@0.27.3': optional: true + '@esbuild/linux-arm@0.27.4': + optional: true + '@esbuild/linux-ia32@0.27.3': optional: true + '@esbuild/linux-ia32@0.27.4': + optional: true + '@esbuild/linux-loong64@0.27.3': optional: true + '@esbuild/linux-loong64@0.27.4': + optional: true + '@esbuild/linux-mips64el@0.27.3': optional: true + '@esbuild/linux-mips64el@0.27.4': + optional: true + '@esbuild/linux-ppc64@0.27.3': optional: true + '@esbuild/linux-ppc64@0.27.4': + optional: true + '@esbuild/linux-riscv64@0.27.3': optional: true + '@esbuild/linux-riscv64@0.27.4': + optional: true + '@esbuild/linux-s390x@0.27.3': optional: true + '@esbuild/linux-s390x@0.27.4': + optional: true + '@esbuild/linux-x64@0.27.3': optional: true + '@esbuild/linux-x64@0.27.4': + optional: true + '@esbuild/netbsd-arm64@0.27.3': optional: true + '@esbuild/netbsd-arm64@0.27.4': + optional: true + '@esbuild/netbsd-x64@0.27.3': optional: true + '@esbuild/netbsd-x64@0.27.4': + optional: true + '@esbuild/openbsd-arm64@0.27.3': optional: true + '@esbuild/openbsd-arm64@0.27.4': + optional: true + '@esbuild/openbsd-x64@0.27.3': optional: true + '@esbuild/openbsd-x64@0.27.4': + optional: true + '@esbuild/openharmony-arm64@0.27.3': optional: true + '@esbuild/openharmony-arm64@0.27.4': + optional: true + '@esbuild/sunos-x64@0.27.3': optional: true + '@esbuild/sunos-x64@0.27.4': + optional: true + '@esbuild/win32-arm64@0.27.3': optional: true + '@esbuild/win32-arm64@0.27.4': + optional: true + '@esbuild/win32-ia32@0.27.3': optional: true + '@esbuild/win32-ia32@0.27.4': + optional: true + '@esbuild/win32-x64@0.27.3': optional: true - '@git.zone/tsbuild@4.3.0': + '@esbuild/win32-x64@0.27.4': + optional: true + + '@git.zone/tsbuild@4.4.0': dependencies: - '@git.zone/tspublish': 1.11.2 + '@git.zone/tspublish': 1.11.5 '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 @@ -3942,7 +4184,7 @@ snapshots: '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - '@nuxt/kit' - aws-crt @@ -3952,11 +4194,11 @@ snapshots: - supports-color - vue - '@git.zone/tsbundle@2.9.1': + '@git.zone/tsbundle@2.10.0': dependencies: '@push.rocks/early': 4.0.4 - '@push.rocks/npmextra': 5.3.3 '@push.rocks/smartcli': 4.0.20 + '@push.rocks/smartconfig': 6.1.0 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartinteract': 2.0.16 @@ -3965,12 +4207,12 @@ snapshots: '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartspawn': 3.0.3 - '@rspack/core': 1.7.6 + '@rspack/core': 1.7.10 '@types/html-minifier': 4.0.6 - esbuild: 0.27.3 + esbuild: 0.27.4 html-minifier: 4.0.0 - rolldown: 1.0.0-beta.52 - typescript: 5.9.3 + rolldown: 1.0.0-rc.11 + typescript: 6.0.2 transitivePeerDependencies: - '@nuxt/kit' - '@swc/helpers' @@ -3978,11 +4220,11 @@ snapshots: - supports-color - vue - '@git.zone/tspublish@1.11.2': + '@git.zone/tspublish@1.11.5': dependencies: '@push.rocks/consolecolor': 2.0.3 - '@push.rocks/npmextra': 5.3.3 '@push.rocks/smartcli': 4.0.20 + '@push.rocks/smartconfig': 6.1.0 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 13.1.2 '@push.rocks/smartfs': 1.5.0 @@ -4000,34 +4242,34 @@ snapshots: - supports-color - vue - '@git.zone/tsrun@2.0.1': + '@git.zone/tsrun@2.0.2': dependencies: '@push.rocks/smartfile': 13.1.2 - '@push.rocks/smartshell': 3.3.0 + '@push.rocks/smartshell': 3.3.8 tsx: 4.21.0 - '@git.zone/tsrust@1.3.0': + '@git.zone/tsrust@1.3.2': dependencies: '@push.rocks/early': 4.0.4 - '@push.rocks/npmextra': 5.3.3 '@push.rocks/smartcli': 4.0.20 + '@push.rocks/smartconfig': 6.1.0 '@push.rocks/smartfile': 13.1.2 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartshell': 3.3.0 - smol-toml: 1.6.0 + '@push.rocks/smartshell': 3.3.8 + smol-toml: 1.6.1 transitivePeerDependencies: - '@nuxt/kit' - react - supports-color - vue - '@git.zone/tstest@3.5.0(socks@2.8.7)(typescript@5.9.3)': + '@git.zone/tstest@3.6.3(socks@2.8.7)(typescript@6.0.2)': dependencies: - '@git.zone/tsbundle': 2.9.1 - '@git.zone/tsrun': 2.0.1 + '@git.zone/tsbundle': 2.10.0 + '@git.zone/tsrun': 2.0.2 '@push.rocks/consolecolor': 2.0.3 '@push.rocks/qenv': 6.1.3 - '@push.rocks/smartbrowser': 2.0.11(typescript@5.9.3) + '@push.rocks/smartbrowser': 2.0.11(typescript@6.0.2) '@push.rocks/smartcrypto': 2.0.4 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 6.0.0 @@ -4037,18 +4279,18 @@ snapshots: '@push.rocks/smartjson': 6.0.0 '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartmongo': 5.1.0(socks@2.8.7) - '@push.rocks/smartnetwork': 4.4.0 + '@push.rocks/smartnetwork': 4.5.2 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 5.0.1 - '@push.rocks/smartserve': 2.0.1 + '@push.rocks/smartserve': 2.0.3 '@push.rocks/smartshell': 3.3.8 - '@push.rocks/smartstorage': 6.0.1 + '@push.rocks/smartstorage': 6.3.2 '@push.rocks/smarttime': 4.2.3 - '@push.rocks/smartwatch': 6.3.0 + '@push.rocks/smartwatch': 6.4.0 '@types/ws': 8.18.1 figures: 6.1.0 - ws: 8.19.0 + ws: 8.20.0 transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -4504,7 +4746,7 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@oxc-project/types@0.99.0': {} + '@oxc-project/types@0.122.0': {} '@pdf-lib/standard-fonts@1.0.0': dependencies: @@ -4675,6 +4917,15 @@ snapshots: '@types/symbol-tree': 3.2.5 symbol-tree: 3.2.4 + '@push.rocks/lik@6.4.0': + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartmatch': 2.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + '@push.rocks/smarttime': 4.2.3 + symbol-tree: 3.2.4 + '@push.rocks/mongodump@1.1.0(socks@2.8.7)': dependencies: '@push.rocks/lik': 6.2.2 @@ -4693,23 +4944,6 @@ snapshots: - snappy - socks - '@push.rocks/npmextra@5.3.3': - dependencies: - '@push.rocks/qenv': 6.1.3 - '@push.rocks/smartfile': 11.2.7 - '@push.rocks/smartjson': 5.2.0 - '@push.rocks/smartlog': 3.2.1 - '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/taskbuffer': 3.5.0 - '@tsclass/tsclass': 9.3.0 - transitivePeerDependencies: - - '@nuxt/kit' - - react - - supports-color - - vue - '@push.rocks/qenv@6.1.3': dependencies: '@api.global/typedrequest': 3.2.6 @@ -4738,11 +4972,11 @@ snapshots: - react-native-b4a - supports-color - '@push.rocks/smartbrowser@2.0.11(typescript@5.9.3)': + '@push.rocks/smartbrowser@2.0.11(typescript@6.0.2)': dependencies: '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartpdf': 4.2.0(typescript@5.9.3) - '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.3) + '@push.rocks/smartpdf': 4.2.0(typescript@6.0.2) + '@push.rocks/smartpuppeteer': 2.0.5(typescript@6.0.2) '@push.rocks/smartunique': 3.0.9 transitivePeerDependencies: - '@nuxt/kit' @@ -4801,6 +5035,23 @@ snapshots: '@push.rocks/smarturl': 3.1.0 '@push.rocks/webrequest': 3.0.37 + '@push.rocks/smartconfig@6.1.0': + dependencies: + '@push.rocks/qenv': 6.1.3 + '@push.rocks/smartfile': 11.2.7 + '@push.rocks/smartjson': 5.2.0 + '@push.rocks/smartlog': 3.2.1 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + '@push.rocks/taskbuffer': 3.5.0 + '@tsclass/tsclass': 9.3.0 + transitivePeerDependencies: + - '@nuxt/kit' + - react + - supports-color + - vue + '@push.rocks/smartcrypto@2.0.4': dependencies: '@push.rocks/smartpromise': 4.2.3 @@ -5076,14 +5327,11 @@ snapshots: - supports-color - vue - '@push.rocks/smartnetwork@4.4.0': + '@push.rocks/smartnetwork@4.5.2': dependencies: '@push.rocks/smartdns': 7.9.0 - '@push.rocks/smartping': 1.0.8 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartstring': 4.1.0 - isopen: 1.3.0 - systeminformation: 5.31.1 + '@push.rocks/smartrust': 1.3.2 + maxmind: 5.0.5 transitivePeerDependencies: - supports-color @@ -5117,17 +5365,17 @@ snapshots: '@push.rocks/smartpath@6.0.0': {} - '@push.rocks/smartpdf@4.2.0(typescript@5.9.3)': + '@push.rocks/smartpdf@4.2.0(typescript@6.0.2)': dependencies: '@push.rocks/smartbuffer': 3.0.5 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartjimp': 1.2.0 - '@push.rocks/smartnetwork': 4.4.0 + '@push.rocks/smartnetwork': 4.5.2 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.3) - '@push.rocks/smartserve': 2.0.1 + '@push.rocks/smartpuppeteer': 2.0.5(typescript@6.0.2) + '@push.rocks/smartserve': 2.0.3 '@push.rocks/smartunique': 3.0.9 '@tsclass/tsclass': 9.3.0 pdf-lib: 1.17.1 @@ -5145,18 +5393,13 @@ snapshots: - utf-8-validate - vue - '@push.rocks/smartping@1.0.8': - dependencies: - '@types/ping': 0.4.4 - ping: 0.4.4 - '@push.rocks/smartpromise@4.2.3': {} - '@push.rocks/smartpuppeteer@2.0.5(typescript@5.9.3)': + '@push.rocks/smartpuppeteer@2.0.5(typescript@6.0.2)': dependencies: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartshell': 3.3.8 - puppeteer: 24.37.5(typescript@5.9.3) + puppeteer: 24.37.5(typescript@6.0.2) tree-kill: 1.2.2 transitivePeerDependencies: - bare-abort-controller @@ -5207,7 +5450,7 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 rxjs: 7.8.2 - '@push.rocks/smartserve@2.0.1': + '@push.rocks/smartserve@2.0.3': dependencies: '@api.global/typedrequest': 3.2.6 '@cfworker/json-schema': 4.1.1 @@ -5215,20 +5458,11 @@ snapshots: '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartpath': 6.0.0 - ws: 8.19.0 + ws: 8.20.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@push.rocks/smartshell@3.3.0': - dependencies: - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartexit': 1.1.0 - '@push.rocks/smartpromise': 4.2.3 - '@types/which': 3.0.4 - tree-kill: 1.2.2 - which: 5.0.0 - '@push.rocks/smartshell@3.3.8': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -5255,11 +5489,11 @@ snapshots: '@push.rocks/smartrx': 3.0.10 '@push.rocks/webstore': 2.0.20 - '@push.rocks/smartstorage@6.0.1': + '@push.rocks/smartstorage@6.3.2': dependencies: '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartrust': 1.3.2 - '@tsclass/tsclass': 9.3.0 + '@tsclass/tsclass': 9.5.0 '@push.rocks/smartstream@3.2.5': dependencies: @@ -5296,11 +5530,12 @@ snapshots: '@types/semver': 7.7.1 semver: 7.7.4 - '@push.rocks/smartwatch@6.3.0': + '@push.rocks/smartwatch@6.4.0': dependencies: - '@push.rocks/lik': 6.2.2 + '@push.rocks/lik': 6.4.0 '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrust': 1.3.2 '@push.rocks/smartrx': 3.0.10 chokidar: 5.0.0 picomatch: 4.0.3 @@ -5369,101 +5604,104 @@ snapshots: '@pushrocks/smartpromise@4.0.2': {} - '@rolldown/binding-android-arm64@1.0.0-beta.52': + '@rolldown/binding-android-arm64@1.0.0-rc.11': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.52': + '@rolldown/binding-darwin-arm64@1.0.0-rc.11': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.52': + '@rolldown/binding-darwin-x64@1.0.0-rc.11': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.52': + '@rolldown/binding-freebsd-x64@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.52': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.52': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.52': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.52': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.11': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.52': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.11': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.11': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.11': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.11': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.52': + '@rolldown/pluginutils@1.0.0-rc.11': {} + + '@rspack/binding-darwin-arm64@1.7.10': optional: true - '@rolldown/pluginutils@1.0.0-beta.52': {} - - '@rspack/binding-darwin-arm64@1.7.6': + '@rspack/binding-darwin-x64@1.7.10': optional: true - '@rspack/binding-darwin-x64@1.7.6': + '@rspack/binding-linux-arm64-gnu@1.7.10': optional: true - '@rspack/binding-linux-arm64-gnu@1.7.6': + '@rspack/binding-linux-arm64-musl@1.7.10': optional: true - '@rspack/binding-linux-arm64-musl@1.7.6': + '@rspack/binding-linux-x64-gnu@1.7.10': optional: true - '@rspack/binding-linux-x64-gnu@1.7.6': + '@rspack/binding-linux-x64-musl@1.7.10': optional: true - '@rspack/binding-linux-x64-musl@1.7.6': - optional: true - - '@rspack/binding-wasm32-wasi@1.7.6': + '@rspack/binding-wasm32-wasi@1.7.10': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rspack/binding-win32-arm64-msvc@1.7.6': + '@rspack/binding-win32-arm64-msvc@1.7.10': optional: true - '@rspack/binding-win32-ia32-msvc@1.7.6': + '@rspack/binding-win32-ia32-msvc@1.7.10': optional: true - '@rspack/binding-win32-x64-msvc@1.7.6': + '@rspack/binding-win32-x64-msvc@1.7.10': optional: true - '@rspack/binding@1.7.6': + '@rspack/binding@1.7.10': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.7.6 - '@rspack/binding-darwin-x64': 1.7.6 - '@rspack/binding-linux-arm64-gnu': 1.7.6 - '@rspack/binding-linux-arm64-musl': 1.7.6 - '@rspack/binding-linux-x64-gnu': 1.7.6 - '@rspack/binding-linux-x64-musl': 1.7.6 - '@rspack/binding-wasm32-wasi': 1.7.6 - '@rspack/binding-win32-arm64-msvc': 1.7.6 - '@rspack/binding-win32-ia32-msvc': 1.7.6 - '@rspack/binding-win32-x64-msvc': 1.7.6 + '@rspack/binding-darwin-arm64': 1.7.10 + '@rspack/binding-darwin-x64': 1.7.10 + '@rspack/binding-linux-arm64-gnu': 1.7.10 + '@rspack/binding-linux-arm64-musl': 1.7.10 + '@rspack/binding-linux-x64-gnu': 1.7.10 + '@rspack/binding-linux-x64-musl': 1.7.10 + '@rspack/binding-wasm32-wasi': 1.7.10 + '@rspack/binding-win32-arm64-msvc': 1.7.10 + '@rspack/binding-win32-ia32-msvc': 1.7.10 + '@rspack/binding-win32-x64-msvc': 1.7.10 - '@rspack/core@1.7.6': + '@rspack/core@1.7.10': dependencies: '@module-federation/runtime-tools': 0.22.0 - '@rspack/binding': 1.7.6 + '@rspack/binding': 1.7.10 '@rspack/lite-tapable': 1.1.0 '@rspack/lite-tapable@1.1.0': {} @@ -5837,6 +6075,10 @@ snapshots: dependencies: type-fest: 4.41.0 + '@tsclass/tsclass@9.5.0': + dependencies: + type-fest: 5.5.0 + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -5844,7 +6086,7 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 source-map: 0.6.1 '@types/debug@4.1.12': @@ -5854,7 +6096,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/hast@3.0.4': dependencies: @@ -5874,7 +6116,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/mdast@4.0.4': dependencies: @@ -5888,11 +6130,11 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/node@16.9.1': {} @@ -5904,8 +6146,6 @@ snapshots: dependencies: undici-types: 7.18.2 - '@types/ping@0.4.4': {} - '@types/relateurl@0.2.33': {} '@types/semver@7.7.1': {} @@ -5914,11 +6154,11 @@ snapshots: '@types/tar-stream@3.1.4': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/through2@2.0.41': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/trusted-types@2.0.7': {} @@ -5944,11 +6184,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.19.12 + '@types/node': 25.5.0 optional: true '@ungap/structured-clone@1.3.0': {} @@ -6188,14 +6428,14 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - cosmiconfig@9.0.0(typescript@5.9.3): + cosmiconfig@9.0.0(typescript@6.0.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 croner@10.0.1: {} @@ -6319,6 +6559,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + escalade@3.2.0: {} escape-string-regexp@5.0.0: {} @@ -6690,12 +6959,8 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.5: {} - isexe@4.0.0: {} - isopen@1.3.0: {} - jackspeak@4.2.3: dependencies: '@isaacs/cliui': 9.0.0 @@ -6809,6 +7074,11 @@ snapshots: math-intrinsics@1.1.0: {} + maxmind@5.0.5: + dependencies: + mmdb-lib: 3.0.2 + tiny-lru: 11.4.7 + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -7168,6 +7438,8 @@ snapshots: mitt@3.0.1: {} + mmdb-lib@3.0.2: {} + mongodb-connection-string-url@3.0.2: dependencies: '@types/whatwg-url': 11.0.5 @@ -7369,8 +7641,6 @@ snapshots: picomatch@4.0.3: {} - ping@0.4.4: {} - pixelmatch@5.3.0: dependencies: pngjs: 6.0.0 @@ -7425,7 +7695,7 @@ snapshots: devtools-protocol: 0.0.1566079 typed-query-selector: 2.12.1 webdriver-bidi-protocol: 0.4.1 - ws: 8.19.0 + ws: 8.20.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -7434,11 +7704,11 @@ snapshots: - supports-color - utf-8-validate - puppeteer@24.37.5(typescript@5.9.3): + puppeteer@24.37.5(typescript@6.0.2): dependencies: '@puppeteer/browsers': 2.13.0 chromium-bidi: 14.0.0(devtools-protocol@0.0.1566079) - cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig: 9.0.0(typescript@6.0.2) devtools-protocol: 0.0.1566079 puppeteer-core: 24.37.5 typed-query-selector: 2.12.1 @@ -7557,25 +7827,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.52: + rolldown@1.0.0-rc.11: dependencies: - '@oxc-project/types': 0.99.0 - '@rolldown/pluginutils': 1.0.0-beta.52 + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.11 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.52 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.52 - '@rolldown/binding-darwin-x64': 1.0.0-beta.52 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.52 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.52 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.52 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.52 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.52 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.52 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.52 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.52 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.52 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.52 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.52 + '@rolldown/binding-android-arm64': 1.0.0-rc.11 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.11 + '@rolldown/binding-darwin-x64': 1.0.0-rc.11 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.11 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.11 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.11 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.11 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.11 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.11 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.11 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.11 run-async@3.0.0: {} @@ -7647,7 +7918,7 @@ snapshots: smart-buffer@4.2.0: {} - smol-toml@1.6.0: {} + smol-toml@1.6.1: {} socks-proxy-agent@8.0.5: dependencies: @@ -7731,7 +8002,7 @@ snapshots: symbol-tree@3.2.4: {} - systeminformation@5.31.1: {} + tagged-tag@1.0.0: {} tar-fs@3.1.1: dependencies: @@ -7783,6 +8054,8 @@ snapshots: dependencies: readable-stream: 3.6.2 + tiny-lru@11.4.7: {} + tiny-worker@2.3.0: dependencies: esm: 3.2.25 @@ -7839,9 +8112,13 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.5.0: + dependencies: + tagged-tag: 1.0.0 + typed-query-selector@2.12.1: {} - typescript@5.9.3: {} + typescript@6.0.2: {} uglify-js@3.19.3: {} @@ -7921,10 +8198,6 @@ snapshots: dependencies: isexe: 2.0.0 - which@5.0.0: - dependencies: - isexe: 3.1.5 - which@6.0.1: dependencies: isexe: 4.0.0 @@ -7943,7 +8216,7 @@ snapshots: wrappy@1.0.2: {} - ws@8.19.0: {} + ws@8.20.0: {} xml-parse-from-string@1.0.1: {} diff --git a/readme.md b/readme.md index a295483..6ba0f24 100644 --- a/readme.md +++ b/readme.md @@ -709,7 +709,7 @@ pnpm build # Build Rust only (debug) cd rust && cargo build -# Run all tests (82 Rust + 77 TypeScript) +# Run all tests (93 Rust + 77 TypeScript) cd rust && cargo test pnpm test ``` @@ -899,7 +899,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G ### Company Information -Task Venture Capital GmbH +Task Venture Capital GmbH Registered at District Court Bremen HRB 35230 HB, Germany For any legal inquiries or further information, please contact us via email at hello@task.vc. diff --git a/rust/tests/wg_e2e.rs b/rust/tests/wg_e2e.rs new file mode 100644 index 0000000..42071ee --- /dev/null +++ b/rust/tests/wg_e2e.rs @@ -0,0 +1,320 @@ +//! End-to-end WireGuard protocol tests over real UDP sockets. +//! +//! Entirely userspace — no root, no TUN devices. +//! Two boringtun `Tunn` instances exchange real WireGuard packets +//! over loopback UDP, validating handshake, encryption, and data flow. + +use std::net::{Ipv4Addr, SocketAddr}; +use std::time::Duration; + +use boringtun::noise::{Tunn, TunnResult}; +use boringtun::x25519::{PublicKey, StaticSecret}; +use tokio::net::UdpSocket; +use tokio::time; + +use base64::engine::general_purpose::STANDARD as BASE64; +use base64::Engine; + +use smartvpn_daemon::wireguard::generate_wg_keypair; + +// ============================================================================ +// Helpers +// ============================================================================ + +fn parse_key_pair(pub_b64: &str, priv_b64: &str) -> (PublicKey, StaticSecret) { + let pub_bytes: [u8; 32] = BASE64.decode(pub_b64).unwrap().try_into().unwrap(); + let priv_bytes: [u8; 32] = BASE64.decode(priv_b64).unwrap().try_into().unwrap(); + (PublicKey::from(pub_bytes), StaticSecret::from(priv_bytes)) +} + +fn clone_secret(priv_b64: &str) -> StaticSecret { + let priv_bytes: [u8; 32] = BASE64.decode(priv_b64).unwrap().try_into().unwrap(); + StaticSecret::from(priv_bytes) +} + +fn make_ipv4_packet(src: Ipv4Addr, dst: Ipv4Addr, payload: &[u8]) -> Vec { + let total_len = 20 + payload.len(); + let mut pkt = vec![0u8; total_len]; + pkt[0] = 0x45; + pkt[2] = (total_len >> 8) as u8; + pkt[3] = total_len as u8; + pkt[9] = 0x11; + pkt[12..16].copy_from_slice(&src.octets()); + pkt[16..20].copy_from_slice(&dst.octets()); + pkt[20..].copy_from_slice(payload); + pkt +} + +/// Send any WriteToNetwork result, then drain the tunn for more packets. +async fn send_and_drain( + tunn: &mut Tunn, + pkt: &[u8], + socket: &UdpSocket, + peer: SocketAddr, +) { + socket.send_to(pkt, peer).await.unwrap(); + let mut drain_buf = vec![0u8; 2048]; + loop { + match tunn.decapsulate(None, &[], &mut drain_buf) { + TunnResult::WriteToNetwork(p) => { socket.send_to(p, peer).await.unwrap(); } + _ => break, + } + } +} + +/// Try to receive a UDP packet and decapsulate it. Returns decrypted IP data if any. +async fn try_recv_decap( + tunn: &mut Tunn, + socket: &UdpSocket, + timeout_ms: u64, +) -> Option<(Vec, Ipv4Addr, SocketAddr)> { + let mut recv_buf = vec![0u8; 65536]; + let mut dst_buf = vec![0u8; 65536]; + + let (n, src_addr) = match time::timeout( + Duration::from_millis(timeout_ms), + socket.recv_from(&mut recv_buf), + ).await { + Ok(Ok(r)) => r, + _ => return None, + }; + + let result = tunn.decapsulate(Some(src_addr.ip()), &recv_buf[..n], &mut dst_buf); + match result { + TunnResult::WriteToNetwork(pkt) => { + send_and_drain(tunn, pkt, socket, src_addr).await; + None + } + TunnResult::WriteToTunnelV4(pkt, addr) => Some((pkt.to_vec(), addr, src_addr)), + TunnResult::WriteToTunnelV6(_, _) => None, + TunnResult::Done => None, + TunnResult::Err(_) => None, + } +} + +/// Drive the full WireGuard handshake between client and server over real UDP. +async fn do_handshake( + client_tunn: &mut Tunn, + server_tunn: &mut Tunn, + client_socket: &UdpSocket, + server_socket: &UdpSocket, + server_addr: SocketAddr, +) { + let mut buf = vec![0u8; 2048]; + let mut recv_buf = vec![0u8; 65536]; + let mut dst_buf = vec![0u8; 65536]; + + // Step 1: Client initiates handshake + match client_tunn.encapsulate(&[], &mut buf) { + TunnResult::WriteToNetwork(pkt) => { + client_socket.send_to(pkt, server_addr).await.unwrap(); + } + _ => panic!("Expected handshake init"), + } + + // Step 2: Server receives init → sends response + let (n, client_from) = server_socket.recv_from(&mut recv_buf).await.unwrap(); + match server_tunn.decapsulate(Some(client_from.ip()), &recv_buf[..n], &mut dst_buf) { + TunnResult::WriteToNetwork(pkt) => { + send_and_drain(server_tunn, pkt, server_socket, client_from).await; + } + other => panic!("Expected WriteToNetwork from server, got variant {}", variant_name(&other)), + } + + // Step 3: Client receives response + let (n, _) = client_socket.recv_from(&mut recv_buf).await.unwrap(); + match client_tunn.decapsulate(Some(server_addr.ip()), &recv_buf[..n], &mut dst_buf) { + TunnResult::WriteToNetwork(pkt) => { + send_and_drain(client_tunn, pkt, client_socket, server_addr).await; + } + TunnResult::Done => {} + _ => {} + } + + // Step 4: Process any remaining handshake packets + let _ = try_recv_decap(server_tunn, server_socket, 200).await; + let _ = try_recv_decap(client_tunn, client_socket, 100).await; + + // Step 5: Timer ticks to settle + for _ in 0..3 { + match server_tunn.update_timers(&mut dst_buf) { + TunnResult::WriteToNetwork(pkt) => { + server_socket.send_to(pkt, client_from).await.unwrap(); + } + _ => {} + } + match client_tunn.update_timers(&mut dst_buf) { + TunnResult::WriteToNetwork(pkt) => { + client_socket.send_to(pkt, server_addr).await.unwrap(); + } + _ => {} + } + let _ = try_recv_decap(server_tunn, server_socket, 50).await; + let _ = try_recv_decap(client_tunn, client_socket, 50).await; + } +} + +fn variant_name(r: &TunnResult) -> &'static str { + match r { + TunnResult::Done => "Done", + TunnResult::Err(_) => "Err", + TunnResult::WriteToNetwork(_) => "WriteToNetwork", + TunnResult::WriteToTunnelV4(_, _) => "WriteToTunnelV4", + TunnResult::WriteToTunnelV6(_, _) => "WriteToTunnelV6", + } +} + +/// Encapsulate an IP packet and send it, then loop-receive on the other side until decrypted. +async fn send_and_expect_data( + sender_tunn: &mut Tunn, + receiver_tunn: &mut Tunn, + sender_socket: &UdpSocket, + receiver_socket: &UdpSocket, + dest_addr: SocketAddr, + ip_packet: &[u8], +) -> (Vec, Ipv4Addr) { + let mut enc_buf = vec![0u8; 65536]; + + match sender_tunn.encapsulate(ip_packet, &mut enc_buf) { + TunnResult::WriteToNetwork(pkt) => { + sender_socket.send_to(pkt, dest_addr).await.unwrap(); + } + TunnResult::Err(e) => panic!("Encapsulate failed: {:?}", e), + other => panic!("Expected WriteToNetwork, got {}", variant_name(&other)), + } + + // Receive — may need a few rounds for control packets + for _ in 0..10 { + if let Some((data, addr, _)) = try_recv_decap(receiver_tunn, receiver_socket, 1000).await { + return (data, addr); + } + } + panic!("Did not receive decrypted IP packet"); +} + +// ============================================================================ +// Test 1: Single client ↔ server bidirectional data exchange +// ============================================================================ + +#[tokio::test] +async fn wg_e2e_single_client_bidirectional() { + let (server_pub_b64, server_priv_b64) = generate_wg_keypair(); + let (client_pub_b64, client_priv_b64) = generate_wg_keypair(); + + let (server_public, server_secret) = parse_key_pair(&server_pub_b64, &server_priv_b64); + let (client_public, client_secret) = parse_key_pair(&client_pub_b64, &client_priv_b64); + + let server_socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let client_socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let server_addr = server_socket.local_addr().unwrap(); + let client_addr = client_socket.local_addr().unwrap(); + + let mut server_tunn = Tunn::new(server_secret, client_public, None, None, 0, None); + let mut client_tunn = Tunn::new(client_secret, server_public, None, None, 1, None); + + do_handshake(&mut client_tunn, &mut server_tunn, &client_socket, &server_socket, server_addr).await; + + // Client → Server + let pkt_c2s = make_ipv4_packet(Ipv4Addr::new(10, 0, 0, 2), Ipv4Addr::new(10, 0, 0, 1), b"Hello from client!"); + let (decrypted, src_ip) = send_and_expect_data( + &mut client_tunn, &mut server_tunn, + &client_socket, &server_socket, + server_addr, &pkt_c2s, + ).await; + assert_eq!(src_ip, Ipv4Addr::new(10, 0, 0, 2)); + assert_eq!(&decrypted[..pkt_c2s.len()], &pkt_c2s[..]); + + // Server → Client + let pkt_s2c = make_ipv4_packet(Ipv4Addr::new(10, 0, 0, 1), Ipv4Addr::new(10, 0, 0, 2), b"Hello from server!"); + let (decrypted, src_ip) = send_and_expect_data( + &mut server_tunn, &mut client_tunn, + &server_socket, &client_socket, + client_addr, &pkt_s2c, + ).await; + assert_eq!(src_ip, Ipv4Addr::new(10, 0, 0, 1)); + assert_eq!(&decrypted[..pkt_s2c.len()], &pkt_s2c[..]); +} + +// ============================================================================ +// Test 2: Two clients ↔ one server (peer routing) +// ============================================================================ + +#[tokio::test] +async fn wg_e2e_two_clients_peer_routing() { + let (server_pub_b64, server_priv_b64) = generate_wg_keypair(); + let (client1_pub_b64, client1_priv_b64) = generate_wg_keypair(); + let (client2_pub_b64, client2_priv_b64) = generate_wg_keypair(); + + let (server_public, _) = parse_key_pair(&server_pub_b64, &server_priv_b64); + let (client1_public, client1_secret) = parse_key_pair(&client1_pub_b64, &client1_priv_b64); + let (client2_public, client2_secret) = parse_key_pair(&client2_pub_b64, &client2_priv_b64); + + // Separate server socket per peer to avoid UDP mux complexity in test + let server_socket_1 = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let server_socket_2 = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let client1_socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let client2_socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let server_addr_1 = server_socket_1.local_addr().unwrap(); + let server_addr_2 = server_socket_2.local_addr().unwrap(); + + let mut server_tunn_1 = Tunn::new(clone_secret(&server_priv_b64), client1_public, None, None, 0, None); + let mut server_tunn_2 = Tunn::new(clone_secret(&server_priv_b64), client2_public, None, None, 1, None); + let mut client1_tunn = Tunn::new(client1_secret, server_public.clone(), None, None, 2, None); + let mut client2_tunn = Tunn::new(client2_secret, server_public, None, None, 3, None); + + do_handshake(&mut client1_tunn, &mut server_tunn_1, &client1_socket, &server_socket_1, server_addr_1).await; + do_handshake(&mut client2_tunn, &mut server_tunn_2, &client2_socket, &server_socket_2, server_addr_2).await; + + // Client 1 → Server + let pkt1 = make_ipv4_packet(Ipv4Addr::new(10, 0, 0, 2), Ipv4Addr::new(10, 0, 0, 1), b"From client 1"); + let (decrypted, src_ip) = send_and_expect_data( + &mut client1_tunn, &mut server_tunn_1, + &client1_socket, &server_socket_1, + server_addr_1, &pkt1, + ).await; + assert_eq!(src_ip, Ipv4Addr::new(10, 0, 0, 2)); + assert_eq!(&decrypted[..pkt1.len()], &pkt1[..]); + + // Client 2 → Server + let pkt2 = make_ipv4_packet(Ipv4Addr::new(10, 0, 0, 3), Ipv4Addr::new(10, 0, 0, 1), b"From client 2"); + let (decrypted, src_ip) = send_and_expect_data( + &mut client2_tunn, &mut server_tunn_2, + &client2_socket, &server_socket_2, + server_addr_2, &pkt2, + ).await; + assert_eq!(src_ip, Ipv4Addr::new(10, 0, 0, 3)); + assert_eq!(&decrypted[..pkt2.len()], &pkt2[..]); +} + +// ============================================================================ +// Test 3: Preshared key handshake + data exchange +// ============================================================================ + +#[tokio::test] +async fn wg_e2e_preshared_key() { + let (server_pub_b64, server_priv_b64) = generate_wg_keypair(); + let (client_pub_b64, client_priv_b64) = generate_wg_keypair(); + + let (server_public, server_secret) = parse_key_pair(&server_pub_b64, &server_priv_b64); + let (client_public, client_secret) = parse_key_pair(&client_pub_b64, &client_priv_b64); + + let psk: [u8; 32] = rand::random(); + + let server_socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let client_socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); + let server_addr = server_socket.local_addr().unwrap(); + + let mut server_tunn = Tunn::new(server_secret, client_public, Some(psk), None, 0, None); + let mut client_tunn = Tunn::new(client_secret, server_public, Some(psk), None, 1, None); + + do_handshake(&mut client_tunn, &mut server_tunn, &client_socket, &server_socket, server_addr).await; + + let pkt = make_ipv4_packet(Ipv4Addr::new(10, 0, 0, 2), Ipv4Addr::new(10, 0, 0, 1), b"PSK-protected data"); + let (decrypted, src_ip) = send_and_expect_data( + &mut client_tunn, &mut server_tunn, + &client_socket, &server_socket, + server_addr, &pkt, + ).await; + assert_eq!(src_ip, Ipv4Addr::new(10, 0, 0, 2)); + assert_eq!(&decrypted[..pkt.len()], &pkt[..]); +} diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 4caea45..5ee388e 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartvpn', - version: '1.6.0', + version: '1.7.0', description: 'A VPN solution with TypeScript control plane and Rust data plane daemon' } diff --git a/tsconfig.json b/tsconfig.json index 1773a53..32a9e42 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,8 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "esModuleInterop": true, - "verbatimModuleSyntax": true + "verbatimModuleSyntax": true, + "types": ["node"] }, "exclude": [ "dist_ts/**/*.d.ts"