diff --git a/.gitignore b/.gitignore index ef13c79..0a41e90 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ node_modules/ dist/ dist_*/ -# custom \ No newline at end of file +# custom +**/.claude/settings.local.json diff --git a/package.json b/package.json index 77f638b..750761e 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "@git.zone/tsrun": "^1.2.8", "@git.zone/tstest": "^1.0.88", "@git.zone/tswatch": "^2.0.1", - "@push.rocks/tapbundle": "^6.0.3" + "@push.rocks/tapbundle": "^6.0.3", + "@types/node": "^22.15.14" }, "dependencies": { "@api.global/typedrequest": "^3.0.19", @@ -29,22 +30,23 @@ "@apiclient.xyz/cloudflare": "^6.4.1", "@apiclient.xyz/letterxpress": "^1.0.22", "@push.rocks/projectinfo": "^5.0.1", - "@push.rocks/qenv": "^6.0.5", + "@push.rocks/qenv": "^6.1.0", + "@push.rocks/smartacme": "^7.3.3", "@push.rocks/smartdata": "^5.15.1", "@push.rocks/smartdns": "^6.2.2", "@push.rocks/smartfile": "^11.0.4", "@push.rocks/smartlog": "^3.0.3", - "@push.rocks/smartmail": "^1.0.24", + "@push.rocks/smartmail": "^2.0.1", "@push.rocks/smartpath": "^5.0.5", "@push.rocks/smartpromise": "^4.0.3", - "@push.rocks/smartproxy": "^10.0.2", + "@push.rocks/smartproxy": "^10.2.0", "@push.rocks/smartrequest": "^2.1.0", "@push.rocks/smartrule": "^2.0.1", "@push.rocks/smartrx": "^3.0.10", "@push.rocks/smartstate": "^2.0.0", "@serve.zone/interfaces": "^5.0.4", - "@tsclass/tsclass": "^9.1.0", - "@types/mailparser": "^3.4.5", + "@tsclass/tsclass": "^9.2.0", + "@types/mailparser": "^3.4.6", "mailauth": "^4.8.4", "mailparser": "^3.6.9", "uuid": "^11.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 90a3646..41ba2be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,11 +27,14 @@ importers: specifier: ^5.0.1 version: 5.0.2 '@push.rocks/qenv': - specifier: ^6.0.5 + specifier: ^6.1.0 version: 6.1.0 + '@push.rocks/smartacme': + specifier: ^7.3.3 + version: 7.3.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartdata': specifier: ^5.15.1 - version: 5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + version: 5.15.1(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartdns': specifier: ^6.2.2 version: 6.2.2 @@ -42,8 +45,8 @@ importers: specifier: ^3.0.3 version: 3.0.7 '@push.rocks/smartmail': - specifier: ^1.0.24 - version: 1.0.24 + specifier: ^2.0.1 + version: 2.0.1 '@push.rocks/smartpath': specifier: ^5.0.5 version: 5.0.18 @@ -51,8 +54,8 @@ importers: specifier: ^4.0.3 version: 4.2.3 '@push.rocks/smartproxy': - specifier: ^10.0.2 - version: 10.0.2(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + specifier: ^10.2.0 + version: 10.2.0(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartrequest': specifier: ^2.1.0 version: 2.1.0 @@ -69,11 +72,11 @@ importers: specifier: ^5.0.4 version: 5.0.4 '@tsclass/tsclass': - specifier: ^9.1.0 - version: 9.1.0 + specifier: ^9.2.0 + version: 9.2.0 '@types/mailparser': - specifier: ^3.4.5 - version: 3.4.5 + specifier: ^3.4.6 + version: 3.4.6 mailauth: specifier: ^4.8.4 version: 4.8.4 @@ -92,13 +95,16 @@ importers: version: 1.3.3 '@git.zone/tstest': specifier: ^1.0.88 - version: 1.0.96(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)(typescript@5.7.3) + version: 1.0.96(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)(typescript@5.7.3) '@git.zone/tswatch': specifier: ^2.0.1 version: 2.1.0 '@push.rocks/tapbundle': specifier: ^6.0.3 - version: 6.0.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + version: 6.0.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) + '@types/node': + specifier: ^22.15.14 + version: 22.15.14 packages: @@ -146,56 +152,56 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-cognito-identity@3.796.0': - resolution: {integrity: sha512-p8ZzHICnQaCL4oS16yHUCLH6/VkbmWP8p2P7vALncUYguHDE/oNcWNAARo56x3Qx0TbRCi0OD4KAwD6AhddMdg==} + '@aws-sdk/client-cognito-identity@3.799.0': + resolution: {integrity: sha512-gg1sncxYDpYWetey3v/nw9zSkL/Vj2potpeO9sYWY2brcm8SbGh106I6IM/gX6KnY9Y2Bre8xb+JoZGz6ntcnw==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-s3@3.796.0': - resolution: {integrity: sha512-zRQhrj80atJX5mxC6MPH261iIMIc+RQmkDe+rZVm/61waUm/1ZFn1hSyi5i2Azor/2V2FnS9WVeWp57Sd0TahQ==} + '@aws-sdk/client-s3@3.802.0': + resolution: {integrity: sha512-YIwLLiqRZArEmRI94X8MOpWuXlmxI3NnxYv+3kk6HIc2YWPaOAf0YN7vWlnQFWo6Yi1gBRtP0HM8WzK4Bn5ORQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.796.0': - resolution: {integrity: sha512-EJExg8mbwqP0VG+RNFV4ZPuUo7QsDsUfTnuFQY51V8iXrbOdV+PDLRr4psXj2fxvrLxc9AlGUMNqd/j4VZtQzA==} + '@aws-sdk/client-sso@3.799.0': + resolution: {integrity: sha512-/i/LG7AiWPmPxKCA2jnR2zaf7B3HYSTbxaZI21ElIz9wASlNAsKr8CnLY7qb50kOyXiNfQ834S5Q3Gl8dX9o3Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.796.0': - resolution: {integrity: sha512-tH8Sp7lCxISVoLnkyv4AouuXs2CDlMhTuesWa0lq2NX1f+DXsMwSBtN37ttZdpFMw3F8mWdsJt27X9h2Oq868A==} + '@aws-sdk/core@3.799.0': + resolution: {integrity: sha512-hkKF3Zpc6+H8GI1rlttYVRh9uEE77cqAzLmLpY3iu7sql8cZgPERRBfaFct8p1SaDyrksLNiboD1vKW58mbsYg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-cognito-identity@3.796.0': - resolution: {integrity: sha512-plvMsQNWW1Jq7YRs8S6xHEbdn+kO/F+vDjCBrPaT4LhcDMsXqO/jcDNRuYOnPRBQsqjp7n7MM3oMhyY4fupa6g==} + '@aws-sdk/credential-provider-cognito-identity@3.799.0': + resolution: {integrity: sha512-qHOqGsvt/z1bvjJRzndW8VaRfbGBhoETZpoRYNbfCbrNH2IRM98KRUlYH1EJ1wFFkT0gUDJr+oIOUCvRlgRW1Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.796.0': - resolution: {integrity: sha512-kQzGKm4IOYYO6vUrai2JocNwhJm4Aml2BsAV+tBhFhhkutE7khf9PUucoVjB78b0J48nF+kdSacqzY+gB81/Uw==} + '@aws-sdk/credential-provider-env@3.799.0': + resolution: {integrity: sha512-vT/SSWtbUIOW/U21qgEySmmO44SFWIA7WeQPX1OrI8WJ5n7OEI23JWLHjLvHTkYmuZK6z1rPcv7HzRgmuGRibA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.796.0': - resolution: {integrity: sha512-wWOT6VAHIKOuHdKFGm1iyKvx7f6+Kc/YTzFWJPuT+l+CPlXR6ylP1UMIDsHHLKpMzsrh3CH77QDsjkhQrnKkfg==} + '@aws-sdk/credential-provider-http@3.799.0': + resolution: {integrity: sha512-2CjBpOWmhaPAExOgHnIB5nOkS5ef+mfRlJ1JC4nsnjAx0nrK4tk0XRE0LYz11P3+ue+a86cU8WTmBo+qjnGxPQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.796.0': - resolution: {integrity: sha512-qGWBDn9aO8avFfYU7daps7Sy6OglF1x0q0w48slt0KMXbHd2/LvKVIiYwyofYCXed0yzcEOF2IYm9FjXdcn+ug==} + '@aws-sdk/credential-provider-ini@3.799.0': + resolution: {integrity: sha512-M9ubILFxerqw4QJwk83MnjtZyoA2eNCiea5V+PzZeHlwk2PON/EnawKqy65x9/hMHGoSvvNuby7iMAmPptu7yw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.796.0': - resolution: {integrity: sha512-WeNK7OWPrsOvhO3DAgpUO0FtmVghMaZ/IpPJHJ4Y0nBIsWOBXLrbZ2Y1mdT8N2bGGUaM91tJaV8Yf8COc3gvmA==} + '@aws-sdk/credential-provider-node@3.799.0': + resolution: {integrity: sha512-nd9fSJc0wUlgKUkIr2ldJhcIIrzJFS29AGZoyY22J3xih63nNDv61eTGVMsDZzHlV21XzMlPEljTR7axiimckg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.796.0': - resolution: {integrity: sha512-r4e8/4AdKn/qQbRVocW7oXkpoiuXdTv0qty8AASNLnbQnT1vjD1bvmP6kp4fbHPWgwY8I9h0Dqjp49uy9Bqyuw==} + '@aws-sdk/credential-provider-process@3.799.0': + resolution: {integrity: sha512-g8jmNs2k98WNHMYcea1YKA+7ao2Ma4w0P42Dz4YpcI155pQHxHx25RwbOG+rsAKuo3bKwkW53HVE/ZTKhcWFgw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.796.0': - resolution: {integrity: sha512-RUYsQ1t6UdzkpZ7pocUt1l/9l9GCYCaopIhv0DU6CipA8rkWtoweKsLHKdv+8wE4p6gqDfDIHGam1ivswiCIzg==} + '@aws-sdk/credential-provider-sso@3.799.0': + resolution: {integrity: sha512-lQv27QkNU9FJFZqEf5DIEN3uXEN409Iaym9WJzhOouGtxvTIAWiD23OYh1u8PvBdrordJGS2YddfQvhcmq9akw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.796.0': - resolution: {integrity: sha512-dpmFJT4IyjT09vruvMu/rWQQjVreqdxAe8pLPpGhoeKyA1O6+PS73b+VNXKvD31rQT8e4g6dVpA6KMxNW63aag==} + '@aws-sdk/credential-provider-web-identity@3.799.0': + resolution: {integrity: sha512-8k1i9ut+BEg0QZ+I6UQMxGNR1T8paLmAOAZXU+nLQR0lcxS6lr8v+dqofgzQPuHLBkWNCr1Av1IKeL3bJjgU7g==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-providers@3.796.0': - resolution: {integrity: sha512-thZw44Bk3pS0PW81QmPfNSliX5XfXHDlWRjPYHBx+eTlPtidyD5klJkkfF5fkQlpHPeP2KNLuRnr6bRu+uMirg==} + '@aws-sdk/credential-providers@3.799.0': + resolution: {integrity: sha512-Gk10skoEri6zsCPxn34Zpu6Z1B5R3RLwqDw1krNl+B1P749gB6i7XULXZUOotqpum0T0q4euOwAB8XWuTOkKew==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-bucket-endpoint@3.775.0': @@ -206,8 +212,8 @@ packages: resolution: {integrity: sha512-Apd3owkIeUW5dnk3au9np2IdW2N0zc9NjTjHiH+Mx3zqwSrc+m+ANgJVgk9mnQjMzU/vb7VuxJ0eqdEbp5gYsg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.796.0': - resolution: {integrity: sha512-JTqnyzGlbvXDcEnBtd5LFNrCFKUHnGyp/V9+BkvzNP02WXABLWzYvj1TCaf5pQySwK/b4kVn5lvbpTi0rXqjZw==} + '@aws-sdk/middleware-flexible-checksums@3.799.0': + resolution: {integrity: sha512-vBIAdDl2neaFiUMxyr7dAtX7m9Iw5c0bz7OirD0JGW0nYn0mBcqKpFZEU75ewA5p2+Cm7RQDdt6099ne3gj0WA==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-host-header@3.775.0': @@ -226,32 +232,32 @@ packages: resolution: {integrity: sha512-GLCzC8D0A0YDG5u3F5U03Vb9j5tcOEFhr8oc6PDk0k0vm5VwtZOE6LvK7hcCSoAB4HXyOUM0sQuXrbaAh9OwXA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.796.0': - resolution: {integrity: sha512-5o78oE79sGOtYkL7Up02h2nmr9UhGQZJgxE29EBdTw4dZ1EaA46L+C8oA+fBCmAB5xPQsjQqvhRrsr4Lcp+jZQ==} + '@aws-sdk/middleware-sdk-s3@3.799.0': + resolution: {integrity: sha512-Zwdge5NArgcJwPuGZwgfXY6XXkWEBmMS9dqu5g3DcfHmZUuSjQUqmOsDdSZlE3RFHrDAEbuGQlrFUE8zuwdKQA==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-ssec@3.775.0': resolution: {integrity: sha512-Iw1RHD8vfAWWPzBBIKaojO4GAvQkHOYIpKdAfis/EUSUmSa79QsnXnRqsdcE0mCB0Ylj23yi+ah4/0wh9FsekA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.796.0': - resolution: {integrity: sha512-IeNg+3jNWT37J45opi5Jx89hGF0lOnZjiNwlMp3rKq7PlOqy8kWq5J1Gxk0W3tIkPpuf68CtBs/QFrRXWOjsZw==} + '@aws-sdk/middleware-user-agent@3.799.0': + resolution: {integrity: sha512-TropQZanbOTxa+p+Nl4fWkzlRhgFwDfW+Wb6TR3jZN7IXHNlPpgGFpdrgvBExhW/RBhqr+94OsR8Ou58lp3hhA==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.796.0': - resolution: {integrity: sha512-jJ8a0ldWtXh/ice7nldUjTqja7KYlSYk1pwfIIvJLIqEn2SvQHK/pyCINTmmOmFAWXMKBQBeWUMxo1pPYNytzQ==} + '@aws-sdk/nested-clients@3.799.0': + resolution: {integrity: sha512-zILlWh7asrcQG9JYMYgnvEQBfwmWKfED0yWCf3UNAmQcfS9wkCAWCgicNy/y5KvNvEYnHidsU117STtyuUNG5g==} engines: {node: '>=18.0.0'} '@aws-sdk/region-config-resolver@3.775.0': resolution: {integrity: sha512-40iH3LJjrQS3LKUJAl7Wj0bln7RFPEvUYKFxtP8a+oKFDO0F65F52xZxIJbPn6sHkxWDAnZlGgdjZXM3p2g5wQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.796.0': - resolution: {integrity: sha512-JAOLdvazTc9HlTFslSrIOrKRMuOruuM3FeGw0hyfLP/RIbjd9bqe/xLIzDSJr3wpCpJs0sXoofwJgXtgTipvjA==} + '@aws-sdk/signature-v4-multi-region@3.800.0': + resolution: {integrity: sha512-c71wZuiSUHNFCvcuqOv3jbqP+NquB2YKN4qX90OwYXEqUKn8F8fKJPpjjHjz1eK6qWKtECR4V/NTno2P70Yz/Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.796.0': - resolution: {integrity: sha512-Sxr/EqJBxOwLsXHv8C91N/Aao8Rgjn5bcpzplrTZ7wrfDrzqQfSCvjh7apCxdLYMKPBV+an75blCAd7JD4/bAg==} + '@aws-sdk/token-providers@3.799.0': + resolution: {integrity: sha512-/8iDjnsJs/D8AhGbDAmdF5oSHzE4jsDsM2RIIxmBAKTZXkaaclQBNX9CmAqLKQmO3IUMZsDH2KENHLVAk/N/mw==} engines: {node: '>=18.0.0'} '@aws-sdk/types@3.775.0': @@ -273,8 +279,8 @@ packages: '@aws-sdk/util-user-agent-browser@3.775.0': resolution: {integrity: sha512-txw2wkiJmZKVdDbscK7VBK+u+TJnRtlUjRTLei+elZg2ADhpQxfVAQl436FUeIv6AhB/oRHW6/K/EAGXUSWi0A==} - '@aws-sdk/util-user-agent-node@3.796.0': - resolution: {integrity: sha512-9fQpNcHgVFitf1tbTT8V1xGRoRHSmOAWjrhevo6Tc0WoINMAKz+4JNqfVGWRE5Tmtpq0oHKo1RmvxXQQtJYciA==} + '@aws-sdk/util-user-agent-node@3.799.0': + resolution: {integrity: sha512-iXBk38RbIWPF5Nq9O4AnktORAzXovSVqWYClvS1qbE7ILsnTLJbagU9HlU25O2iV5COVh1qZkwuP5NHQ2yTEyw==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -286,20 +292,20 @@ packages: resolution: {integrity: sha512-b9NGO6FKJeLGYnV7Z1yvcP1TNU4dkD5jNsLWOF1/sygZoASaQhNOlaiJ/1OH331YQ1R1oWk38nBb0frsYkDsOQ==} engines: {node: '>=18.0.0'} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} '@babel/runtime@7.27.0': resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} - '@cloudflare/workers-types@4.20250425.0': - resolution: {integrity: sha512-BOU4hbK7Bhcxhmjuk/FcDopWvdvuCLMIanHjNxI0UflPhsFJj5se224iNluw8T5pROA0NFAYhBd3Up784p2/Jw==} + '@cloudflare/workers-types@4.20250505.0': + resolution: {integrity: sha512-pLQ/UaCupEy3fTTfy7yCR7FuAbawvCohYAdadGHPUfzssksA9MhkqBLlzYWRwIoC34R8grVn4XOCknEg+NMr0Q==} '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} @@ -805,8 +811,8 @@ packages: '@postalsys/vmc@1.1.1': resolution: {integrity: sha512-CFYBlkD/3u8jhAr+Lh8mGhqqmTgIG54zKFU+dhXHdfO6h9yoXDM8eCrQKNjDLv476ot9OzrHM3iBchxAzkXTTQ==} - '@puppeteer/browsers@2.10.2': - resolution: {integrity: sha512-i4Ez+s9oRWQbNjtI/3+jxr7OH508mjAKvza0ekPJem0ZtmsYHP3B5dq62+IaBHKaGCOuqJxXzvFLUhJvQ6jtsQ==} + '@puppeteer/browsers@2.10.3': + resolution: {integrity: sha512-iPpnFpX25gKIVsHsqVjHV+/GzW36xPgsscWkCnrrETndcdxNsXLdCrTwhkCJNR/FGWr122dJUBeyV4niz/j3TA==} engines: {node: '>=18'} hasBin: true @@ -825,9 +831,6 @@ packages: '@push.rocks/levelcache@3.1.1': resolution: {integrity: sha512-+JpDNEt+EuvmbtADGH9SkODxBy+slHDDzs43mAbuMbwpVvi6uNuMK0Mkhrfz9UFpxUSp+cJE/jl/OxdpD0xL1A==} - '@push.rocks/lik@6.1.0': - resolution: {integrity: sha512-BoSAIRFNryQ8Sd5EP+35ZBj6vAQ1C60/XjZIO2O65XDyLG8xz7xJ+u5Wm8/fjIJ0WX3h8GkkaCz2tJM34nFT3A==} - '@push.rocks/lik@6.2.2': resolution: {integrity: sha512-j64FFPPyMXeeUorjKJVF6PWaJUfiIrF3pc41iJH4lOh0UUpBAHpcNzHVxTR58orwbVA/h3Hz+DQd4b1Rq0dFDQ==} @@ -840,8 +843,8 @@ packages: '@push.rocks/qenv@6.1.0': resolution: {integrity: sha512-1FUFMlSVwFSFg8LbqfkzJ2LLP4lMGApUtgOpsvrde6+AxBmB4gjoNgCUH7z3xXfDAtYqcrtSELXBNE0xVL1MqQ==} - '@push.rocks/smartacme@7.2.3': - resolution: {integrity: sha512-PTwn/Zf7l+IMWqeiQ8mTxi7fdrtObQH13YzF65si/VxXTqHeZ7zvisLLKZcMEgSaOj1aQ/Ku83gaO8YqO4gDig==} + '@push.rocks/smartacme@7.3.3': + resolution: {integrity: sha512-48g9V4EpZI8B/YiPseIuB/balH22IMp/p26+DAE57jxvv1hh+PSV4I/UPWCPWP/z7OTtKF+EfEco9TEb5BF2Lw==} '@push.rocks/smartarchive@3.0.8': resolution: {integrity: sha512-1jPmR0b7hXmjYQoRiTlRXrIbZcdcFmSdGOfznufjcDpGPe86Km0d8TBnzqghTx4dTihzKC67IxAaz/DM3lvxpA==} @@ -873,9 +876,6 @@ packages: '@push.rocks/smartdelay@3.0.5': resolution: {integrity: sha512-mUuI7kj2f7ztjpic96FvRIlf2RsKBa5arw81AHNsndbxO6asRcxuWL8dTVxouEIK8YsBUlj0AsrCkHhMbLQdHw==} - '@push.rocks/smartdns@5.0.4': - resolution: {integrity: sha512-DCeekCzAJEPn8gZOPZLnFGFZdgLKtCqb3YfwJpfkdSfPxwlSXzjs5rYmzmsg0BlQP+7pSR43fuLMERB4DGCn9w==} - '@push.rocks/smartdns@6.2.2': resolution: {integrity: sha512-MhJcHujbyIuwIIFdnXb2OScGtRjNsliLUS8GoAurFsKtcCOaA0ytfP+PNzkukyBufjb1nMiJF3rjhswXdHakAQ==} @@ -924,8 +924,8 @@ packages: '@push.rocks/smartlog@3.0.7': resolution: {integrity: sha512-WHOw0iHHjCEbYY4KGX40iFtLI11QJvvWIbC9yFn3Mt+nrdupMnry7Ztc5v/PqO8lu33Q6xDBMXiNQ9yNY0HVGw==} - '@push.rocks/smartmail@1.0.24': - resolution: {integrity: sha512-UUIKQmMiCpcnkql4uoPp0kDRDnGl1jV5UbacRkoaKHh6PPd4trkZRVcVQadtpEqteFb6W0B9Z/YtMKpTPxUsxA==} + '@push.rocks/smartmail@2.0.1': + resolution: {integrity: sha512-cqGyhIjtTqAg0hf9ChxLANyezX7JC4sXAM7I84pOdLLKG157/lj0Uch/oWd3PcjSA45x7xAZ8ZMeSHxhbn+LEA==} '@push.rocks/smartmanifest@2.0.2': resolution: {integrity: sha512-QGc5C9vunjfUbYsPGz5bynV/mVmPHkrQDkWp8ZO8VJtK1GZe+njgbrNyxn2SUHR0IhSAbSXl1j4JvBqYf5eTVg==} @@ -978,8 +978,8 @@ packages: '@push.rocks/smartpromise@4.2.3': resolution: {integrity: sha512-Ycg/TJR+tMt+S3wSFurOpEoW6nXv12QBtKXgBcjMZ4RsdO28geN46U09osPn9N9WuwQy1PkmTV5J/V4F9U8qEw==} - '@push.rocks/smartproxy@10.0.2': - resolution: {integrity: sha512-+gnq2BXh4hRK/9kc9HXKL21HFyEQXwresW4vz1Q0gkQKwXHyQj91CLcoQKaaWt/WR+0vBXzR7zonsMyQVn+EBg==} + '@push.rocks/smartproxy@10.2.0': + resolution: {integrity: sha512-QWU24+aGFNNAXZLxWN1rmPmgB4zGMfK/Qw2D+JzipUYbaTpu3JQBjEsn2oPi6879buVRnlpf0sok6y0x/Ft11A==} '@push.rocks/smartpuppeteer@2.0.5': resolution: {integrity: sha512-yK/qSeWVHIGWRp3c8S5tfdGP6WCKllZC4DR8d8CQlEjszOSBmHtlTdyyqOMBZ/BA4kd+eU5f3A1r4K2tGYty1g==} @@ -1150,10 +1150,6 @@ packages: resolution: {integrity: sha512-iF6bApmTgd3ZvRK8OHa77UFg8nVZxS1Y6iL8VfHpWOXdSlQZcXo/WbvwxYtu0+wkERAfFtCTGrrLAPGsFm9lhw==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartrequest - '@pushrocks/smartrequest@2.0.15': - resolution: {integrity: sha512-QDXXKhOwAIp+TNFrDglApBpbCTClHrf8pUM3w81q5+VtrMbqUrLINHhInXt3ZUSgTS7RD9HtJSIVSqAukcJo5A==} - deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartrequest - '@pushrocks/smartrx@2.0.27': resolution: {integrity: sha512-aFRpGxDZgHH1mpmkRBTFwuIVqFiDxk22n2vX2gW4hntV0nJGlt9M9dixMFFXGUjabwX9hHW7y60QPJm2rKaypA==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartrx @@ -1178,10 +1174,6 @@ 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 - '@pushrocks/smarturl@3.0.6': - resolution: {integrity: sha512-YHWnYE1mm8WIJk1usSXg+kNM7s7ByM+PKApO9cgl0T/oGybjzAJiO3clGNDro4ysP0TD+WuvJuiVue02bErEBQ==} - deprecated: This package has been deprecated in favour of the new package at @push.rocks/smarturl - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -1223,8 +1215,8 @@ packages: resolution: {integrity: sha512-8smPlwhga22pwl23fM5ew4T9vfLUCeFXlcqNOCD5M5h8VmNPNUE9j6bQSuRXpDSV11L/E/SwEBQuW8hr6+nS1A==} engines: {node: '>=18.0.0'} - '@smithy/core@3.2.0': - resolution: {integrity: sha512-k17bgQhVZ7YmUvA8at4af1TDpl0NDMBuBKJl8Yg0nrefwmValU+CnA5l/AriVdQNthU/33H3nK71HrLgqOPr1Q==} + '@smithy/core@3.3.0': + resolution: {integrity: sha512-r6gvs5OfRq/w+9unPm7B3po4rmWaGh0CIL/OwHntGGux7+RhOOZLGuurbeMgWV6W55ZuyMTypJLeH0vn/ZRaWQ==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.2': @@ -1287,12 +1279,12 @@ packages: resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.1.0': - resolution: {integrity: sha512-xhLimgNCbCzsUppRTGXWkZywksuTThxaIB0HwbpsVLY5sceac4e1TZ/WKYqufQLaUy+gUSJGNdwD2jo3cXL0iA==} + '@smithy/middleware-endpoint@4.1.1': + resolution: {integrity: sha512-z5RmcHxjvScL+LwEDU2mTNCOhgUs4lu5PGdF1K36IPRmUHhNFxNxgenSB7smyDiYD4vdKQ7CAZtG5cUErqib9w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.1.0': - resolution: {integrity: sha512-2zAagd1s6hAaI/ap6SXi5T3dDwBOczOMCSkkYzktqN1+tzbk1GAsHNAdo/1uzxz3Ky02jvZQwbi/vmDA6z4Oyg==} + '@smithy/middleware-retry@4.1.2': + resolution: {integrity: sha512-qN/Mmxm8JWtFAjozJ8VSTM83KOX4cIks8UjDqqNkKIegzPrE5ZKPNCQ/DqUSIF90pue5a/NycNXnBod2NwvZZQ==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.0.3': @@ -1327,8 +1319,8 @@ packages: resolution: {integrity: sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.2': - resolution: {integrity: sha512-LA86xeFpTKn270Hbkixqs5n73S+LVM0/VZco8dqd+JT75Dyx3Lcw/MraL7ybjmz786+160K8rPOmhsq0SocoJQ==} + '@smithy/service-error-classification@4.0.3': + resolution: {integrity: sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==} engines: {node: '>=18.0.0'} '@smithy/shared-ini-file-loader@4.0.2': @@ -1339,8 +1331,8 @@ packages: resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.2.0': - resolution: {integrity: sha512-Qs65/w30pWV7LSFAez9DKy0Koaoh3iHhpcpCCJ4waj/iqwsuSzJna2+vYwq46yBaqO5ZbP9TjUsATUNxrKeBdw==} + '@smithy/smithy-client@4.2.1': + resolution: {integrity: sha512-fbniZef60QdsBc4ZY0iyI8xbFHIiC/QRtPi66iE4ufjiE/aaz7AfUXzcWMkpO8r+QhLeNRIfmPchIG+3/QDZ6g==} engines: {node: '>=18.0.0'} '@smithy/types@4.2.0': @@ -1375,12 +1367,12 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.8': - resolution: {integrity: sha512-ZTypzBra+lI/LfTYZeop9UjoJhhGRTg3pxrNpfSTQLd3AJ37r2z4AXTKpq1rFXiiUIJsYyFgNJdjWRGP/cbBaQ==} + '@smithy/util-defaults-mode-browser@4.0.9': + resolution: {integrity: sha512-B8j0XsElvyhv6+5hlFf6vFV/uCSyLKcInpeXOGnOImX2mGXshE01RvPoGipTlRpIk53e6UfYj7WdDdgbVfXDZw==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.8': - resolution: {integrity: sha512-Rgk0Jc/UDfRTzVthye/k2dDsz5Xxs9LZaKCNPgJTRyoyBoeiNCnHsYGOyu1PKN+sDyPnJzMOz22JbwxzBp9NNA==} + '@smithy/util-defaults-mode-node@4.0.9': + resolution: {integrity: sha512-wTDU8P/zdIf9DOpV5qm64HVgGRXvqjqB/fJZTEQbrz3s79JHM/E7XkMm/876Oq+ZLHJQgnXM9QHDo29dlM62eA==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.0.2': @@ -1395,8 +1387,8 @@ packages: resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.2': - resolution: {integrity: sha512-Qryc+QG+7BCpvjloFLQrmlSd0RsVRHejRXd78jNO3+oREueCjwG1CCEH1vduw/ZkM1U9TztwIKVIi3+8MJScGg==} + '@smithy/util-retry@4.0.3': + resolution: {integrity: sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==} engines: {node: '>=18.0.0'} '@smithy/util-stream@4.2.0': @@ -1450,8 +1442,8 @@ packages: '@tsclass/tsclass@8.2.1': resolution: {integrity: sha512-bRDCfJTipsTcK6eEokWdsOR1mGCQFeM7zTg6PRHzbxTWQcWQD9AhEr2q3CrPcmAbvIS7fvkO6/pU/mPm1MZxhQ==} - '@tsclass/tsclass@9.1.0': - resolution: {integrity: sha512-PkG1bXK/bqVtxaRHje+iJHjtcdRHLHrNTOkzqh+jv2A7mgiyNo2YBJIl4eEJLkw1X3FwEFU4vCAtsegSmJgRug==} + '@tsclass/tsclass@9.2.0': + resolution: {integrity: sha512-A6ULEkQfYgOnCKQVQRt26O7PRzFo4PE2EoD25RAtnuFuVrNwGynYC20Vee2c8KAOyI7nQ/LaREki9KAX4AHOHQ==} '@types/accepts@1.3.7': resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} @@ -1589,8 +1581,8 @@ packages: '@types/koa@2.15.0': resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} - '@types/mailparser@3.4.5': - resolution: {integrity: sha512-EPERBp7fLeFZh7tS2X36MF7jawUx3Y6/0rXciZah3CTYgwLi3e0kpGUJ6FOmUabgzis/U1g+3/JzrVWbWIOGjg==} + '@types/mailparser@3.4.6': + resolution: {integrity: sha512-wVV3cnIKzxTffaPH8iRnddX1zahbYB1ZEoAxyhoBo3TBCBuK6nZ8M8JYO/RhsCuuBVOw/DEN/t/ENbruwlxn6Q==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1616,14 +1608,11 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@18.19.87': - resolution: {integrity: sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==} + '@types/node@18.19.97': + resolution: {integrity: sha512-4r3Y9EuCJjWduiam85Fo4GBQtneaEuoaBSdiKo+o6qwQUh0JFVBe7cRUK6I6yVzA0S1gBJJfoQx4VtBH4e5ikg==} - '@types/node@22.15.2': - resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} - - '@types/node@22.15.3': - resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} + '@types/node@22.15.14': + resolution: {integrity: sha512-BL1eyu/XWsFGTtDWOYULQEs4KR0qdtYfCxYAUYRoB7JP7h9ETYLgQTww6kH8Sj2C0pFGgrpM0XKv6/kbIzYJ1g==} '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -1856,8 +1845,8 @@ packages: bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-fs@4.1.3: - resolution: {integrity: sha512-OeEZYIg+2qepaWLyphaOXHAHKo3xkM8y3BeGAvHdMN8GNWvEAU1Yw6rYpGzu/wDDbKxgEjVeVDpgGhDzaeMpjg==} + bare-fs@4.1.4: + resolution: {integrity: sha512-r8+26Voz8dGX3AYpJdFb1ZPaUSM8XOLCZvy+YGpRTmwPHIxA7Z3Jov/oMPtV7hfRQbOnH8qGlLTzQAbgtdNN0Q==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -1894,8 +1883,8 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} @@ -2308,8 +2297,8 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - devtools-protocol@0.0.1425554: - resolution: {integrity: sha512-uRfxR6Nlzdzt0ihVIkV+sLztKgs7rgquY/Mhcv1YNCWDh5IZgl5mnn2aeEnW5stYTE0wwiF4RYVz8eMEpV1SEw==} + devtools-protocol@0.0.1439962: + resolution: {integrity: sha512-jJF48UdryzKiWhJ1bLKr7BFWUQCEIT5uCNbDLqkQJBtkFxYzILJH44WN0PDKMIlGDN7Utb8vyUY85C3w4R/t2g==} dicer@0.3.0: resolution: {integrity: sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==} @@ -2334,9 +2323,6 @@ packages: resolution: {integrity: sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==} engines: {node: '>=6'} - dns2@2.1.0: - resolution: {integrity: sha512-m27K11aQalRbmUs7RLaz6aPyceLjAoqjPRNTdE7qUouQpl+PC8Bi67O+i9SuJUPbQC8dxFrczAxfmTPuTKHNkw==} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -3934,12 +3920,12 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@24.7.2: - resolution: {integrity: sha512-P9pZyTmJqKODFCnkZgemCpoFA4LbAa8+NumHVQKyP5X9IgdNS1ZnAnIh1sMAwhF8/xEUGf7jt+qmNLlKieFw1Q==} + puppeteer-core@24.8.0: + resolution: {integrity: sha512-tDf2YKIo5kM5r0vOzT52+PTgN0bBZOA4OFgQaqYyfarrcXLLJ92wi/lSMe44hd+F+gk0gw9QsAzyRW8v6ra93w==} engines: {node: '>=18'} - puppeteer@24.7.2: - resolution: {integrity: sha512-ifYqoY6wGs0yZeFuFPn8BE9FhuveXkarF+eO18I2e/axdoCh4Qh1AE+qXdJBhdaeoPt6eRNTY4Dih29Jbq8wow==} + puppeteer@24.8.0: + resolution: {integrity: sha512-8GPlUKXvZK8ANxab75UerMar14ZnJTJpPok3XN9Nx6f7SKyabyFK39pQruMni6zfrwVBrPXp3Mo6ztwKEmXaDQ==} engines: {node: '>=18'} hasBin: true @@ -4366,8 +4352,8 @@ packages: resolution: {integrity: sha512-tcwMRIioTcF/FcxLev8MJWxCp+GUALRhFEqbDoZrnowmKSGqPrl5pqS+Sut2m8BgJ6S4FExCSSpGffZ0Tks6Aw==} hasBin: true - tldts-core@7.0.3: - resolution: {integrity: sha512-U4sfNx7rnOvFq6llajijlffmHB8Eol2AG9cQ8AaqBhNtgP1adOx6Ev8We2ZK9NUX3I3Qt7xqF6/MhYk+VETpjQ==} + tldts-core@7.0.6: + resolution: {integrity: sha512-HZeeJrplG9y+sJx6VNcMKfbpY9UEq+JI0JRqE66Dm81QmclDgygaKOIwkeX8atmiQraJV2w4JbYI3wfCbw319w==} tldts@7.0.1: resolution: {integrity: sha512-C3TdHZKykiDkxPIKUYCDWyYpcLQ8bDYvF/RGfH66UikQX3Kro7ij2/WGNYgp5EfxXB4+Tu5H728uAgYGNE1eaQ==} @@ -4420,8 +4406,8 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} - tsx@4.19.3: - resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -4443,10 +4429,6 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.40.0: - resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} - engines: {node: '>=16'} - type-fest@4.40.1: resolution: {integrity: sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==} engines: {node: '>=16'} @@ -4639,18 +4621,6 @@ packages: utf-8-validate: optional: true - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.2: resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} engines: {node: '>=10.0.0'} @@ -4724,8 +4694,8 @@ packages: resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} engines: {node: '>= 4.0.0'} - zod@3.24.3: - resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -4740,7 +4710,7 @@ snapshots: dependencies: '@api.global/typedrequest-interfaces': 3.0.19 '@push.rocks/isounique': 1.0.5 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartbuffer': 3.0.5 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartguard': 3.1.0 @@ -4753,9 +4723,9 @@ snapshots: '@api.global/typedrequest': 3.1.10 '@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedsocket': 3.0.1 - '@cloudflare/workers-types': 4.20250425.0 + '@cloudflare/workers-types': 4.20250505.0 '@design.estate/dees-comms': 1.0.27 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartchok': 1.0.34 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.12 @@ -4820,7 +4790,7 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 2.1.0 '@push.rocks/smartstring': 4.0.15 - '@tsclass/tsclass': 9.1.0 + '@tsclass/tsclass': 9.2.0 cloudflare: 4.2.0 transitivePeerDependencies: - encoding @@ -4891,77 +4861,77 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-cognito-identity@3.796.0': + '@aws-sdk/client-cognito-identity@3.799.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.796.0 - '@aws-sdk/credential-provider-node': 3.796.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-node': 3.799.0 '@aws-sdk/middleware-host-header': 3.775.0 '@aws-sdk/middleware-logger': 3.775.0 '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.796.0 + '@aws-sdk/middleware-user-agent': 3.799.0 '@aws-sdk/region-config-resolver': 3.775.0 '@aws-sdk/types': 3.775.0 '@aws-sdk/util-endpoints': 3.787.0 '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.796.0 + '@aws-sdk/util-user-agent-node': 3.799.0 '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/fetch-http-handler': 5.0.2 '@smithy/hash-node': 4.0.2 '@smithy/invalid-dependency': 4.0.2 '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.0 - '@smithy/middleware-retry': 4.1.0 + '@smithy/middleware-endpoint': 4.1.1 + '@smithy/middleware-retry': 4.1.2 '@smithy/middleware-serde': 4.0.3 '@smithy/middleware-stack': 4.0.2 '@smithy/node-config-provider': 4.0.2 '@smithy/node-http-handler': 4.0.4 '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/url-parser': 4.0.2 '@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.8 - '@smithy/util-defaults-mode-node': 4.0.8 + '@smithy/util-defaults-mode-browser': 4.0.9 + '@smithy/util-defaults-mode-node': 4.0.9 '@smithy/util-endpoints': 3.0.2 '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.2 + '@smithy/util-retry': 4.0.3 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/client-s3@3.796.0': + '@aws-sdk/client-s3@3.802.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.796.0 - '@aws-sdk/credential-provider-node': 3.796.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-node': 3.799.0 '@aws-sdk/middleware-bucket-endpoint': 3.775.0 '@aws-sdk/middleware-expect-continue': 3.775.0 - '@aws-sdk/middleware-flexible-checksums': 3.796.0 + '@aws-sdk/middleware-flexible-checksums': 3.799.0 '@aws-sdk/middleware-host-header': 3.775.0 '@aws-sdk/middleware-location-constraint': 3.775.0 '@aws-sdk/middleware-logger': 3.775.0 '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-sdk-s3': 3.796.0 + '@aws-sdk/middleware-sdk-s3': 3.799.0 '@aws-sdk/middleware-ssec': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.796.0 + '@aws-sdk/middleware-user-agent': 3.799.0 '@aws-sdk/region-config-resolver': 3.775.0 - '@aws-sdk/signature-v4-multi-region': 3.796.0 + '@aws-sdk/signature-v4-multi-region': 3.800.0 '@aws-sdk/types': 3.775.0 '@aws-sdk/util-endpoints': 3.787.0 '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.796.0 + '@aws-sdk/util-user-agent-node': 3.799.0 '@aws-sdk/xml-builder': 3.775.0 '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/eventstream-serde-browser': 4.0.2 '@smithy/eventstream-serde-config-resolver': 4.1.0 '@smithy/eventstream-serde-node': 4.0.2 @@ -4972,24 +4942,24 @@ snapshots: '@smithy/invalid-dependency': 4.0.2 '@smithy/md5-js': 4.0.2 '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.0 - '@smithy/middleware-retry': 4.1.0 + '@smithy/middleware-endpoint': 4.1.1 + '@smithy/middleware-retry': 4.1.2 '@smithy/middleware-serde': 4.0.3 '@smithy/middleware-stack': 4.0.2 '@smithy/node-config-provider': 4.0.2 '@smithy/node-http-handler': 4.0.4 '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/url-parser': 4.0.2 '@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.8 - '@smithy/util-defaults-mode-node': 4.0.8 + '@smithy/util-defaults-mode-browser': 4.0.9 + '@smithy/util-defaults-mode-node': 4.0.9 '@smithy/util-endpoints': 3.0.2 '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.2 + '@smithy/util-retry': 4.0.3 '@smithy/util-stream': 4.2.0 '@smithy/util-utf8': 4.0.0 '@smithy/util-waiter': 4.0.3 @@ -4997,66 +4967,66 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.796.0': + '@aws-sdk/client-sso@3.799.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/middleware-host-header': 3.775.0 '@aws-sdk/middleware-logger': 3.775.0 '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.796.0 + '@aws-sdk/middleware-user-agent': 3.799.0 '@aws-sdk/region-config-resolver': 3.775.0 '@aws-sdk/types': 3.775.0 '@aws-sdk/util-endpoints': 3.787.0 '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.796.0 + '@aws-sdk/util-user-agent-node': 3.799.0 '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/fetch-http-handler': 5.0.2 '@smithy/hash-node': 4.0.2 '@smithy/invalid-dependency': 4.0.2 '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.0 - '@smithy/middleware-retry': 4.1.0 + '@smithy/middleware-endpoint': 4.1.1 + '@smithy/middleware-retry': 4.1.2 '@smithy/middleware-serde': 4.0.3 '@smithy/middleware-stack': 4.0.2 '@smithy/node-config-provider': 4.0.2 '@smithy/node-http-handler': 4.0.4 '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/url-parser': 4.0.2 '@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.8 - '@smithy/util-defaults-mode-node': 4.0.8 + '@smithy/util-defaults-mode-browser': 4.0.9 + '@smithy/util-defaults-mode-node': 4.0.9 '@smithy/util-endpoints': 3.0.2 '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.2 + '@smithy/util-retry': 4.0.3 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.796.0': + '@aws-sdk/core@3.799.0': dependencies: '@aws-sdk/types': 3.775.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/node-config-provider': 4.0.2 '@smithy/property-provider': 4.0.2 '@smithy/protocol-http': 5.1.0 '@smithy/signature-v4': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/util-middleware': 4.0.2 fast-xml-parser: 4.4.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-cognito-identity@3.796.0': + '@aws-sdk/credential-provider-cognito-identity@3.799.0': dependencies: - '@aws-sdk/client-cognito-identity': 3.796.0 + '@aws-sdk/client-cognito-identity': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/property-provider': 4.0.2 '@smithy/types': 4.2.0 @@ -5065,36 +5035,36 @@ snapshots: - aws-crt optional: true - '@aws-sdk/credential-provider-env@3.796.0': + '@aws-sdk/credential-provider-env@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/property-provider': 4.0.2 '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.796.0': + '@aws-sdk/credential-provider-http@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/fetch-http-handler': 5.0.2 '@smithy/node-http-handler': 4.0.4 '@smithy/property-provider': 4.0.2 '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/util-stream': 4.2.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.796.0': + '@aws-sdk/credential-provider-ini@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 - '@aws-sdk/credential-provider-env': 3.796.0 - '@aws-sdk/credential-provider-http': 3.796.0 - '@aws-sdk/credential-provider-process': 3.796.0 - '@aws-sdk/credential-provider-sso': 3.796.0 - '@aws-sdk/credential-provider-web-identity': 3.796.0 - '@aws-sdk/nested-clients': 3.796.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-env': 3.799.0 + '@aws-sdk/credential-provider-http': 3.799.0 + '@aws-sdk/credential-provider-process': 3.799.0 + '@aws-sdk/credential-provider-sso': 3.799.0 + '@aws-sdk/credential-provider-web-identity': 3.799.0 + '@aws-sdk/nested-clients': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/credential-provider-imds': 4.0.2 '@smithy/property-provider': 4.0.2 @@ -5104,14 +5074,14 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.796.0': + '@aws-sdk/credential-provider-node@3.799.0': dependencies: - '@aws-sdk/credential-provider-env': 3.796.0 - '@aws-sdk/credential-provider-http': 3.796.0 - '@aws-sdk/credential-provider-ini': 3.796.0 - '@aws-sdk/credential-provider-process': 3.796.0 - '@aws-sdk/credential-provider-sso': 3.796.0 - '@aws-sdk/credential-provider-web-identity': 3.796.0 + '@aws-sdk/credential-provider-env': 3.799.0 + '@aws-sdk/credential-provider-http': 3.799.0 + '@aws-sdk/credential-provider-ini': 3.799.0 + '@aws-sdk/credential-provider-process': 3.799.0 + '@aws-sdk/credential-provider-sso': 3.799.0 + '@aws-sdk/credential-provider-web-identity': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/credential-provider-imds': 4.0.2 '@smithy/property-provider': 4.0.2 @@ -5121,20 +5091,20 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.796.0': + '@aws-sdk/credential-provider-process@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/property-provider': 4.0.2 '@smithy/shared-ini-file-loader': 4.0.2 '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.796.0': + '@aws-sdk/credential-provider-sso@3.799.0': dependencies: - '@aws-sdk/client-sso': 3.796.0 - '@aws-sdk/core': 3.796.0 - '@aws-sdk/token-providers': 3.796.0 + '@aws-sdk/client-sso': 3.799.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/token-providers': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/property-provider': 4.0.2 '@smithy/shared-ini-file-loader': 4.0.2 @@ -5143,10 +5113,10 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.796.0': + '@aws-sdk/credential-provider-web-identity@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 - '@aws-sdk/nested-clients': 3.796.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/nested-clients': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/property-provider': 4.0.2 '@smithy/types': 4.2.0 @@ -5154,22 +5124,22 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-providers@3.796.0': + '@aws-sdk/credential-providers@3.799.0': dependencies: - '@aws-sdk/client-cognito-identity': 3.796.0 - '@aws-sdk/core': 3.796.0 - '@aws-sdk/credential-provider-cognito-identity': 3.796.0 - '@aws-sdk/credential-provider-env': 3.796.0 - '@aws-sdk/credential-provider-http': 3.796.0 - '@aws-sdk/credential-provider-ini': 3.796.0 - '@aws-sdk/credential-provider-node': 3.796.0 - '@aws-sdk/credential-provider-process': 3.796.0 - '@aws-sdk/credential-provider-sso': 3.796.0 - '@aws-sdk/credential-provider-web-identity': 3.796.0 - '@aws-sdk/nested-clients': 3.796.0 + '@aws-sdk/client-cognito-identity': 3.799.0 + '@aws-sdk/core': 3.799.0 + '@aws-sdk/credential-provider-cognito-identity': 3.799.0 + '@aws-sdk/credential-provider-env': 3.799.0 + '@aws-sdk/credential-provider-http': 3.799.0 + '@aws-sdk/credential-provider-ini': 3.799.0 + '@aws-sdk/credential-provider-node': 3.799.0 + '@aws-sdk/credential-provider-process': 3.799.0 + '@aws-sdk/credential-provider-sso': 3.799.0 + '@aws-sdk/credential-provider-web-identity': 3.799.0 + '@aws-sdk/nested-clients': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/credential-provider-imds': 4.0.2 '@smithy/node-config-provider': 4.0.2 '@smithy/property-provider': 4.0.2 @@ -5196,12 +5166,12 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.796.0': + '@aws-sdk/middleware-flexible-checksums@3.799.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/is-array-buffer': 4.0.0 '@smithy/node-config-provider': 4.0.2 @@ -5238,16 +5208,16 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.796.0': + '@aws-sdk/middleware-sdk-s3@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/types': 3.775.0 '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/node-config-provider': 4.0.2 '@smithy/protocol-http': 5.1.0 '@smithy/signature-v4': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.2 @@ -5261,54 +5231,54 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.796.0': + '@aws-sdk/middleware-user-agent@3.799.0': dependencies: - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/types': 3.775.0 '@aws-sdk/util-endpoints': 3.787.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/protocol-http': 5.1.0 '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.796.0': + '@aws-sdk/nested-clients@3.799.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.796.0 + '@aws-sdk/core': 3.799.0 '@aws-sdk/middleware-host-header': 3.775.0 '@aws-sdk/middleware-logger': 3.775.0 '@aws-sdk/middleware-recursion-detection': 3.775.0 - '@aws-sdk/middleware-user-agent': 3.796.0 + '@aws-sdk/middleware-user-agent': 3.799.0 '@aws-sdk/region-config-resolver': 3.775.0 '@aws-sdk/types': 3.775.0 '@aws-sdk/util-endpoints': 3.787.0 '@aws-sdk/util-user-agent-browser': 3.775.0 - '@aws-sdk/util-user-agent-node': 3.796.0 + '@aws-sdk/util-user-agent-node': 3.799.0 '@smithy/config-resolver': 4.1.0 - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/fetch-http-handler': 5.0.2 '@smithy/hash-node': 4.0.2 '@smithy/invalid-dependency': 4.0.2 '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.0 - '@smithy/middleware-retry': 4.1.0 + '@smithy/middleware-endpoint': 4.1.1 + '@smithy/middleware-retry': 4.1.2 '@smithy/middleware-serde': 4.0.3 '@smithy/middleware-stack': 4.0.2 '@smithy/node-config-provider': 4.0.2 '@smithy/node-http-handler': 4.0.4 '@smithy/protocol-http': 5.1.0 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/url-parser': 4.0.2 '@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.8 - '@smithy/util-defaults-mode-node': 4.0.8 + '@smithy/util-defaults-mode-browser': 4.0.9 + '@smithy/util-defaults-mode-node': 4.0.9 '@smithy/util-endpoints': 3.0.2 '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.2 + '@smithy/util-retry': 4.0.3 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: @@ -5323,18 +5293,18 @@ snapshots: '@smithy/util-middleware': 4.0.2 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.796.0': + '@aws-sdk/signature-v4-multi-region@3.800.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.796.0 + '@aws-sdk/middleware-sdk-s3': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/protocol-http': 5.1.0 '@smithy/signature-v4': 5.1.0 '@smithy/types': 4.2.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.796.0': + '@aws-sdk/token-providers@3.799.0': dependencies: - '@aws-sdk/nested-clients': 3.796.0 + '@aws-sdk/nested-clients': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/property-provider': 4.0.2 '@smithy/shared-ini-file-loader': 4.0.2 @@ -5370,9 +5340,9 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.796.0': + '@aws-sdk/util-user-agent-node@3.799.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.796.0 + '@aws-sdk/middleware-user-agent': 3.799.0 '@aws-sdk/types': 3.775.0 '@smithy/node-config-provider': 4.0.2 '@smithy/types': 4.2.0 @@ -5383,19 +5353,19 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@babel/code-frame@7.26.2': + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} '@babel/runtime@7.27.0': dependencies: regenerator-runtime: 0.14.1 - '@cloudflare/workers-types@4.20250425.0': {} + '@cloudflare/workers-types@4.20250505.0': {} '@colors/colors@1.6.0': {} @@ -5428,7 +5398,7 @@ snapshots: '@push.rocks/smartpdf': 3.2.2(typescript@5.7.3) '@push.rocks/smarttime': 4.1.1 '@tsclass/tsclass': 4.4.4 - '@types/node': 22.15.3 + '@types/node': 22.15.14 '@types/qrcode': 1.5.5 qrcode: 1.5.4 transitivePeerDependencies: @@ -5445,7 +5415,7 @@ snapshots: dependencies: '@api.global/typedrequest': 3.1.10 '@design.estate/dees-comms': 1.0.27 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartmarkdown': 3.0.3 @@ -5694,9 +5664,9 @@ snapshots: dependencies: '@push.rocks/smartfile': 11.2.0 '@push.rocks/smartshell': 3.2.3 - tsx: 4.19.3 + tsx: 4.19.4 - '@git.zone/tstest@1.0.96(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)(typescript@5.7.3)': + '@git.zone/tstest@1.0.96(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)(typescript@5.7.3)': dependencies: '@api.global/typedserver': 3.0.74 '@git.zone/tsbundle': 2.2.5 @@ -5708,10 +5678,10 @@ snapshots: '@push.rocks/smartlog': 3.0.7 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartshell': 3.2.3 - '@push.rocks/tapbundle': 5.6.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/tapbundle': 5.6.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@types/ws': 8.18.1 figures: 6.1.0 - ws: 8.18.1 + ws: 8.18.2 transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -5736,7 +5706,7 @@ snapshots: '@git.zone/tsbundle': 2.2.5 '@git.zone/tsrun': 1.3.3 '@push.rocks/early': 4.0.4 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartchok': 1.0.34 '@push.rocks/smartcli': 4.0.11 '@push.rocks/smartdelay': 3.0.5 @@ -5747,8 +5717,10 @@ snapshots: '@push.rocks/taskbuffer': 3.1.7 transitivePeerDependencies: - '@nuxt/kit' + - bufferutil - react - supports-color + - utf-8-validate - vue '@hapi/bourne@3.0.0': {} @@ -5785,7 +5757,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6003,7 +5975,7 @@ snapshots: '@peculiar/asn1-x509': 2.3.15 '@peculiar/asn1-x509-logotype': 2.3.15 - '@puppeteer/browsers@2.10.2': + '@puppeteer/browsers@2.10.3': dependencies: debug: 4.4.0 extract-zip: 2.0.1 @@ -6034,7 +6006,7 @@ snapshots: '@push.rocks/levelcache@3.1.1': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartbucket': 3.3.7 '@push.rocks/smartcache': 1.0.16 '@push.rocks/smartenv': 5.0.12 @@ -6050,17 +6022,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@push.rocks/lik@6.1.0': - dependencies: - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartmatch': 2.0.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smarttime': 4.1.1 - '@types/minimatch': 5.1.2 - '@types/symbol-tree': 3.2.5 - symbol-tree: 3.2.4 - '@push.rocks/lik@6.2.2': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -6099,27 +6060,29 @@ snapshots: '@push.rocks/smartlog': 3.0.7 '@push.rocks/smartpath': 5.0.18 - '@push.rocks/smartacme@7.2.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)': + '@push.rocks/smartacme@7.3.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)': dependencies: '@api.global/typedserver': 3.0.74 '@apiclient.xyz/cloudflare': 6.4.1 '@push.rocks/lik': 6.2.2 - '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartdns': 6.2.2 + '@push.rocks/smartfile': 11.2.0 '@push.rocks/smartlog': 3.0.7 + '@push.rocks/smartnetwork': 4.0.1 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 2.1.0 '@push.rocks/smartstring': 4.0.15 '@push.rocks/smarttime': 4.1.1 '@push.rocks/smartunique': 3.0.9 - '@tsclass/tsclass': 9.1.0 + '@tsclass/tsclass': 9.2.0 acme-client: 5.4.0 transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' - '@nuxt/kit' - - bufferutil + - aws-crt - encoding - gcp-metadata - kerberos @@ -6128,7 +6091,6 @@ snapshots: - snappy - socks - supports-color - - utf-8-validate - vue '@push.rocks/smartarchive@3.0.8': @@ -6161,7 +6123,7 @@ snapshots: '@push.rocks/smartbucket@3.3.7': dependencies: - '@aws-sdk/client-s3': 3.796.0 + '@aws-sdk/client-s3': 3.802.0 '@push.rocks/smartmime': 2.0.4 '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.2.3 @@ -6187,14 +6149,14 @@ snapshots: '@push.rocks/smartchok@1.0.34': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 '@tempfix/watcher': 2.3.0 '@push.rocks/smartcli@4.0.11': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartlog': 3.0.7 '@push.rocks/smartobject': 1.0.12 '@push.rocks/smartpromise': 4.2.3 @@ -6207,12 +6169,12 @@ snapshots: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - '@push.rocks/smartdata@5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)': + '@push.rocks/smartdata@5.15.1(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartlog': 3.0.7 - '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstring': 4.0.15 @@ -6220,7 +6182,7 @@ snapshots: '@push.rocks/smartunique': 3.0.9 '@push.rocks/taskbuffer': 3.1.7 '@tsclass/tsclass': 8.2.1 - mongodb: 6.16.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + mongodb: 6.16.0(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -6236,15 +6198,6 @@ snapshots: dependencies: '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartdns@5.0.4': - dependencies: - '@pushrocks/smartdelay': 2.0.13 - '@pushrocks/smartenv': 5.0.5 - '@pushrocks/smartpromise': 3.1.10 - '@pushrocks/smartrequest': 2.0.15 - '@tsclass/tsclass': 4.4.4 - dns2: 2.1.0 - '@push.rocks/smartdns@6.2.2': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -6267,7 +6220,7 @@ snapshots: '@push.rocks/smartexit@1.0.23': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartpromise': 4.2.3 tree-kill: 1.2.2 @@ -6294,7 +6247,7 @@ snapshots: '@push.rocks/smartfile@10.0.41': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile-interfaces': 1.0.7 '@push.rocks/smarthash': 3.0.4 @@ -6313,7 +6266,7 @@ snapshots: '@push.rocks/smartfile@11.2.0': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile-interfaces': 1.0.7 '@push.rocks/smarthash': 3.0.4 @@ -6369,13 +6322,15 @@ snapshots: '@push.rocks/isounique': 1.0.5 '@push.rocks/smartlog-interfaces': 3.0.2 - '@push.rocks/smartmail@1.0.24': + '@push.rocks/smartmail@2.0.1': dependencies: - '@push.rocks/smartdns': 5.0.4 - '@push.rocks/smartfile': 10.0.41 + '@push.rocks/smartdns': 6.2.2 + '@push.rocks/smartfile': 11.2.0 '@push.rocks/smartmustache': 3.0.2 '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartrequest': 2.1.0 + transitivePeerDependencies: + - supports-color '@push.rocks/smartmanifest@2.0.2': {} @@ -6409,13 +6364,13 @@ snapshots: file-type: 19.6.0 mime: 4.0.7 - '@push.rocks/smartmongo@2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)': + '@push.rocks/smartmongo@2.0.12(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)': dependencies: '@push.rocks/mongodump': 1.0.8 - '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@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.4) + mongodb-memory-server: 10.1.4(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -6518,17 +6473,17 @@ snapshots: '@push.rocks/smartpromise@4.2.3': {} - '@push.rocks/smartproxy@10.0.2(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)': + '@push.rocks/smartproxy@10.2.0(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)': dependencies: '@push.rocks/lik': 6.2.2 - '@push.rocks/smartacme': 7.2.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/smartacme': 7.3.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartnetwork': 4.0.1 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 2.1.0 '@push.rocks/smartstring': 4.0.15 '@push.rocks/taskbuffer': 3.1.7 - '@tsclass/tsclass': 9.1.0 + '@tsclass/tsclass': 9.2.0 '@types/minimatch': 5.1.2 '@types/ws': 8.18.1 minimatch: 10.0.1 @@ -6538,6 +6493,7 @@ snapshots: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' - '@nuxt/kit' + - aws-crt - bufferutil - encoding - gcp-metadata @@ -6554,7 +6510,7 @@ snapshots: dependencies: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartshell': 3.2.3 - puppeteer: 24.7.2(typescript@5.7.3) + puppeteer: 24.8.0(typescript@5.7.3) tree-kill: 1.2.2 transitivePeerDependencies: - bare-buffer @@ -6572,7 +6528,7 @@ snapshots: '@push.rocks/smartrouter@1.3.2': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartrx': 3.0.10 path-to-regexp: 8.2.0 @@ -6619,7 +6575,7 @@ snapshots: '@api.global/typedserver': 3.0.74 '@push.rocks/isohash': 2.0.1 '@push.rocks/isounique': 1.0.5 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.12 '@push.rocks/smartjson': 5.0.20 @@ -6650,7 +6606,7 @@ snapshots: '@push.rocks/smartstate@2.0.19': dependencies: '@push.rocks/isohash': 2.0.1 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 @@ -6667,7 +6623,7 @@ snapshots: '@push.rocks/smartstream@3.2.5': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartenv': 5.0.12 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 @@ -6685,7 +6641,7 @@ snapshots: '@push.rocks/smarttime@4.1.1': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartpromise': 4.2.3 croner: 9.0.0 @@ -6717,7 +6673,7 @@ snapshots: '@types/js-yaml': 3.12.10 js-yaml: 3.14.1 - '@push.rocks/tapbundle@5.6.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)': + '@push.rocks/tapbundle@5.6.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)': dependencies: '@open-wc/testing': 4.0.0 '@push.rocks/consolecolor': 2.0.2 @@ -6728,7 +6684,7 @@ snapshots: '@push.rocks/smartexpect': 1.6.1 '@push.rocks/smartfile': 11.2.0 '@push.rocks/smartjson': 5.0.20 - '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 2.1.0 @@ -6749,7 +6705,7 @@ snapshots: - supports-color - utf-8-validate - '@push.rocks/tapbundle@6.0.3(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4)': + '@push.rocks/tapbundle@6.0.3(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4)': dependencies: '@open-wc/testing': 4.0.0 '@push.rocks/consolecolor': 2.0.2 @@ -6760,7 +6716,7 @@ snapshots: '@push.rocks/smartexpect': 2.4.2 '@push.rocks/smartfile': 11.2.0 '@push.rocks/smartjson': 5.0.20 - '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + '@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 2.1.0 @@ -6783,7 +6739,7 @@ snapshots: '@push.rocks/taskbuffer@3.1.7': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartlog': 3.0.7 '@push.rocks/smartpromise': 4.2.3 @@ -6808,7 +6764,7 @@ snapshots: '@push.rocks/webstore@2.0.20': dependencies: '@api.global/typedrequest-interfaces': 3.0.19 - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartenv': 5.0.12 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartpromise': 4.2.3 @@ -6943,13 +6899,6 @@ snapshots: agentkeepalive: 4.6.0 form-data: 4.0.2 - '@pushrocks/smartrequest@2.0.15': - dependencies: - '@pushrocks/smartpromise': 4.0.2 - '@pushrocks/smarturl': 3.0.6 - agentkeepalive: 4.6.0 - form-data: 4.0.2 - '@pushrocks/smartrx@2.0.27': dependencies: '@pushrocks/smartpromise': 3.1.10 @@ -6995,8 +6944,6 @@ snapshots: '@pushrocks/smarturl@2.0.1': {} - '@pushrocks/smarturl@3.0.6': {} - '@sec-ant/readable-stream@0.4.1': {} '@selderee/plugin-htmlparser2@0.11.0': @@ -7008,7 +6955,7 @@ snapshots: dependencies: '@api.global/typedrequest-interfaces': 3.0.19 '@push.rocks/smartlog-interfaces': 3.0.2 - '@tsclass/tsclass': 9.1.0 + '@tsclass/tsclass': 9.2.0 '@sideway/address@4.1.5': dependencies: @@ -7044,7 +6991,7 @@ snapshots: '@smithy/util-middleware': 4.0.2 tslib: 2.8.1 - '@smithy/core@3.2.0': + '@smithy/core@3.3.0': dependencies: '@smithy/middleware-serde': 4.0.3 '@smithy/protocol-http': 5.1.0 @@ -7146,9 +7093,9 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.1.0': + '@smithy/middleware-endpoint@4.1.1': dependencies: - '@smithy/core': 3.2.0 + '@smithy/core': 3.3.0 '@smithy/middleware-serde': 4.0.3 '@smithy/node-config-provider': 4.0.2 '@smithy/shared-ini-file-loader': 4.0.2 @@ -7157,15 +7104,15 @@ snapshots: '@smithy/util-middleware': 4.0.2 tslib: 2.8.1 - '@smithy/middleware-retry@4.1.0': + '@smithy/middleware-retry@4.1.2': dependencies: '@smithy/node-config-provider': 4.0.2 '@smithy/protocol-http': 5.1.0 - '@smithy/service-error-classification': 4.0.2 - '@smithy/smithy-client': 4.2.0 + '@smithy/service-error-classification': 4.0.3 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 '@smithy/util-middleware': 4.0.2 - '@smithy/util-retry': 4.0.2 + '@smithy/util-retry': 4.0.3 tslib: 2.8.1 uuid: 9.0.1 @@ -7215,7 +7162,7 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@smithy/service-error-classification@4.0.2': + '@smithy/service-error-classification@4.0.3': dependencies: '@smithy/types': 4.2.0 @@ -7235,10 +7182,10 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.2.0': + '@smithy/smithy-client@4.2.1': dependencies: - '@smithy/core': 3.2.0 - '@smithy/middleware-endpoint': 4.1.0 + '@smithy/core': 3.3.0 + '@smithy/middleware-endpoint': 4.1.1 '@smithy/middleware-stack': 4.0.2 '@smithy/protocol-http': 5.1.0 '@smithy/types': 4.2.0 @@ -7283,21 +7230,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.8': + '@smithy/util-defaults-mode-browser@4.0.9': dependencies: '@smithy/property-provider': 4.0.2 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.8': + '@smithy/util-defaults-mode-node@4.0.9': dependencies: '@smithy/config-resolver': 4.1.0 '@smithy/credential-provider-imds': 4.0.2 '@smithy/node-config-provider': 4.0.2 '@smithy/property-provider': 4.0.2 - '@smithy/smithy-client': 4.2.0 + '@smithy/smithy-client': 4.2.1 '@smithy/types': 4.2.0 tslib: 2.8.1 @@ -7316,9 +7263,9 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 - '@smithy/util-retry@4.0.2': + '@smithy/util-retry@4.0.3': dependencies: - '@smithy/service-error-classification': 4.0.2 + '@smithy/service-error-classification': 4.0.3 '@smithy/types': 4.2.0 tslib: 2.8.1 @@ -7375,7 +7322,7 @@ snapshots: '@tsclass/tsclass@4.4.4': dependencies: - type-fest: 4.40.0 + type-fest: 4.40.1 '@tsclass/tsclass@5.0.0': dependencies: @@ -7383,26 +7330,26 @@ snapshots: '@tsclass/tsclass@8.2.1': dependencies: - type-fest: 4.40.0 + type-fest: 4.40.1 - '@tsclass/tsclass@9.1.0': + '@tsclass/tsclass@9.2.0': dependencies: type-fest: 4.40.1 '@types/accepts@1.3.7': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/babel__code-frame@7.0.6': {} '@types/bn.js@5.1.6': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/buffer-json@2.0.3': {} @@ -7418,17 +7365,17 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 source-map: 0.6.1 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/qs': 6.9.18 '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/content-disposition@0.5.8': {} @@ -7439,11 +7386,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.1 '@types/keygrip': 1.0.6 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/debounce@1.2.4': {} @@ -7459,7 +7406,7 @@ snapshots: '@types/dns-packet@5.6.5': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/elliptic@6.4.18': dependencies: @@ -7467,7 +7414,7 @@ snapshots: '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -7484,30 +7431,30 @@ snapshots: '@types/from2@2.3.5': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/gunzip-maybe@1.4.2': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/hast@3.0.4': dependencies: @@ -7541,7 +7488,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/keygrip@1.0.6': {} @@ -7558,11 +7505,11 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.15.2 + '@types/node': 22.15.14 - '@types/mailparser@3.4.5': + '@types/mailparser@3.4.6': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 iconv-lite: 0.6.3 '@types/mdast@4.0.4': @@ -7581,22 +7528,18 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 18.19.87 + '@types/node': 22.15.14 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 - '@types/node@18.19.87': + '@types/node@18.19.97': dependencies: undici-types: 5.26.5 - '@types/node@22.15.2': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.15.3': + '@types/node@22.15.14': dependencies: undici-types: 6.21.0 @@ -7606,7 +7549,7 @@ snapshots: '@types/qrcode@1.5.5': dependencies: - '@types/node': 22.15.3 + '@types/node': 22.15.14 '@types/qs@6.9.18': {} @@ -7618,19 +7561,19 @@ snapshots: '@types/s3rver@3.7.4': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/semver@7.7.0': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/send': 0.17.4 '@types/sinon-chai@3.2.12': @@ -7650,11 +7593,11 @@ snapshots: '@types/tar-stream@2.2.3': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/through2@2.0.41': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/triple-beam@1.3.5': {} @@ -7678,18 +7621,18 @@ snapshots: '@types/whatwg-url@8.2.2': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/webidl-conversions': 7.0.3 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 '@types/yargs-parser@21.0.3': {} @@ -7699,7 +7642,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.14 optional: true '@ungap/structured-clone@1.3.0': {} @@ -7749,7 +7692,7 @@ snapshots: '@web/test-runner-core@0.13.4': dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@types/babel__code-frame': 7.0.6 '@types/co-body': 6.1.3 '@types/convert-source-map': 2.0.3 @@ -7881,7 +7824,7 @@ snapshots: bare-events@2.5.4: optional: true - bare-fs@4.1.3: + bare-fs@4.1.4: dependencies: bare-events: 2.5.4 bare-path: 3.0.0 @@ -7909,7 +7852,7 @@ snapshots: basic-ftp@5.0.5: {} - bn.js@4.12.1: {} + bn.js@4.12.2: {} body-parser@1.20.3: dependencies: @@ -8058,11 +8001,11 @@ snapshots: chownr@2.0.0: {} - chromium-bidi@4.1.1(devtools-protocol@0.0.1425554): + chromium-bidi@4.1.1(devtools-protocol@0.0.1439962): dependencies: - devtools-protocol: 0.0.1425554 + devtools-protocol: 0.0.1439962 mitt: 3.0.1 - zod: 3.24.3 + zod: 3.24.4 ci-info@3.9.0: {} @@ -8100,7 +8043,7 @@ snapshots: cloudflare@4.2.0: dependencies: - '@types/node': 18.19.87 + '@types/node': 18.19.97 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -8303,7 +8246,7 @@ snapshots: dependencies: dequal: 2.0.3 - devtools-protocol@0.0.1425554: {} + devtools-protocol@0.0.1439962: {} dicer@0.3.0: dependencies: @@ -8325,8 +8268,6 @@ snapshots: dependencies: dns-packet: 5.6.1 - dns2@2.1.0: {} - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -8364,7 +8305,7 @@ snapshots: elliptic@6.6.1: dependencies: - bn.js: 4.12.1 + bn.js: 4.12.2 brorand: 1.1.0 hash.js: 1.1.7 hmac-drbg: 1.0.1 @@ -8405,7 +8346,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 22.15.2 + '@types/node': 22.15.14 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -9230,7 +9171,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -9243,7 +9184,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 22.15.14 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -9934,7 +9875,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.4): + mongodb-memory-server-core@10.1.4(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4): dependencies: async-mutex: 0.5.0 camelcase: 6.3.0 @@ -9942,7 +9883,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.16.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + mongodb: 6.16.0(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) new-find-package-json: 2.0.0 semver: 7.7.1 tar-stream: 3.1.7 @@ -9958,9 +9899,9 @@ snapshots: - socks - supports-color - mongodb-memory-server@10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4): + mongodb-memory-server@10.1.4(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4): dependencies: - mongodb-memory-server-core: 10.1.4(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4) + mongodb-memory-server-core: 10.1.4(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4) tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/credential-providers' @@ -9978,18 +9919,18 @@ snapshots: mongodb-connection-string-url: 2.6.0 socks: 2.8.4 optionalDependencies: - '@aws-sdk/credential-providers': 3.796.0 + '@aws-sdk/credential-providers': 3.799.0 '@mongodb-js/saslprep': 1.2.2 transitivePeerDependencies: - aws-crt - mongodb@6.16.0(@aws-sdk/credential-providers@3.796.0)(socks@2.8.4): + mongodb@6.16.0(@aws-sdk/credential-providers@3.799.0)(socks@2.8.4): dependencies: '@mongodb-js/saslprep': 1.2.2 bson: 6.10.3 mongodb-connection-string-url: 3.0.2 optionalDependencies: - '@aws-sdk/credential-providers': 3.796.0 + '@aws-sdk/credential-providers': 3.799.0 socks: 2.8.4 ms@2.0.0: {} @@ -10142,7 +10083,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10302,27 +10243,27 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@24.7.2: + puppeteer-core@24.8.0: dependencies: - '@puppeteer/browsers': 2.10.2 - chromium-bidi: 4.1.1(devtools-protocol@0.0.1425554) + '@puppeteer/browsers': 2.10.3 + chromium-bidi: 4.1.1(devtools-protocol@0.0.1439962) debug: 4.4.0 - devtools-protocol: 0.0.1425554 + devtools-protocol: 0.0.1439962 typed-query-selector: 2.12.0 - ws: 8.18.1 + ws: 8.18.2 transitivePeerDependencies: - bare-buffer - bufferutil - supports-color - utf-8-validate - puppeteer@24.7.2(typescript@5.7.3): + puppeteer@24.8.0(typescript@5.7.3): dependencies: - '@puppeteer/browsers': 2.10.2 - chromium-bidi: 4.1.1(devtools-protocol@0.0.1425554) + '@puppeteer/browsers': 2.10.3 + chromium-bidi: 4.1.1(devtools-protocol@0.0.1439962) cosmiconfig: 9.0.0(typescript@5.7.3) - devtools-protocol: 0.0.1425554 - puppeteer-core: 24.7.2 + devtools-protocol: 0.0.1439962 + puppeteer-core: 24.8.0 typed-query-selector: 2.12.0 transitivePeerDependencies: - bare-buffer @@ -10806,7 +10747,7 @@ snapshots: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.3 + bare-fs: 4.1.4 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -10862,11 +10803,11 @@ snapshots: tlds@1.255.0: {} - tldts-core@7.0.3: {} + tldts-core@7.0.6: {} tldts@7.0.1: dependencies: - tldts-core: 7.0.3 + tldts-core: 7.0.6 to-regex-range@5.0.1: dependencies: @@ -10903,7 +10844,7 @@ snapshots: tsscmp@1.0.6: {} - tsx@4.19.3: + tsx@4.19.4: dependencies: esbuild: 0.25.3 get-tsconfig: 4.10.0 @@ -10924,8 +10865,6 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.40.0: {} - type-fest@4.40.1: {} type-is@1.6.18: @@ -11096,8 +11035,6 @@ snapshots: ws@8.17.1: {} - ws@8.18.1: {} - ws@8.18.2: {} xml-js@1.6.11: @@ -11171,6 +11108,6 @@ snapshots: ylru@1.4.0: {} - zod@3.24.3: {} + zod@3.24.4: {} zwitch@2.0.4: {} diff --git a/readme.plan.md b/readme.plan.md index 568bce7..d404607 100644 --- a/readme.plan.md +++ b/readme.plan.md @@ -1,91 +1,59 @@ - # DcRouter Implementation Plan +# Plan for Improving Smartmail Integration - This document outlines the plan for developing **DcRouter**, a central routing - component for the platform service. DcRouter will provide: - - HTTP/HTTPS reverse proxy with TLS (ACME) support - - TCP/SNI-based proxying - - Mail Transfer Agent (MTA) for inbound/outbound SMTP - - Rule-based routing for web and mail traffic - - DNS-based dynamic routing - - Configuration, persistence, logging, and monitoring +## Current State Analysis - ## 1. Read and Summarize Dependencies - We will leverage existing modules; key points from their READMEs: - - **@push.rocks/smartproxy**: high-performance HTTP/HTTPS reverse proxy, - TLS termination, ACME HTTP-01, WebSockets, low-level port forwarding (nftables), - TCP/SNI proxy with dynamic routing and IP filtering. - - **@push.rocks/smartmail**: unified mail data structures and utilities. - - **mailparser**: parse raw SMTP messages into structured objects. - - **mailauth**: SPF/DKIM/DMARC validation and signing (DKIM). - - **@api.global/typedserver** / **typedsocket**: typed HTTP and TCP server abstractions. - - **@push.rocks/smartrule**: rule engine for dynamic decision-making on traffic. - - **@push.rocks/smartdns**: DNS resolution and caching for routing decisions. - - **@push.rocks/smartdata**: persistent key/value or document store for configs. - - **@push.rocks/smartlog** and **@push.rocks/smartrx**: logging and metrics/event tracking. - - **@push.rocks/qenv**: environment-based configuration loading. - - **ts/mta**: built-in MTA implementation (MtaService, SMTPServer, EmailSendJob, DKIMCreator/Verifier, DNSManager, ApiManager, Email class). +The platformservice currently uses @push.rocks/smartmail version 2.0.1, primarily for email handling in: +- Email service via connector.mta.ts +- Template management +- API endpoints for sending emails - ## 2. High-Level Architecture - DcRouter will instantiate and coordinate: - 1. **HTTP(S) Proxy Layer** - - Use `NetworkProxy` and `Port80Handler` from smartproxy - - Manage virtual hosts, certificates, redirects - 2. **TCP/SNI Proxy Layer (SmartProxy)** - - Use `SmartProxy` from `@push.rocks/smartproxy` to: - - Forward TCP connections by port or port ranges to backends (nftables-like port forwarding). - - Route TLS connections based on SNI to different target IPs/ports (SNI bridge). - - Integrate HTTP reverse proxy on select ports via `NetworkProxyBridge`. - - Manage ACME certificates with built-in `Port80Handler` and `CertProvisioner`. - - Apply IP filtering, connection rate limiting, timeouts, and detailed logging. - 3. **SMTP/MTA Layer** - - Leverage `MtaService` from `ts/mta`, coordinating subcomponents: - - `SMTPServer` (classes.smtpserver): SMTP listener on ports 25/587 with STARTTLS/TLS - - `Email` and `EmailSendJob`: queue-based outbound sending with retries and rate limiting - - `DKIMCreator` / `DKIMVerifier`: automatic key management, signing, and verification - - `DNSManager`: generate and update DNS records for DKIM/SPF/MTA - - `ApiManager`: certificate provisioning and renewal via typedrequest/typedsocket - - Integrate inbound processing (mailparser, SPF/DKIM validation) and routing rules - 4. **Rule Engine** - - Use smartrule to define routing rules for HTTP domains and mail addresses - - Support wildcard matching, priority, and dynamic updates - 5. **DNS Integration** - - Use smartdns to resolve backend targets by name, with caching - 6. **Persistence & Config** - - Load environment config via qenv - - Store dynamic state (rules, domains, MTA settings) in smartdata - 7. **Logging & Metrics** - - Instrument all layers with smartlog and smartrx - 8. **Management API / CLI** - - Expose REST/CLI commands via typedserver for: add/remove domains, rules, - view status, reload config, etc. +## Identified Integration Improvements - ## 3. Feature Breakdown and Milestones - - [ ] A. Core Router scaffolding (`DcRouter` class) - - [ ] B. HTTP/HTTPS proxy integration - - [ ] C. SmartProxy Integration - - [ ] C1. Define `IPortProxySettings` with `fromPort`, `toPort`, `domainConfigs`, and global port ranges - - [ ] C2. Configure `domainConfigs` to mix port forwarding, SNI routing, and `useNetworkProxy` flags - - [ ] C3. Initialize and start `SmartProxy`, including `Port80Handler` for ACME and `CertProvisioner` - - [ ] C4. Wire SmartProxy events (e.g., certificate issuance, connection logging) into DcRouter - - [ ] C5. Support runtime updates to `domainConfigs` for dynamic routing changes - - [ ] D. MTA Integration (ts/mta) - - [ ] D1. Scaffold integration of `MtaService` into `DcRouter` - - [ ] D2. Configure and start `SMTPServer` with TLS/STARTTLS on ports 25/587 - - [ ] D3. Wire inbound email handling via `processIncomingEmail` and rule engine - - [ ] D4. Implement outbound queue processing (`EmailSendJob`), retries, rate limiting - - [ ] D5. Manage DKIM keys and DNS records (`DKIMCreator`, `DNSManager`) - - [ ] D6. Provision and auto-renew certificates (`ApiManager`) - - [ ] E. Rule engine wiring for HTTP and SMTP - - [ ] F. DNS-based dynamic resolution - - [ ] G. Persistence layer for configs and state - - [ ] H. Logging/metrics instrumentation - - [ ] I. CLI and REST API endpoints - - [ ] J. Automated tests for each layer - - [ ] K. Documentation and examples in README +### 1. Update smartmail to Latest Version - ## 4. Next Steps - 1. Review and refine this plan. - 2. Begin implementation starting with the core scaffolding (A). - 3. Iterate through features in milestone order. +- [x] Update package.json to use the latest smartmail version +- [ ] Handle any breaking API changes during the upgrade - _Last updated: 2025-05-04_ \ No newline at end of file +### 2. Email Validation Improvements + +- [ ] Implement advanced email validation using EmailAddressValidator +- [ ] Add MX record checking for outbound emails +- [ ] Integrate domain reputation checking for spam prevention + +### 3. Template System Enhancement + +- [ ] Refactor TemplateManager to leverage smartmail's templating capabilities fully +- [ ] Add support for typed email templates with proper interfaces +- [ ] Create a comprehensive template catalog with standardized formats + +### 4. MIME Handling Improvements + +- [ ] Utilize smartmail's MIME conversion capabilities in the MTA connector +- [ ] Streamline attachment handling between smartmail and internal Email class +- [ ] Handle content encoding more efficiently + +### 5. Integration with MTA Service + +- [ ] Refactor Email class to extend or delegate to smartmail.Smartmail +- [ ] Align the interfaces between internal Email and Smartmail classes +- [ ] Simplify conversion between MTA Email format and Smartmail + +### 6. Enhanced Email Processing + +- [ ] Add proper DKIM signature verification using smartmail capabilities +- [ ] Implement proper email tagging and categorization +- [ ] Better handling of incoming emails with smart parsing + +### 7. Testing & Documentation + +- [ ] Create comprehensive tests for the smartmail integration +- [ ] Document the integration patterns for future reference +- [ ] Create example implementations for common use cases + +## Implementation Strategy + +1. First focus on non-breaking improvements (validation, template enhancement) +2. Then tackle the deeper integration with MTA service +3. Finally implement advanced features (MIME handling, DKIM) + +Each change should be made incrementally with thorough testing to ensure no disruption to the existing email functionality. \ No newline at end of file diff --git a/ts/dcrouter/classes.dcr.sz.connector.ts b/ts/dcrouter/classes.dcr.sz.connector.ts new file mode 100644 index 0000000..c52f24f --- /dev/null +++ b/ts/dcrouter/classes.dcr.sz.connector.ts @@ -0,0 +1,15 @@ +import * as plugins from '../plugins.js'; +import type DcRouter from './classes.dcrouter.js'; + +export class SzDcRouterConnector { + public qenv: plugins.qenv.Qenv; + public dcRouterRef: DcRouter; + constructor(dcRouterRef: DcRouter) { + this.dcRouterRef = dcRouterRef; + this.dcRouterRef.options.platformServiceInstance?.serviceQenv || new plugins.qenv.Qenv('./', '.nogit/'); + } + + public async getEnvVarOnDemand(varName: string): Promise { + return this.qenv.getEnvVarOnDemand(varName) || ''; + } +} \ No newline at end of file diff --git a/ts/dcrouter/classes.dcrouter.ts b/ts/dcrouter/classes.dcrouter.ts index 6f823c3..30bba25 100644 --- a/ts/dcrouter/classes.dcrouter.ts +++ b/ts/dcrouter/classes.dcrouter.ts @@ -1,48 +1,136 @@ import * as plugins from '../plugins.js'; import * as paths from '../paths.js'; +import { SzDcRouterConnector } from './classes.dcr.sz.connector.js'; +import type { SzPlatformService } from '../platformservice.js'; import { type IMtaConfig, MtaService } from '../mta/classes.mta.js'; +// Types are referenced via plugins.smartproxy.* + export interface IDcRouterOptions { - portProxyConfig?: plugins.smartproxy.IPortProxySettings; + platformServiceInstance?: SzPlatformService; + + /** SmartProxy (TCP/SNI) configuration */ + smartProxyOptions?: plugins.smartproxy.ISmartProxyOptions; + /** Reverse proxy host configurations for HTTP(S) layer */ + reverseProxyConfigs?: plugins.smartproxy.IReverseProxyConfig[]; + /** MTA (SMTP) service configuration */ mtaConfig?: IMtaConfig; + /** DNS server configuration */ dnsServerConfig?: plugins.smartdns.IDnsServerOptions; } /** * DcRouter can be run on ingress and egress to and from a datacenter site. */ +/** + * Context passed to HTTP routing rules + */ +/** + * Context passed to port proxy (SmartProxy) routing rules + */ +export interface PortProxyRuleContext { + proxy: plugins.smartproxy.SmartProxy; + configs: plugins.smartproxy.IPortProxySettings['domainConfigs']; +} export class DcRouter { - private options: IDcRouterOptions; - public smartProxy: plugins.smartproxy.SmartProxy; - public mta: MtaService; - public dnsServer: plugins.smartdns.DnsServer; + public szDcRouterConnector = new SzDcRouterConnector(this); + public options: IDcRouterOptions; + public smartProxy?: plugins.smartproxy.SmartProxy; + public mta?: MtaService; + public dnsServer?: plugins.smartdns.DnsServer; + /** SMTP rule engine */ + public smtpRuleEngine?: plugins.smartrule.SmartRule; constructor(optionsArg: IDcRouterOptions) { this.options = optionsArg; - if (this.options.portProxyConfig) { - this.smartProxy = new plugins.smartproxy.SmartProxy(this.options.portProxyConfig); - } - if (this.options.mtaConfig) { - this.mta = new MtaService(null, this.options.mtaConfig); - } } public async start() { + + // TCP/SNI proxy (SmartProxy) + if (this.options.smartProxyOptions) { + // Lets setup smartacme + let certProvisionFunction: plugins.smartproxy.ISmartProxyOptions['certProvisionFunction']; + if (true) { + const smartAcmeInstance = new plugins.smartacme.SmartAcme({ + accountEmail: this.options.smartProxyOptions.acme.accountEmail, + certManager: new plugins.smartacme.certmanagers.MongoCertManager({ + mongoDbUrl: await this.szDcRouterConnector.getEnvVarOnDemand('MONGO_DB_URL'), + mongoDbUser: await this.szDcRouterConnector.getEnvVarOnDemand('MONGO_DB_USER'), + mongoDbPass: await this.szDcRouterConnector.getEnvVarOnDemand('MONGO_DB_PASS'), + mongoDbName: await this.szDcRouterConnector.getEnvVarOnDemand('MONGO_DB_NAME'), + }), + environment: 'production', + accountPrivateKey: await this.szDcRouterConnector.getEnvVarOnDemand('ACME_ACCOUNT_PRIVATE_KEY'), + challengeHandlers: [ + new plugins.smartacme.handlers.Dns01Handler(new plugins.cloudflare.CloudflareAccount('')) // TODO + ], + + }); + certProvisionFunction = async (domainArg) => { + const domainSupported = await smartAcmeInstance.challengeHandlers[0].checkWetherDomainIsSupported(domainArg); + if (!domainSupported) { + return 'http01'; + } + return smartAcmeInstance.getCertificateForDomain(domainArg); + }; + } + + this.smartProxy = new plugins.smartproxy.SmartProxy(this.options.smartProxyOptions); + // Initialize SMTP rule engine from MTA service if available + if (this.mta) { + this.smtpRuleEngine = this.mta.smtpRuleEngine; + } + } + // MTA service + if (this.options.mtaConfig) { + this.mta = new MtaService(null, this.options.mtaConfig); + } + // DNS server + if (this.options.dnsServerConfig) { + this.dnsServer = new plugins.smartdns.DnsServer(this.options.dnsServerConfig); + } + + + + // Start SmartProxy if configured if (this.smartProxy) { await this.smartProxy.start(); } + // Start MTA service if configured if (this.mta) { await this.mta.start(); } + // Start DNS server if configured + if (this.dnsServer) { + await this.dnsServer.start(); + } } public async stop() { + // Stop SmartProxy if (this.smartProxy) { await this.smartProxy.stop(); } + // Stop MTA service if (this.mta) { await this.mta.stop(); } + // Stop DNS server + if (this.dnsServer) { + await this.dnsServer.stop(); + } + } + + /** + * Register an SMTP routing rule + */ + public addSmtpRule( + priority: number, + check: (email: any) => Promise, + action: (email: any) => Promise + ): void { + this.smtpRuleEngine?.createRule(priority, check, action); } } diff --git a/ts/dcrouter/index.ts b/ts/dcrouter/index.ts new file mode 100644 index 0000000..258e118 --- /dev/null +++ b/ts/dcrouter/index.ts @@ -0,0 +1 @@ +export * from './classes.dcrouter.js'; diff --git a/ts/email/classes.apimanager.ts b/ts/email/classes.apimanager.ts index 6ca4664..d4f2c6d 100644 --- a/ts/email/classes.apimanager.ts +++ b/ts/email/classes.apimanager.ts @@ -19,7 +19,7 @@ export class ApiManager { */ private registerApiEndpoints() { // Register the SendEmail endpoint - this.typedRouter.addTypedHandler( + this.typedRouter.addTypedHandler( new plugins.typedrequest.TypedHandler('sendEmail', async (requestData) => { const mailToSend = new plugins.smartmail.Smartmail({ body: requestData.body, diff --git a/ts/email/classes.connector.mta.ts b/ts/email/classes.connector.mta.ts index f86c761..172d694 100644 --- a/ts/email/classes.connector.mta.ts +++ b/ts/email/classes.connector.mta.ts @@ -27,7 +27,7 @@ export class MtaConnector { * @param options Additional options */ public async sendEmail( - smartmail: plugins.smartmail.Smartmail<>, + smartmail: plugins.smartmail.Smartmail, // TODO: look at type toAddresses: string | string[], options: any = {} ): Promise { @@ -82,7 +82,7 @@ export class MtaConnector { * For MTA, this would handle an email already received by the SMTP server * @param emailData The raw email data or identifier */ - public async receiveEmail(emailData: string): Promise> { + public async receiveEmail(emailData: string): Promise> { try { // In a real implementation, this would retrieve an email from the MTA storage // For now, we can use a simplified approach: @@ -97,7 +97,7 @@ export class MtaConnector { body: parsedEmail.html || parsedEmail.text || '', creationObjectRef: { From: parsedEmail.from?.text || '', - To: parsedEmail.to?.text || '', + To: parsedEmail.to, Subject: parsedEmail.subject || '' } }); diff --git a/ts/mta/classes.mta.ts b/ts/mta/classes.mta.ts index 122a221..fe00934 100644 --- a/ts/mta/classes.mta.ts +++ b/ts/mta/classes.mta.ts @@ -168,6 +168,9 @@ export class MtaService { /** Whether the service is currently running */ private running = false; + + /** SMTP rule engine for incoming emails */ + public smtpRuleEngine: plugins.smartrule.SmartRule; /** * Initialize the MTA service @@ -188,6 +191,8 @@ export class MtaService { this.dkimVerifier = new DKIMVerifier(this); this.dnsManager = new DNSManager(this); this.apiManager = new ApiManager(); + // Initialize SMTP rule engine + this.smtpRuleEngine = new plugins.smartrule.SmartRule(); // Initialize stats this.stats = { @@ -408,6 +413,12 @@ export class MtaService { throw new Error('MTA service is not running'); } + // Apply SMTP rule engine decisions + try { + await this.smtpRuleEngine.makeDecision(email); + } catch (err) { + console.error('Error executing SMTP rules:', err); + } try { console.log(`Processing incoming email from ${email.from} to ${email.to}`); diff --git a/ts/mta/classes.smtpserver.ts b/ts/mta/classes.smtpserver.ts index cf22e1c..c59f371 100644 --- a/ts/mta/classes.smtpserver.ts +++ b/ts/mta/classes.smtpserver.ts @@ -301,7 +301,7 @@ export class SMTPServer { this.sessions.delete(socket); } - private processEmailData(socket: plugins.net.Socket | plugins.tls.TLSSocket, data: string): void { + private async processEmailData(socket: plugins.net.Socket | plugins.tls.TLSSocket, data: string): Promise { const session = this.sessions.get(socket); if (!session) return; @@ -384,8 +384,12 @@ export class SMTPServer { mightBeSpam: email.mightBeSpam }); - // Process or forward the email as needed - // this.mtaRef.processIncomingEmail(email); // You could add this method to your MTA service + // Process or forward the email via MTA service + try { + await this.mtaRef.processIncomingEmail(email); + } catch (err) { + console.error('Error in MTA processing of incoming email:', err); + } } catch (error) { console.error('Error parsing email:', error); } diff --git a/ts/plugins.ts b/ts/plugins.ts index c3ccbbd..936ecaa 100644 --- a/ts/plugins.ts +++ b/ts/plugins.ts @@ -40,6 +40,7 @@ export { // @push.rocks scope import * as projectinfo from '@push.rocks/projectinfo'; import * as qenv from '@push.rocks/qenv'; +import * as smartacme from '@push.rocks/smartacme'; import * as smartdata from '@push.rocks/smartdata'; import * as smartdns from '@push.rocks/smartdns'; import * as smartfile from '@push.rocks/smartfile'; @@ -52,12 +53,14 @@ import * as smartrequest from '@push.rocks/smartrequest'; import * as smartrule from '@push.rocks/smartrule'; import * as smartrx from '@push.rocks/smartrx'; -export { projectinfo, qenv, smartdata, smartdns, smartfile, smartlog, smartmail, smartpath, smartproxy, smartpromise, smartrequest, smartrule, smartrx }; +export { projectinfo, qenv, smartacme, smartdata, smartdns, smartfile, smartlog, smartmail, smartpath, smartproxy, smartpromise, smartrequest, smartrule, smartrx }; // apiclient.xyz scope +import * as cloudflare from '@apiclient.xyz/cloudflare'; import * as letterxpress from '@apiclient.xyz/letterxpress'; export { + cloudflare, letterxpress, } diff --git a/ts_web/index.ts b/ts_web/index.ts new file mode 100644 index 0000000..0720dc9 --- /dev/null +++ b/ts_web/index.ts @@ -0,0 +1 @@ +console.log('minidash') \ No newline at end of file diff --git a/types-node-22.15.3.tgz b/types-node-22.15.3.tgz new file mode 100644 index 0000000..2c0919e Binary files /dev/null and b/types-node-22.15.3.tgz differ