From cdd1ae2c9b3a4390ca25558c12e691d59275fec6 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Mon, 18 Aug 2025 11:29:15 +0000 Subject: [PATCH] feat: Add comprehensive query filters guide and enhance type safety for MongoDB queries - Introduced a detailed guide on query filters in the README, covering basic filtering, comparison operators, array operators, logical operators, element operators, and advanced filtering patterns. - Implemented a type-safe filtering system in `classes.doc.ts` with `MongoFilterCondition` and `MongoFilter` types to support MongoDB operators while maintaining nested type safety. - Enhanced error handling for invalid operators and conditions in the filtering logic. - Added extensive tests for various filtering scenarios, including basic, comparison, array, logical, and complex filters, ensuring robust functionality and performance. - Implemented security measures to prevent the use of dangerous operators like `$where` and validate operator usage. --- package.json | 8 +- pnpm-lock.yaml | 1766 ++++++++++++++++++++++-------------------- readme.md | 332 ++++++++ test/test.filters.ts | 604 +++++++++++++++ ts/classes.doc.ts | 128 ++- 5 files changed, 1979 insertions(+), 859 deletions(-) create mode 100644 test/test.filters.ts diff --git a/package.json b/package.json index 815c664..9e1e9d9 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "typings": "dist_ts/index.d.ts", "type": "module", "scripts": { - "test": "tstest test/ --verbose", + "test": "tstest test/ --verbose. --logfile --timeout 120", "testSearch": "tsx test/test.search.ts", "build": "tsbuild --web --allowimplicitany", "buildDocs": "tsdoc" @@ -37,10 +37,10 @@ "mongodb": "^6.18.0" }, "devDependencies": { - "@git.zone/tsbuild": "^2.6.4", + "@git.zone/tsbuild": "^2.6.7", "@git.zone/tsrun": "^1.2.44", - "@git.zone/tstest": "^2.3.2", - "@push.rocks/qenv": "^6.0.5", + "@git.zone/tstest": "^2.3.5", + "@push.rocks/qenv": "^6.1.3", "@push.rocks/tapbundle": "^6.0.3", "@types/node": "^22.15.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be2a3ba..7623e2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 3.1.8 '@push.rocks/smartmongo': specifier: ^2.0.12 - version: 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + version: 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) '@push.rocks/smartpromise': specifier: ^4.0.2 version: 4.2.3 @@ -43,23 +43,23 @@ importers: version: 9.2.0 mongodb: specifier: ^6.18.0 - version: 6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + version: 6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) devDependencies: '@git.zone/tsbuild': - specifier: ^2.6.4 - version: 2.6.4 + specifier: ^2.6.7 + version: 2.6.7 '@git.zone/tsrun': specifier: ^1.2.44 version: 1.3.3 '@git.zone/tstest': - specifier: ^2.3.2 - version: 2.3.2(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6)(typescript@5.8.3) + specifier: ^2.3.5 + version: 2.3.5(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7)(typescript@5.9.2) '@push.rocks/qenv': - specifier: ^6.0.5 - version: 6.1.0 + specifier: ^6.1.3 + version: 6.1.3 '@push.rocks/tapbundle': specifier: ^6.0.3 - version: 6.0.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + version: 6.0.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) '@types/node': specifier: ^22.15.2 version: 22.15.2 @@ -75,8 +75,8 @@ packages: '@api.global/typedrequest@3.1.10': resolution: {integrity: sha512-EiCp44XVcMjBvEs4oM1nMUaeY4ySU0Pzt3+mDwVG5DNP6EV87Nwancbr2jKScvaFNel9eeDgGtgEnFBKjOnApA==} - '@api.global/typedserver@3.0.74': - resolution: {integrity: sha512-lrXaCPaVZLihlF9w39pEqTw2kiHFCheRKTZuK07S7gTGyfdXKPmccVR/EK4ox58E1gjh9A2K8yY8ZWGcjuSJkw==} + '@api.global/typedserver@3.0.77': + resolution: {integrity: sha512-ikFR2dQcH5ErrUCAXxw6YDyfPtMyaB1sALtkA0QBCKVttoidMb8C/quQhCfzfhJxaVFGwBSCvlgQhUDR2N/zUQ==} '@api.global/typedsocket@3.0.1': resolution: {integrity: sha512-xojiAVNXtHoxkpBo8U2HHJG8FrVXXuLvDNndSHXwx4C9VslUwDn5zSCI+PdBl8iAg+ZuBmKjqkpZZ9sL6DC5yQ==} @@ -112,6 +112,10 @@ packages: resolution: {integrity: sha512-12iPziQtTolNiWFlN7Bg4jDfh1eOVB0hW6bsP1cI3JVr/IF0pVvPjQ1WEUhjTlOujC/U+JaYjw3iQ7nWKHX6vQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-s3@3.864.0': + resolution: {integrity: sha512-QGYi9bWliewxumsvbJLLyx9WC0a4DP4F+utygBcq0zwPxaM0xDfBspQvP1dsepi7mW5aAjZmJ2+Xb7X0EhzJ/g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.796.0': resolution: {integrity: sha512-EJExg8mbwqP0VG+RNFV4ZPuUo7QsDsUfTnuFQY51V8iXrbOdV+PDLRr4psXj2fxvrLxc9AlGUMNqd/j4VZtQzA==} engines: {node: '>=18.0.0'} @@ -120,6 +124,10 @@ packages: resolution: {integrity: sha512-3DZE5lx5A+MgTVS8yRBz/Ne8pWvwc7tDy4KBx5sDd93wvnDYjZW28g7W73d1dD7jfN8ZIC0REtiuNj00Ty0PBg==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.864.0': + resolution: {integrity: sha512-THiOp0OpQROEKZ6IdDCDNNh3qnNn/kFFaTSOiugDpgcE5QdsOxh1/RXq7LmHpTJum3cmnFf8jG59PHcz9Tjnlw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.796.0': resolution: {integrity: sha512-tH8Sp7lCxISVoLnkyv4AouuXs2CDlMhTuesWa0lq2NX1f+DXsMwSBtN37ttZdpFMw3F8mWdsJt27X9h2Oq868A==} engines: {node: '>=18.0.0'} @@ -128,6 +136,10 @@ packages: resolution: {integrity: sha512-6KUD82jb8Z+PWRoAwqpjFcrhcCvUlKNfUKKdkhj2yEdugem36d29avTpTPa6RiOEsfUi7CM4Yh60Qrj0pNI4xQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.864.0': + resolution: {integrity: sha512-LFUREbobleHEln+Zf7IG83lAZwvHZG0stI7UU0CtwyuhQy5Yx0rKksHNOCmlM7MpTEbSCfntEhYi3jUaY5e5lg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-cognito-identity@3.796.0': resolution: {integrity: sha512-plvMsQNWW1Jq7YRs8S6xHEbdn+kO/F+vDjCBrPaT4LhcDMsXqO/jcDNRuYOnPRBQsqjp7n7MM3oMhyY4fupa6g==} engines: {node: '>=18.0.0'} @@ -140,6 +152,10 @@ packages: resolution: {integrity: sha512-KmA5cjJU5ihR+oFJtraraeQ7aDSp3GtogSoBUKaHBsiSP7awgxuVcAWSr8wCxi0kPUjCE7kHSLTv4i9UC4soYw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.864.0': + resolution: {integrity: sha512-StJPOI2Rt8UE6lYjXUpg6tqSZaM72xg46ljPg8kIevtBAAfdtq9K20qT/kSliWGIBocMFAv0g2mC0hAa+ECyvg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.796.0': resolution: {integrity: sha512-wWOT6VAHIKOuHdKFGm1iyKvx7f6+Kc/YTzFWJPuT+l+CPlXR6ylP1UMIDsHHLKpMzsrh3CH77QDsjkhQrnKkfg==} engines: {node: '>=18.0.0'} @@ -148,6 +164,10 @@ packages: resolution: {integrity: sha512-AsMgQgYG5YwBFHAuB5y/ngwT9K2axBqJm1ZM+wBMTqPvyQ7cjnfsliCAGEY2QPIxE2prX85Bc50s1OPQVPROHg==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.864.0': + resolution: {integrity: sha512-E/RFVxGTuGnuD+9pFPH2j4l6HvrXzPhmpL8H8nOoJUosjx7d4v93GJMbbl1v/fkDLqW9qN4Jx2cI6PAjohA6OA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.796.0': resolution: {integrity: sha512-qGWBDn9aO8avFfYU7daps7Sy6OglF1x0q0w48slt0KMXbHd2/LvKVIiYwyofYCXed0yzcEOF2IYm9FjXdcn+ug==} engines: {node: '>=18.0.0'} @@ -156,6 +176,10 @@ packages: resolution: {integrity: sha512-RyyUZ7onXQdcjTnnmX3LvO3/tKsmYR9PJrLCnQQUVYlUzwref4E0ytBgk/mycxx6KHCJNVUzY4QV7s9VaUxcZA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.864.0': + resolution: {integrity: sha512-PlxrijguR1gxyPd5EYam6OfWLarj2MJGf07DvCx9MAuQkw77HBnsu6+XbV8fQriFuoJVTBLn9ROhMr/ROAYfUg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.796.0': resolution: {integrity: sha512-WeNK7OWPrsOvhO3DAgpUO0FtmVghMaZ/IpPJHJ4Y0nBIsWOBXLrbZ2Y1mdT8N2bGGUaM91tJaV8Yf8COc3gvmA==} engines: {node: '>=18.0.0'} @@ -164,6 +188,10 @@ packages: resolution: {integrity: sha512-ApRpvgB+DN4BHVmiLvXIdpFN21wBdL5p81G5cXmipJHStThAkk2N9SSG0XxhMaCpzdRWt+4JPRwR5pHiPvnxug==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.864.0': + resolution: {integrity: sha512-2BEymFeXURS+4jE9tP3vahPwbYRl0/1MVaFZcijj6pq+nf5EPGvkFillbdBRdc98ZI2NedZgSKu3gfZXgYdUhQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.796.0': resolution: {integrity: sha512-r4e8/4AdKn/qQbRVocW7oXkpoiuXdTv0qty8AASNLnbQnT1vjD1bvmP6kp4fbHPWgwY8I9h0Dqjp49uy9Bqyuw==} engines: {node: '>=18.0.0'} @@ -172,6 +200,10 @@ packages: resolution: {integrity: sha512-UN8AfjFvLGIHg2lMr4SNiOhCsDUv6uaD/XbAiRpt/u0z/xMsICxwkOawnKtHj24xGRAh+GgefMirl6QiTkbJ4Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.864.0': + resolution: {integrity: sha512-Zxnn1hxhq7EOqXhVYgkF4rI9MnaO3+6bSg/tErnBQ3F8kDpA7CFU24G1YxwaJXp2X4aX3LwthefmSJHwcVP/2g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.796.0': resolution: {integrity: sha512-RUYsQ1t6UdzkpZ7pocUt1l/9l9GCYCaopIhv0DU6CipA8rkWtoweKsLHKdv+8wE4p6gqDfDIHGam1ivswiCIzg==} engines: {node: '>=18.0.0'} @@ -180,6 +212,10 @@ packages: resolution: {integrity: sha512-oV4F1zY0o/txR9ruTCH+UlRf7LAKBiwkthsHplNJT0kVq98RtBIMrzk9DgibvjfBsJH1572wozDIc4yOpcB4YA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.864.0': + resolution: {integrity: sha512-UPyPNQbxDwHVGmgWdGg9/9yvzuedRQVF5jtMkmP565YX9pKZ8wYAcXhcYdNPWFvH0GYdB0crKOmvib+bmCuwkw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.796.0': resolution: {integrity: sha512-dpmFJT4IyjT09vruvMu/rWQQjVreqdxAe8pLPpGhoeKyA1O6+PS73b+VNXKvD31rQT8e4g6dVpA6KMxNW63aag==} engines: {node: '>=18.0.0'} @@ -188,6 +224,10 @@ packages: resolution: {integrity: sha512-INN5BNFalw68BxBFT+9sj2Yxia1XvS0+ZG0dkfFAmo8iXb2mw0o52PgqOiKlQfxnjbyOH7LgTB2hfbuuEwpKjw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.864.0': + resolution: {integrity: sha512-nNcjPN4SYg8drLwqK0vgVeSvxeGQiD0FxOaT38mV2H8cu0C5NzpvA+14Xy+W6vT84dxgmJYKk71Cr5QL2Oz+rA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-providers@3.796.0': resolution: {integrity: sha512-thZw44Bk3pS0PW81QmPfNSliX5XfXHDlWRjPYHBx+eTlPtidyD5klJkkfF5fkQlpHPeP2KNLuRnr6bRu+uMirg==} engines: {node: '>=18.0.0'} @@ -204,6 +244,10 @@ packages: resolution: {integrity: sha512-nZW9Rf4floAuxmPeik1FJ7/LwEnmWjdgoa0ls/x/KpAVM+LCbEBOV1Tcw2+jRpx3UQH4wAnJz18OFsXC+X/FAw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.864.0': + resolution: {integrity: sha512-MvakvzPZi9uyP3YADuIqtk/FAcPFkyYFWVVMf5iFs/rCdk0CUzn02Qf4CSuyhbkS6Y0KrAsMgKR4MgklPU79Wg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.775.0': resolution: {integrity: sha512-tkSegM0Z6WMXpLB8oPys/d+umYIocvO298mGvcMCncpRl77L9XkvSLJIFzaHes+o7djAgIduYw8wKIMStFss2w==} engines: {node: '>=18.0.0'} @@ -236,6 +280,10 @@ packages: resolution: {integrity: sha512-3Ppx5J31DUuaASyzAMYzSUf8y8emCLt1iaU+6yuSV/PwiCzJL5Sspos5xF2F+JErw8p8lNN+7rvHVSNqtgi2Fg==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.864.0': + resolution: {integrity: sha512-GjYPZ6Xnqo17NnC8NIQyvvdzzO7dm+Ks7gpxD/HsbXPmV2aEfuFveJXneGW9e1BheSKFff6FPDWu8Gaj2Iu1yg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-ssec@3.862.0': resolution: {integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==} engines: {node: '>=18.0.0'} @@ -248,6 +296,10 @@ packages: resolution: {integrity: sha512-AqXzUUpHM51E/cmq/h3yja+GFff7zxQFj6Fq1bVkkc4vzXBCGpyTmaMcUv4rrR/OmmWfidyzbxdy7PuhMNAspg==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.864.0': + resolution: {integrity: sha512-wrddonw4EyLNSNBrApzEhpSrDwJiNfjxDm5E+bn8n32BbAojXASH8W8jNpxz/jMgNkkJNxCfyqybGKzBX0OhbQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.796.0': resolution: {integrity: sha512-jJ8a0ldWtXh/ice7nldUjTqja7KYlSYk1pwfIIvJLIqEn2SvQHK/pyCINTmmOmFAWXMKBQBeWUMxo1pPYNytzQ==} engines: {node: '>=18.0.0'} @@ -256,6 +308,10 @@ packages: resolution: {integrity: sha512-TgVr6d1MmJz7H6RehaFevZlJ+d1KSmyftp8oi2V5FCQ4OR22ITsTxmm5cIODYk8VInaie2ZABlPCN5fs+glJuA==} engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.864.0': + resolution: {integrity: sha512-H1C+NjSmz2y8Tbgh7Yy89J20yD/hVyk15hNoZDbCYkXg0M358KS7KVIEYs8E2aPOCr1sK3HBE819D/yvdMgokA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.775.0': resolution: {integrity: sha512-40iH3LJjrQS3LKUJAl7Wj0bln7RFPEvUYKFxtP8a+oKFDO0F65F52xZxIJbPn6sHkxWDAnZlGgdjZXM3p2g5wQ==} engines: {node: '>=18.0.0'} @@ -268,6 +324,10 @@ packages: resolution: {integrity: sha512-YEi1hER4OtVpeVBO9Ts8nYekF8Q9pcr4kzPxrzXHv83i2/jraPgacHlWvNSjdg8kvY+GsevBsirZXZmThkmKBA==} engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.864.0': + resolution: {integrity: sha512-w2HIn/WIcUyv1bmyCpRUKHXB5KdFGzyxPkp/YK5g+/FuGdnFFYWGfcO8O+How4jwrZTarBYsAHW9ggoKvwr37w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.796.0': resolution: {integrity: sha512-Sxr/EqJBxOwLsXHv8C91N/Aao8Rgjn5bcpzplrTZ7wrfDrzqQfSCvjh7apCxdLYMKPBV+an75blCAd7JD4/bAg==} engines: {node: '>=18.0.0'} @@ -276,6 +336,10 @@ packages: resolution: {integrity: sha512-rGZ8QsnLWa725etzdPW2rH6+LN9eCcGsTIcxcCyh59cSgZLxT913q84WaUj6fOA7ElCOEU+WrV4Jiz4qwZI2DA==} engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.864.0': + resolution: {integrity: sha512-gTc2QHOBo05SCwVA65dUtnJC6QERvFaPiuppGDSxoF7O5AQNK0UR/kMSenwLqN8b5E1oLYvQTv3C1idJLRX0cg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.775.0': resolution: {integrity: sha512-ZoGKwa4C9fC9Av6bdfqcW6Ix5ot05F/S4VxWR2nHuMv7hzfmAjTOcUiWT7UR4hM/U0whf84VhDtXN/DWAk52KA==} engines: {node: '>=18.0.0'} @@ -328,6 +392,15 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.864.0': + resolution: {integrity: sha512-d+FjUm2eJEpP+FRpVR3z6KzMdx1qwxEYDz8jzNKwxYLBBquaBaP/wfoMtMQKAcbrR7aT9FZVZF7zDgzNxUvQlQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/xml-builder@3.862.0': resolution: {integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==} engines: {node: '>=18.0.0'} @@ -344,8 +417,11 @@ packages: resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} - '@cloudflare/workers-types@4.20250807.0': - resolution: {integrity: sha512-Zbrz9egAfwmlkUaZ1tQ+19pt5eomCJ57mAviT1HCsvnSFP1MoffMbYiU/xUomuekHtx0aVO4EacZwchCgjSvmw==} + '@borewit/text-codec@0.1.1': + resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==} + + '@cloudflare/workers-types@4.20250816.0': + resolution: {integrity: sha512-R9ADrrINo1CqTwCddH39Tjlsc3grim6KeO7l8yddNbldH3uTkaAXYCzO0WiyLG7irLzLDrZVc4tLhN6BO3tdFw==} '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} @@ -381,8 +457,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -393,8 +469,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -405,8 +481,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -417,8 +493,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -429,8 +505,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -441,8 +517,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -453,8 +529,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -465,8 +541,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -477,8 +553,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -489,8 +565,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -501,8 +577,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -513,8 +589,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -525,8 +601,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -537,8 +613,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -549,8 +625,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -561,8 +637,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -573,8 +649,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -585,8 +661,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -597,8 +673,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -609,8 +685,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -621,14 +697,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -639,8 +715,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -651,8 +727,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -663,8 +739,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -675,8 +751,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -684,24 +760,24 @@ packages: '@esm-bundle/chai@4.3.4-fix.0': resolution: {integrity: sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==} - '@git.zone/tsbuild@2.6.4': - resolution: {integrity: sha512-eeNW5hnXHU9lPzTaMbtdYDkb6cpFFC8fF5849BiwLO4N1Ga9Q5Om/6w5SZyJQcct8rHjcTgOOWdlxhjeKCr6NQ==} + '@git.zone/tsbuild@2.6.7': + resolution: {integrity: sha512-nLRYk1V4gxdEAp5mbLYNdr/in9mFA26L4MPKBKqzASID4lXSYya5sDbLRdDTv+mD0ZRBgdn6e+WMylA0SU4hSw==} hasBin: true '@git.zone/tsbundle@2.5.1': resolution: {integrity: sha512-gBskgM3ECy9FEmhCWnQahDyFCAjjw/7emjx/KYM/FOlPqGV+hmYzt368zwSlkzOGgYF8k9OZ+mp6vexDL/+f2w==} hasBin: true - '@git.zone/tspublish@1.9.1': - resolution: {integrity: sha512-aLMt2Ew75+5FfhTL6uKPtO0wT2q3gd5zwgEaP7bxgOSlfUhv19nYMp+Hq2XtYB12C1BSdhJ/OyrPEA5tx8Hv0Q==} + '@git.zone/tspublish@1.10.3': + resolution: {integrity: sha512-o2/jvNsdLC8SRdH1kQ7JjNOQNu9el0FpJ/QOW3mgiC5C9reuTp18iU4kijsVVLgvw4KZv6Z289SoKPh3HPsS0g==} hasBin: true '@git.zone/tsrun@1.3.3': resolution: {integrity: sha512-DDzWunkxXLtXJTxBf4EioXLwhuqdA2VzdTmOzWrw4Z4Qnms/YM67q36yajwNohAajPYyRz5DayU0ikrceFXyVw==} hasBin: true - '@git.zone/tstest@2.3.2': - resolution: {integrity: sha512-FwWU2yt8UBfua7JZD0Q7mUtzioOE8PQTeA6U6qhhuwjgaQq8bYm8RcwbDZD5wLQAXaniJ5SVfJcDJsyCNDjmUg==} + '@git.zone/tstest@2.3.5': + resolution: {integrity: sha512-XDzUqE2M9wmq3sUEDi/+SEg1h8N53I4ejyo9MtK5XCs8LgKtr8aQ/0/3E07uvJY6pwAvtW9iBm1LVTFjpKuAAg==} hasBin: true '@hapi/bourne@3.0.0': @@ -775,8 +851,8 @@ packages: '@mongodb-js/saslprep@1.3.0': resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==} - '@napi-rs/wasm-runtime@1.0.2': - resolution: {integrity: sha512-4pSAVWEyZMgE9q+SYkHK+UhYRo4o7P+NYZSsuuhU0wKNzV09ujaxerrbzgv6zyLoWIggJb8ql/KRzv0H9WuAZQ==} + '@napi-rs/wasm-runtime@1.0.3': + resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -821,12 +897,12 @@ packages: '@open-wc/testing@4.0.0': resolution: {integrity: sha512-KI70O0CJEpBWs3jrTju4BFCy7V/d4tFfYWkg8pMzncsDhD7TYNHLw5cy+s1FHXIgVFetnMDhPpwlKIPvtTQW7w==} - '@oxc-project/runtime@0.80.0': - resolution: {integrity: sha512-3rzy1bJAZ4s7zV9TKT60x119RwJDCDqEtCwK/Zc2qlm7wGhiIUxLLYUhE/mN91yB0u1kxm5sh4NjU12sPqQTpg==} + '@oxc-project/runtime@0.82.2': + resolution: {integrity: sha512-cYxcj5CPn/vo5QSpCZcYzBiLidU5+GlFSqIeNaMgBDtcVRBsBJHZg3pHw999W6nHamFQ1EHuPPByB26tjaJiJw==} engines: {node: '>=6.9.0'} - '@oxc-project/types@0.80.0': - resolution: {integrity: sha512-xxHQm8wfCv2e8EmtaDwpMeAHOWqgQDAYg+BJouLXSQt5oTKu9TIXrgNMGSrM2fLvKmECsRd9uUFAAD+hPyootA==} + '@oxc-project/types@0.82.2': + resolution: {integrity: sha512-WMGSwd9FsNBs/WfqIOH0h3k1LBdjZJQGYjGnC+vla/fh6HUsu5HzGPerRljiq1hgMQ6gs031YJR12VyP57b/hQ==} '@pdf-lib/standard-fonts@1.0.0': resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} @@ -834,10 +910,6 @@ packages: '@pdf-lib/upng@1.0.1': resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -858,6 +930,9 @@ packages: '@push.rocks/consolecolor@2.0.2': resolution: {integrity: sha512-IBwxCLX+YF3f5wB2N4LfuvFqm9WPlBMiEeSAfjN8YQCyYec6u1hlrR3EIj8vT300pppjeGrybJHK+GyjdGXZJw==} + '@push.rocks/consolecolor@2.0.3': + resolution: {integrity: sha512-hA+m0BMqEwZNSAS7c2aQFfoPkpX/dNdsHzkdLdeERUOy7BLacb9ItTUofGtjtginP0yDj4NSpqSjNYyX3Y8Y/w==} + '@push.rocks/early@4.0.4': resolution: {integrity: sha512-ak6/vqZ1PlFV08fSFQ6UwiBrr+K6IsfieZWWzT7eex1Ls6GvWEi8wZ3REFDPJq/qckNLWSgEy0EsqzRtltkaCA==} @@ -876,21 +951,21 @@ packages: '@push.rocks/mongodump@1.0.8': resolution: {integrity: sha512-oDufyjNBg8I50OaJvbHhc0RnRpJQ544dr9her0G6sA8JmI3hD2/amTdcPLVIX1kzYf5GsTUKeWuRaZgdNqz3ew==} - '@push.rocks/qenv@6.1.0': - resolution: {integrity: sha512-1FUFMlSVwFSFg8LbqfkzJ2LLP4lMGApUtgOpsvrde6+AxBmB4gjoNgCUH7z3xXfDAtYqcrtSELXBNE0xVL1MqQ==} + '@push.rocks/qenv@6.1.3': + resolution: {integrity: sha512-+z2hsAU/7CIgpYLFqvda8cn9rUBMHqLdQLjsFfRn5jPoD7dJ5rFlpkbhfM4Ws8mHMniwWaxGKo+q/YBhtzRBLg==} - '@push.rocks/smartarchive@3.0.8': - resolution: {integrity: sha512-1jPmR0b7hXmjYQoRiTlRXrIbZcdcFmSdGOfznufjcDpGPe86Km0d8TBnzqghTx4dTihzKC67IxAaz/DM3lvxpA==} + '@push.rocks/smartarchive@4.2.2': + resolution: {integrity: sha512-6EpqbKU32D6Gcqsc9+Tn1dOCU5HoTlrqqs/7IdUr9Tirp9Ngtptkapca1Fw/D0kVJ7SSw3kG/miAYnuPMZLEoA==} '@push.rocks/smartbrowser@2.0.8': resolution: {integrity: sha512-0KWRZj3TuKo/sNwgPbiSE6WL+TMeR19t1JmXBZWh9n8iA2mpc4HhMrQAndEUdRCkx5ofSaHWojIRVFzGChj0Dg==} + '@push.rocks/smartbucket@3.3.10': + resolution: {integrity: sha512-0H2MioALspC8Aj0Q1FPCs2w4k2u9oJg7Q5yM8+1TZo7aRfrdxgM5HQ7z3apUaqC3ZEDewW6vSlttjHFHhMEC3A==} + '@push.rocks/smartbucket@3.3.7': resolution: {integrity: sha512-RiOuEtwHJ+HFbV1nlZgh5VuMvP6PXElX6rVe7OSQsyNCBybRQa/d1qDic92+2Ejx852DGeHlyREELQCxd/a/7w==} - '@push.rocks/smartbuffer@3.0.4': - resolution: {integrity: sha512-TLfhx/JD61YC8XGO9TI6Ux6US38R14HaIM84QT8hZZod8axfXrg+h8xA8tMUBpSV8PXsQy9LzxmOq0Il1fmDXw==} - '@push.rocks/smartbuffer@3.0.5': resolution: {integrity: sha512-pWYF08Mn8s/KF/9nHRk7pZPzuMjmYVQay2c5gGexdayxn1W4eCSYYhWH73vR2JBfGeGq/izbRNuUuEaIEeTIKA==} @@ -933,15 +1008,15 @@ packages: '@push.rocks/smartfile-interfaces@1.0.7': resolution: {integrity: sha512-MeOl/200UOvSO4Pgq/DVFiBVZpL9gjOBQM+4XYNjSxda8c6VBvchHAntaFLQUlO8U1ckNaP9i+nMO4O4/0ymyw==} - '@push.rocks/smartfile@10.0.41': - resolution: {integrity: sha512-xOOy0duI34M2qrJZggpk51EHGXmg9+mBL1Q55tNiQKXzfx89P3coY1EAZG8tvmep3qB712QEKe7T+u04t42Kjg==} - '@push.rocks/smartfile@11.2.0': resolution: {integrity: sha512-0Gw6DvCQ2D/BXNN6airSC7hoSBut0p/uNWf2+rqO+D6VLhIJ/QUBvF6xm/LnpPI/zcF8YlDn/GEriInB5DUtEw==} '@push.rocks/smartfile@11.2.5': resolution: {integrity: sha512-Szmv0dFvDZBLsAOC2kJ0r0J0vZM0zqMAXT1G8XH11maU8pNYtYC1vceTpxoZGy4qbJcko7oGpgNUAlY+8LN3HA==} + '@push.rocks/smartfile@11.2.7': + resolution: {integrity: sha512-8Yp7/sAgPpWJBHohV92ogHWKzRomI5MEbSG6b5W2n18tqwfAmjMed0rQvsvGrSBlnEWCKgoOrYIIZbLO61+J0Q==} + '@push.rocks/smartguard@3.1.0': resolution: {integrity: sha512-J23q84f1O+TwFGmd4lrO9XLHUh2DaLXo9PN/9VmTWYzTkQDv5JehmifXVI0esophXcCIfbdIu6hbt7/aHlDF4A==} @@ -975,9 +1050,6 @@ packages: '@push.rocks/smartmatch@2.0.0': resolution: {integrity: sha512-MBzP++1yNIBeox71X6VxpIgZ8m4bXnJpZJ4nWVH6IWpmO38MXTu4X0QF8tQnyT4LFcwvc9iiWaD15cstHa7Mmw==} - '@push.rocks/smartmime@1.0.6': - resolution: {integrity: sha512-PHd+I4UcsnOATNg8wjDsSAmmJ4CwQFrQCNzd0HSJMs4ZpiK3Ya91almd6GLpDPU370U4HFh4FaPF4eEAI6vkJQ==} - '@push.rocks/smartmime@2.0.4': resolution: {integrity: sha512-mG6lRBLr5nF+GLZmgCcdjhdDsmTtJWBFZDCa1eJ8Au9TvUzbPW0fY5aqJBb3UwfyZzH6St8Th9cJSXjagOQkYA==} @@ -987,8 +1059,8 @@ packages: '@push.rocks/smartnetwork@4.1.2': resolution: {integrity: sha512-TjucG72ooHgzAUpNu2LAv4iFoettmZq2aEWhhzIa7AKcOvt4yxsk3Vl73guhKRohTfhdRauPcH5OHISLUHJbYA==} - '@push.rocks/smartnpm@2.0.4': - resolution: {integrity: sha512-ljRPqnUsXzL5qnuAEt5POy0NnfKs7eYPuuJPJjYiK9VUdP/CyF4h14qTB4H816vNEuF7VU/ASRtz0qDlXmrztg==} + '@push.rocks/smartnpm@2.0.6': + resolution: {integrity: sha512-7anKDOjX6gXWs1IAc+YWz9ZZ8gDsTwaLh+CxRnGHjAawOmK788NrrgVCg2Fb3qojrPnoxecc46F8Ivp1BT7Izw==} '@push.rocks/smartntml@2.0.8': resolution: {integrity: sha512-LIYeOQbmav2m2kZQz4pGS74xvWAm4YAGQnbPkofA2oas4RW9SGR1JTRpFd9pxGCOXd6djYdNGsZZ/xz+k/vRPQ==} @@ -1026,6 +1098,9 @@ packages: '@push.rocks/smartrequest@2.1.0': resolution: {integrity: sha512-3eHLTRInHA+u+W98TqJwgTES7rRimBAsJC4JxVNQC3UUezmblAhM5/TIQsEBQTsbjAY8SeQKy6NHzW6iTiaD8w==} + '@push.rocks/smartrequest@4.2.2': + resolution: {integrity: sha512-OMtSyxvuOw04nRR/97yAF3XLe42QDyuwStQMo2bXrVvXgcriNyn0JFavl0IL5hY6Gb+dyCWgOAUwX7cVZ4DzZg==} + '@push.rocks/smartrouter@1.3.3': resolution: {integrity: sha512-1+xZEnWlhzqLWAaJ1zFNhQ0zgbfCWQl1DBT72LygLxTs+P0K8AwJKgqo/IX6CT55kGCFnPAZIYSbVJlGsgrB0w==} @@ -1035,9 +1110,15 @@ packages: '@push.rocks/smarts3@2.2.5': resolution: {integrity: sha512-OZjD0jBCUTJCLnwraxBcyZ3he5buXf2OEM1zipiTBChA2EcKUZWKk/a6KR5WT+NlFCIIuB23UG+U+cxsIWM91Q==} + '@push.rocks/smarts3@2.2.6': + resolution: {integrity: sha512-f2i2keHs+KZr5cyB8nBOnmRGiE2YG42W4pSx+8gmZEsf8yZUT1iUnuD/YZVTKosH2v5dPCKdmtSpMSux8Q/tCw==} + '@push.rocks/smartshell@3.2.3': resolution: {integrity: sha512-BWA/DH1H9lG7Er23d4uYgirfYaya5dX4g/WpWm2la7mOzuL9o2FnPIhel52DQUKIh7ty3Ql305ApV8YaAb4+/w==} + '@push.rocks/smartshell@3.3.0': + resolution: {integrity: sha512-m0w618H6YBs+vXGz1CgS4nPi5CUAnqRtckcS9/koGwfcIx1IpjqmiP47BoCTbdgcv0IPUxQVBG1IXTHPuZ8Z5g==} + '@push.rocks/smartsitemap@2.0.3': resolution: {integrity: sha512-jIcms8V1b2mt3dS4PKNlLR1DRC8pCDWMRVbnyM/2+snZOJZonQRlQzAyX8No0EfLbfdrfnxv2IjPX13X29Re6g==} @@ -1047,11 +1128,8 @@ packages: '@push.rocks/smartspawn@3.0.3': resolution: {integrity: sha512-DyrGPV69wwOiJgKkyruk5hS3UEGZ99xFAqBE9O2nM8VXCRLbbty3xt1Ug5Z092ZZmJYaaGMSnMw3ijyZJFCT0Q==} - '@push.rocks/smartstate@2.0.25': - resolution: {integrity: sha512-gWmbDCx5esezHDQnD2nOClxeTiWtvU1wEdP0XbheCcXzaGEv0H8apRjQBksRZJd9FC3ezrJU00GLh0eH9rPyMQ==} - - '@push.rocks/smartstream@2.0.8': - resolution: {integrity: sha512-GlF/9cCkvBHwKa3DK4DO5wjfSgqkj6gAS4TrY9uD5NMHu9RQv4WiNrElTYj7iCEpnZgUnLO3tzw1JA3NRIMnnA==} + '@push.rocks/smartstate@2.0.26': + resolution: {integrity: sha512-lMcf0ZWWs9jej9wjapuonuIZiQNiD9NcAcvRDFXq7GtQf/HUyr6zr5K1XxGZaCIGyYrbYnBHBpNU+8DBoarHrA==} '@push.rocks/smartstream@3.2.5': resolution: {integrity: sha512-PLGGIFDy8JLNVUnnntMSIYN4W081YSbNC7Y/sWpvUT8PAXtbEXXUiDFgK5o3gcI0ptpKQxHAwxhzNlPj0sbFVg==} @@ -1203,78 +1281,78 @@ packages: resolution: {integrity: sha512-6KGnf2vHR7hW4mQpAD7gkDVL3QVML3jb/No/Uw+qCqvs0TaQr60Yjm+CXoLxJNCKwmrL+I1yx8mhAHBHfYJiJA==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smarturl - '@rolldown/binding-android-arm64@1.0.0-beta.31': - resolution: {integrity: sha512-0mFtKwOG7smn0HkvQ6h8j0m/ohkR7Fp5eMTJ2Pns/HSbePHuDpxMaQ4TjZ6arlVXxpeWZlAHeT5BeNsOA3iWTg==} + '@rolldown/binding-android-arm64@1.0.0-beta.33': + resolution: {integrity: sha512-xhDQXKftRkEULIxCddrKMR8y0YO/Y+6BKk/XrQP2B29YjV2wr8DByoEz+AHX9BfLHb2srfpdN46UquBW2QXWpQ==} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.31': - resolution: {integrity: sha512-BHfHJ8Nb5G7ZKJl6pimJacupONT4F7w6gmQHw41rouAnJF51ORDwGefWeb6OMLzGmJwzxlIVPERfnJf1EsMM7A==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.33': + resolution: {integrity: sha512-7lhhY08v5ZtRq8JJQaJ49fnJombAPnqllKKCDLU/UvaqNAOEyTGC8J1WVOLC4EA4zbXO5U3CCRgVGyAFNH2VtQ==} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.31': - resolution: {integrity: sha512-4MiuRtExC08jHbSU/diIL+IuQP+3Ck1FbWAplK+ysQJ7fxT3DMxy5FmnIGfmhaqow8oTjb2GEwZJKgTRjZL1Vw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.33': + resolution: {integrity: sha512-U2iGjcDV7NWyYyhap8YuY0nwrLX6TvX/9i7gBtdEMPm9z3wIUVGNMVdGlA43uqg7xDpRGpEqGnxbeDgiEwYdnA==} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.31': - resolution: {integrity: sha512-nffC1u7ccm12qlAea8ExY3AvqlaHy/o/3L4p5Es8JFJ3zJSs6e3DyuxGZZVdl9EVwsLxPPTvioIl4tEm2afwyw==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.33': + resolution: {integrity: sha512-gd6ASromVHFLlzrjJWMG5CXHkS7/36DEZ8HhvGt2NN8eZALCIuyEx8HMMLqvKA7z4EAztVkdToVrdxpGMsKZxw==} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.31': - resolution: {integrity: sha512-LHmAaB3rB1GOJuHscKcL2Ts/LKLcb3YWTh2uQ/876rg/J9WE9kQ0kZ+3lRSYbth/YL8ln54j4JZmHpqQY3xptQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.33': + resolution: {integrity: sha512-xmeLfkfGthuynO1EpCdyTVr0r4G+wqvnKCuyR6rXOet+hLrq5HNAC2XtP/jU2TB4Bc6aiLYxl868B8CGtFDhcw==} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.31': - resolution: {integrity: sha512-oTDZVfqIAjLB2I1yTiLyyhfPPO6dky33sTblxTCpe+ZT55WizN3KDoBKJ4yXG8shI6I4bRShVu29Xg0yAjyQYw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.33': + resolution: {integrity: sha512-cHGp8yfHL4pes6uaLbO5L58ceFkUK4efd8iE86jClD1QPPDLKiqEXJCFYeuK3OfODuF5EBOmf0SlcUZNEYGdmw==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.31': - resolution: {integrity: sha512-duJ3IkEBj9Xe9NYW1n8Y3483VXHGi8zQ0ZsLbK8464EJUXLF7CXM8Ry+jkkUw+ZvA+Zu1E/+C6p2Y6T9el0C9g==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.33': + resolution: {integrity: sha512-wZ1t7JAvVeFgskH1L9y7c47ITitPytpL0s8FmAT8pVfXcaTmS58ZyoXT+y6cz8uCkQnETjrX3YezTGI18u3ecg==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.31': - resolution: {integrity: sha512-qdbmU5QSZ0uoLZBYMxiHsMQmizqtzFGTVPU5oyU1n0jU0Mo+mkSzqZuL8VBnjHOHzhVxZsoAGH9JjiRzCnoGVA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.33': + resolution: {integrity: sha512-cDndWo3VEYbm7yeujOV6Ie2XHz0K8YX/R/vbNmMo03m1QwtBKKvbYNSyJb3B9+8igltDjd8zNM9mpiNNrq/ekQ==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.33': + resolution: {integrity: sha512-bl7uzi6es/l6LT++NZcBpiX43ldLyKXCPwEZGY1rZJ99HQ7m1g3KxWwYCcGxtKjlb2ExVvDZicF6k+96vxOJKg==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.33': + resolution: {integrity: sha512-TrgzQanpLgcmmzolCbYA9BPZgF1gYxkIGZhU/HROnJPsq67gcyaYw/JBLioqQLjIwMipETkn25YY799D2OZzJA==} cpu: [arm64] os: [openharmony] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.31': - resolution: {integrity: sha512-H7+r34TSV8udB2gAsebFM/YuEeNCkPGEAGJ1JE7SgI9XML6FflqcdKfrRSneQFsPaom/gCEc1g0WW5MZ0O3blw==} - cpu: [x64] - os: [linux] - - '@rolldown/binding-linux-x64-musl@1.0.0-beta.31': - resolution: {integrity: sha512-zRm2YmzFVqbsmUsyyZnHfJrOlQUcWS/FJ5ZWL8Q1kZh5PnLBrTVZNpakIWwAxpN5gNEi9MmFd5YHocVJp8ps1Q==} - cpu: [x64] - os: [linux] - - '@rolldown/binding-wasm32-wasi@1.0.0-beta.31': - resolution: {integrity: sha512-fM1eUIuHLsNJXRlWOuIIex1oBJ89I0skFWo5r/D3KSJ5gD9MBd3g4Hp+v1JGohvyFE+7ylnwRxSUyMEeYpA69A==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.33': + resolution: {integrity: sha512-z0LltdUfvoKak9SuaLz/M9AVSg+RTOZjFksbZXzC6Svl1odyW4ai21VHhZy3m2Faeeb/rl/9efVLayj+qYEGxw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.31': - resolution: {integrity: sha512-4nftR9V2KHH3zjBwf6leuZZJQZ7v0d70ogjHIqB3SDsbDLvVEZiGSsSn2X6blSZRZeJSFzK0pp4kZ67zdZXwSw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.33': + resolution: {integrity: sha512-CpvOHyqDNOYx9riD4giyXQDIu72bWRU2Dwt1xFSPlBudk6NumK0OJl6Ch+LPnkp5podQHcQg0mMauAXPVKct7g==} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.31': - resolution: {integrity: sha512-0TQcKu9xZVHYALit+WJsSuADGlTFfOXhnZoIHWWQhTk3OgbwwbYcSoZUXjRdFmR6Wswn4csHtJGN1oYKeQ6/2g==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.33': + resolution: {integrity: sha512-/tNTvZTWHz6HiVuwpR3zR0kGIyCNb+/tFhnJmti+Aw2fAXs3l7Aj0DcXd0646eFKMX8L2w5hOW9H08FXTUkN0g==} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.31': - resolution: {integrity: sha512-3zMICWwpZh1jrkkKDYIUCx/2wY3PXLICAS0AnbeLlhzfWPhCcpNK9eKhiTlLAZyTp+3kyipoi/ZSVIh+WDnBpQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.33': + resolution: {integrity: sha512-Bb2qK3z7g2mf4zaKRvkohHzweaP1lLbaoBmXZFkY6jJWMm0Z8Pfnh8cOoRlH1IVM1Ufbo8ZZ1WXp1LbOpRMtXw==} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.31': - resolution: {integrity: sha512-IaDZ9NhjOIOkYtm+hH0GX33h3iVZ2OeSUnFF0+7Z4+1GuKs4Kj5wK3+I2zNV9IPLfqV4XlwWif8SXrZNutxciQ==} + '@rolldown/pluginutils@1.0.0-beta.33': + resolution: {integrity: sha512-she25NCG6NoEPC/SEB4pHs5STcnfI4VBFOzjeI63maSPrWME5J2XC8ogrBgp8NaE/xzj28/kbpSaebiMvFRj+w==} '@rspack/binding-darwin-arm64@1.4.11': resolution: {integrity: sha512-PrmBVhR8MC269jo6uQ+BMy1uwIDx0HAJYLQRQur8gXiehWabUBCRg/d4U9KR7rLzdaSScRyc5JWXR52T7/4MfA==} @@ -1693,6 +1771,10 @@ packages: '@tempfix/idb@8.0.3': resolution: {integrity: sha512-hPJQKO7+oAIY+pDNImrZ9QAINbz9KmwT+yO4iRVwdPanok2YKpaUxdJzIvCUwY0YgAawlvYdffbLvRLV5hbs2g==} + '@tokenizer/inflate@0.2.7': + resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==} + engines: {node: '>=18'} + '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -1778,9 +1860,6 @@ packages: resolution: {integrity: sha512-vsxcbfLDdjytnCnHXtinE40Xl46Wr7l/VGRGt7ewJwCPMKEHOdEsTxXX8xwgoR7cbc+6dE8SB4jlMrOV2zAg7g==} deprecated: This is a stub types definition. fast-json-stable-stringify provides its own type definitions, so you do not need this installed. - '@types/from2@2.3.5': - resolution: {integrity: sha512-giavnjf3kNlJnE+HpZA1CQ3UKHxgehzsTuIMGda8pGMbOiLYGVNADEskey44OZcADHm/HOoBany8IV+0x28XFw==} - '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} @@ -1793,9 +1872,6 @@ packages: '@types/glob@8.1.0': resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - '@types/gunzip-maybe@1.4.2': - resolution: {integrity: sha512-2uqXZg1jTCKE1Pjbab8qb74+f2+i9h/jz8rQ+jRR+zaNJF75zWwrpbX8/TjF4m56m3KFOg9umHdCJ074KwiVxg==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -1907,8 +1983,8 @@ packages: '@types/symbol-tree@3.2.5': resolution: {integrity: sha512-zXnnyENt1TYQcS21MkPaJCVjfcPq7p7yc5mo5JACuumXp6sly5jnlS0IokHd+xmmuCbx6V7JqkMBpswR+nZAcw==} - '@types/tar-stream@2.2.3': - resolution: {integrity: sha512-if3mugZfjVkXOMZdFjIHySxY13r6GXPpyOlsDmLffvyI7tLz9wXE8BFjNivXsvUeyJ1KNlOpfLnag+ISmxgxPw==} + '@types/tar-stream@3.1.4': + resolution: {integrity: sha512-921gW0+g29mCJX0fRvqeHzBlE/XclDaAG0Ousy1LCghsOhvaKacDeRGEVzQP9IPfKn8Vysy7FEXAIxycpc/CMg==} '@types/through2@2.0.41': resolution: {integrity: sha512-ryQ0tidWkb1O1JuYvWKyMLYEtOWDqF5mHerJzKz/gQpoAaJq2l/dsMPBF0B5BNVT34rbARYJ5/tsZwLfUi2kwQ==} @@ -2043,9 +2119,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-flatten@1.1.1: - resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} - array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -2083,11 +2156,11 @@ packages: bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-events@2.6.0: - resolution: {integrity: sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==} + bare-events@2.6.1: + resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} - bare-fs@4.1.6: - resolution: {integrity: sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==} + bare-fs@4.2.0: + resolution: {integrity: sha512-oRfrw7gwwBVAWx9S5zPMo2iiOjxyiZE12DmblmMQREgcogbNO0AFaZ+QBxxkEXiPspcpvO/Qtqn8LabUx4uYXg==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -2102,8 +2175,8 @@ packages: bare-path@3.0.0: resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.6.5: - resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} peerDependencies: bare-buffer: '*' bare-events: '*' @@ -2124,10 +2197,6 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} engines: {node: '>=18'} @@ -2151,9 +2220,6 @@ packages: broadcast-channel@7.1.0: resolution: {integrity: sha512-InJljddsYWbEL8LBnopnCg+qMQp9KcowvYWOt4YWrjD5HmxzDYKdVbDS1w/ji5rFZdRD58V5UxJPtBdpEbEJYw==} - browserify-zlib@0.1.4: - resolution: {integrity: sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=} - bson@4.7.2: resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==} engines: {node: '>=6.9.0'} @@ -2165,9 +2231,6 @@ packages: buffer-crc32@0.2.13: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-json@2.0.0: resolution: {integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==} @@ -2247,12 +2310,8 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chromium-bidi@7.2.0: - resolution: {integrity: sha512-gREyhyBstermK+0RbcJLbFhcQctg92AGgDe/h/taMJEOLRdtSswBAO9KmvltFSQWgM2LrwWu5SIuEUbdm3JsyQ==} + chromium-bidi@7.3.1: + resolution: {integrity: sha512-i+BMGluhZZc4Jic9L1aHJBTfaopxmCqQxGklyMcqFx4fvF3nI4BJ3bCe1ad474nvYRIo/ZN/VrdA4eOaRZua4Q==} peerDependencies: devtools-protocol: '*' @@ -2356,17 +2415,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} - cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -2375,9 +2427,6 @@ packages: resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} engines: {node: '>= 0.8'} - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -2423,14 +2472,6 @@ packages: debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2561,9 +2602,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2642,8 +2680,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} engines: {node: '>=18'} hasBin: true @@ -2711,10 +2749,6 @@ packages: resolution: {integrity: sha1-AbK0mK5v0uQRUrIrV6Phc3c69n4=} engines: {node: '>=0.2.2'} - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - express@5.1.0: resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} engines: {node: '>= 18'} @@ -2731,8 +2765,8 @@ packages: resolution: {integrity: sha512-cB507r5T3D55DfclY01GLkninZLfU7HXV/mhVRTnTRm5k2u+fY7Fof2dBkr80p5t7G7dlA/G5dI87QiMdPpMCQ==} engines: {node: '>=18'} - fake-indexeddb@6.0.1: - resolution: {integrity: sha512-He2AjQGHe46svIFq5+L2Nx/eHDTI1oKgoevBP+TthnjymXiKkeJQ3+ITeWey99Y5+2OaPFbI1qEsx/5RsGtWnQ==} + fake-indexeddb@6.1.0: + resolution: {integrity: sha512-gOzajWIhEug/CQHUIxigKT9Zilh5/I6WvUBez6/UdUtT/YVEHM9r572Os8wfvhp7TkmgBtRNdqSM7YoCXWMzZg==} engines: {node: '>=18'} fast-deep-equal@3.1.3: @@ -2780,6 +2814,9 @@ packages: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -2788,14 +2825,14 @@ packages: resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==} engines: {node: '>=18'} + file-type@21.0.0: + resolution: {integrity: sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==} + engines: {node: '>=20'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - finalhandler@2.1.0: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} @@ -2856,9 +2893,6 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - from2@2.3.0: - resolution: {integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=} - fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -2875,10 +2909,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs.realpath@1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} @@ -2929,10 +2959,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@11.0.1: resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} engines: {node: 20 || >=22} @@ -2968,10 +2994,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true - happy-dom@15.11.7: resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} engines: {node: '>=18.0.0'} @@ -3103,6 +3125,10 @@ packages: resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} engines: {node: '>=10'} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -3125,9 +3151,6 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-deflate@1.0.0: - resolution: {integrity: sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -3149,10 +3172,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-gzip@1.0.0: - resolution: {integrity: sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=} - engines: {node: '>=0.10.0'} - is-ip@3.1.0: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} @@ -3212,9 +3231,6 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} - isarray@1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} - isbinaryfile@5.0.4: resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} engines: {node: '>= 18.0.0'} @@ -3241,9 +3257,6 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.0: resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} engines: {node: 20 || >=22} @@ -3275,6 +3288,9 @@ packages: js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3428,9 +3444,6 @@ packages: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.2: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} @@ -3525,9 +3538,6 @@ packages: memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -3650,11 +3660,6 @@ packages: resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mime@4.0.6: resolution: {integrity: sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==} engines: {node: '>=16'} @@ -3694,22 +3699,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -3763,9 +3756,6 @@ packages: socks: optional: true - ms@2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3904,9 +3894,6 @@ packages: resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} - pako@0.2.9: - resolution: {integrity: sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=} - pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -3955,17 +3942,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -3990,9 +3970,6 @@ packages: resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} engines: {node: '>=14.16'} - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - pend@1.2.0: resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} @@ -4031,9 +4008,6 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -4059,15 +4033,9 @@ packages: resolution: {integrity: sha512-DdNcqcIbI0wEeCBcqX+bmZpUCvrDMJHXE553zgyG1MZ8S1a/iCCxmK9iTjjql+SpHSv4cZkmRv5/zGYW93AlCw==} engines: {node: '>=18'} - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - punycode@1.4.1: resolution: {integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4=} @@ -4075,19 +4043,15 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@24.16.0: - resolution: {integrity: sha512-tZ0tJiOYaDGTRzzr2giDpf8O/55JsoqkrafS1Xu4H6S8oP4eeL6RbZzY9OzjShSf5EQvx/zAc55QKpDqzXos/Q==} + puppeteer-core@24.16.2: + resolution: {integrity: sha512-areKSSQzpoHa5nCk3uD/o504yjrW5ws0N6jZfdFZ3a4H+Q7NBgvuDydjN5P87jN4Rj+eIpLcK3ELOThTtYuuxg==} engines: {node: '>=18'} - puppeteer@24.16.0: - resolution: {integrity: sha512-5qxFGOpdAzYexoPwKPEF4L/IYKYOFE1MxWsqcp7K33HySM8N8S/yZwSQCaV0rzmJsTLX5LxU4zt65+ceNiVDgQ==} + puppeteer@24.16.2: + resolution: {integrity: sha512-eNjKzwjITM4Lvho6iHb+VQamadUBgc8TsjAApsKi5N8DXipxAaAZWssBOFsrIOLo4eYWYj0Qk5gmr4wBSqzJWw==} engines: {node: '>=18'} hasBin: true - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - qs@6.14.0: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} @@ -4122,9 +4086,6 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -4201,8 +4162,8 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - rolldown@1.0.0-beta.31: - resolution: {integrity: sha512-M2Q+RfG0FMJeSW3RSFTbvtjGVTcQpTQvN247D0EMSsPkpZFoinopR9oAnQiwgogQyzDuvKNnbyCbQQlmNAzSoQ==} + rolldown@1.0.0-beta.33: + resolution: {integrity: sha512-mgu118ZuRguC8unhPCbdZbyRbjQfEMiWqlojBA5aRIncBelRaBomnHNpGKYkYWeK7twRz5Cql30xgqqrA3Xelw==} hasBin: true router@2.2.0: @@ -4223,9 +4184,6 @@ packages: engines: {node: '>=8.3.0'} hasBin: true - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -4257,18 +4215,10 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - send@1.2.0: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - serve-static@2.2.0: resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} engines: {node: '>= 18'} @@ -4352,8 +4302,8 @@ packages: resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - socks@2.8.6: - resolution: {integrity: sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==} + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} source-map@0.6.1: @@ -4399,9 +4349,6 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - streamsearch@0.1.2: resolution: {integrity: sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=} engines: {node: '>=0.8.0'} @@ -4420,9 +4367,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4455,6 +4399,10 @@ packages: strnum@2.1.1: resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + strtok3@10.3.4: + resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} + engines: {node: '>=18'} + strtok3@9.1.1: resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} engines: {node: '>=16'} @@ -4489,10 +4437,6 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -4502,12 +4446,12 @@ packages: threads@1.7.0: resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + through@2.3.8: + resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + time-span@5.1.0: resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} engines: {node: '>=12'} @@ -4527,6 +4471,10 @@ packages: resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==} engines: {node: '>=14.16'} + token-types@6.1.1: + resolution: {integrity: sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==} + engines: {node: '>=14.16'} + tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -4567,8 +4515,8 @@ packages: turndown-plugin-gfm@1.0.2: resolution: {integrity: sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==} - turndown@7.2.0: - resolution: {integrity: sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==} + turndown@7.2.1: + resolution: {integrity: sha512-7YiPJw6rLClQL3oUKN3KgMaXeJJ2lAyZItclgKDurqnH61so4k4IH/qwmMva0zpuJc/FhRExBBnk7EbeFANlgQ==} type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -4598,6 +4546,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -4607,6 +4560,10 @@ packages: resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} engines: {node: '>=18'} + uint8array-extras@1.4.1: + resolution: {integrity: sha512-+NWHrac9dvilNgme+gP4YrBSumsaMZP0fNBtXXFIf33RLLKEcBUKaQZ7ULUbS0sBfcjxIZ4V96OTRkCbM7hxpw==} + engines: {node: '>=18'} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -4653,10 +4610,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} - engines: {node: '>= 0.4.0'} - uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -4776,17 +4729,10 @@ packages: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -4823,26 +4769,26 @@ snapshots: '@api.global/typedrequest-interfaces': 3.0.19 '@push.rocks/isounique': 1.0.5 '@push.rocks/lik': 6.2.2 - '@push.rocks/smartbuffer': 3.0.4 + '@push.rocks/smartbuffer': 3.0.5 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartguard': 3.1.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/webrequest': 3.0.37 '@push.rocks/webstream': 1.0.10 - '@api.global/typedserver@3.0.74': + '@api.global/typedserver@3.0.77': dependencies: '@api.global/typedrequest': 3.1.10 '@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedsocket': 3.0.1 - '@cloudflare/workers-types': 4.20250807.0 + '@cloudflare/workers-types': 4.20250816.0 '@design.estate/dees-comms': 1.0.27 '@push.rocks/lik': 6.2.2 '@push.rocks/smartchok': 1.1.1 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.13 '@push.rocks/smartfeed': 1.0.11 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartlog': 3.1.8 '@push.rocks/smartlog-destination-devtools': 1.0.12 @@ -4852,9 +4798,9 @@ snapshots: '@push.rocks/smartmime': 2.0.4 '@push.rocks/smartntml': 2.0.8 '@push.rocks/smartopen': 2.0.0 - '@push.rocks/smartpath': 5.1.0 + '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 2.1.0 + '@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartsitemap': 2.0.3 '@push.rocks/smartstream': 3.2.5 @@ -4862,11 +4808,11 @@ snapshots: '@push.rocks/taskbuffer': 3.1.7 '@push.rocks/webrequest': 3.0.37 '@push.rocks/webstore': 2.0.20 - '@tsclass/tsclass': 8.2.1 + '@tsclass/tsclass': 9.2.0 '@types/express': 5.0.3 - body-parser: 1.20.3 + body-parser: 2.2.0 cors: 2.8.5 - express: 4.21.2 + express: 5.1.0 express-force-ssl: 0.3.2 lit: 3.3.1 transitivePeerDependencies: @@ -5050,6 +4996,69 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-s3@3.864.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-node': 3.864.0 + '@aws-sdk/middleware-bucket-endpoint': 3.862.0 + '@aws-sdk/middleware-expect-continue': 3.862.0 + '@aws-sdk/middleware-flexible-checksums': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-location-constraint': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-sdk-s3': 3.864.0 + '@aws-sdk/middleware-ssec': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/signature-v4-multi-region': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@aws-sdk/xml-builder': 3.862.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/eventstream-serde-browser': 4.0.5 + '@smithy/eventstream-serde-config-resolver': 4.1.3 + '@smithy/eventstream-serde-node': 4.0.5 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-blob-browser': 4.0.5 + '@smithy/hash-node': 4.0.5 + '@smithy/hash-stream-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/md5-js': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.7 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso@3.796.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -5137,6 +5146,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.864.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.796.0': dependencies: '@aws-sdk/types': 3.775.0 @@ -5170,6 +5222,24 @@ snapshots: fast-xml-parser: 5.2.5 tslib: 2.8.1 + '@aws-sdk/core@3.864.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@aws-sdk/xml-builder': 3.862.0 + '@smithy/core': 3.8.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-utf8': 4.0.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + '@aws-sdk/credential-provider-cognito-identity@3.796.0': dependencies: '@aws-sdk/client-cognito-identity': 3.796.0 @@ -5198,6 +5268,14 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.796.0': dependencies: '@aws-sdk/core': 3.796.0 @@ -5225,6 +5303,19 @@ snapshots: '@smithy/util-stream': 4.2.4 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.796.0': dependencies: '@aws-sdk/core': 3.796.0 @@ -5262,6 +5353,24 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-env': 3.864.0 + '@aws-sdk/credential-provider-http': 3.864.0 + '@aws-sdk/credential-provider-process': 3.864.0 + '@aws-sdk/credential-provider-sso': 3.864.0 + '@aws-sdk/credential-provider-web-identity': 3.864.0 + '@aws-sdk/nested-clients': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.796.0': dependencies: '@aws-sdk/credential-provider-env': 3.796.0 @@ -5297,6 +5406,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.864.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.864.0 + '@aws-sdk/credential-provider-http': 3.864.0 + '@aws-sdk/credential-provider-ini': 3.864.0 + '@aws-sdk/credential-provider-process': 3.864.0 + '@aws-sdk/credential-provider-sso': 3.864.0 + '@aws-sdk/credential-provider-web-identity': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.796.0': dependencies: '@aws-sdk/core': 3.796.0 @@ -5316,6 +5442,15 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.796.0': dependencies: '@aws-sdk/client-sso': 3.796.0 @@ -5343,6 +5478,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.864.0': + dependencies: + '@aws-sdk/client-sso': 3.864.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/token-providers': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.796.0': dependencies: '@aws-sdk/core': 3.796.0 @@ -5366,6 +5514,17 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-web-identity@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/nested-clients': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-providers@3.796.0': dependencies: '@aws-sdk/client-cognito-identity': 3.796.0 @@ -5424,6 +5583,22 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@aws-sdk/middleware-flexible-checksums@3.864.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.775.0': dependencies: '@aws-sdk/types': 3.775.0 @@ -5490,6 +5665,23 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/core': 3.8.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + '@aws-sdk/middleware-ssec@3.862.0': dependencies: '@aws-sdk/types': 3.862.0 @@ -5517,6 +5709,16 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@smithy/core': 3.8.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + '@aws-sdk/nested-clients@3.796.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -5604,6 +5806,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.864.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/region-config-resolver@3.775.0': dependencies: '@aws-sdk/types': 3.775.0 @@ -5632,6 +5877,15 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.864.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.796.0': dependencies: '@aws-sdk/nested-clients': 3.796.0 @@ -5656,6 +5910,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/nested-clients': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.775.0': dependencies: '@smithy/types': 4.2.0 @@ -5726,6 +5992,14 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.864.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.862.0': dependencies: '@smithy/types': 4.3.2 @@ -5743,7 +6017,9 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@cloudflare/workers-types@4.20250807.0': {} + '@borewit/text-codec@0.1.1': {} + + '@cloudflare/workers-types@4.20250816.0': {} '@colors/colors@1.6.0': {} @@ -5775,7 +6051,7 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrouter': 1.3.3 '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartstate': 2.0.25 + '@push.rocks/smartstate': 2.0.26 '@push.rocks/smartstring': 4.0.15 '@push.rocks/smarturl': 3.1.0 '@push.rocks/webrequest': 3.0.37 @@ -5821,180 +6097,181 @@ snapshots: '@esbuild/aix-ppc64@0.25.1': optional: true - '@esbuild/aix-ppc64@0.25.8': + '@esbuild/aix-ppc64@0.25.9': optional: true '@esbuild/android-arm64@0.25.1': optional: true - '@esbuild/android-arm64@0.25.8': + '@esbuild/android-arm64@0.25.9': optional: true '@esbuild/android-arm@0.25.1': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-arm@0.25.9': optional: true '@esbuild/android-x64@0.25.1': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/android-x64@0.25.9': optional: true '@esbuild/darwin-arm64@0.25.1': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/darwin-arm64@0.25.9': optional: true '@esbuild/darwin-x64@0.25.1': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/darwin-x64@0.25.9': optional: true '@esbuild/freebsd-arm64@0.25.1': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.25.9': optional: true '@esbuild/freebsd-x64@0.25.1': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/freebsd-x64@0.25.9': optional: true '@esbuild/linux-arm64@0.25.1': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-arm64@0.25.9': optional: true '@esbuild/linux-arm@0.25.1': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-arm@0.25.9': optional: true '@esbuild/linux-ia32@0.25.1': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/linux-ia32@0.25.9': optional: true '@esbuild/linux-loong64@0.25.1': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/linux-loong64@0.25.9': optional: true '@esbuild/linux-mips64el@0.25.1': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/linux-mips64el@0.25.9': optional: true '@esbuild/linux-ppc64@0.25.1': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/linux-ppc64@0.25.9': optional: true '@esbuild/linux-riscv64@0.25.1': optional: true - '@esbuild/linux-riscv64@0.25.8': + '@esbuild/linux-riscv64@0.25.9': optional: true '@esbuild/linux-s390x@0.25.1': optional: true - '@esbuild/linux-s390x@0.25.8': + '@esbuild/linux-s390x@0.25.9': optional: true '@esbuild/linux-x64@0.25.1': optional: true - '@esbuild/linux-x64@0.25.8': + '@esbuild/linux-x64@0.25.9': optional: true '@esbuild/netbsd-arm64@0.25.1': optional: true - '@esbuild/netbsd-arm64@0.25.8': + '@esbuild/netbsd-arm64@0.25.9': optional: true '@esbuild/netbsd-x64@0.25.1': optional: true - '@esbuild/netbsd-x64@0.25.8': + '@esbuild/netbsd-x64@0.25.9': optional: true '@esbuild/openbsd-arm64@0.25.1': optional: true - '@esbuild/openbsd-arm64@0.25.8': + '@esbuild/openbsd-arm64@0.25.9': optional: true '@esbuild/openbsd-x64@0.25.1': optional: true - '@esbuild/openbsd-x64@0.25.8': + '@esbuild/openbsd-x64@0.25.9': optional: true - '@esbuild/openharmony-arm64@0.25.8': + '@esbuild/openharmony-arm64@0.25.9': optional: true '@esbuild/sunos-x64@0.25.1': optional: true - '@esbuild/sunos-x64@0.25.8': + '@esbuild/sunos-x64@0.25.9': optional: true '@esbuild/win32-arm64@0.25.1': optional: true - '@esbuild/win32-arm64@0.25.8': + '@esbuild/win32-arm64@0.25.9': optional: true '@esbuild/win32-ia32@0.25.1': optional: true - '@esbuild/win32-ia32@0.25.8': + '@esbuild/win32-ia32@0.25.9': optional: true '@esbuild/win32-x64@0.25.1': optional: true - '@esbuild/win32-x64@0.25.8': + '@esbuild/win32-x64@0.25.9': optional: true '@esm-bundle/chai@4.3.4-fix.0': dependencies: '@types/chai': 4.3.20 - '@git.zone/tsbuild@2.6.4': + '@git.zone/tsbuild@2.6.7': dependencies: - '@git.zone/tspublish': 1.9.1 + '@git.zone/tspublish': 1.10.3 '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.11 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartlog': 3.1.8 - '@push.rocks/smartpath': 5.1.0 + '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - aws-crt + - supports-color '@git.zone/tsbundle@2.5.1': dependencies: '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.11 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartlog': 3.1.8 '@push.rocks/smartlog-destination-local': 9.0.2 '@push.rocks/smartpath': 5.1.0 @@ -6002,26 +6279,28 @@ snapshots: '@push.rocks/smartspawn': 3.0.3 '@rspack/core': 1.4.11 '@types/html-minifier': 4.0.5 - esbuild: 0.25.8 + esbuild: 0.25.9 html-minifier: 4.0.0 - rolldown: 1.0.0-beta.31 + rolldown: 1.0.0-beta.33 typescript: 5.8.3 transitivePeerDependencies: - '@swc/helpers' - supports-color - '@git.zone/tspublish@1.9.1': + '@git.zone/tspublish@1.10.3': dependencies: + '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartcli': 4.0.11 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartlog': 3.1.8 - '@push.rocks/smartnpm': 2.0.4 - '@push.rocks/smartpath': 5.1.0 - '@push.rocks/smartrequest': 2.1.0 - '@push.rocks/smartshell': 3.2.3 + '@push.rocks/smartnpm': 2.0.6 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrequest': 4.2.2 + '@push.rocks/smartshell': 3.3.0 transitivePeerDependencies: - aws-crt + - supports-color '@git.zone/tsrun@1.3.3': dependencies: @@ -6029,28 +6308,28 @@ snapshots: '@push.rocks/smartshell': 3.2.3 tsx: 4.19.3 - '@git.zone/tstest@2.3.2(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6)(typescript@5.8.3)': + '@git.zone/tstest@2.3.5(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7)(typescript@5.9.2)': dependencies: - '@api.global/typedserver': 3.0.74 + '@api.global/typedserver': 3.0.77 '@git.zone/tsbundle': 2.5.1 '@git.zone/tsrun': 1.3.3 - '@push.rocks/consolecolor': 2.0.2 - '@push.rocks/qenv': 6.1.0 - '@push.rocks/smartbrowser': 2.0.8(typescript@5.8.3) + '@push.rocks/consolecolor': 2.0.3 + '@push.rocks/qenv': 6.1.3 + '@push.rocks/smartbrowser': 2.0.8(typescript@5.9.2) '@push.rocks/smartchok': 1.1.1 '@push.rocks/smartcrypto': 2.0.4 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.13 '@push.rocks/smartexpect': 2.5.0 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartlog': 3.1.8 - '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) - '@push.rocks/smartpath': 5.1.0 + '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) + '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 2.1.0 - '@push.rocks/smarts3': 2.2.5 - '@push.rocks/smartshell': 3.2.3 + '@push.rocks/smartrequest': 4.2.2 + '@push.rocks/smarts3': 2.2.6 + '@push.rocks/smartshell': 3.3.0 '@push.rocks/smarttime': 4.1.1 '@types/ws': 8.18.1 figures: 6.1.0 @@ -6166,7 +6445,7 @@ snapshots: dependencies: sparse-bitfield: 3.0.3 - '@napi-rs/wasm-runtime@1.0.2': + '@napi-rs/wasm-runtime@1.0.3': dependencies: '@emnapi/core': 1.4.5 '@emnapi/runtime': 1.4.5 @@ -6237,9 +6516,9 @@ snapshots: - supports-color - utf-8-validate - '@oxc-project/runtime@0.80.0': {} + '@oxc-project/runtime@0.82.2': {} - '@oxc-project/types@0.80.0': {} + '@oxc-project/types@0.82.2': {} '@pdf-lib/standard-fonts@1.0.0': dependencies: @@ -6249,9 +6528,6 @@ snapshots: dependencies: pako: 1.0.11 - '@pkgjs/parseargs@0.11.0': - optional: true - '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -6281,9 +6557,13 @@ snapshots: dependencies: ansi-256-colors: 1.1.0 + '@push.rocks/consolecolor@2.0.3': + dependencies: + ansi-256-colors: 1.1.0 + '@push.rocks/early@4.0.4': dependencies: - '@push.rocks/consolecolor': 2.0.2 + '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/isohash@2.0.1': @@ -6296,11 +6576,11 @@ snapshots: '@push.rocks/levelcache@3.1.1': dependencies: '@push.rocks/lik': 6.2.2 - '@push.rocks/smartbucket': 3.3.7 + '@push.rocks/smartbucket': 3.3.10 '@push.rocks/smartcache': 1.0.16 '@push.rocks/smartenv': 5.0.13 '@push.rocks/smartexit': 1.0.23 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartpath': 5.1.0 '@push.rocks/smartpromise': 4.2.3 @@ -6334,34 +6614,38 @@ snapshots: transitivePeerDependencies: - aws-crt - '@push.rocks/qenv@6.1.0': + '@push.rocks/qenv@6.1.3': dependencies: '@api.global/typedrequest': 3.1.10 '@configvault.io/interfaces': 1.0.17 - '@push.rocks/smartfile': 11.2.0 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartlog': 3.1.8 - '@push.rocks/smartpath': 5.0.18 + '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartarchive@3.0.8': - dependencies: - '@push.rocks/smartfile': 10.0.41 - '@push.rocks/smartpath': 5.1.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 2.1.0 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartstream': 2.0.8 - '@push.rocks/smartunique': 3.0.9 - '@types/gunzip-maybe': 1.4.2 - '@types/tar-stream': 2.2.3 - gunzip-maybe: 1.4.2 - tar: 6.2.1 - tar-stream: 3.1.7 - - '@push.rocks/smartbrowser@2.0.8(typescript@5.8.3)': + '@push.rocks/smartarchive@4.2.2': dependencies: '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartpdf': 3.3.0(typescript@5.8.3) - '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.8.3) + '@push.rocks/smartfile': 11.2.7 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrequest': 4.2.2 + '@push.rocks/smartrx': 3.0.10 + '@push.rocks/smartstream': 3.2.5 + '@push.rocks/smartunique': 3.0.9 + '@push.rocks/smarturl': 3.1.0 + '@types/tar-stream': 3.1.4 + fflate: 0.8.2 + file-type: 21.0.0 + tar-stream: 3.1.7 + through: 2.3.8 + transitivePeerDependencies: + - supports-color + + '@push.rocks/smartbrowser@2.0.8(typescript@5.9.2)': + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartpdf': 3.3.0(typescript@5.9.2) + '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.2) '@push.rocks/smartunique': 3.0.9 transitivePeerDependencies: - bare-buffer @@ -6370,6 +6654,20 @@ snapshots: - typescript - utf-8-validate + '@push.rocks/smartbucket@3.3.10': + dependencies: + '@aws-sdk/client-s3': 3.864.0 + '@push.rocks/smartmime': 2.0.4 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + '@push.rocks/smartstream': 3.2.5 + '@push.rocks/smartstring': 4.0.15 + '@push.rocks/smartunique': 3.0.9 + '@tsclass/tsclass': 9.2.0 + transitivePeerDependencies: + - aws-crt + '@push.rocks/smartbucket@3.3.7': dependencies: '@aws-sdk/client-s3': 3.863.0 @@ -6384,13 +6682,9 @@ snapshots: transitivePeerDependencies: - aws-crt - '@push.rocks/smartbuffer@3.0.4': - dependencies: - uint8array-extras: 1.4.0 - '@push.rocks/smartbuffer@3.0.5': dependencies: - uint8array-extras: 1.4.0 + uint8array-extras: 1.4.1 '@push.rocks/smartcache@1.0.16': dependencies: @@ -6432,12 +6726,12 @@ snapshots: '@types/node-forge': 1.3.13 node-forge: 1.3.1 - '@push.rocks/smartdata@5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6)': + '@push.rocks/smartdata@5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7)': dependencies: '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartlog': 3.1.8 - '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstring': 4.0.15 @@ -6445,7 +6739,7 @@ snapshots: '@push.rocks/smartunique': 3.0.9 '@push.rocks/taskbuffer': 3.1.7 '@tsclass/tsclass': 8.2.1 - mongodb: 6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + mongodb: 6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -6490,25 +6784,6 @@ snapshots: '@push.rocks/smartfile-interfaces@1.0.7': {} - '@push.rocks/smartfile@10.0.41': - dependencies: - '@push.rocks/lik': 6.2.2 - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile-interfaces': 1.0.7 - '@push.rocks/smarthash': 3.2.3 - '@push.rocks/smartjson': 5.0.20 - '@push.rocks/smartmime': 1.0.6 - '@push.rocks/smartpath': 5.1.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 2.1.0 - '@push.rocks/smartstream': 2.0.8 - '@types/fs-extra': 11.0.4 - '@types/glob': 8.1.0 - '@types/js-yaml': 4.0.9 - fs-extra: 11.3.1 - glob: 10.4.5 - js-yaml: 4.1.0 - '@push.rocks/smartfile@11.2.0': dependencies: '@push.rocks/lik': 6.2.2 @@ -6547,10 +6822,28 @@ snapshots: glob: 11.0.3 js-yaml: 4.1.0 + '@push.rocks/smartfile@11.2.7': + dependencies: + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartfile-interfaces': 1.0.7 + '@push.rocks/smarthash': 3.2.3 + '@push.rocks/smartjson': 5.0.20 + '@push.rocks/smartmime': 2.0.4 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrequest': 4.2.2 + '@push.rocks/smartstream': 3.2.5 + '@types/fs-extra': 11.0.4 + '@types/js-yaml': 4.0.9 + fs-extra: 11.3.1 + glob: 11.0.3 + js-yaml: 4.1.0 + '@push.rocks/smartguard@3.1.0': dependencies: '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 2.0.23 + '@push.rocks/smartrequest': 2.1.0 '@push.rocks/smarthash@3.0.4': dependencies: @@ -6580,7 +6873,7 @@ snapshots: '@push.rocks/smartlog-destination-local@9.0.2': dependencies: - '@push.rocks/consolecolor': 2.0.2 + '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartlog-interfaces': 3.0.2 '@push.rocks/smartpromise': 4.2.3 @@ -6613,7 +6906,7 @@ snapshots: remark-html: 16.0.1 remark-parse: 11.0.0 remark-stringify: 11.0.0 - turndown: 7.2.0 + turndown: 7.2.1 turndown-plugin-gfm: 1.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -6623,24 +6916,19 @@ snapshots: dependencies: matcher: 5.0.0 - '@push.rocks/smartmime@1.0.6': - dependencies: - '@types/mime-types': 2.1.4 - mime-types: 2.1.35 - '@push.rocks/smartmime@2.0.4': dependencies: '@types/mime-types': 2.1.4 file-type: 19.6.0 mime: 4.0.6 - '@push.rocks/smartmongo@2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6)': + '@push.rocks/smartmongo@2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7)': dependencies: '@push.rocks/mongodump': 1.0.8 - '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.2.3 - mongodb-memory-server: 10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + mongodb-memory-server: 10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -6662,27 +6950,28 @@ snapshots: public-ip: 7.0.1 systeminformation: 5.27.7 - '@push.rocks/smartnpm@2.0.4': + '@push.rocks/smartnpm@2.0.6': dependencies: - '@push.rocks/consolecolor': 2.0.2 + '@push.rocks/consolecolor': 2.0.3 '@push.rocks/levelcache': 3.1.1 - '@push.rocks/smartarchive': 3.0.8 - '@push.rocks/smartfile': 10.0.41 - '@push.rocks/smartpath': 5.1.0 + '@push.rocks/smartarchive': 4.2.2 + '@push.rocks/smartfile': 11.2.7 + '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 2.1.0 + '@push.rocks/smartrequest': 4.2.2 '@push.rocks/smarttime': 4.1.1 '@push.rocks/smartversion': 3.0.5 package-json: 8.1.1 transitivePeerDependencies: - aws-crt + - supports-color '@push.rocks/smartntml@2.0.8': dependencies: '@design.estate/dees-element': 2.1.2 '@happy-dom/global-registrator': 15.11.7 '@push.rocks/smartpromise': 4.2.3 - fake-indexeddb: 6.0.1 + fake-indexeddb: 6.1.0 transitivePeerDependencies: - '@nuxt/kit' - react @@ -6704,15 +6993,15 @@ snapshots: '@push.rocks/smartpath@6.0.0': {} - '@push.rocks/smartpdf@3.3.0(typescript@5.8.3)': + '@push.rocks/smartpdf@3.3.0(typescript@5.9.2)': dependencies: '@push.rocks/smartbuffer': 3.0.5 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.2.5 + '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartnetwork': 4.1.2 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.8.3) + '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.2) '@push.rocks/smartunique': 3.0.9 '@tsclass/tsclass': 9.2.0 '@types/express': 5.0.3 @@ -6733,11 +7022,11 @@ snapshots: '@push.rocks/smartpromise@4.2.3': {} - '@push.rocks/smartpuppeteer@2.0.5(typescript@5.8.3)': + '@push.rocks/smartpuppeteer@2.0.5(typescript@5.9.2)': dependencies: '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartshell': 3.2.3 - puppeteer: 24.16.0(typescript@5.8.3) + '@push.rocks/smartshell': 3.3.0 + puppeteer: 24.16.2(typescript@5.9.2) tree-kill: 1.2.2 transitivePeerDependencies: - bare-buffer @@ -6760,6 +7049,15 @@ snapshots: agentkeepalive: 4.6.0 form-data: 4.0.4 + '@push.rocks/smartrequest@4.2.2': + dependencies: + '@push.rocks/smartenv': 5.0.13 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smarturl': 3.1.0 + agentkeepalive: 4.6.0 + form-data: 4.0.4 + '@push.rocks/smartrouter@1.3.3': dependencies: '@push.rocks/lik': 6.2.2 @@ -6783,6 +7081,18 @@ snapshots: - aws-crt - supports-color + '@push.rocks/smarts3@2.2.6': + dependencies: + '@push.rocks/smartbucket': 3.3.10 + '@push.rocks/smartfile': 11.2.7 + '@push.rocks/smartpath': 6.0.0 + '@tsclass/tsclass': 9.2.0 + '@types/s3rver': 3.7.4 + s3rver: 3.7.1 + transitivePeerDependencies: + - aws-crt + - supports-color + '@push.rocks/smartshell@3.2.3': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -6792,6 +7102,15 @@ snapshots: tree-kill: 1.2.2 which: 5.0.0 + '@push.rocks/smartshell@3.3.0': + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartexit': 1.0.23 + '@push.rocks/smartpromise': 4.2.3 + '@types/which': 3.0.4 + tree-kill: 1.2.2 + which: 5.0.0 + '@push.rocks/smartsitemap@2.0.3': dependencies: '@push.rocks/smartcache': 1.0.16 @@ -6804,7 +7123,7 @@ snapshots: '@push.rocks/smartsocket@2.1.0': dependencies: '@api.global/typedrequest-interfaces': 3.0.19 - '@api.global/typedserver': 3.0.74 + '@api.global/typedserver': 3.0.77 '@push.rocks/isohash': 2.0.1 '@push.rocks/isounique': 1.0.5 '@push.rocks/lik': 6.2.2 @@ -6835,7 +7154,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@push.rocks/smartstate@2.0.25': + '@push.rocks/smartstate@2.0.26': dependencies: '@push.rocks/lik': 6.2.2 '@push.rocks/smarthash': 3.2.3 @@ -6844,15 +7163,6 @@ snapshots: '@push.rocks/smartrx': 3.0.10 '@push.rocks/webstore': 2.0.20 - '@push.rocks/smartstream@2.0.8': - dependencies: - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@types/from2': 2.3.5 - '@types/through2': 2.0.41 - from2: 2.3.0 - through2: 4.0.2 - '@push.rocks/smartstream@3.2.5': dependencies: '@push.rocks/lik': 6.2.2 @@ -6905,18 +7215,18 @@ snapshots: '@types/js-yaml': 3.12.10 js-yaml: 3.14.1 - '@push.rocks/tapbundle@6.0.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6)': + '@push.rocks/tapbundle@6.0.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7)': dependencies: '@open-wc/testing': 4.0.0 '@push.rocks/consolecolor': 2.0.2 - '@push.rocks/qenv': 6.1.0 + '@push.rocks/qenv': 6.1.3 '@push.rocks/smartcrypto': 2.0.4 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.13 '@push.rocks/smartexpect': 2.5.0 '@push.rocks/smartfile': 11.2.5 '@push.rocks/smartjson': 5.0.20 - '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) '@push.rocks/smartpath': 5.1.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 2.1.0 @@ -6974,7 +7284,7 @@ snapshots: '@push.rocks/webstream@1.0.10': dependencies: - '@push.rocks/smartenv': 5.0.12 + '@push.rocks/smartenv': 5.0.13 '@pushrocks/isounique@1.0.5': {} @@ -7111,7 +7421,7 @@ snapshots: '@types/randomatic': 3.1.5 buffer: 6.0.3 crypto-random-string: 5.0.0 - js-base64: 3.7.7 + js-base64: 3.7.8 normalize-newline: 4.1.0 randomatic: 3.1.1 strip-indent: 4.0.0 @@ -7139,51 +7449,51 @@ snapshots: '@pushrocks/smarturl@2.0.1': {} - '@rolldown/binding-android-arm64@1.0.0-beta.31': + '@rolldown/binding-android-arm64@1.0.0-beta.33': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.31': + '@rolldown/binding-darwin-arm64@1.0.0-beta.33': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.31': + '@rolldown/binding-darwin-x64@1.0.0-beta.33': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.31': + '@rolldown/binding-freebsd-x64@1.0.0-beta.33': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.31': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.33': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.31': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.33': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.31': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.33': optional: true - '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.31': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.33': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.31': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.33': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.31': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.33': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.31': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.33': dependencies: - '@napi-rs/wasm-runtime': 1.0.2 + '@napi-rs/wasm-runtime': 1.0.3 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.31': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.33': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.31': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.33': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.31': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.33': optional: true - '@rolldown/pluginutils@1.0.0-beta.31': {} + '@rolldown/pluginutils@1.0.0-beta.33': {} '@rspack/binding-darwin-arm64@1.4.11': optional: true @@ -7205,7 +7515,7 @@ snapshots: '@rspack/binding-wasm32-wasi@1.4.11': dependencies: - '@napi-rs/wasm-runtime': 1.0.2 + '@napi-rs/wasm-runtime': 1.0.3 optional: true '@rspack/binding-win32-arm64-msvc@1.4.11': @@ -7830,6 +8140,14 @@ snapshots: '@tempfix/idb@8.0.3': {} + '@tokenizer/inflate@0.2.7': + dependencies: + debug: 4.4.1 + fflate: 0.8.2 + token-types: 6.1.1 + transitivePeerDependencies: + - supports-color + '@tokenizer/token@0.3.0': {} '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -7934,10 +8252,6 @@ snapshots: dependencies: fast-json-stable-stringify: 2.1.0 - '@types/from2@2.3.5': - dependencies: - '@types/node': 22.15.2 - '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 @@ -7957,10 +8271,6 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 22.15.2 - '@types/gunzip-maybe@1.4.2': - dependencies: - '@types/node': 22.15.2 - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -8078,7 +8388,7 @@ snapshots: '@types/symbol-tree@3.2.5': {} - '@types/tar-stream@2.2.3': + '@types/tar-stream@3.1.4': dependencies: '@types/node': 22.15.2 @@ -8258,8 +8568,6 @@ snapshots: argparse@2.0.1: {} - array-flatten@1.1.1: {} - array-union@2.1.0: {} ast-types@0.13.4: @@ -8287,14 +8595,14 @@ snapshots: bare-events@2.5.4: optional: true - bare-events@2.6.0: + bare-events@2.6.1: optional: true - bare-fs@4.1.6: + bare-fs@4.2.0: dependencies: - bare-events: 2.6.0 + bare-events: 2.6.1 bare-path: 3.0.0 - bare-stream: 2.6.5(bare-events@2.6.0) + bare-stream: 2.7.0(bare-events@2.6.1) optional: true bare-os@3.6.1: @@ -8305,11 +8613,11 @@ snapshots: bare-os: 3.6.1 optional: true - bare-stream@2.6.5(bare-events@2.6.0): + bare-stream@2.7.0(bare-events@2.6.1): dependencies: streamx: 2.22.1 optionalDependencies: - bare-events: 2.6.0 + bare-events: 2.6.1 optional: true base64-js@1.5.1: {} @@ -8318,23 +8626,6 @@ snapshots: basic-ftp@5.0.5: {} - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - body-parser@2.2.0: dependencies: bytes: 3.1.2 @@ -8375,10 +8666,6 @@ snapshots: p-queue: 6.6.2 unload: 2.4.1 - browserify-zlib@0.1.4: - dependencies: - pako: 0.2.9 - bson@4.7.2: dependencies: buffer: 5.7.1 @@ -8387,8 +8674,6 @@ snapshots: buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} - buffer-json@2.0.0: {} buffer@5.7.1: @@ -8477,9 +8762,7 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@2.0.0: {} - - chromium-bidi@7.2.0(devtools-protocol@0.0.1475386): + chromium-bidi@7.3.1(devtools-protocol@0.0.1475386): dependencies: devtools-protocol: 0.0.1475386 mitt: 3.0.1 @@ -8579,12 +8862,8 @@ snapshots: convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} - cookie-signature@1.2.2: {} - cookie@0.7.1: {} - cookie@0.7.2: {} cookies@0.9.1: @@ -8592,21 +8871,19 @@ snapshots: depd: 2.0.0 keygrip: 1.1.0 - core-util-is@1.0.3: {} - cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.8.3): + cosmiconfig@9.0.0(typescript@5.9.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 croner@4.4.1: {} @@ -8632,10 +8909,6 @@ snapshots: debounce@1.2.1: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@3.2.7: dependencies: ms: 2.1.3 @@ -8734,13 +9007,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.5 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - eastasianwidth@0.2.0: {} ee-first@1.1.1: {} @@ -8846,34 +9112,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.1 '@esbuild/win32-x64': 0.25.1 - esbuild@0.25.8: + esbuild@0.25.9: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 + '@esbuild/aix-ppc64': 0.25.9 + '@esbuild/android-arm': 0.25.9 + '@esbuild/android-arm64': 0.25.9 + '@esbuild/android-x64': 0.25.9 + '@esbuild/darwin-arm64': 0.25.9 + '@esbuild/darwin-x64': 0.25.9 + '@esbuild/freebsd-arm64': 0.25.9 + '@esbuild/freebsd-x64': 0.25.9 + '@esbuild/linux-arm': 0.25.9 + '@esbuild/linux-arm64': 0.25.9 + '@esbuild/linux-ia32': 0.25.9 + '@esbuild/linux-loong64': 0.25.9 + '@esbuild/linux-mips64el': 0.25.9 + '@esbuild/linux-ppc64': 0.25.9 + '@esbuild/linux-riscv64': 0.25.9 + '@esbuild/linux-s390x': 0.25.9 + '@esbuild/linux-x64': 0.25.9 + '@esbuild/netbsd-arm64': 0.25.9 + '@esbuild/netbsd-x64': 0.25.9 + '@esbuild/openbsd-arm64': 0.25.9 + '@esbuild/openbsd-x64': 0.25.9 + '@esbuild/openharmony-arm64': 0.25.9 + '@esbuild/sunos-x64': 0.25.9 + '@esbuild/win32-arm64': 0.25.9 + '@esbuild/win32-ia32': 0.25.9 + '@esbuild/win32-x64': 0.25.9 escalade@3.2.0: {} @@ -8931,42 +9197,6 @@ snapshots: dependencies: lodash.assign: 3.2.0 - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - express@5.1.0: dependencies: accepts: 2.0.0 @@ -9013,7 +9243,7 @@ snapshots: fake-indexeddb@5.0.2: {} - fake-indexeddb@6.0.1: {} + fake-indexeddb@6.1.0: {} fast-deep-equal@3.1.3: {} @@ -9064,6 +9294,8 @@ snapshots: dependencies: xml-js: 1.6.11 + fflate@0.8.2: {} + figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -9075,22 +9307,19 @@ snapshots: token-types: 6.0.0 uint8array-extras: 1.4.0 + file-type@21.0.0: + dependencies: + '@tokenizer/inflate': 0.2.7 + strtok3: 10.3.4 + token-types: 6.1.1 + uint8array-extras: 1.4.1 + transitivePeerDependencies: + - supports-color + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - finalhandler@2.1.0: dependencies: debug: 4.4.1 @@ -9154,11 +9383,6 @@ snapshots: fresh@2.0.0: {} - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -9183,10 +9407,6 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -9243,15 +9463,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@11.0.1: dependencies: foreground-child: 3.3.1 @@ -9322,15 +9533,6 @@ snapshots: graceful-fs@4.2.11: {} - gunzip-maybe@1.4.2: - dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 - through2: 2.0.5 - happy-dom@15.11.7: dependencies: entities: 4.5.0 @@ -9489,6 +9691,8 @@ snapshots: is-ip: 3.1.0 p-event: 4.2.0 + ip-address@10.0.1: {} + ip-address@9.0.5: dependencies: jsbn: 1.1.0 @@ -9504,8 +9708,6 @@ snapshots: is-arrayish@0.3.2: {} - is-deflate@1.0.0: {} - is-docker@2.2.1: {} is-extglob@2.1.1: {} @@ -9523,8 +9725,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-gzip@1.0.0: {} - is-ip@3.1.0: dependencies: ip-regex: 4.3.0 @@ -9570,8 +9770,6 @@ snapshots: dependencies: is-docker: 2.2.1 - isarray@1.0.0: {} - isbinaryfile@5.0.4: {} isexe@2.0.0: {} @@ -9593,12 +9791,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.0: dependencies: '@isaacs/cliui': 8.0.2 @@ -9646,6 +9838,8 @@ snapshots: js-base64@3.7.7: {} + js-base64@3.7.8: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -9833,8 +10027,6 @@ snapshots: lowercase-keys@3.0.0: {} - lru-cache@10.4.3: {} - lru-cache@11.0.2: {} lru-cache@7.18.3: {} @@ -10000,8 +10192,6 @@ snapshots: memory-pager@1.5.0: {} - merge-descriptors@1.0.3: {} - merge-descriptors@2.0.0: {} merge-stream@2.0.0: {} @@ -10225,8 +10415,6 @@ snapshots: dependencies: mime-db: 1.54.0 - mime@1.6.0: {} - mime@4.0.6: {} mimic-fn@2.1.0: {} @@ -10255,19 +10443,8 @@ snapshots: minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - mitt@3.0.1: {} mkdirp@1.0.4: {} @@ -10282,7 +10459,7 @@ snapshots: '@types/whatwg-url': 11.0.5 whatwg-url: 14.2.0 - mongodb-memory-server-core@10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6): + mongodb-memory-server-core@10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7): dependencies: async-mutex: 0.5.0 camelcase: 6.3.0 @@ -10290,7 +10467,7 @@ snapshots: find-cache-dir: 3.3.2 follow-redirects: 1.15.9(debug@4.4.0) https-proxy-agent: 7.0.6 - mongodb: 6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + mongodb: 6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) new-find-package-json: 2.0.0 semver: 7.7.1 tar-stream: 3.1.7 @@ -10306,9 +10483,9 @@ snapshots: - socks - supports-color - mongodb-memory-server@10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6): + mongodb-memory-server@10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7): dependencies: - mongodb-memory-server-core: 10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6) + mongodb-memory-server-core: 10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7) tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/credential-providers' @@ -10331,16 +10508,14 @@ snapshots: transitivePeerDependencies: - aws-crt - mongodb@6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.6): + mongodb@6.18.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.7): dependencies: '@mongodb-js/saslprep': 1.3.0 bson: 6.10.4 mongodb-connection-string-url: 3.0.2 optionalDependencies: '@aws-sdk/credential-providers': 3.796.0 - socks: 2.8.6 - - ms@2.0.0: {} + socks: 2.8.7 ms@2.1.3: {} @@ -10466,8 +10641,6 @@ snapshots: registry-url: 6.0.1 semver: 7.7.2 - pako@0.2.9: {} - pako@1.0.11: {} param-case@2.1.1: @@ -10503,18 +10676,11 @@ snapshots: path-key@3.1.1: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-scurry@2.0.0: dependencies: lru-cache: 11.0.2 minipass: 7.1.2 - path-to-regexp@0.1.12: {} - path-to-regexp@6.3.0: {} path-to-regexp@8.2.0: {} @@ -10532,12 +10698,6 @@ snapshots: peek-readable@5.4.2: {} - peek-stream@1.1.3: - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 - pend@1.2.0: {} picocolors@1.1.1: {} @@ -10570,8 +10730,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - process-nextick-args@2.0.1: {} - progress@2.0.3: {} property-information@7.1.0: {} @@ -10604,30 +10762,19 @@ snapshots: got: 13.0.0 is-ip: 5.0.1 - pump@2.0.1: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - pump@3.0.3: dependencies: end-of-stream: 1.4.5 once: 1.4.0 - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - punycode@1.4.1: {} punycode@2.3.1: {} - puppeteer-core@24.16.0: + puppeteer-core@24.16.2: dependencies: '@puppeteer/browsers': 2.10.6 - chromium-bidi: 7.2.0(devtools-protocol@0.0.1475386) + chromium-bidi: 7.3.1(devtools-protocol@0.0.1475386) debug: 4.4.1 devtools-protocol: 0.0.1475386 typed-query-selector: 2.12.0 @@ -10638,13 +10785,13 @@ snapshots: - supports-color - utf-8-validate - puppeteer@24.16.0(typescript@5.8.3): + puppeteer@24.16.2(typescript@5.9.2): dependencies: '@puppeteer/browsers': 2.10.6 - chromium-bidi: 7.2.0(devtools-protocol@0.0.1475386) - cosmiconfig: 9.0.0(typescript@5.8.3) + chromium-bidi: 7.3.1(devtools-protocol@0.0.1475386) + cosmiconfig: 9.0.0(typescript@5.9.2) devtools-protocol: 0.0.1475386 - puppeteer-core: 24.16.0 + puppeteer-core: 24.16.2 typed-query-selector: 2.12.0 transitivePeerDependencies: - bare-buffer @@ -10653,10 +10800,6 @@ snapshots: - typescript - utf-8-validate - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -10696,16 +10839,6 @@ snapshots: react-is@18.3.1: {} - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -10799,27 +10932,27 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.31: + rolldown@1.0.0-beta.33: dependencies: - '@oxc-project/runtime': 0.80.0 - '@oxc-project/types': 0.80.0 - '@rolldown/pluginutils': 1.0.0-beta.31 + '@oxc-project/runtime': 0.82.2 + '@oxc-project/types': 0.82.2 + '@rolldown/pluginutils': 1.0.0-beta.33 ansis: 4.1.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.31 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.31 - '@rolldown/binding-darwin-x64': 1.0.0-beta.31 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.31 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.31 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.31 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.31 - '@rolldown/binding-linux-arm64-ohos': 1.0.0-beta.31 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.31 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.31 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.31 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.31 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.31 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.31 + '@rolldown/binding-android-arm64': 1.0.0-beta.33 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.33 + '@rolldown/binding-darwin-x64': 1.0.0-beta.33 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.33 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.33 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.33 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.33 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.33 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.33 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.33 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.33 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.33 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.33 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.33 router@2.2.0: dependencies: @@ -10860,8 +10993,6 @@ snapshots: transitivePeerDependencies: - supports-color - safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} safe-regex-test@1.1.0: @@ -10882,24 +11013,6 @@ snapshots: semver@7.7.2: {} - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - send@1.2.0: dependencies: debug: 4.4.1 @@ -10916,15 +11029,6 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - serve-static@2.2.0: dependencies: encodeurl: 2.0.0 @@ -11044,7 +11148,7 @@ snapshots: dependencies: agent-base: 7.1.4 debug: 4.4.1 - socks: 2.8.6 + socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -11053,9 +11157,9 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - socks@2.8.6: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.0.1 smart-buffer: 4.2.0 source-map@0.6.1: {} @@ -11093,8 +11197,6 @@ snapshots: statuses@2.0.2: {} - stream-shift@1.0.3: {} - streamsearch@0.1.2: {} streamx@2.22.0: @@ -11109,7 +11211,7 @@ snapshots: fast-fifo: 1.3.2 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.6.0 + bare-events: 2.6.1 optional: true string-width@4.2.3: @@ -11124,10 +11226,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -11157,6 +11255,10 @@ snapshots: strnum@2.1.1: {} + strtok3@10.3.4: + dependencies: + '@tokenizer/token': 0.3.0 + strtok3@9.1.1: dependencies: '@tokenizer/token': 0.3.0 @@ -11187,7 +11289,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.6 + bare-fs: 4.2.0 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -11198,15 +11300,6 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.22.0 - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - text-decoder@1.2.3: dependencies: b4a: 1.6.7 @@ -11224,15 +11317,12 @@ snapshots: transitivePeerDependencies: - supports-color - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - through2@4.0.2: dependencies: readable-stream: 3.6.2 + through@2.3.8: {} + time-span@5.1.0: dependencies: convert-hrtime: 5.0.0 @@ -11252,6 +11342,12 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 + token-types@6.1.1: + dependencies: + '@borewit/text-codec': 0.1.1 + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + tr46@3.0.0: dependencies: punycode: 2.3.1 @@ -11283,7 +11379,7 @@ snapshots: turndown-plugin-gfm@1.0.2: {} - turndown@7.2.0: + turndown@7.2.1: dependencies: '@mixmark-io/domino': 2.2.0 @@ -11308,10 +11404,14 @@ snapshots: typescript@5.8.3: {} + typescript@5.9.2: {} + uglify-js@3.19.3: {} uint8array-extras@1.4.0: {} + uint8array-extras@1.4.1: {} + undici-types@6.21.0: {} unified@11.0.5: @@ -11364,8 +11464,6 @@ snapshots: util-deprecate@1.0.2: {} - utils-merge@1.0.1: {} - uuid@9.0.1: {} vary@1.1.2: {} @@ -11468,12 +11566,8 @@ snapshots: xmlhttprequest-ssl@2.1.2: {} - xtend@4.0.2: {} - y18n@5.0.8: {} - yallist@4.0.0: {} - yargs-parser@21.1.1: {} yargs@17.7.2: diff --git a/readme.md b/readme.md index bab3aaa..586d64f 100644 --- a/readme.md +++ b/readme.md @@ -132,6 +132,338 @@ await foundUser.save(); await foundUser.delete(); ``` +## 🔍 Query Filters Guide + +SmartData provides a comprehensive and type-safe filtering system that supports all MongoDB query operators while preventing dangerous operations like `$where` for security. + +### Basic Filtering + +```typescript +// Simple equality - find users with exact name +const johns = await User.getInstances({ name: 'John Doe' }); + +// Multiple conditions (implicit AND) +const activeAdults = await User.getInstances({ + status: 'active', + age: { $gte: 18 } +}); + +// Nested object fields - use dot notation +const recentUsers = await User.getInstances({ + 'metadata.lastLogin': { $gte: new Date('2024-01-01') }, + 'metadata.loginCount': { $gt: 5 } +}); +``` + +### Comparison Operators + +All standard MongoDB comparison operators are supported: + +```typescript +// Greater than / Greater than or equal +const adults = await User.getInstances({ age: { $gte: 18 } }); +const seniors = await User.getInstances({ age: { $gt: 65 } }); + +// Less than / Less than or equal +const youth = await User.getInstances({ age: { $lt: 25 } }); +const under30 = await User.getInstances({ age: { $lte: 30 } }); + +// Not equal +const notPending = await User.getInstances({ status: { $ne: 'pending' } }); + +// Combine multiple comparisons +const middleAged = await User.getInstances({ + age: { $gte: 30, $lt: 50 } +}); +``` + +### Array Operators + +SmartData fully supports MongoDB's array query operators: + +```typescript +// $in - Match any value in array +const adminsAndMods = await User.getInstances({ + role: { $in: ['admin', 'moderator'] } +}); + +// $nin - Match none of the values +const regularUsers = await User.getInstances({ + role: { $nin: ['admin', 'moderator'] } +}); + +// $all - Array contains all specified elements +const fullStackDevs = await User.getInstances({ + skills: { $all: ['javascript', 'nodejs', 'mongodb'] } +}); + +// $size - Array has specific length +const usersWithThreeSkills = await User.getInstances({ + skills: { $size: 3 } +}); + +// $elemMatch - Match array elements with multiple conditions +const ordersWithExpensiveItems = await Order.getInstances({ + items: { + $elemMatch: { + product: 'laptop', + quantity: { $gte: 2 }, + price: { $gt: 1000 } + } + } +}); +``` + +### Working with Arrays + +```typescript +// Find documents where array field contains a value +const javascriptUsers = await User.getInstances({ + tags: { $in: ['javascript'] } // Users with 'javascript' in tags array +}); + +// Find documents where array field contains ALL values +const expertUsers = await User.getInstances({ + certifications: { $all: ['mongodb', 'nodejs', 'typescript'] } +}); + +// Query nested arrays of objects +const highValueOrders = await Order.getInstances({ + 'items.price': { $gte: 100 } // Orders with any item priced >= 100 +}); + +// Complex array element matching +const bulkElectronicsOrders = await Order.getInstances({ + items: { + $elemMatch: { + category: 'electronics', + quantity: { $gte: 5 }, + discount: { $exists: true } + } + } +}); +``` + +### Logical Operators + +Combine multiple conditions with logical operators: + +```typescript +// $or - Match any condition +const urgentOrHighValue = await Order.getInstances({ + $or: [ + { priority: 'urgent' }, + { totalAmount: { $gte: 1000 } } + ] +}); + +// $and - Match all conditions (usually implicit, but useful for complex queries) +const premiumActiveUsers = await User.getInstances({ + $and: [ + { subscription: 'premium' }, + { status: 'active' }, + { lastLogin: { $gte: new Date(Date.now() - 30*24*60*60*1000) } } + ] +}); + +// $nor - Match none of the conditions +const availableProducts = await Product.getInstances({ + $nor: [ + { status: 'discontinued' }, + { inventory: { $lte: 0 } } + ] +}); + +// $not - Negate a condition +const nonEmptyArrays = await User.getInstances({ + tags: { $not: { $size: 0 } } +}); + +// Nested logical operations +const complexQuery = await User.getInstances({ + $or: [ + { + $and: [ + { role: 'admin' }, + { department: 'IT' } + ] + }, + { + $and: [ + { role: 'manager' }, + { yearsExperience: { $gte: 5 } } + ] + } + ] +}); +``` + +### Element Operators + +Check for field existence and types: + +```typescript +// $exists - Check if field exists +const usersWithAvatar = await User.getInstances({ + 'profile.avatar': { $exists: true } +}); + +const usersWithoutPhone = await User.getInstances({ + phoneNumber: { $exists: false } +}); + +// $type - Check field type (MongoDB BSON types) +const usersWithStringId = await User.getInstances({ + id: { $type: 'string' } // or use type number: 2 for string +}); +``` + +### Regular Expressions + +Use regex for pattern matching: + +```typescript +// Case-insensitive search +const johnUsers = await User.getInstances({ + name: { $regex: '^john', $options: 'i' } +}); + +// Email domain matching +const gmailUsers = await User.getInstances({ + email: { $regex: '@gmail\.com$' } +}); + +// Complex pattern matching +const validPhones = await User.getInstances({ + phone: { $regex: '^\+1-\d{3}-\d{3}-\d{4}$' } +}); +``` + +### Advanced Filtering Patterns + +```typescript +// Combine multiple operator types +const targetUsers = await User.getInstances({ + $and: [ + { age: { $gte: 25, $lte: 45 } }, + { status: { $in: ['active', 'premium'] } }, + { + $or: [ + { 'subscription.type': 'annual' }, + { 'subscription.credits': { $gte: 100 } } + ] + }, + { tags: { $all: ['verified', 'trusted'] } } + ] +}); + +// Filter with post-processing validation +const results = await Product.search('laptop', { + filter: { + price: { $lte: 2000 }, + brand: { $in: ['Apple', 'Dell', 'Lenovo'] } + }, + validate: async (product) => { + // Additional custom validation + return product.warrantyYears >= 2 && product.inStock; + } +}); + +// Transaction-safe filtering +const session = db.startSession(); +await session.withTransaction(async () => { + const users = await User.getInstances( + { status: 'pending' }, + { session } // Pass session for transaction + ); + // Process users within transaction +}); +``` + +### Performance Tips + +1. **Use Indexes**: Create indexes on frequently filtered fields: + ```typescript + @index() public status: string; // Regular index + @unI() public email: string; // Unique index + ``` + +2. **Limit Results**: Use cursors for large datasets: + ```typescript + const cursor = await User.getCursor({ status: 'active' }); + await cursor.forEach(async (user) => { + // Process one at a time + }); + ``` + +3. **Projection**: Retrieve only needed fields (using MongoDB native): + ```typescript + const collection = User.getCollection(); + const results = await collection.mongoDbCollection + .find({ status: 'active' }) + .project({ name: 1, email: 1 }) + .toArray(); + ``` + +### Security Considerations + +SmartData automatically prevents dangerous operations: + +```typescript +// ❌ These will throw errors: +await User.getInstances({ + $where: 'this.age > 25' // Blocked: JavaScript execution +}); + +await User.getInstances({ + 'user.name': { 'bad.key': 'value' } // Blocked: dots in keys +}); + +// ✅ Safe alternatives: +await User.getInstances({ + age: { $gt: 25 } // Use operators instead +}); + +await User.getInstances({ + 'user.name': 'value' // Use dot notation for nested fields +}); +``` + +### Common Pitfalls and Solutions + +```typescript +// ❌ Wrong: Array operators need arrays +await User.getInstances({ + role: { $in: 'admin' } // Error: $in requires array +}); + +// ✅ Correct: +await User.getInstances({ + role: { $in: ['admin'] } +}); + +// ❌ Wrong: Direct array comparison (exact match) +await User.getInstances({ + tags: 'javascript' // Only matches if tags = ['javascript'] exactly +}); + +// ✅ Correct: Check if array contains element +await User.getInstances({ + tags: { $in: ['javascript'] } // Matches if 'javascript' is in tags +}); + +// ❌ Wrong: Checking multiple array elements incorrectly +await User.getInstances({ + skills: 'javascript', + skills: 'nodejs' // Object can't have duplicate keys! +}); + +// ✅ Correct: Use $all for multiple elements +await User.getInstances({ + skills: { $all: ['javascript', 'nodejs'] } +}); +``` + ## 🔥 Advanced Features ### 🔎 Powerful Search Engine diff --git a/test/test.filters.ts b/test/test.filters.ts new file mode 100644 index 0000000..328d392 --- /dev/null +++ b/test/test.filters.ts @@ -0,0 +1,604 @@ +import { tap, expect } from '@git.zone/tstest/tapbundle'; +import * as smartmongo from '@push.rocks/smartmongo'; +import * as smartunique from '@push.rocks/smartunique'; +import * as smartdata from '../ts/index.js'; + +const { SmartdataDb, Collection, svDb, unI, index } = smartdata; + +let smartmongoInstance: smartmongo.SmartMongo; +let testDb: smartdata.SmartdataDb; + +// Define test document classes +@Collection(() => testDb) +class TestUser extends smartdata.SmartDataDbDoc { + @unI() + public id: string = smartunique.shortId(); + + @svDb() + public name: string; + + @svDb() + public age: number; + + @svDb() + public email: string; + + @svDb() + public roles: string[]; + + @svDb() + public tags: string[]; + + @svDb() + public status: 'active' | 'inactive' | 'pending'; + + @svDb() + public metadata: { + lastLogin?: Date; + loginCount?: number; + preferences?: Record; + }; + + @svDb() + public scores: number[]; + + constructor(data: Partial = {}) { + super(); + Object.assign(this, data); + } +} + +@Collection(() => testDb) +class TestOrder extends smartdata.SmartDataDbDoc { + @unI() + public id: string = smartunique.shortId(); + + @svDb() + public userId: string; + + @svDb() + public items: Array<{ + product: string; + quantity: number; + price: number; + }>; + + @svDb() + public totalAmount: number; + + @svDb() + public status: string; + + @svDb() + public tags: string[]; + + constructor(data: Partial = {}) { + super(); + Object.assign(this, data); + } +} + +// Setup and teardown +tap.test('should create a test database instance', async () => { + smartmongoInstance = await smartmongo.SmartMongo.createAndStart(); + testDb = new smartdata.SmartdataDb(await smartmongoInstance.getMongoDescriptor()); + await testDb.init(); + expect(testDb).toBeInstanceOf(SmartdataDb); +}); + +tap.test('should create test data', async () => { + // Create test users + const users = [ + new TestUser({ + name: 'John Doe', + age: 30, + email: 'john@example.com', + roles: ['admin', 'user'], + tags: ['javascript', 'nodejs', 'mongodb'], + status: 'active', + metadata: { loginCount: 5, lastLogin: new Date() }, + scores: [85, 90, 78] + }), + new TestUser({ + name: 'Jane Smith', + age: 25, + email: 'jane@example.com', + roles: ['user'], + tags: ['python', 'mongodb'], + status: 'active', + metadata: { loginCount: 3 }, + scores: [92, 88, 95] + }), + new TestUser({ + name: 'Bob Johnson', + age: 35, + email: 'bob@example.com', + roles: ['moderator', 'user'], + tags: ['javascript', 'react', 'nodejs'], + status: 'inactive', + metadata: { loginCount: 0 }, + scores: [70, 75, 80] + }), + new TestUser({ + name: 'Alice Brown', + age: 28, + email: 'alice@example.com', + roles: ['admin'], + tags: ['typescript', 'angular', 'mongodb'], + status: 'active', + metadata: { loginCount: 10 }, + scores: [95, 98, 100] + }), + new TestUser({ + name: 'Charlie Wilson', + age: 22, + email: 'charlie@example.com', + roles: ['user'], + tags: ['golang', 'kubernetes'], + status: 'pending', + metadata: { loginCount: 1 }, + scores: [60, 65] + }) + ]; + + for (const user of users) { + await user.save(); + } + + // Create test orders + const orders = [ + new TestOrder({ + userId: users[0].id, + items: [ + { product: 'laptop', quantity: 1, price: 1200 }, + { product: 'mouse', quantity: 2, price: 25 } + ], + totalAmount: 1250, + status: 'completed', + tags: ['electronics', 'priority'] + }), + new TestOrder({ + userId: users[1].id, + items: [ + { product: 'book', quantity: 3, price: 15 }, + { product: 'pen', quantity: 5, price: 2 } + ], + totalAmount: 55, + status: 'pending', + tags: ['stationery'] + }), + new TestOrder({ + userId: users[0].id, + items: [ + { product: 'laptop', quantity: 2, price: 1200 }, + { product: 'keyboard', quantity: 2, price: 80 } + ], + totalAmount: 2560, + status: 'processing', + tags: ['electronics', 'bulk'] + }) + ]; + + for (const order of orders) { + await order.save(); + } + + const savedUsers = await TestUser.getInstances({}); + const savedOrders = await TestOrder.getInstances({}); + expect(savedUsers.length).toEqual(5); + expect(savedOrders.length).toEqual(3); +}); + +// ============= BASIC FILTER TESTS ============= +tap.test('should filter by simple equality', async () => { + const users = await TestUser.getInstances({ name: 'John Doe' }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('John Doe'); +}); + +tap.test('should filter by multiple fields (implicit AND)', async () => { + const users = await TestUser.getInstances({ + status: 'active', + age: 30 + }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('John Doe'); +}); + +tap.test('should filter by nested object fields', async () => { + const users = await TestUser.getInstances({ + 'metadata.loginCount': 5 + }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('John Doe'); +}); + +// ============= COMPARISON OPERATOR TESTS ============= +tap.test('should filter using $gt operator', async () => { + const users = await TestUser.getInstances({ + age: { $gt: 30 } + }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('Bob Johnson'); +}); + +tap.test('should filter using $gte operator', async () => { + const users = await TestUser.getInstances({ + age: { $gte: 30 } + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Bob Johnson', 'John Doe']); +}); + +tap.test('should filter using $lt operator', async () => { + const users = await TestUser.getInstances({ + age: { $lt: 25 } + }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('Charlie Wilson'); +}); + +tap.test('should filter using $lte operator', async () => { + const users = await TestUser.getInstances({ + age: { $lte: 25 } + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Charlie Wilson', 'Jane Smith']); +}); + +tap.test('should filter using $ne operator', async () => { + const users = await TestUser.getInstances({ + status: { $ne: 'active' } + }); + expect(users.length).toEqual(2); + const statuses = users.map(u => u.status).sort(); + expect(statuses).toEqual(['inactive', 'pending']); +}); + +tap.test('should filter using multiple comparison operators', async () => { + const users = await TestUser.getInstances({ + age: { $gte: 25, $lt: 30 } + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Alice Brown', 'Jane Smith']); +}); + +// ============= ARRAY OPERATOR TESTS ============= +tap.test('should filter using $in operator', async () => { + const users = await TestUser.getInstances({ + status: { $in: ['active', 'pending'] } + }); + expect(users.length).toEqual(4); + expect(users.every(u => ['active', 'pending'].includes(u.status))).toEqual(true); +}); + +tap.test('should filter arrays using $in operator', async () => { + const users = await TestUser.getInstances({ + roles: { $in: ['admin'] } + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Alice Brown', 'John Doe']); +}); + +tap.test('should filter using $nin operator', async () => { + const users = await TestUser.getInstances({ + status: { $nin: ['inactive', 'pending'] } + }); + expect(users.length).toEqual(3); + expect(users.every(u => u.status === 'active')).toEqual(true); +}); + +tap.test('should filter arrays using $all operator', async () => { + const users = await TestUser.getInstances({ + tags: { $all: ['javascript', 'nodejs'] } + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Bob Johnson', 'John Doe']); +}); + +tap.test('should filter arrays using $size operator', async () => { + const users = await TestUser.getInstances({ + scores: { $size: 2 } + }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('Charlie Wilson'); +}); + +tap.test('should filter arrays using $elemMatch operator', async () => { + const orders = await TestOrder.getInstances({ + items: { + $elemMatch: { + product: 'laptop', + quantity: { $gte: 2 } + } + } + }); + expect(orders.length).toEqual(1); + expect(orders[0].totalAmount).toEqual(2560); +}); + +tap.test('should filter using $elemMatch with single condition', async () => { + const orders = await TestOrder.getInstances({ + items: { + $elemMatch: { + price: { $gt: 100 } + } + } + }); + expect(orders.length).toEqual(2); + expect(orders.every(o => o.items.some(i => i.price > 100))).toEqual(true); +}); + +// ============= LOGICAL OPERATOR TESTS ============= +tap.test('should filter using $or operator', async () => { + const users = await TestUser.getInstances({ + $or: [ + { age: { $lt: 25 } }, + { status: 'inactive' } + ] + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Bob Johnson', 'Charlie Wilson']); +}); + +tap.test('should filter using $and operator', async () => { + const users = await TestUser.getInstances({ + $and: [ + { status: 'active' }, + { age: { $gte: 28 } } + ] + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Alice Brown', 'John Doe']); +}); + +tap.test('should filter using $nor operator', async () => { + const users = await TestUser.getInstances({ + $nor: [ + { status: 'inactive' }, + { age: { $lt: 25 } } + ] + }); + expect(users.length).toEqual(3); + expect(users.every(u => u.status !== 'inactive' && u.age >= 25)).toEqual(true); +}); + +tap.test('should filter using nested logical operators', async () => { + const users = await TestUser.getInstances({ + $or: [ + { + $and: [ + { status: 'active' }, + { roles: { $in: ['admin'] } } + ] + }, + { age: { $lt: 23 } } + ] + }); + expect(users.length).toEqual(3); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Alice Brown', 'Charlie Wilson', 'John Doe']); +}); + +// ============= ELEMENT OPERATOR TESTS ============= +tap.test('should filter using $exists operator', async () => { + const users = await TestUser.getInstances({ + 'metadata.lastLogin': { $exists: true } + }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('John Doe'); +}); + +tap.test('should filter using $exists false', async () => { + const users = await TestUser.getInstances({ + 'metadata.preferences': { $exists: false } + }); + expect(users.length).toEqual(5); +}); + +// ============= COMPLEX FILTER TESTS ============= +tap.test('should handle complex nested filters', async () => { + const users = await TestUser.getInstances({ + $and: [ + { status: 'active' }, + { + $or: [ + { age: { $gte: 30 } }, + { roles: { $all: ['admin'] } } + ] + }, + { tags: { $in: ['mongodb'] } } + ] + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Alice Brown', 'John Doe']); +}); + +tap.test('should combine multiple operator types', async () => { + const orders = await TestOrder.getInstances({ + $and: [ + { totalAmount: { $gte: 100 } }, + { status: { $in: ['completed', 'processing'] } }, + { tags: { $in: ['electronics'] } } + ] + }); + expect(orders.length).toEqual(2); + expect(orders.every(o => o.totalAmount >= 100)).toEqual(true); +}); + +// ============= ERROR HANDLING TESTS ============= +tap.test('should throw error for $where operator', async () => { + let error: Error | null = null; + try { + await TestUser.getInstances({ + $where: 'this.age > 25' + }); + } catch (e) { + error = e as Error; + } + expect(error).toBeTruthy(); + expect(error?.message).toMatch(/\$where.*not allowed/); +}); + +tap.test('should throw error for invalid $in value', async () => { + let error: Error | null = null; + try { + await TestUser.getInstances({ + status: { $in: 'active' as any } // Should be an array + }); + } catch (e) { + error = e as Error; + } + expect(error).toBeTruthy(); + expect(error?.message).toMatch(/\$in.*requires.*array/); +}); + +tap.test('should throw error for invalid $size value', async () => { + let error: Error | null = null; + try { + await TestUser.getInstances({ + scores: { $size: '3' as any } // Should be a number + }); + } catch (e) { + error = e as Error; + } + expect(error).toBeTruthy(); + expect(error?.message).toMatch(/\$size.*requires.*numeric/); +}); + +tap.test('should throw error for dots in field names', async () => { + let error: Error | null = null; + try { + await TestUser.getInstances({ + 'some.nested.field': { 'invalid.key': 'value' } + }); + } catch (e) { + error = e as Error; + } + expect(error).toBeTruthy(); + expect(error?.message).toMatch(/keys cannot contain dots/); +}); + +// ============= EDGE CASE TESTS ============= +tap.test('should handle empty filter (return all)', async () => { + const users = await TestUser.getInstances({}); + expect(users.length).toEqual(5); +}); + +tap.test('should handle null values in filter', async () => { + // First, create a user with null email + const nullUser = new TestUser({ + name: 'Null User', + age: 40, + email: null as any, + roles: ['user'], + tags: [], + status: 'active', + metadata: {}, + scores: [] + }); + await nullUser.save(); + + const users = await TestUser.getInstances({ email: null }); + expect(users.length).toEqual(1); + expect(users[0].name).toEqual('Null User'); + + // Clean up + await nullUser.delete(); +}); + +tap.test('should handle arrays as direct equality match', async () => { + // This tests that arrays without operators are treated as equality matches + const users = await TestUser.getInstances({ + roles: ['user'] // Exact match for array + }); + expect(users.length).toEqual(2); // Both Jane and Charlie have exactly ['user'] + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Charlie Wilson', 'Jane Smith']); +}); + +tap.test('should handle regex operator', async () => { + const users = await TestUser.getInstances({ + name: { $regex: '^J', $options: 'i' } + }); + expect(users.length).toEqual(2); + const names = users.map(u => u.name).sort(); + expect(names).toEqual(['Jane Smith', 'John Doe']); +}); + +tap.test('should handle unknown operators by letting MongoDB reject them', async () => { + // Unknown operators should be passed through to MongoDB, which will reject them + let error: Error | null = null; + + try { + await TestUser.getInstances({ + age: { $unknownOp: 30 } as any + }); + } catch (e) { + error = e as Error; + } + + expect(error).toBeTruthy(); + expect(error?.message).toMatch(/unknown operator.*\$unknownOp/); +}); + +// ============= PERFORMANCE TESTS ============= +tap.test('should efficiently filter large result sets', async () => { + // Create many test documents + const manyUsers = []; + for (let i = 0; i < 100; i++) { + manyUsers.push(new TestUser({ + name: `User ${i}`, + age: 20 + (i % 40), + email: `user${i}@example.com`, + roles: i % 3 === 0 ? ['admin'] : ['user'], + tags: i % 2 === 0 ? ['even', 'test'] : ['odd', 'test'], + status: i % 4 === 0 ? 'inactive' : 'active', + metadata: { loginCount: i }, + scores: [i, i + 10, i + 20] + })); + } + + // Save in batches for efficiency + for (const user of manyUsers) { + await user.save(); + } + + // Complex filter that should still be fast + const startTime = Date.now(); + const filtered = await TestUser.getInstances({ + $and: [ + { age: { $gte: 30, $lt: 40 } }, + { status: 'active' }, + { tags: { $in: ['even'] } }, + { 'metadata.loginCount': { $gte: 20 } } + ] + }); + const duration = Date.now() - startTime; + + console.log(`Complex filter on 100+ documents took ${duration}ms`); + expect(duration).toBeLessThan(1000); // Should complete in under 1 second + expect(filtered.length).toBeGreaterThan(0); + + // Clean up + for (const user of manyUsers) { + await user.delete(); + } +}); + +// ============= CLEANUP ============= +tap.test('should clean up test database', async () => { + await testDb.mongoDb.dropDatabase(); + await testDb.close(); + await smartmongoInstance.stop(); +}); + +export default tap.start(); \ No newline at end of file diff --git a/ts/classes.doc.ts b/ts/classes.doc.ts index 4855615..03bee56 100644 --- a/ts/classes.doc.ts +++ b/ts/classes.doc.ts @@ -151,9 +151,49 @@ export function index(options?: IIndexOptions) { }; } +// Type that allows MongoDB operators on leaf values while maintaining nested type safety +export type MongoFilterCondition = T | { + $eq?: T; + $ne?: T; + $gt?: T; + $gte?: T; + $lt?: T; + $lte?: T; + $in?: T extends (infer U)[] ? U[] | U : T[]; + $nin?: T extends (infer U)[] ? U[] | U : T[]; + $exists?: boolean; + $type?: string | number; + $regex?: string | RegExp; + $options?: string; + $all?: T extends (infer U)[] ? U[] : never; + $elemMatch?: T extends (infer U)[] ? MongoFilter : never; + $size?: T extends any[] ? number : never; + $not?: MongoFilterCondition; +}; + +export type MongoFilter = { + [K in keyof T]?: T[K] extends object + ? T[K] extends any[] + ? MongoFilterCondition // Arrays can have operators + : MongoFilter | MongoFilterCondition // Objects can be nested or have operators + : MongoFilterCondition; // Primitives get operators +} & { + // Logical operators + $and?: MongoFilter[]; + $or?: MongoFilter[]; + $nor?: MongoFilter[]; + $not?: MongoFilter; + // Allow any string key for dot notation (we lose type safety here but maintain flexibility) + [key: string]: any; +}; + export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => { + // SECURITY: Block $where to prevent server-side JS execution + if (filterArg.$where !== undefined) { + throw new Error('$where operator is not allowed for security reasons'); + } + // Special case: detect MongoDB operators and pass them through directly - // SECURITY: Removed $where to prevent server-side JS execution const topLevelOperators = ['$and', '$or', '$nor', '$not', '$text', '$regex']; for (const key of Object.keys(filterArg)) { if (topLevelOperators.includes(key)) { @@ -166,26 +206,76 @@ export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => { const convertFilterArgument = (keyPathArg2: string, filterArg2: any) => { if (Array.isArray(filterArg2)) { - // FIX: Properly handle arrays for operators like $in, $all, or plain equality + // Arrays are typically used as values for operators like $in or as direct equality matches convertedFilter[keyPathArg2] = filterArg2; return; } else if (typeof filterArg2 === 'object' && filterArg2 !== null) { - for (const key of Object.keys(filterArg2)) { - if (key.startsWith('$')) { - // Prevent dangerous operators - if (key === '$where') { - throw new Error('$where operator is not allowed for security reasons'); - } - convertedFilter[keyPathArg2] = filterArg2; - return; - } else if (key.includes('.')) { + // Check if this is an object with MongoDB operators + const keys = Object.keys(filterArg2); + const hasOperators = keys.some(key => key.startsWith('$')); + + if (hasOperators) { + // This object contains MongoDB operators + // Validate and pass through allowed operators + const allowedOperators = [ + // Comparison operators + '$eq', '$ne', '$gt', '$gte', '$lt', '$lte', + // Array operators + '$in', '$nin', '$all', '$elemMatch', '$size', + // Element operators + '$exists', '$type', + // Evaluation operators (safe ones only) + '$regex', '$options', '$text', '$mod', + // Logical operators (nested) + '$and', '$or', '$nor', '$not' + ]; + + // Check for dangerous operators + if (keys.includes('$where')) { + throw new Error('$where operator is not allowed for security reasons'); + } + + // Validate all operators are in the allowed list + const invalidOperators = keys.filter(key => + key.startsWith('$') && !allowedOperators.includes(key) + ); + + if (invalidOperators.length > 0) { + console.warn(`Warning: Unknown MongoDB operators detected: ${invalidOperators.join(', ')}`); + } + + // For array operators, ensure the values are appropriate + if (filterArg2.$in && !Array.isArray(filterArg2.$in)) { + throw new Error('$in operator requires an array value'); + } + if (filterArg2.$nin && !Array.isArray(filterArg2.$nin)) { + throw new Error('$nin operator requires an array value'); + } + if (filterArg2.$all && !Array.isArray(filterArg2.$all)) { + throw new Error('$all operator requires an array value'); + } + if (filterArg2.$size && typeof filterArg2.$size !== 'number') { + throw new Error('$size operator requires a numeric value'); + } + + // Pass the operator object through + convertedFilter[keyPathArg2] = filterArg2; + return; + } + + // No operators, check for dots in keys + for (const key of keys) { + if (key.includes('.')) { throw new Error('keys cannot contain dots'); } } - for (const key of Object.keys(filterArg2)) { + + // Recursively process nested objects + for (const key of keys) { convertFilterArgument(`${keyPathArg2}.${key}`, filterArg2[key]); } } else { + // Primitive values convertedFilter[keyPathArg2] = filterArg2; } }; @@ -227,12 +317,12 @@ export class SmartDataDbDoc( this: plugins.tsclass.typeFest.Class, - filterArg: plugins.tsclass.typeFest.PartialDeep, + filterArg: MongoFilter, opts?: { session?: plugins.mongodb.ClientSession } ): Promise { // Pass session through to findAll for transactional queries @@ -256,7 +346,7 @@ export class SmartDataDbDoc( this: plugins.tsclass.typeFest.Class, - filterArg: plugins.tsclass.typeFest.PartialDeep, + filterArg: MongoFilter, opts?: { session?: plugins.mongodb.ClientSession } ): Promise { // Retrieve one document, with optional session for transactions @@ -289,7 +379,7 @@ export class SmartDataDbDoc( this: plugins.tsclass.typeFest.Class, - filterArg: plugins.tsclass.typeFest.PartialDeep, + filterArg: MongoFilter, opts?: { session?: plugins.mongodb.ClientSession; modifier?: (cursorArg: plugins.mongodb.FindCursor>) => plugins.mongodb.FindCursor>; @@ -319,7 +409,7 @@ export class SmartDataDbDoc( this: plugins.tsclass.typeFest.Class, - filterArg: plugins.tsclass.typeFest.PartialDeep, + filterArg: MongoFilter, opts?: plugins.mongodb.ChangeStreamOptions & { bufferTimeMs?: number }, ): Promise> { const collection: SmartdataCollection = (this as any).collection; @@ -337,7 +427,7 @@ export class SmartDataDbDoc( this: plugins.tsclass.typeFest.Class, - filterArg: plugins.tsclass.typeFest.PartialDeep, + filterArg: MongoFilter, forEachFunction: (itemArg: T) => Promise, ) { const cursor: SmartdataDbCursor = await (this as any).getCursor(filterArg); @@ -349,7 +439,7 @@ export class SmartDataDbDoc( this: plugins.tsclass.typeFest.Class, - filterArg: plugins.tsclass.typeFest.PartialDeep = {} as any, + filterArg: MongoFilter = {} as any, ) { const collection: SmartdataCollection = (this as any).collection; return await collection.getCount(filterArg);