From c1208b5216ff5d46e8746436cd4ec2727495cc09 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Mon, 9 Mar 2026 17:05:19 +0000 Subject: [PATCH] =?UTF-8?q?feat(smartpdf):=20replace=20internal=20Express?= =?UTF-8?q?=20server=20with=20@push.rocks/smartserve,=20add=20PDF=E2=86=92?= =?UTF-8?q?WebP=20rendering,=20improve=20start/stop=20handling=20and=20bum?= =?UTF-8?q?p=20dependencies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 10 + package.json | 11 +- pnpm-lock.yaml | 1760 ++++++------------------------- readme.md | 4 +- ts/00_commitinfo_data.ts | 2 +- ts/smartpdf.classes.smartpdf.ts | 656 ++++++------ ts/smartpdf.plugins.ts | 8 +- 7 files changed, 700 insertions(+), 1751 deletions(-) diff --git a/changelog.md b/changelog.md index 9fcd20e..5184c38 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,15 @@ # Changelog +## 2026-03-09 - 4.2.0 - feat(smartpdf) +replace internal Express server with @push.rocks/smartserve, add PDF→WebP rendering, improve start/stop handling and bump dependencies + +- Replace internal Express HTTP implementation with @push.rocks/smartserve and update README wording to reflect HTTP server usage +- Add PDF→WebP rendering: use pdf.js in-page rendering, capture canvases via Puppeteer to produce WebP buffers; added robust wait/timeout and error handling +- Add start/stop guards: _isRunning flag, reset readiness Deferred on start, and throw if start called while running +- Remove direct http/express exports from plugins and stop exporting express; export smartserve from plugins +- Improve JPEG conversion to produce progressive JPEGs via SmartJimp (sharp mode) +- Bump dependencies/devDependencies: @push.rocks/smartfs to ^1.5.0, add @push.rocks/smartserve ^2.0.1; devDeps @git.zone/tsbuild ^4.3.0, @git.zone/tstest ^3.3.0, @types/node ^25.3.5 + ## 2026-03-01 - 4.1.3 - fix(tests) use example.com in image conversion test and relax JPEG size assertion diff --git a/package.json b/package.json index 3c5bd61..bbd5cb8 100644 --- a/package.json +++ b/package.json @@ -14,25 +14,24 @@ "buildDocs": "tsdoc" }, "devDependencies": { - "@git.zone/tsbuild": "^4.1.2", + "@git.zone/tsbuild": "^4.3.0", "@git.zone/tsdoc": "^1.12.0", "@git.zone/tsrun": "^2.0.1", - "@git.zone/tstest": "^3.1.8", - "@types/node": "^25.3.2" + "@git.zone/tstest": "^3.3.0", + "@types/node": "^25.3.5" }, "dependencies": { "@push.rocks/smartbuffer": "^3.0.5", "@push.rocks/smartdelay": "^3.0.5", - "@push.rocks/smartfs": "^1.3.1", + "@push.rocks/smartfs": "^1.5.0", "@push.rocks/smartjimp": "^1.2.0", "@push.rocks/smartnetwork": "^4.4.0", "@push.rocks/smartpath": "^6.0.0", "@push.rocks/smartpromise": "^4.2.3", "@push.rocks/smartpuppeteer": "^2.0.5", + "@push.rocks/smartserve": "^2.0.1", "@push.rocks/smartunique": "^3.0.9", "@tsclass/tsclass": "^9.3.0", - "@types/express": "^5.0.6", - "express": "^5.2.1", "pdf-lib": "^1.17.1", "pdf2json": "^4.0.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4d6e3fd..159746a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^3.0.5 version: 3.0.5 '@push.rocks/smartfs': - specifier: ^1.3.1 - version: 1.3.1 + specifier: ^1.5.0 + version: 1.5.0 '@push.rocks/smartjimp': specifier: ^1.2.0 version: 1.2.0 @@ -32,18 +32,15 @@ importers: '@push.rocks/smartpuppeteer': specifier: ^2.0.5 version: 2.0.5(typescript@5.9.3) + '@push.rocks/smartserve': + specifier: ^2.0.1 + version: 2.0.1 '@push.rocks/smartunique': specifier: ^3.0.9 version: 3.0.9 '@tsclass/tsclass': specifier: ^9.3.0 version: 9.3.0 - '@types/express': - specifier: ^5.0.6 - version: 5.0.6 - express: - specifier: ^5.2.1 - version: 5.2.1 pdf-lib: specifier: ^1.17.1 version: 1.17.1 @@ -52,20 +49,20 @@ importers: version: 4.0.2 devDependencies: '@git.zone/tsbuild': - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^4.3.0 + version: 4.3.0 '@git.zone/tsdoc': specifier: ^1.12.0 - version: 1.12.0(ws@8.18.3)(zod@3.25.76) + version: 1.12.0(ws@8.19.0)(zod@3.25.76) '@git.zone/tsrun': specifier: ^2.0.1 version: 2.0.1 '@git.zone/tstest': - specifier: ^3.1.8 - version: 3.1.8(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4)(typescript@5.9.3) + specifier: ^3.3.0 + version: 3.3.1(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4)(typescript@5.9.3) '@types/node': - specifier: ^25.3.2 - version: 25.3.2 + specifier: ^25.3.5 + version: 25.3.5 packages: @@ -90,12 +87,6 @@ packages: '@api.global/typedrequest@3.2.6': resolution: {integrity: sha512-CnvbjYjnGGw3rwL+7bTHSgRHEpDujzhs3cv7l1xgCXMPQe3DcPg74+9ep1Y5cu21T/w0pxNnDCJpbb0SHqHzAw==} - '@api.global/typedserver@3.0.80': - resolution: {integrity: sha512-dcp0oXsjBL+XdFg1wUUP08uJQid5bQ0Yv3V3Y3lnI2QCbat0FU+Tsb0TZRnZ4+P150Vj/ITBqJUgDzFsF34grA==} - - '@api.global/typedsocket@3.0.1': - resolution: {integrity: sha512-xojiAVNXtHoxkpBo8U2HHJG8FrVXXuLvDNndSHXwx4C9VslUwDn5zSCI+PdBl8iAg+ZuBmKjqkpZZ9sL6DC5yQ==} - '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -123,10 +114,6 @@ packages: resolution: {integrity: sha512-ia5+l7U1ludU/YqQAnEMj5DIp1kfMTu14lUOMG3uTIwTcj8OjkCvAe6BuM0OY6zd8enrJYWLqIqxuKPOWw4I7Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-s3@3.1000.0': - resolution: {integrity: sha512-7kPy33qNGq3NfwHC0412T6LDK1bp4+eiPzetX0sVd9cpTSXuQDKpoOFnB0Njj6uZjJDcLS3n2OeyarwwgkQ0Ow==} - engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.750.0': resolution: {integrity: sha512-S9G9noCeBxchoMVkHYrRi1A1xW/VOTP2W7X34lP+Y7Wpl32yMA7IJo0fAGAuTc0q1Nu6/pXDm+oDG7rhTCA1tg==} engines: {node: '>=18.0.0'} @@ -139,14 +126,6 @@ packages: resolution: {integrity: sha512-bZ5K7N5L4+Pa2epbVpUQqd1XLG2uU8BGs/Sd+2nbgTf+lNQJyIxAg/Qsrjz9MzmY8zzQIeRQEkNmR6yVAfCmmQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.973.15': - resolution: {integrity: sha512-AlC0oQ1/mdJ8vCIqu524j5RB7M8i8E24bbkZmya1CuiQxkY7SdIZAyw7NDNMGaNINQFq/8oGRMX0HeOfCVsl/A==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/crc64-nvme@3.972.3': - resolution: {integrity: sha512-UExeK+EFiq5LAcbHm96CQLSia+5pvpUVSAsVApscBzayb7/6dJBJKwV4/onsk4VbWSmqxDMcfuTD+pC4RxgZHg==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-cognito-identity@3.750.0': resolution: {integrity: sha512-TwBzrxgIWcQk846XFn0A9DHBHbfg4sHR3M2GL4E7NcffEkh7r642ILiLa58VvQjO2nB1tcOOFtRqbZvVOKexUw==} engines: {node: '>=18.0.0'} @@ -155,62 +134,30 @@ packages: resolution: {integrity: sha512-In6bsG0p/P31HcH4DBRKBbcDS/3SHvEPjfXV8ODPWZO/l3/p7IRoYBdQ07C9R+VMZU2D0+/Sc/DWK/TUNDk1+Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.972.13': - resolution: {integrity: sha512-6ljXKIQ22WFKyIs1jbORIkGanySBHaPPTOI4OxACP5WXgbcR0nDYfqNJfXEGwCK7IzHdNbCSFsNKKs0qCexR8Q==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.750.0': resolution: {integrity: sha512-wFB9qqfa20AB0dElsQz5ZlZT5o+a+XzpEpmg0erylmGYqEOvh8NQWfDUVpRmQuGq9VbvW/8cIbxPoNqEbPtuWQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.972.15': - resolution: {integrity: sha512-dJuSTreu/T8f24SHDNTjd7eQ4rabr0TzPh2UTCwYexQtzG3nTDKm1e5eIdhiroTMDkPEJeY+WPkA6F9wod/20A==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.750.0': resolution: {integrity: sha512-2YIZmyEr5RUd3uxXpxOLD9G67Bibm4I/65M6vKFP17jVMUT+R1nL7mKqmhEVO2p+BoeV+bwMyJ/jpTYG368PCg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.972.13': - resolution: {integrity: sha512-JKSoGb7XeabZLBJptpqoZIFbROUIS65NuQnEHGOpuT9GuuZwag2qciKANiDLFiYk4u8nSrJC9JIOnWKVvPVjeA==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/credential-provider-login@3.972.13': - resolution: {integrity: sha512-RtYcrxdnJHKY8MFQGLltCURcjuMjnaQpAxPE6+/QEdDHHItMKZgabRe/KScX737F9vJMQsmJy9EmMOkCnoC1JQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.750.0': resolution: {integrity: sha512-THWHHAceLwsOiowPEmKyhWVDlEUxH07GHSw5AQFDvNQtGKOQl0HSIFO1mKObT2Q2Vqzji9Bq8H58SO5BFtNPRw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.972.14': - resolution: {integrity: sha512-WqoC2aliIjQM/L3oFf6j+op/enT2i9Cc4UTxxMEKrJNECkq4/PlKE5BOjSYFcq6G9mz65EFbXJh7zOU4CvjSKQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.750.0': resolution: {integrity: sha512-Q78SCH1n0m7tpu36sJwfrUSxI8l611OyysjQeMiIOliVfZICEoHcLHLcLkiR+tnIpZ3rk7d2EQ6R1jwlXnalMQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.972.13': - resolution: {integrity: sha512-rsRG0LQA4VR+jnDyuqtXi2CePYSmfm5GNL9KxiW8DSe25YwJSr06W8TdUfONAC+rjsTI+aIH2rBGG5FjMeANrw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.750.0': resolution: {integrity: sha512-FGYrDjXN/FOQVi/t8fHSv8zCk+NEvtFnuc4cZUj5OIbM4vrfFc5VaPyn41Uza3iv6Qq9rZg0QOwWnqK8lNrqUw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.972.13': - resolution: {integrity: sha512-fr0UU1wx8kNHDhTQBXioc/YviSW8iXuAxHvnH7eQUtn8F8o/FU3uu6EUMvAQgyvn7Ne5QFnC0Cj0BFlwCk+RFw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.750.0': resolution: {integrity: sha512-Nz8zs3YJ+GOTSrq+LyzbbC1Ffpt7pK38gcOyNZv76pP5MswKTUKNYBJehqwa+i7FcFQHsCk3TdhR8MT1ZR23uA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.13': - resolution: {integrity: sha512-a6iFMh1pgUH0TdcouBppLJUfPM7Yd3R9S1xFodPtCRoLqCz2RQFA3qjA8x4112PVYXEd4/pHX2eihapq39w0rA==} - engines: {node: '>=20.0.0'} - '@aws-sdk/credential-providers@3.750.0': resolution: {integrity: sha512-HpJyLHAjcn/IcvsL4WhEIgbzEWfTnn29u8QFNa5Ii9pVtxdeP/DkSthP3SNxLK2jVNcqWL9xago02SiasNOKfw==} engines: {node: '>=18.0.0'} @@ -219,114 +166,58 @@ packages: resolution: {integrity: sha512-etC7G18aF7KdZguW27GE/wpbrNmYLVT755EsFc8kXpZj8D6AFKxc7OuveinJmiy0bYXAMspJUWsF6CrGpOw6CQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.972.6': - resolution: {integrity: sha512-3H2bhvb7Cb/S6WFsBy/Dy9q2aegC9JmGH1inO8Lb2sWirSqpLJlZmvQHPE29h2tIxzv6el/14X/tLCQ8BQU6ZQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-expect-continue@3.734.0': resolution: {integrity: sha512-P38/v1l6HjuB2aFUewt7ueAW5IvKkFcv5dalPtbMGRhLeyivBOHwbCyuRKgVs7z7ClTpu9EaViEGki2jEQqEsQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.972.6': - resolution: {integrity: sha512-QMdffpU+GkSGC+bz6WdqlclqIeCsOfgX8JFZ5xvwDtX+UTj4mIXm3uXu7Ko6dBseRcJz1FA6T9OmlAAY6JgJUg==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.750.0': resolution: {integrity: sha512-ach0d2buDnX2TUausUbiXXFWFo3IegLnCrA+Rw8I9AYVpLN9lTaRwAYJwYC6zEuW9Golff8MwkYsp/OaC5tKMw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.973.1': - resolution: {integrity: sha512-QLXsxsI6VW8LuGK+/yx699wzqP/NMCGk/hSGP+qtB+Lcff+23UlbahyouLlk+nfT7Iu021SkXBhnAuVd6IZcPw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-host-header@3.734.0': resolution: {integrity: sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.972.6': - resolution: {integrity: sha512-5XHwjPH1lHB+1q4bfC7T8Z5zZrZXfaLcjSMwTd1HPSPrCmPFMbg3UQ5vgNWcVj0xoX4HWqTGkSf2byrjlnRg5w==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-location-constraint@3.734.0': resolution: {integrity: sha512-EJEIXwCQhto/cBfHdm3ZOeLxd2NlJD+X2F+ZTOxzokuhBtY0IONfC/91hOo5tWQweerojwshSMHRCKzRv1tlwg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.972.6': - resolution: {integrity: sha512-XdZ2TLwyj3Am6kvUc67vquQvs6+D8npXvXgyEUJAdkUDx5oMFJKOqpK+UpJhVDsEL068WAJl2NEGzbSik7dGJQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-logger@3.734.0': resolution: {integrity: sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.972.6': - resolution: {integrity: sha512-iFnaMFMQdljAPrvsCVKYltPt2j40LQqukAbXvW7v0aL5I+1GO7bZ/W8m12WxW3gwyK5p5u1WlHg8TSAizC5cZw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-recursion-detection@3.734.0': resolution: {integrity: sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.972.6': - resolution: {integrity: sha512-dY4v3of5EEMvik6+UDwQ96KfUFDk8m1oZDdkSc5lwi4o7rFrjnv0A+yTV+gu230iybQZnKgDLg/rt2P3H+Vscw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.750.0': resolution: {integrity: sha512-3H6Z46cmAQCHQ0z8mm7/cftY5ifiLfCjbObrbyyp2fhQs9zk6gCKzIX8Zjhw0RMd93FZi3ebRuKJWmMglf4Itw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.15': - resolution: {integrity: sha512-WDLgssevOU5BFx1s8jA7jj6cE5HuImz28sy9jKOaVtz0AW1lYqSzotzdyiybFaBcQTs5zxXOb2pUfyMxgEKY3Q==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-ssec@3.734.0': resolution: {integrity: sha512-d4yd1RrPW/sspEXizq2NSOUivnheac6LPeLSLnaeTbBG9g1KqIqvCzP1TfXEqv2CrWfHEsWtJpX7oyjySSPvDQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.972.6': - resolution: {integrity: sha512-acvMUX9jF4I2Ew+Z/EA6gfaFaz9ehci5wxBmXCZeulLuv8m+iGf6pY9uKz8TPjg39bdAz3hxoE0eLP8Qz+IYlA==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-user-agent@3.750.0': resolution: {integrity: sha512-YYcslDsP5+2NZoN3UwuhZGkhAHPSli7HlJHBafBrvjGV/I9f8FuOO1d1ebxGdEP4HyRXUGyh+7Ur4q+Psk0ryw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.972.15': - resolution: {integrity: sha512-ABlFVcIMmuRAwBT+8q5abAxOr7WmaINirDJBnqGY5b5jSDo00UMlg/G4a0xoAgwm6oAECeJcwkvDlxDwKf58fQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.750.0': resolution: {integrity: sha512-OH68BRF0rt9nDloq4zsfeHI0G21lj11a66qosaljtEP66PWm7tQ06feKbFkXHT5E1K3QhJW3nVyK8v2fEBY5fg==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.996.3': - resolution: {integrity: sha512-AU5TY1V29xqwg/MxmA2odwysTez+ccFAhmfRJk+QZT5HNv90UTA9qKd1J9THlsQkvmH7HWTEV1lDNxkQO5PzNw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/region-config-resolver@3.734.0': resolution: {integrity: sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.972.6': - resolution: {integrity: sha512-Aa5PusHLXAqLTX1UKDvI3pHQJtIsF7Q+3turCHqfz/1F61/zDMWfbTC8evjhrrYVAtz9Vsv3SJ/waSUeu7B6gw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.750.0': resolution: {integrity: sha512-RA9hv1Irro/CrdPcOEXKwJ0DJYJwYCsauGEdRXihrRfy8MNSR9E+mD5/Fr5Rxjaq5AHM05DYnN3mg/DU6VwzSw==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.3': - resolution: {integrity: sha512-gQYI/Buwp0CAGQxY7mR5VzkP56rkWq2Y1ROkFuXh5XY94DsSjJw62B3I0N0lysQmtwiL2ht2KHI9NylM/RP4FA==} - engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.750.0': resolution: {integrity: sha512-X/KzqZw41iWolwNdc8e3RMcNSMR364viHv78u6AefXOO5eRM40c4/LuST1jDzq35/LpnqRhL7/MuixOetw+sFw==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.999.0': - resolution: {integrity: sha512-cx0hHUlgXULfykx4rdu/ciNAJaa3AL5xz3rieCz7NKJ68MJwlj3664Y8WR5MGgxfyYJBdamnkjNSx5Kekuc0cg==} - engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.734.0': resolution: {integrity: sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==} engines: {node: '>=18.0.0'} @@ -339,18 +230,10 @@ packages: resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-arn-parser@3.972.2': - resolution: {integrity: sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==} - engines: {node: '>=20.0.0'} - '@aws-sdk/util-endpoints@3.743.0': resolution: {integrity: sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.996.3': - resolution: {integrity: sha512-yWIQSNiCjykLL+ezN5A+DfBb1gfXTytBxm57e64lYmwxDHNmInYHRJYYRAGWG1o77vKEiWaw4ui28e3yb1k5aQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.723.0': resolution: {integrity: sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==} engines: {node: '>=18.0.0'} @@ -358,9 +241,6 @@ packages: '@aws-sdk/util-user-agent-browser@3.734.0': resolution: {integrity: sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==} - '@aws-sdk/util-user-agent-browser@3.972.6': - resolution: {integrity: sha512-Fwr/llD6GOrFgQnKaI2glhohdGuBDfHfora6iG9qsBBBR8xv1SdCSwbtf5CWlUdCw5X7g76G/9Hf0Inh0EmoxA==} - '@aws-sdk/util-user-agent-node@3.750.0': resolution: {integrity: sha512-84HJj9G9zbrHX2opLk9eHfDceB+UIHVrmflMzWHpsmo9fDuro/flIBqaVDlE021Osj6qIM0SJJcnL6s23j7JEw==} engines: {node: '>=18.0.0'} @@ -370,27 +250,10 @@ packages: aws-crt: optional: true - '@aws-sdk/util-user-agent-node@3.973.0': - resolution: {integrity: sha512-A9J2G4Nf236e9GpaC1JnA8wRn6u6GjnOXiTwBLA6NUJhlBTIGfrTy+K1IazmF8y+4OFdW3O5TZlhyspJMqiqjA==} - engines: {node: '>=20.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - '@aws-sdk/xml-builder@3.734.0': resolution: {integrity: sha512-Zrjxi5qwGEcUsJ0ru7fRtW74WcTS0rbLcehoFB+rN1GRi2hbLcFaYs4PwVA5diLeAJH0gszv3x4Hr/S87MfbKQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/xml-builder@3.972.8': - resolution: {integrity: sha512-Ql8elcUdYCha83Ol7NznBsgN5GVZnv3vUd86fEc6waU6oUdY0T1O9NODkEEOS/Uaogr87avDrUC6DSeM4oXjZg==} - engines: {node: '>=20.0.0'} - - '@aws/lambda-invoke-store@0.2.3': - resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} - engines: {node: '>=18.0.0'} - '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -410,27 +273,18 @@ packages: '@borewit/text-codec@0.2.1': resolution: {integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==} - '@cloudflare/workers-types@4.20260305.0': - resolution: {integrity: sha512-sCgPFnQ03SVpC2OVW8wysONLZW/A8hlp9Mq2ckG/h1oId4kr9NawA6vUiOmOjCWRn2hIohejBYVQ+Vu20rCdKA==} + '@cfworker/json-schema@4.1.1': + resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} '@configvault.io/interfaces@1.0.17': resolution: {integrity: sha512-bEcCUR2VBDJsTin8HQh8Uw/mlYl2v8A3jMIaQ+MTB9Hrqd6CZL2dL7iJdWyFl/3EIX+LDxWFR+Oq7liIq7w+1Q==} - '@design.estate/dees-comms@1.0.27': - resolution: {integrity: sha512-GvzTUwkV442LD60T08iqSoqvhA02Mou5lFvvqBPc4yBUiU7cZISqBx+76xvMgMIEI9Dx9JfTl4/2nW8MoVAanw==} - '@design.estate/dees-comms@1.0.30': resolution: {integrity: sha512-KchMlklJfKAjQiJiR0xmofXtQ27VgZtBIxcMwPE9d+h3jJRv+lPZxzBQVOM0eyM0uS44S5vJMZ11IeV4uDXSHg==} - '@design.estate/dees-domtools@2.3.3': - resolution: {integrity: sha512-diIRuEWNRko508+eXDGVD9yxte+50VSuSsxBvWXUnE7ZPOLo9Y0oNyVi+R1Rb1AVJiXcGCORLdCtmCIcId40VA==} - '@design.estate/dees-domtools@2.3.8': resolution: {integrity: sha512-jUG9GMvPxKMwmRIZ9oLTL3c8hHvHuiwIk8cTrYnuZzGO/uJJ5/czk9o6LRXUuCOOG7TRLtqgOpK8EEQgaadfZA==} - '@design.estate/dees-element@2.1.2': - resolution: {integrity: sha512-ZiwvE411RJPHaYio26asQLnSmtJ6G1HRLYWbxW/HvCMbFtrcrXysP1y4PQ9KjdNfiQ4yoWPjTtwYMJjLE0NcbA==} - '@design.estate/dees-element@2.1.6': resolution: {integrity: sha512-7zyHkUjB8UEQgT9VbB2IJtc/yuPt9CI5JGel3b6BxA1kecY64ceIjFvof1uIkc0QP8q2fMLLY45r1c+9zDTjzg==} @@ -605,12 +459,12 @@ packages: '@gerrit0/mini-shiki@3.23.0': resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} - '@git.zone/tsbuild@4.1.2': - resolution: {integrity: sha512-S518ulKveO76pS6jrAELrnFaCw5nDAIZD9j6QzVmLYDiZuJmlRwPK3/2E8ugQ+b7ffpkwJ9MT685ooEGDcWQ4Q==} + '@git.zone/tsbuild@4.3.0': + resolution: {integrity: sha512-lb6eMQ8RQPaJqAB4kC++GIElOiTAH1pClmoND/q7XHuiMZxv6cXz2/U/sZt339mon2c40dXRG2tkLF2jRsP0pQ==} hasBin: true - '@git.zone/tsbundle@2.9.0': - resolution: {integrity: sha512-itXX/oiJjrRHUlIGTHUEqSwPuGwsG4Cq8kh7aqFOm8mYzJwtXYE1gBqLJTWZma6gI5n+xAk5qTxTyfikuPgWQA==} + '@git.zone/tsbundle@2.9.1': + resolution: {integrity: sha512-JW1xjSv7UjAm2lwAQPxhCWs14wqs+UIq5FqIGUPuI6rrDBWIMT2d0gpP6iP6TqXqgm6XpBlfU4rHcHheUXzXbQ==} hasBin: true '@git.zone/tsdoc@1.12.0': @@ -621,18 +475,18 @@ packages: resolution: {integrity: sha512-dkgaDBTzZJ53lAV72r7OW/W7l/KqpkncFuPojr11JO35OKAbjjDhZbAwPv4oGX9NplyXrhC5VJRPNX/orqNTHA==} hasBin: true + '@git.zone/tspublish@1.11.2': + resolution: {integrity: sha512-BcGap1OzXDgXpfQXMh9W17r/CkWNhPsJ3WzjG2wrGE+ePUJCJAm9w6+J8G5WdZZcZKPqTB07cp707LbSiksc5A==} + hasBin: true + '@git.zone/tsrun@2.0.1': resolution: {integrity: sha512-NEcnsjvlC1o3Z6SS3VhKCf6Ev+Sh4EAinmggslrIR/ppMrvjDbXNFXoyr3PB+GLeSAR0JRZ1fGvVYjpEzjBdIg==} hasBin: true - '@git.zone/tstest@3.1.8': - resolution: {integrity: sha512-nmiLGeOkKMkLDyIk5BUBLx5ExskFbKHKlPdrWCARPVFkU4cAAiuIyJWVfLwISoS0TO/zSInLqArPwIc76yvaNw==} + '@git.zone/tstest@3.3.1': + resolution: {integrity: sha512-KbwB/1hWw5Mg8Q5/A2ELVDYJcd5kFmCLhAwKIShaYRsMlDA1/S6f0YgLxhtt1eeqiV4PteRBsZIW6PVvEGy/Ug==} hasBin: true - '@happy-dom/global-registrator@15.11.7': - resolution: {integrity: sha512-mfOoUlIw8VBiJYPrl5RZfMzkXC/z7gbSpi2ecycrj/gRWLq2CMV+Q+0G+JPjeOmuNFgg0skEIzkVFzVYFP6URw==} - engines: {node: '>=18.0.0'} - '@img/sharp-darwin-arm64@0.34.3': resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1043,9 +897,6 @@ packages: '@push.rocks/early@4.0.4': resolution: {integrity: sha512-ak6/vqZ1PlFV08fSFQ6UwiBrr+K6IsfieZWWzT7eex1Ls6GvWEi8wZ3REFDPJq/qckNLWSgEy0EsqzRtltkaCA==} - '@push.rocks/isohash@2.0.1': - resolution: {integrity: sha512-UulhEui8O9Ei9fSqTldsB73TUmAFNqEBk82tHsJSLLpNK9gJZQE82iaSNsQUakoUQ2c9KueueMfwC3IoDaYRrQ==} - '@push.rocks/isounique@1.0.5': resolution: {integrity: sha512-Z0BVqZZOCif1THTbIKWMgg0wxCzt9CyBtBBqQJiZ+jJ0KlQFrQHNHrPt81/LXe/L4x0cxWsn0bpL6W5DNSvNLw==} @@ -1082,25 +933,21 @@ packages: '@push.rocks/smartarray@1.1.0': resolution: {integrity: sha512-b5YgBmUdglOJH8zeUf2ZWdPCoqySgwvkycRi2BhA9zVZHkpASh39Ej0q0fxFJetlUVyYqGfVoMVjbVrLFfFV7g==} + '@push.rocks/smartbrowser@2.0.10': + resolution: {integrity: sha512-cKOCkMXlofn984JrUpY01C9qV78GU7803QB6MUR8dzlGtlVPE4mvMSluz3SHJVmeWCS0nck01+vlizYjdqlNdw==} + '@push.rocks/smartbrowser@2.0.8': resolution: {integrity: sha512-0KWRZj3TuKo/sNwgPbiSE6WL+TMeR19t1JmXBZWh9n8iA2mpc4HhMrQAndEUdRCkx5ofSaHWojIRVFzGChj0Dg==} '@push.rocks/smartbucket@3.3.7': resolution: {integrity: sha512-RiOuEtwHJ+HFbV1nlZgh5VuMvP6PXElX6rVe7OSQsyNCBybRQa/d1qDic92+2Ejx852DGeHlyREELQCxd/a/7w==} - '@push.rocks/smartbucket@4.4.1': - resolution: {integrity: sha512-68GFLgJKW+LXvuN+yuV8O/FozGMecraoT+PkI5whdRPFe7N3u2iYIHWAUjvQvVU4ygpdJv0kih2JDf5k3PYycw==} - '@push.rocks/smartbuffer@3.0.5': resolution: {integrity: sha512-pWYF08Mn8s/KF/9nHRk7pZPzuMjmYVQay2c5gGexdayxn1W4eCSYYhWH73vR2JBfGeGq/izbRNuUuEaIEeTIKA==} '@push.rocks/smartcache@1.0.16': resolution: {integrity: sha512-UAXf74eDuH4/RebJhydIbHlYVR3ACYJjniEY/9ZePblu7bIPgwFZqLBE9g1lcKVogbH9yY62dk3rSpgBzenyfQ==} - '@push.rocks/smartchok@1.1.1': - resolution: {integrity: sha512-WmNigGmn1muBJMANVuJb4F8x3TzgYrnn6YZm6ixTsG+0WFbYevivEwp+J4S7npobLHsR7ynf+Ky8LxRYmsL50A==} - deprecated: This package has been renamed. Please use @push.rocks/smartwatch instead. - '@push.rocks/smartcli@4.0.20': resolution: {integrity: sha512-gCo4ItvsPj8WoVAJw/6vkuoGA5FtIoACux2ktcCeH0nrFe7/xGR6waJ1aZcYAi7QN4gi52TlsgwuKz7BzXqhmQ==} @@ -1134,12 +981,12 @@ packages: '@push.rocks/smartexit@1.0.23': resolution: {integrity: sha512-WmwKYcwbHBByoABhHHB+PAjr5475AtD/xBh1mDcqPrFsOOUOZq3BBUdpq25wI3ccu/SZB5IwaimiVzadls6HkA==} + '@push.rocks/smartexit@2.0.3': + resolution: {integrity: sha512-ZWpZ3Elorpv/rKtUcCUejUHG4BIE5B3QWysBAgb7lTcA7y0vGdFY32Y5/Q5tHpZM6PPxl/WTdUOYtSojQTq+pA==} + '@push.rocks/smartexpect@2.5.0': resolution: {integrity: sha512-yoyuCoQ3tTiAriuvF+/09fNbVfFnacudL2SwHSzPhX/ugaE7VTSWXQ9A34eKOWvil0MPyDcOY36fVZDxvrPd8A==} - '@push.rocks/smartfeed@1.4.0': - resolution: {integrity: sha512-bvj/3cGQI6TbbjbqrgC1uufcqprd/VthefuIsS8KHiHyCqYD5Z6RTjrbQY9WOCsmub/dcuMavfXQZqe9g2+OrQ==} - '@push.rocks/smartfile-interfaces@1.0.7': resolution: {integrity: sha512-MeOl/200UOvSO4Pgq/DVFiBVZpL9gjOBQM+4XYNjSxda8c6VBvchHAntaFLQUlO8U1ckNaP9i+nMO4O4/0ymyw==} @@ -1152,8 +999,8 @@ packages: '@push.rocks/smartfile@13.1.2': resolution: {integrity: sha512-DaEhwmnGEpX4coeeToaw4cZe3pNBhH7CY1iGr+d3pIXihozREvzzAR9/0i2r7bUXXL5+Lgy8YYIk5ZS+fwxMKA==} - '@push.rocks/smartfs@1.3.1': - resolution: {integrity: sha512-ZSduVS8tM+/erbyCTvRRvc9gLWwbpqN5xdIIkMr+gub7fowSeJb7tR2rnGwySa63DyimU0q2KTp79VV9YqGLeg==} + '@push.rocks/smartfs@1.5.0': + resolution: {integrity: sha512-QwMD44HgX3d9PPxUwR0uS+0PEMtesKvKbZR+s4pezL2er6oPneKJMLkO6TJPvJ38nug6Lmlk9Bu7UrwR2kS3Vw==} '@push.rocks/smartgit@3.3.1': resolution: {integrity: sha512-fnyF9Fr5y0ClSFiw/yMAWXlxvteWK2eXJ5i8/wsJcAyWqwTZ9KvMkVe33ofiZ/ZPuQ5JG9CXmoE0MST++5Xv6g==} @@ -1182,9 +1029,6 @@ packages: '@push.rocks/smartjson@6.0.0': resolution: {integrity: sha512-FYfJnmukt66WePn6xrVZ3BLmRQl9W82LcsICK3VU9sGW7kasig090jKXPm+yX8ibQcZAO/KyR/Q8tMIYZNxGew==} - '@push.rocks/smartlog-destination-devtools@1.0.12': - resolution: {integrity: sha512-zvsIkrqByc0JRaBgIyhh+PSz2SY/e/bmhZdUcr/OW6pudgAcqe2sso68EzrKux0w9OMl1P9ZnzF3FpCZPFWD/A==} - '@push.rocks/smartlog-destination-local@9.0.2': resolution: {integrity: sha512-htzIY+4+hU61Z2J4Oz+IHnAB3RGe+fpS0VKCKnAoppZqzMWnJ3UOgYIyr4djDBy2WtgpXV/16KdisKrOmwuuvw==} @@ -1197,9 +1041,6 @@ packages: '@push.rocks/smartlog@3.2.1': resolution: {integrity: sha512-x9/P59pfzY6HOGYmYrhqmoRl/pliTVx44g2Vbb8dIr/0zA39cAJHlPze1+UGncn37XKGmutK2iLSsJLEsexD0A==} - '@push.rocks/smartmanifest@2.0.2': - resolution: {integrity: sha512-QGc5C9vunjfUbYsPGz5bynV/mVmPHkrQDkWp8ZO8VJtK1GZe+njgbrNyxn2SUHR0IhSAbSXl1j4JvBqYf5eTVg==} - '@push.rocks/smartmarkdown@3.0.3': resolution: {integrity: sha512-9KhKZxDQKPk4P/2CYdVqJa5dpGfTA8w1cxqoVZL3e8RPA7EGxbdYEqMp0n2d9mth0btk/m0KHHV+G09LfCVeBw==} @@ -1212,6 +1053,9 @@ packages: '@push.rocks/smartmongo@2.2.0': resolution: {integrity: sha512-ovVCNoJ3D0aBuKtoKaQWWQKvBngaGJq9fAPQigzji1EHsS1XyGpXWCpe5nq/ptGvBROOcpqZcOFEGAcrnb+OjA==} + '@push.rocks/smartmongo@5.1.0': + resolution: {integrity: sha512-2tpKf8K+SMdLHOEpafgKPIN+ypWTLwHc33hCUDNMQ1KaL7vokkavA44+fHxQydOGPMtDi22tSMFeVMCcUSzs4w==} + '@push.rocks/smartnetwork@3.0.2': resolution: {integrity: sha512-s6CNGzQ1n/d/6cOKXbxeW6/tO//dr1woLqI01g7XhqTriw0nsm2G2kWaZh2J0VOguGNWBgQVCIpR0LjdRNWb3g==} @@ -1221,15 +1065,9 @@ packages: '@push.rocks/smartnpm@2.0.6': resolution: {integrity: sha512-7anKDOjX6gXWs1IAc+YWz9ZZ8gDsTwaLh+CxRnGHjAawOmK788NrrgVCg2Fb3qojrPnoxecc46F8Ivp1BT7Izw==} - '@push.rocks/smartntml@2.0.8': - resolution: {integrity: sha512-LIYeOQbmav2m2kZQz4pGS74xvWAm4YAGQnbPkofA2oas4RW9SGR1JTRpFd9pxGCOXd6djYdNGsZZ/xz+k/vRPQ==} - '@push.rocks/smartobject@1.0.12': resolution: {integrity: sha512-xSMiqXiZXXUOixT3QIPsOUKOWjL3YA/1h9/YTiCzqs5C0D3tyfTbojnfcp6YbKZoBzans2I5LghaDHsGid2DKQ==} - '@push.rocks/smartopen@2.0.0': - resolution: {integrity: sha512-eVT0GhtQ2drb95j/kktYst/Toh1zCwCqjTJFYtaYFUnnBnBUajPtBZDFnPQo01DN8JxoeCTo8jggq+PCvzcfww==} - '@push.rocks/smartpath@5.1.0': resolution: {integrity: sha512-pJ4UGATHV/C6Dw5DU0D3MJaPMASlKAgeS+Hl9dkhD2ceYArn86Ky3Z/g7LNj40Oz6cUe77/AP1chztmJZISrpw==} @@ -1275,8 +1113,11 @@ packages: '@push.rocks/smartrx@3.0.7': resolution: {integrity: sha512-qCWy0s3RLAgGSnaw/Gu0BNaJ59CsI6RK5OJDCCqxc7P2X/S755vuLtnAR5/0dEjdhCHXHX9ytPZx+o9g/CNiyA==} - '@push.rocks/smarts3@3.0.3': - resolution: {integrity: sha512-Y9nXMwurthJ9Z7yi0RwjhPFUC58aY8Mhia8kFo6Xj1tBM4LE8Oxg/ydejF7otHqQGr3QyqV5C4YrDEG17rUuzg==} + '@push.rocks/smarts3@5.3.0': + resolution: {integrity: sha512-6bo55ovCDEylbTxwPFZYDrZrz2babQEUmxHIexmVcP2j+6LYRHDbGYnWoyKdtqniqDFZ04pFkOoZ85hUzU5xCw==} + + '@push.rocks/smartserve@2.0.1': + resolution: {integrity: sha512-YQb2qexfCzCqOlLWBBXKMg6xG4zahCPAxomz/KEKAwHtW6wMTtuHKSTSkRTQ0vl9jssLMAmRz2OyafiL9XGJXQ==} '@push.rocks/smartshell@3.2.3': resolution: {integrity: sha512-BWA/DH1H9lG7Er23d4uYgirfYaya5dX4g/WpWm2la7mOzuL9o2FnPIhel52DQUKIh7ty3Ql305ApV8YaAb4+/w==} @@ -1284,18 +1125,12 @@ packages: '@push.rocks/smartshell@3.3.0': resolution: {integrity: sha512-m0w618H6YBs+vXGz1CgS4nPi5CUAnqRtckcS9/koGwfcIx1IpjqmiP47BoCTbdgcv0IPUxQVBG1IXTHPuZ8Z5g==} - '@push.rocks/smartsitemap@2.0.4': - resolution: {integrity: sha512-76dYWG/o/EjV4vYCK7ZKM35T9xgrI+oHEiiIE6E2MDaFIU6QnSfciTfbscH5nc0vxx8Ah+I0HPEJO94BM2S39w==} - - '@push.rocks/smartsocket@2.1.0': - resolution: {integrity: sha512-etOGyfiDFQz/1WJnD3jFL2N7ykujTjiudAz6qZTz82xE5oabKuKX+Cn8SdM9dOwzyWmBUKbUdll8QhovAXjn+g==} + '@push.rocks/smartshell@3.3.7': + resolution: {integrity: sha512-b3st2+FjHUVhZZRlXfw93+SQA0UMVlURqe55uVpWdjJX7jeGXTTeszuYygtiR99zC5iZ8WZhGDct3N2L1qc/qw==} '@push.rocks/smartspawn@3.0.3': resolution: {integrity: sha512-DyrGPV69wwOiJgKkyruk5hS3UEGZ99xFAqBE9O2nM8VXCRLbbty3xt1Ug5Z092ZZmJYaaGMSnMw3ijyZJFCT0Q==} - '@push.rocks/smartstate@2.0.25': - resolution: {integrity: sha512-gWmbDCx5esezHDQnD2nOClxeTiWtvU1wEdP0XbheCcXzaGEv0H8apRjQBksRZJd9FC3ezrJU00GLh0eH9rPyMQ==} - '@push.rocks/smartstate@2.1.0': resolution: {integrity: sha512-t8VAv3C7K/behPT7bKdxBg4bZD3dMgVZNMGhmMVmYq+Tgjes3XRWKhRqiDeNKXRIu0KbwBie3wKPTIrTPnyazg==} @@ -1311,6 +1146,9 @@ packages: '@push.rocks/smarttime@4.1.1': resolution: {integrity: sha512-Ha/3J/G+zfTl4ahpZgF6oUOZnUjpLhrBja0OQ2cloFxF9sKT8I1COaSqIfBGDtoK2Nly4UD4aTJ3JcJNOg/kgA==} + '@push.rocks/smarttime@4.2.3': + resolution: {integrity: sha512-8gMg8RUkrCG4p9NcEUZV7V6KpL24+jAMK02g7qyhfA6giz/JJWD0+8w8xjSR+G7qe16KVQ2y3RbvAL9TxmO36g==} + '@push.rocks/smartunique@3.0.9': resolution: {integrity: sha512-q6DYQgT7/dqdWi9HusvtWCjdsFzLFXY9LTtaZV6IYNJt6teZOonoygxTdNt9XLn6niBSbLYrHSKvJNTRH/uK+g==} @@ -1320,15 +1158,13 @@ packages: '@push.rocks/smartversion@3.0.5': resolution: {integrity: sha512-8MZSo1yqyaKxKq0Q5N188l4un++9GFWVbhCAX5mXJwewZHn97ujffTeL+eOQYpWFTEpUhaq1QhL4NhqObBCt1Q==} - '@push.rocks/smartxml@2.0.0': - resolution: {integrity: sha512-1d06zYJX4Zt8s5w5qFOUg2LAEz9ykrh9d6CQPK4WAgOBIefb1xzVEWHc7yoxicc2OkzNgC3IBCEg3s6BncZKWw==} + '@push.rocks/smartwatch@6.3.0': + resolution: {integrity: sha512-TeZ1PGBoBMpC4/CK8StIj5InEiFfKp7xWJSm3aYMjB/uaoeRP0vXqv1ORIC/TKYGJuEDuAXUsit8tZVjn0qT1Q==} + engines: {node: '>=20.0.0'} '@push.rocks/smartyaml@2.0.5': resolution: {integrity: sha512-tBcf+HaOIfeEsTMwgUZDtZERCxXQyRsWO8Ar5DjBdiSRchbhVGZQEBzXswMS0W5ZoRenjgPK+4tPW3JQGRTfbg==} - '@push.rocks/smartyaml@3.0.4': - resolution: {integrity: sha512-1JRt+hnoc2zHw3AW+vXKlCdSVwqOmY/01fu+2HBviS0UDjoZCa+/rp6E3GaQb5lEEafKi8ENbffAfjXXp3N2xQ==} - '@push.rocks/taskbuffer@3.1.7': resolution: {integrity: sha512-QktGVJPucqQmW/QNGnscf4FAigT1H7JWKFGFdRuDEaOHKFh9qN+PXG3QY7DtZ4jfXdGLxPN4yAufDuPSAJYFnw==} @@ -1646,18 +1482,10 @@ packages: resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader-native@4.2.2': - resolution: {integrity: sha512-QzzYIlf4yg0w5TQaC9VId3B3ugSk1MI/wb7tgcHtd7CBV9gNRKZrhc2EPSxSZuDy10zUZ0lomNMgkc6/VVe8xg==} - engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader@5.0.0': resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader@5.2.1': - resolution: {integrity: sha512-y5d4xRiD6TzeP5BWlb+Ig/VFqF+t9oANNhGeMqyzU7obw7FYgTgVi50i5JqBTeKp+TABeDIeeXFZdz65RipNtA==} - engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.0.1': resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} engines: {node: '>=18.0.0'} @@ -1686,42 +1514,22 @@ packages: resolution: {integrity: sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.2.10': - resolution: {integrity: sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==} - engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.0.1': resolution: {integrity: sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.2.10': - resolution: {integrity: sha512-0xupsu9yj9oDVuQ50YCTS9nuSYhGlrwqdaKQel9y2Fz7LU9fNErVlw9N0o4pm4qqvWEGbSTI4HKc6XJfB30MVw==} - engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.0.1': resolution: {integrity: sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.3.10': - resolution: {integrity: sha512-8kn6sinrduk0yaYHMJDsNuiFpXwQwibR7n/4CDUqn4UgaG+SeBHu5jHGFdU9BLFAM7Q4/gvr9RYxBHz9/jKrhA==} - engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.0.1': resolution: {integrity: sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.2.10': - resolution: {integrity: sha512-uUrxPGgIffnYfvIOUmBM5i+USdEBRTdh7mLPttjphgtooxQ8CtdO1p6K5+Q4BBAZvKlvtJ9jWyrWpBJYzBKsyQ==} - engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.0.1': resolution: {integrity: sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.2.10': - resolution: {integrity: sha512-aArqzOEvcs2dK+xQVCgLbpJQGfZihw8SD4ymhkwNTtwKbnrzdhJsFDKuMQnam2kF69WzgJYOU5eJlCx+CA32bw==} - engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.0.1': resolution: {integrity: sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==} engines: {node: '>=18.0.0'} @@ -1734,10 +1542,6 @@ packages: resolution: {integrity: sha512-rkFIrQOKZGS6i1D3gKJ8skJ0RlXqDvb1IyAphksaFOMzkn3v3I1eJ8m7OkLj0jf1McP63rcCEoLlkAn/HjcTRw==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.2.11': - resolution: {integrity: sha512-DrcAx3PM6AEbWZxsKl6CWAGnVwiz28Wp1ZhNu+Hi4uI/6C1PIZBIaPM2VoqBDAsOWbM6ZVzOEQMxFLLdmb4eBQ==} - engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.0.1': resolution: {integrity: sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==} engines: {node: '>=18.0.0'} @@ -1750,10 +1554,6 @@ packages: resolution: {integrity: sha512-U1rAE1fxmReCIr6D2o/4ROqAQX+GffZpyMt3d7njtGDr2pUNmAKRWa49gsNVhCh2vVAuf3wXzWwNr2YN8PAXIw==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.2.10': - resolution: {integrity: sha512-w78xsYrOlwXKwN5tv1GnKIRbHb1HygSpeZMP6xDxCPGf1U/xDHjCpJu64c5T35UKyEPwa0bPeIcvU69VY3khUA==} - engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@4.0.1': resolution: {integrity: sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==} engines: {node: '>=18.0.0'} @@ -1778,10 +1578,6 @@ packages: resolution: {integrity: sha512-HLZ647L27APi6zXkZlzSFZIjpo8po45YiyjMGJZM3gyDY8n7dPGdmxIIljLm4gPt/7rRvutLTTkYJpZVfG5r+A==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.2.10': - resolution: {integrity: sha512-Op+Dh6dPLWTjWITChFayDllIaCXRofOed8ecpggTC5fkh8yXes0vAEX7gRUfjGK+TlyxoCAA05gHbZW/zB9JwQ==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.0.1': resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} engines: {node: '>=18.0.0'} @@ -1890,10 +1686,6 @@ packages: resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.3.10': - resolution: {integrity: sha512-Wab3wW8468WqTKIxI+aZe3JYO52/RYT/8sDOdzkUhjnLakLe9qoQqIcfih/qxcF4qWEFoWBszY0mj5uxffaVXA==} - engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.1.6': resolution: {integrity: sha512-UYDolNg6h2O0L+cJjtgSyKKvEKCOa/8FHYJnBobyeoeWDmNpXjwOAtw16ezyeu1ETuuLEOZbrynK0ZY1Lx9Jbw==} engines: {node: '>=18.0.0'} @@ -2042,17 +1834,10 @@ packages: resolution: {integrity: sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.2.10': - resolution: {integrity: sha512-4eTWph/Lkg1wZEDAyObwme0kmhEb7J/JjibY2znJdrYRgKbKqB7YoEhhJVJ4R1g/SYih4zuwX7LpJaM8RsnTVg==} - engines: {node: '>=18.0.0'} - '@smithy/uuid@1.1.1': resolution: {integrity: sha512-dSfDCeihDmZlV2oyr0yWPTUfh07suS+R5OB+FZGiv/hHyK3hrFBW5rR1UYjfa57vBsrP9lciFkRPzebaV1Qujw==} engines: {node: '>=18.0.0'} - '@socket.io/component-emitter@3.1.2': - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -2108,9 +1893,6 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/cors@2.8.19': - resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} - '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -2198,8 +1980,8 @@ packages: '@types/node@22.17.0': resolution: {integrity: sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==} - '@types/node@25.3.2': - resolution: {integrity: sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==} + '@types/node@25.3.5': + resolution: {integrity: sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==} '@types/ping@0.4.4': resolution: {integrity: sha512-ifvo6w2f5eJYlXm+HiVx67iJe8WZp87sfa683nlqED5Vnt9Z93onkokNoWqOG21EaE8fMxyKPobE+mkPEyxsdw==} @@ -2406,10 +2188,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - base64id@2.0.0: - resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} - engines: {node: ^4.5.0 || >= 5.9} - basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} @@ -2421,10 +2199,6 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} - engines: {node: '>=18'} - body-parser@2.2.2: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} @@ -2442,9 +2216,6 @@ packages: resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} engines: {node: 18 || 20 || >=22} - broadcast-channel@7.1.0: - resolution: {integrity: sha512-InJljddsYWbEL8LBnopnCg+qMQp9KcowvYWOt4YWrjD5HmxzDYKdVbDS1w/ji5rFZdRD58V5UxJPtBdpEbEJYw==} - broadcast-channel@7.3.0: resolution: {integrity: sha512-UHPhLBQKfQ8OmMFMpmPfO5dRakyA1vsfiDGWTYNvChYol65tbuhivPEGgZZiuetorvExdvxaWiBy/ym1Ty08yA==} @@ -2518,9 +2289,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} chromium-bidi@2.0.0: resolution: {integrity: sha512-8VmyVj0ewSY4pstZV0Y3rCUUwpomam8uWgHZf1XavRxJEP4vU9/dcpNuoyB+u4AQxPo96CASXz5CHPvdH+dSeQ==} @@ -2610,10 +2381,6 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -2628,6 +2395,10 @@ packages: engines: {node: '>=0.8'} hasBin: true + croner@10.0.1: + resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==} + engines: {node: '>=18.0'} + croner@4.4.1: resolution: {integrity: sha512-aqVeeIPCf5/NZFlz4mN4MLEOs9xf4ODCmHQDs+577JFj8mK3RkKJz77h7+Rn94AijUqKdFNOUHM+v88d8p02UQ==} @@ -2657,6 +2428,9 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2665,15 +2439,6 @@ packages: supports-color: optional: true - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -2720,10 +2485,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -2800,17 +2561,6 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - engine.io-client@6.6.3: - resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} - - engine.io-parser@5.2.3: - resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} - engines: {node: '>=10.0.0'} - - engine.io@6.6.4: - resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} - engines: {node: '>=10.2.0'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2902,10 +2652,6 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} - express-force-ssl@0.3.2: - resolution: {integrity: sha1-AbK0mK5v0uQRUrIrV6Phc3c69n4=} - engines: {node: '>=0.2.2'} - express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -2930,10 +2676,6 @@ packages: resolution: {integrity: sha512-cB507r5T3D55DfclY01GLkninZLfU7HXV/mhVRTnTRm5k2u+fY7Fof2dBkr80p5t7G7dlA/G5dI87QiMdPpMCQ==} engines: {node: '>=18'} - fake-indexeddb@6.0.1: - resolution: {integrity: sha512-He2AjQGHe46svIFq5+L2Nx/eHDTI1oKgoevBP+TthnjymXiKkeJQ3+ITeWey99Y5+2OaPFbI1qEsx/5RsGtWnQ==} - engines: {node: '>=18'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2943,25 +2685,10 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-xml-builder@1.0.0: - resolution: {integrity: sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==} - fast-xml-parser@4.4.1: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true - fast-xml-parser@4.5.3: - resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} - hasBin: true - - fast-xml-parser@5.3.6: - resolution: {integrity: sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==} - hasBin: true - - fast-xml-parser@5.4.1: - resolution: {integrity: sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==} - hasBin: true - fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -3138,10 +2865,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - happy-dom@15.11.7: - resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} - engines: {node: '>=18.0.0'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3216,10 +2939,6 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - iconv-lite@0.7.2: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} @@ -3277,11 +2996,6 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -3325,10 +3039,6 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3339,6 +3049,10 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + isomorphic-git@1.37.2: resolution: {integrity: sha512-HCQBBKmXIMPdHgYGstSBNp6MNmVcMQBbUqJF8xfywFmlpNseO4KKex59YlXqNxhRxmv3fUZwvNWvMyOdc1VvhA==} engines: {node: '>=14.17'} @@ -3395,20 +3109,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - lenis@1.3.8: - resolution: {integrity: sha512-LVeoMs6jZE1eu3gPsexndm+vk01pLFeq7P00vjIpI17saD52IYu8nPA4gX43elz8tp/TTCXcX6Em1MEjDl9NTw==} - peerDependencies: - '@nuxt/kit': '>=3.0.0' - react: '>=17.0.0' - vue: '>=3.0.0' - peerDependenciesMeta: - '@nuxt/kit': - optional: true - react: - optional: true - vue: - optional: true - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3421,9 +3121,6 @@ packages: lit-html@3.3.1: resolution: {integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==} - lit@3.3.1: - resolution: {integrity: sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==} - lit@3.3.2: resolution: {integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==} @@ -3431,42 +3128,9 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - lodash._baseassign@3.2.0: - resolution: {integrity: sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=} - - lodash._basecopy@3.0.1: - resolution: {integrity: sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=} - - lodash._bindcallback@3.0.1: - resolution: {integrity: sha1-5THCdkTPi1epnhftlbNcdIeJOS4=} - - lodash._createassigner@3.1.1: - resolution: {integrity: sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=} - - lodash._getnative@3.9.1: - resolution: {integrity: sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=} - - lodash._isiterateecall@3.0.9: - resolution: {integrity: sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=} - - lodash.assign@3.2.0: - resolution: {integrity: sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=} - lodash.clonedeep@4.5.0: resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} - lodash.isarguments@3.1.0: - resolution: {integrity: sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=} - - lodash.isarray@3.0.4: - resolution: {integrity: sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=} - - lodash.keys@3.1.2: - resolution: {integrity: sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=} - - lodash.restparam@3.6.1: - resolution: {integrity: sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -3840,10 +3504,6 @@ packages: resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} engines: {node: '>=14.16'} - object-assign@4.1.1: - resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} - engines: {node: '>=0.10.0'} - object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -3852,10 +3512,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - oblivious-set@1.4.0: - resolution: {integrity: sha512-szyd0ou0T8nsAqHtprRcP3WidfsN1TnAR5yWXf2mFCEr5ek3LEOkT6EZ/92Xfs74HIdyhG5WkGxIssMU0jBaeg==} - engines: {node: '>=16'} - oblivious-set@2.0.0: resolution: {integrity: sha512-QOUH5Xrsced9fKXaQTjWoDGKeS/Or7E2jB0FN63N4mkAO4qJdB7WR7e6qWAOHM5nk25FJ8TGjhP7DH4l6vFVLg==} engines: {node: '>=16'} @@ -3873,10 +3529,6 @@ packages: once@1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - openai@5.23.2: resolution: {integrity: sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==} hasBin: true @@ -4078,6 +3730,10 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + process@0.11.10: resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} engines: {node: '>= 0.6.0'} @@ -4165,10 +3821,6 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} - raw-body@3.0.2: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} @@ -4189,9 +3841,9 @@ packages: resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} engines: {node: '>=8'} - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -4371,21 +4023,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socket.io-adapter@2.5.5: - resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} - - socket.io-client@4.8.1: - resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} - engines: {node: '>=10.0.0'} - - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} - - socket.io@4.8.1: - resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} - engines: {node: '>=10.2.0'} - socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} @@ -4458,9 +4095,6 @@ packages: strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} - strnum@2.1.2: - resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} - strtok3@10.3.4: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} @@ -4699,10 +4333,6 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} @@ -4725,6 +4355,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -4740,18 +4375,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - 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.1: resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} @@ -4776,6 +4399,18 @@ packages: utf-8-validate: optional: true + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + 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 + xml-parse-from-string@1.0.1: resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} @@ -4787,19 +4422,10 @@ packages: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} - xmlhttprequest-ssl@2.1.2: - resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} - engines: {node: '>=0.4.0'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} @@ -4873,71 +4499,6 @@ snapshots: '@push.rocks/webrequest': 4.0.2 '@push.rocks/webstream': 1.0.10 - '@api.global/typedserver@3.0.80': - dependencies: - '@api.global/typedrequest': 3.1.10 - '@api.global/typedrequest-interfaces': 3.0.19 - '@api.global/typedsocket': 3.0.1 - '@cloudflare/workers-types': 4.20260305.0 - '@design.estate/dees-comms': 1.0.27 - '@push.rocks/lik': 6.2.2 - '@push.rocks/smartchok': 1.1.1 - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartenv': 5.0.13 - '@push.rocks/smartfeed': 1.4.0 - '@push.rocks/smartfile': 11.2.7 - '@push.rocks/smartjson': 5.2.0 - '@push.rocks/smartlog': 3.2.1 - '@push.rocks/smartlog-destination-devtools': 1.0.12 - '@push.rocks/smartlog-interfaces': 3.0.2 - '@push.rocks/smartmanifest': 2.0.2 - '@push.rocks/smartmatch': 2.0.0 - '@push.rocks/smartmime': 2.0.4 - '@push.rocks/smartntml': 2.0.8 - '@push.rocks/smartopen': 2.0.0 - '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrequest': 4.2.1 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartsitemap': 2.0.4 - '@push.rocks/smartstream': 3.2.5 - '@push.rocks/smarttime': 4.1.1 - '@push.rocks/taskbuffer': 3.5.0 - '@push.rocks/webrequest': 3.0.37 - '@push.rocks/webstore': 2.0.20 - '@tsclass/tsclass': 9.3.0 - '@types/express': 5.0.6 - body-parser: 2.2.0 - cors: 2.8.5 - express: 5.2.1 - express-force-ssl: 0.3.2 - lit: 3.3.1 - transitivePeerDependencies: - - '@nuxt/kit' - - bufferutil - - react - - supports-color - - utf-8-validate - - vue - - '@api.global/typedsocket@3.0.1': - dependencies: - '@api.global/typedrequest': 3.1.10 - '@api.global/typedrequest-interfaces': 3.0.19 - '@push.rocks/isohash': 2.0.1 - '@push.rocks/smartjson': 5.2.0 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartsocket': 2.1.0 - '@push.rocks/smartstring': 4.0.15 - '@push.rocks/smarturl': 3.1.0 - transitivePeerDependencies: - - '@nuxt/kit' - - bufferutil - - react - - supports-color - - utf-8-validate - - vue - '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -5000,70 +4561,11 @@ snapshots: '@aws-sdk/util-endpoints': 3.743.0 '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.750.0 - '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.5 - '@smithy/fetch-http-handler': 5.0.1 - '@smithy/hash-node': 4.0.1 - '@smithy/invalid-dependency': 4.0.1 - '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.6 - '@smithy/middleware-retry': 4.0.7 - '@smithy/middleware-serde': 4.0.2 - '@smithy/middleware-stack': 4.0.1 - '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.3 - '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.6 - '@smithy/types': 4.1.0 - '@smithy/url-parser': 4.0.1 - '@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.7 - '@smithy/util-defaults-mode-node': 4.0.7 - '@smithy/util-endpoints': 3.0.1 - '@smithy/util-middleware': 4.0.1 - '@smithy/util-retry': 4.0.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - optional: true - - '@aws-sdk/client-s3@3.1000.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.973.15 - '@aws-sdk/credential-provider-node': 3.972.14 - '@aws-sdk/middleware-bucket-endpoint': 3.972.6 - '@aws-sdk/middleware-expect-continue': 3.972.6 - '@aws-sdk/middleware-flexible-checksums': 3.973.1 - '@aws-sdk/middleware-host-header': 3.972.6 - '@aws-sdk/middleware-location-constraint': 3.972.6 - '@aws-sdk/middleware-logger': 3.972.6 - '@aws-sdk/middleware-recursion-detection': 3.972.6 - '@aws-sdk/middleware-sdk-s3': 3.972.15 - '@aws-sdk/middleware-ssec': 3.972.6 - '@aws-sdk/middleware-user-agent': 3.972.15 - '@aws-sdk/region-config-resolver': 3.972.6 - '@aws-sdk/signature-v4-multi-region': 3.996.3 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@aws-sdk/util-user-agent-browser': 3.972.6 - '@aws-sdk/util-user-agent-node': 3.973.0 '@smithy/config-resolver': 4.4.9 '@smithy/core': 3.23.6 - '@smithy/eventstream-serde-browser': 4.2.10 - '@smithy/eventstream-serde-config-resolver': 4.3.10 - '@smithy/eventstream-serde-node': 4.2.10 '@smithy/fetch-http-handler': 5.3.11 - '@smithy/hash-blob-browser': 4.2.11 '@smithy/hash-node': 4.2.10 - '@smithy/hash-stream-node': 4.2.10 '@smithy/invalid-dependency': 4.2.10 - '@smithy/md5-js': 4.2.10 '@smithy/middleware-content-length': 4.2.10 '@smithy/middleware-endpoint': 4.4.20 '@smithy/middleware-retry': 4.4.37 @@ -5083,12 +4585,11 @@ snapshots: '@smithy/util-endpoints': 3.3.1 '@smithy/util-middleware': 4.2.10 '@smithy/util-retry': 4.2.10 - '@smithy/util-stream': 4.5.15 '@smithy/util-utf8': 4.2.1 - '@smithy/util-waiter': 4.2.10 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + optional: true '@aws-sdk/client-s3@3.750.0': dependencies: @@ -5208,33 +4709,12 @@ snapshots: fast-xml-parser: 4.4.1 tslib: 2.8.1 - '@aws-sdk/core@3.973.15': - dependencies: - '@aws-sdk/types': 3.973.4 - '@aws-sdk/xml-builder': 3.972.8 - '@smithy/core': 3.23.6 - '@smithy/node-config-provider': 4.3.10 - '@smithy/property-provider': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/signature-v4': 5.3.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - - '@aws-sdk/crc64-nvme@3.972.3': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/credential-provider-cognito-identity@3.750.0': dependencies: '@aws-sdk/client-cognito-identity': 3.750.0 '@aws-sdk/types': 3.734.0 - '@smithy/property-provider': 4.0.1 - '@smithy/types': 4.1.0 + '@smithy/property-provider': 4.2.10 + '@smithy/types': 4.13.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -5248,14 +4728,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.13': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.750.0': dependencies: '@aws-sdk/core': 3.750.0 @@ -5269,19 +4741,6 @@ snapshots: '@smithy/util-stream': 4.1.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.15': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/types': 3.973.4 - '@smithy/fetch-http-handler': 5.3.11 - '@smithy/node-http-handler': 4.4.12 - '@smithy/property-provider': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - '@smithy/util-stream': 4.5.15 - tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.750.0': dependencies: '@aws-sdk/core': 3.750.0 @@ -5300,38 +4759,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-ini@3.972.13': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/credential-provider-env': 3.972.13 - '@aws-sdk/credential-provider-http': 3.972.15 - '@aws-sdk/credential-provider-login': 3.972.13 - '@aws-sdk/credential-provider-process': 3.972.13 - '@aws-sdk/credential-provider-sso': 3.972.13 - '@aws-sdk/credential-provider-web-identity': 3.972.13 - '@aws-sdk/nested-clients': 3.996.3 - '@aws-sdk/types': 3.973.4 - '@smithy/credential-provider-imds': 4.2.10 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-login@3.972.13': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/nested-clients': 3.996.3 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-node@3.750.0': dependencies: '@aws-sdk/credential-provider-env': 3.750.0 @@ -5349,23 +4776,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.972.14': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.13 - '@aws-sdk/credential-provider-http': 3.972.15 - '@aws-sdk/credential-provider-ini': 3.972.13 - '@aws-sdk/credential-provider-process': 3.972.13 - '@aws-sdk/credential-provider-sso': 3.972.13 - '@aws-sdk/credential-provider-web-identity': 3.972.13 - '@aws-sdk/types': 3.973.4 - '@smithy/credential-provider-imds': 4.2.10 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-process@3.750.0': dependencies: '@aws-sdk/core': 3.750.0 @@ -5375,15 +4785,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.13': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.750.0': dependencies: '@aws-sdk/client-sso': 3.750.0 @@ -5397,19 +4798,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-sso@3.972.13': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/nested-clients': 3.996.3 - '@aws-sdk/token-providers': 3.999.0 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-web-identity@3.750.0': dependencies: '@aws-sdk/core': 3.750.0 @@ -5421,18 +4809,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.972.13': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/nested-clients': 3.996.3 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-providers@3.750.0': dependencies: '@aws-sdk/client-cognito-identity': 3.750.0 @@ -5447,10 +4823,10 @@ snapshots: '@aws-sdk/credential-provider-web-identity': 3.750.0 '@aws-sdk/nested-clients': 3.750.0 '@aws-sdk/types': 3.734.0 - '@smithy/core': 3.1.5 - '@smithy/credential-provider-imds': 4.0.1 - '@smithy/property-provider': 4.0.1 - '@smithy/types': 4.1.0 + '@smithy/core': 3.23.6 + '@smithy/credential-provider-imds': 4.2.10 + '@smithy/property-provider': 4.2.10 + '@smithy/types': 4.13.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -5466,16 +4842,6 @@ snapshots: '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-config-provider': 4.2.1 - tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 @@ -5483,13 +4849,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.750.0': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -5506,23 +4865,6 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.973.1': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.973.15 - '@aws-sdk/crc64-nvme': 3.972.3 - '@aws-sdk/types': 3.973.4 - '@smithy/is-array-buffer': 4.2.1 - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-stream': 4.5.15 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 @@ -5530,37 +4872,18 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 @@ -5568,14 +4891,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@aws/lambda-invoke-store': 0.2.3 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.750.0': dependencies: '@aws-sdk/core': 3.750.0 @@ -5593,35 +4908,12 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.15': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/core': 3.23.6 - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/signature-v4': 5.3.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - '@smithy/util-config-provider': 4.2.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-stream': 4.5.15 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.750.0': dependencies: '@aws-sdk/core': 3.750.0 @@ -5632,16 +4924,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.972.15': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@smithy/core': 3.23.6 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/nested-clients@3.750.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -5685,49 +4967,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/nested-clients@3.996.3': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.15 - '@aws-sdk/middleware-host-header': 3.972.6 - '@aws-sdk/middleware-logger': 3.972.6 - '@aws-sdk/middleware-recursion-detection': 3.972.6 - '@aws-sdk/middleware-user-agent': 3.972.15 - '@aws-sdk/region-config-resolver': 3.972.6 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@aws-sdk/util-user-agent-browser': 3.972.6 - '@aws-sdk/util-user-agent-node': 3.973.0 - '@smithy/config-resolver': 4.4.9 - '@smithy/core': 3.23.6 - '@smithy/fetch-http-handler': 5.3.11 - '@smithy/hash-node': 4.2.10 - '@smithy/invalid-dependency': 4.2.10 - '@smithy/middleware-content-length': 4.2.10 - '@smithy/middleware-endpoint': 4.4.20 - '@smithy/middleware-retry': 4.4.37 - '@smithy/middleware-serde': 4.2.11 - '@smithy/middleware-stack': 4.2.10 - '@smithy/node-config-provider': 4.3.10 - '@smithy/node-http-handler': 4.4.12 - '@smithy/protocol-http': 5.3.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-base64': 4.3.1 - '@smithy/util-body-length-browser': 4.2.1 - '@smithy/util-body-length-node': 4.2.2 - '@smithy/util-defaults-mode-browser': 4.3.36 - '@smithy/util-defaults-mode-node': 4.2.39 - '@smithy/util-endpoints': 3.3.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-retry': 4.2.10 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/region-config-resolver@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 @@ -5737,14 +4976,6 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@aws-sdk/region-config-resolver@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/config-resolver': 4.4.9 - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.750.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.750.0 @@ -5754,15 +4985,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.3': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.15 - '@aws-sdk/types': 3.973.4 - '@smithy/protocol-http': 5.3.10 - '@smithy/signature-v4': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/token-providers@3.750.0': dependencies: '@aws-sdk/nested-clients': 3.750.0 @@ -5774,18 +4996,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/token-providers@3.999.0': - dependencies: - '@aws-sdk/core': 3.973.15 - '@aws-sdk/nested-clients': 3.996.3 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/types@3.734.0': dependencies: '@smithy/types': 4.1.0 @@ -5800,10 +5010,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.972.2': - dependencies: - tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.743.0': dependencies: '@aws-sdk/types': 3.734.0 @@ -5811,14 +5017,6 @@ snapshots: '@smithy/util-endpoints': 3.0.1 tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.996.3': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-endpoints': 3.3.1 - tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.723.0': dependencies: tslib: 2.8.1 @@ -5830,13 +5028,6 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.972.6': - dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 - bowser: 2.11.0 - tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.750.0': dependencies: '@aws-sdk/middleware-user-agent': 3.750.0 @@ -5845,27 +5036,11 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.973.0': - dependencies: - '@aws-sdk/middleware-user-agent': 3.972.15 - '@aws-sdk/types': 3.973.4 - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@aws-sdk/xml-builder@3.734.0': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.8': - dependencies: - '@smithy/types': 4.13.0 - fast-xml-parser: 5.3.6 - tslib: 2.8.1 - - '@aws/lambda-invoke-store@0.2.3': {} - '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -5882,19 +5057,12 @@ snapshots: '@borewit/text-codec@0.2.1': {} - '@cloudflare/workers-types@4.20260305.0': {} + '@cfworker/json-schema@4.1.1': {} '@configvault.io/interfaces@1.0.17': dependencies: '@api.global/typedrequest-interfaces': 3.0.19 - '@design.estate/dees-comms@1.0.27': - dependencies: - '@api.global/typedrequest': 3.1.10 - '@api.global/typedrequest-interfaces': 3.0.19 - '@push.rocks/smartdelay': 3.0.5 - broadcast-channel: 7.1.0 - '@design.estate/dees-comms@1.0.30': dependencies: '@api.global/typedrequest': 3.2.6 @@ -5902,32 +5070,6 @@ snapshots: '@push.rocks/smartdelay': 3.0.5 broadcast-channel: 7.3.0 - '@design.estate/dees-domtools@2.3.3': - dependencies: - '@api.global/typedrequest': 3.1.10 - '@design.estate/dees-comms': 1.0.27 - '@push.rocks/lik': 6.2.2 - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartjson': 5.2.0 - '@push.rocks/smartmarkdown': 3.0.3 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrouter': 1.3.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartstate': 2.0.25 - '@push.rocks/smartstring': 4.0.15 - '@push.rocks/smarturl': 3.1.0 - '@push.rocks/webrequest': 3.0.37 - '@push.rocks/websetup': 3.0.19 - '@push.rocks/webstore': 2.0.20 - lenis: 1.3.8 - lit: 3.3.1 - sweet-scroll: 4.0.0 - transitivePeerDependencies: - - '@nuxt/kit' - - react - - supports-color - - vue - '@design.estate/dees-domtools@2.3.8': dependencies: '@api.global/typedrequest': 3.2.6 @@ -5954,18 +5096,6 @@ snapshots: - supports-color - vue - '@design.estate/dees-element@2.1.2': - dependencies: - '@design.estate/dees-domtools': 2.3.3 - '@push.rocks/isounique': 1.0.5 - '@push.rocks/smartrx': 3.0.10 - lit: 3.3.1 - transitivePeerDependencies: - - '@nuxt/kit' - - react - - supports-color - - vue - '@design.estate/dees-element@2.1.6': dependencies: '@design.estate/dees-domtools': 2.3.8 @@ -6085,14 +5215,14 @@ snapshots: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@git.zone/tsbuild@4.1.2': + '@git.zone/tsbuild@4.3.0': dependencies: - '@git.zone/tspublish': 1.11.0 + '@git.zone/tspublish': 1.11.2 '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 13.1.2 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 @@ -6101,13 +5231,13 @@ snapshots: - aws-crt - supports-color - '@git.zone/tsbundle@2.9.0': + '@git.zone/tsbundle@2.9.1': dependencies: '@push.rocks/early': 4.0.4 '@push.rocks/npmextra': 5.3.3 '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartinteract': 2.0.16 '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartlog-destination-local': 9.0.2 @@ -6124,18 +5254,18 @@ snapshots: - '@swc/helpers' - supports-color - '@git.zone/tsdoc@1.12.0(ws@8.18.3)(zod@3.25.76)': + '@git.zone/tsdoc@1.12.0(ws@8.19.0)(zod@3.25.76)': dependencies: '@git.zone/tspublish': 1.11.0 '@push.rocks/early': 4.0.4 '@push.rocks/npmextra': 5.3.3 '@push.rocks/qenv': 6.1.3 - '@push.rocks/smartagent': 1.2.5(typescript@5.9.3)(ws@8.18.3)(zod@3.25.76) - '@push.rocks/smartai': 0.8.0(typescript@5.9.3)(ws@8.18.3)(zod@3.25.76) + '@push.rocks/smartagent': 1.2.5(typescript@5.9.3)(ws@8.19.0)(zod@3.25.76) + '@push.rocks/smartai': 0.8.0(typescript@5.9.3)(ws@8.19.0)(zod@3.25.76) '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 13.1.2 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartgit': 3.3.1 '@push.rocks/smartinteract': 2.0.16 '@push.rocks/smartlog': 3.2.1 @@ -6161,7 +5291,7 @@ snapshots: '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 13.1.2 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartnpm': 2.0.6 '@push.rocks/smartpath': 6.0.0 @@ -6171,39 +5301,57 @@ snapshots: - aws-crt - supports-color + '@git.zone/tspublish@1.11.2': + dependencies: + '@push.rocks/consolecolor': 2.0.3 + '@push.rocks/npmextra': 5.3.3 + '@push.rocks/smartcli': 4.0.20 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartfile': 13.1.2 + '@push.rocks/smartfs': 1.5.0 + '@push.rocks/smartlog': 3.2.1 + '@push.rocks/smartnpm': 2.0.6 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrequest': 5.0.1 + '@push.rocks/smartshell': 3.3.7 + transitivePeerDependencies: + - aws-crt + - supports-color + '@git.zone/tsrun@2.0.1': dependencies: '@push.rocks/smartfile': 13.1.2 '@push.rocks/smartshell': 3.2.3 tsx: 4.21.0 - '@git.zone/tstest@3.1.8(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4)(typescript@5.9.3)': + '@git.zone/tstest@3.3.1(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4)(typescript@5.9.3)': dependencies: - '@api.global/typedserver': 3.0.80 - '@git.zone/tsbundle': 2.9.0 + '@git.zone/tsbundle': 2.9.1 '@git.zone/tsrun': 2.0.1 '@push.rocks/consolecolor': 2.0.3 '@push.rocks/qenv': 6.1.3 - '@push.rocks/smartbrowser': 2.0.8(typescript@5.9.3) - '@push.rocks/smartchok': 1.1.1 + '@push.rocks/smartbrowser': 2.0.10(typescript@5.9.3) '@push.rocks/smartcrypto': 2.0.4 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartexpect': 2.5.0 - '@push.rocks/smartfile': 11.2.7 - '@push.rocks/smartjson': 5.2.0 + '@push.rocks/smartfile': 13.1.2 + '@push.rocks/smartfs': 1.5.0 + '@push.rocks/smartjson': 6.0.0 '@push.rocks/smartlog': 3.2.1 - '@push.rocks/smartmongo': 2.2.0(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) + '@push.rocks/smartmongo': 5.1.0(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) '@push.rocks/smartnetwork': 4.4.0 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 5.0.1 - '@push.rocks/smarts3': 3.0.3 - '@push.rocks/smartshell': 3.3.0 - '@push.rocks/smarttime': 4.1.1 + '@push.rocks/smarts3': 5.3.0 + '@push.rocks/smartserve': 2.0.1 + '@push.rocks/smartshell': 3.3.7 + '@push.rocks/smarttime': 4.2.3 + '@push.rocks/smartwatch': 6.3.0 '@types/ws': 8.18.1 figures: 6.1.0 - ws: 8.18.3 + ws: 8.19.0 transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -6223,10 +5371,6 @@ snapshots: - utf-8-validate - vue - '@happy-dom/global-registrator@15.11.7': - dependencies: - happy-dom: 15.11.7 - '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.0 @@ -6804,11 +5948,6 @@ snapshots: '@push.rocks/consolecolor': 2.0.2 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/isohash@2.0.1': - dependencies: - '@pushrocks/smartenv': 5.0.5 - '@pushrocks/smarthash': 3.0.2 - '@push.rocks/isounique@1.0.5': {} '@push.rocks/levelcache@3.1.1': @@ -6883,12 +6022,12 @@ snapshots: '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartagent@1.2.5(typescript@5.9.3)(ws@8.18.3)(zod@3.25.76)': + '@push.rocks/smartagent@1.2.5(typescript@5.9.3)(ws@8.19.0)(zod@3.25.76)': dependencies: - '@push.rocks/smartai': 0.8.0(typescript@5.9.3)(ws@8.18.3)(zod@3.25.76) + '@push.rocks/smartai': 0.8.0(typescript@5.9.3)(ws@8.19.0)(zod@3.25.76) '@push.rocks/smartbrowser': 2.0.8(typescript@5.9.3) '@push.rocks/smartdeno': 1.2.0 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartrequest': 5.0.1 '@push.rocks/smartshell': 3.3.0 minimatch: 10.2.4 @@ -6902,7 +6041,7 @@ snapshots: - ws - zod - '@push.rocks/smartai@0.8.0(typescript@5.9.3)(ws@8.18.3)(zod@3.25.76)': + '@push.rocks/smartai@0.8.0(typescript@5.9.3)(ws@8.19.0)(zod@3.25.76)': dependencies: '@anthropic-ai/sdk': 0.65.0(zod@3.25.76) '@push.rocks/smartarray': 1.1.0 @@ -6912,7 +6051,7 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrequest': 4.4.2 '@push.rocks/webstream': 1.0.10 - openai: 5.23.2(ws@8.18.3)(zod@3.25.76) + openai: 5.23.2(ws@8.19.0)(zod@3.25.76) transitivePeerDependencies: - aws-crt - bare-buffer @@ -6961,6 +6100,19 @@ snapshots: '@push.rocks/smartarray@1.1.0': {} + '@push.rocks/smartbrowser@2.0.10(typescript@5.9.3)': + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartpdf': 3.2.2(typescript@5.9.3) + '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.3) + '@push.rocks/smartunique': 3.0.9 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - typescript + - utf-8-validate + '@push.rocks/smartbrowser@2.0.8(typescript@5.9.3)': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -6988,21 +6140,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@push.rocks/smartbucket@4.4.1': - dependencies: - '@aws-sdk/client-s3': 3.1000.0 - '@push.rocks/smartmime': 2.0.4 - '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartstream': 3.2.5 - '@push.rocks/smartstring': 4.1.0 - '@push.rocks/smartunique': 3.0.9 - '@tsclass/tsclass': 9.3.0 - minimatch: 10.2.4 - transitivePeerDependencies: - - aws-crt - '@push.rocks/smartbuffer@3.0.5': dependencies: uint8array-extras: 1.4.0 @@ -7015,14 +6152,6 @@ snapshots: '@pushrocks/smartpromise': 3.1.10 '@pushrocks/smarttime': 4.0.1 - '@push.rocks/smartchok@1.1.1': - dependencies: - '@push.rocks/lik': 6.2.2 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - chokidar: 4.0.3 - picomatch: 4.0.3 - '@push.rocks/smartcli@4.0.20': dependencies: '@push.rocks/lik': 6.2.2 @@ -7055,22 +6184,25 @@ snapshots: '@push.rocks/smartmongo': 2.2.0(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartstring': 4.0.15 - '@push.rocks/smarttime': 4.1.1 + '@push.rocks/smartstring': 4.1.0 + '@push.rocks/smarttime': 4.2.3 '@push.rocks/smartunique': 3.0.9 - '@push.rocks/taskbuffer': 3.1.7 + '@push.rocks/taskbuffer': 3.5.0 '@tsclass/tsclass': 8.2.1 mongodb: 6.18.0(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' + - '@nuxt/kit' - aws-crt - gcp-metadata - kerberos - mongodb-client-encryption + - react - snappy - socks - supports-color + - vue '@push.rocks/smartdelay@3.0.5': dependencies: @@ -7079,7 +6211,7 @@ snapshots: '@push.rocks/smartdeno@1.2.0': dependencies: '@push.rocks/smartarchive': 5.2.1 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartshell': 3.3.0 '@push.rocks/smartunique': 3.0.9 @@ -7117,17 +6249,17 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 tree-kill: 1.2.2 + '@push.rocks/smartexit@2.0.3': + dependencies: + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartexpect@2.5.0': dependencies: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartpromise': 4.2.3 fast-deep-equal: 3.1.3 - '@push.rocks/smartfeed@1.4.0': - dependencies: - '@tsclass/tsclass': 9.3.0 - fast-xml-parser: 4.5.3 - '@push.rocks/smartfile-interfaces@1.0.7': {} '@push.rocks/smartfile@11.2.5': @@ -7172,7 +6304,7 @@ snapshots: '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile-interfaces': 1.0.7 - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smarthash': 3.2.6 '@push.rocks/smartjson': 5.0.20 '@push.rocks/smartmime': 2.0.4 @@ -7184,9 +6316,10 @@ snapshots: glob: 11.0.3 js-yaml: 4.1.0 - '@push.rocks/smartfs@1.3.1': + '@push.rocks/smartfs@1.5.0': dependencies: '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrust': 1.3.1 '@push.rocks/smartgit@3.3.1': dependencies: @@ -7263,10 +6396,6 @@ snapshots: fast-json-stable-stringify: 2.1.0 lodash.clonedeep: 4.5.0 - '@push.rocks/smartlog-destination-devtools@1.0.12': - dependencies: - '@push.rocks/smartlog-interfaces': 3.0.2 - '@push.rocks/smartlog-destination-local@9.0.2': dependencies: '@push.rocks/consolecolor': 2.0.2 @@ -7304,8 +6433,6 @@ snapshots: '@push.rocks/webrequest': 4.0.2 '@tsclass/tsclass': 9.3.0 - '@push.rocks/smartmanifest@2.0.2': {} - '@push.rocks/smartmarkdown@3.0.3': dependencies: '@push.rocks/smartyaml': 2.0.5 @@ -7335,7 +6462,7 @@ snapshots: dependencies: '@push.rocks/mongodump': 1.0.8 '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) - '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartfs': 1.5.0 '@push.rocks/smartpath': 5.1.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 @@ -7345,13 +6472,41 @@ snapshots: transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' + - '@nuxt/kit' - aws-crt - gcp-metadata - kerberos - mongodb-client-encryption + - react - snappy - socks - supports-color + - vue + + '@push.rocks/smartmongo@5.1.0(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4)': + dependencies: + '@push.rocks/mongodump': 1.0.8 + '@push.rocks/smartdata': 5.15.1(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) + '@push.rocks/smartfs': 1.5.0 + '@push.rocks/smartpath': 5.1.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + bson: 6.10.4 + mingo: 7.2.0 + mongodb-memory-server: 10.1.4(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - '@nuxt/kit' + - aws-crt + - gcp-metadata + - kerberos + - mongodb-client-encryption + - react + - snappy + - socks + - supports-color + - vue '@push.rocks/smartnetwork@3.0.2': dependencies: @@ -7390,27 +6545,11 @@ snapshots: - aws-crt - supports-color - '@push.rocks/smartntml@2.0.8': - dependencies: - '@design.estate/dees-element': 2.1.2 - '@happy-dom/global-registrator': 15.11.7 - '@push.rocks/smartpromise': 4.2.3 - fake-indexeddb: 6.0.1 - transitivePeerDependencies: - - '@nuxt/kit' - - react - - supports-color - - vue - '@push.rocks/smartobject@1.0.12': dependencies: fast-deep-equal: 3.1.3 minimatch: 9.0.5 - '@push.rocks/smartopen@2.0.0': - dependencies: - open: 8.4.2 - '@push.rocks/smartpath@5.1.0': {} '@push.rocks/smartpath@6.0.0': {} @@ -7535,15 +6674,24 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 rxjs: 7.8.2 - '@push.rocks/smarts3@3.0.3': + '@push.rocks/smarts3@5.3.0': dependencies: - '@push.rocks/smartbucket': 4.4.1 - '@push.rocks/smartfs': 1.3.1 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartxml': 2.0.0 + '@push.rocks/smartrust': 1.3.1 '@tsclass/tsclass': 9.3.0 + + '@push.rocks/smartserve@2.0.1': + dependencies: + '@api.global/typedrequest': 3.2.6 + '@cfworker/json-schema': 4.1.1 + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartenv': 6.0.0 + '@push.rocks/smartlog': 3.2.1 + '@push.rocks/smartpath': 6.0.0 + ws: 8.18.3 transitivePeerDependencies: - - aws-crt + - bufferutil + - utf-8-validate '@push.rocks/smartshell@3.2.3': dependencies: @@ -7563,39 +6711,13 @@ snapshots: tree-kill: 1.2.2 which: 5.0.0 - '@push.rocks/smartsitemap@2.0.4': + '@push.rocks/smartshell@3.3.7': dependencies: - '@push.rocks/smartcache': 1.0.16 - '@push.rocks/smartfeed': 1.4.0 - '@push.rocks/smartxml': 2.0.0 - '@push.rocks/smartyaml': 3.0.4 - '@push.rocks/webrequest': 4.0.2 - '@tsclass/tsclass': 9.3.0 - - '@push.rocks/smartsocket@2.1.0': - dependencies: - '@api.global/typedrequest-interfaces': 3.0.19 - '@api.global/typedserver': 3.0.80 - '@push.rocks/isohash': 2.0.1 - '@push.rocks/isounique': 1.0.5 - '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartenv': 5.0.13 - '@push.rocks/smartjson': 5.2.0 - '@push.rocks/smartlog': 3.2.1 + '@push.rocks/smartexit': 2.0.3 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smarttime': 4.1.1 - engine.io: 6.6.4 - socket.io: 4.8.1 - socket.io-client: 4.8.1 - transitivePeerDependencies: - - '@nuxt/kit' - - bufferutil - - react - - supports-color - - utf-8-validate - - vue + '@types/which': 3.0.4 + which: 6.0.1 '@push.rocks/smartspawn@3.0.3': dependencies: @@ -7606,15 +6728,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@push.rocks/smartstate@2.0.25': - dependencies: - '@push.rocks/lik': 6.2.2 - '@push.rocks/smarthash': 3.2.0 - '@push.rocks/smartjson': 5.2.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/webstore': 2.0.20 - '@push.rocks/smartstate@2.1.0': dependencies: '@push.rocks/smarthash': 3.2.6 @@ -7656,6 +6769,17 @@ snapshots: is-nan: 1.3.2 pretty-ms: 9.2.0 + '@push.rocks/smarttime@4.2.3': + dependencies: + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartpromise': 4.2.3 + croner: 10.0.1 + date-fns: 4.1.0 + dayjs: 1.11.19 + is-nan: 1.3.2 + pretty-ms: 9.3.0 + '@push.rocks/smartunique@3.0.9': dependencies: '@types/uuid': 9.0.8 @@ -7669,19 +6793,20 @@ snapshots: '@types/semver': 7.7.0 semver: 7.7.2 - '@push.rocks/smartxml@2.0.0': + '@push.rocks/smartwatch@6.3.0': dependencies: - fast-xml-parser: 5.4.1 + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartenv': 6.0.0 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + chokidar: 5.0.0 + picomatch: 4.0.3 '@push.rocks/smartyaml@2.0.5': dependencies: '@types/js-yaml': 3.12.10 js-yaml: 3.14.1 - '@push.rocks/smartyaml@3.0.4': - dependencies: - yaml: 2.8.0 - '@push.rocks/taskbuffer@3.1.7': dependencies: '@push.rocks/lik': 6.2.2 @@ -7700,7 +6825,7 @@ snapshots: '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smarttime': 4.1.1 + '@push.rocks/smarttime': 4.2.3 '@push.rocks/smartunique': 3.0.9 transitivePeerDependencies: - '@nuxt/kit' @@ -7866,7 +6991,7 @@ snapshots: '@pushrocks/smartpromise': 3.1.10 '@pushrocks/smarturl': 2.0.1 agentkeepalive: 4.6.0 - form-data: 4.0.4 + form-data: 4.0.5 '@pushrocks/smartrx@2.0.27': dependencies: @@ -8045,25 +7170,17 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/chunked-blob-reader-native@4.0.0': dependencies: '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/chunked-blob-reader-native@4.2.2': - dependencies: - '@smithy/util-base64': 4.3.1 - tslib: 2.8.1 - '@smithy/chunked-blob-reader@5.0.0': dependencies: tslib: 2.8.1 - '@smithy/chunked-blob-reader@5.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/config-resolver@4.0.1': dependencies: '@smithy/node-config-provider': 4.0.1 @@ -8080,6 +7197,7 @@ snapshots: '@smithy/util-endpoints': 3.3.1 '@smithy/util-middleware': 4.2.10 tslib: 2.8.1 + optional: true '@smithy/core@3.1.5': dependencies: @@ -8104,6 +7222,7 @@ snapshots: '@smithy/util-utf8': 4.2.1 '@smithy/uuid': 1.1.1 tslib: 2.8.1 + optional: true '@smithy/credential-provider-imds@4.0.1': dependencies: @@ -8120,6 +7239,7 @@ snapshots: '@smithy/types': 4.13.0 '@smithy/url-parser': 4.2.10 tslib: 2.8.1 + optional: true '@smithy/eventstream-codec@4.0.1': dependencies: @@ -8128,59 +7248,29 @@ snapshots: '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - '@smithy/eventstream-codec@4.2.10': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.13.0 - '@smithy/util-hex-encoding': 4.2.1 - tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.0.1': dependencies: '@smithy/eventstream-serde-universal': 4.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.2.10': - dependencies: - '@smithy/eventstream-serde-universal': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.3.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.0.1': dependencies: '@smithy/eventstream-serde-universal': 4.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.2.10': - dependencies: - '@smithy/eventstream-serde-universal': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.0.1': dependencies: '@smithy/eventstream-codec': 4.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.10': - dependencies: - '@smithy/eventstream-codec': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/fetch-http-handler@5.0.1': dependencies: '@smithy/protocol-http': 5.0.1 @@ -8196,6 +7286,7 @@ snapshots: '@smithy/types': 4.13.0 '@smithy/util-base64': 4.3.1 tslib: 2.8.1 + optional: true '@smithy/hash-blob-browser@4.0.1': dependencies: @@ -8204,13 +7295,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.2.11': - dependencies: - '@smithy/chunked-blob-reader': 5.2.1 - '@smithy/chunked-blob-reader-native': 4.2.2 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/hash-node@4.0.1': dependencies: '@smithy/types': 4.1.0 @@ -8224,6 +7308,7 @@ snapshots: '@smithy/util-buffer-from': 4.2.1 '@smithy/util-utf8': 4.2.1 tslib: 2.8.1 + optional: true '@smithy/hash-stream-node@4.0.1': dependencies: @@ -8231,12 +7316,6 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/hash-stream-node@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@smithy/invalid-dependency@4.0.1': dependencies: '@smithy/types': 4.1.0 @@ -8246,6 +7325,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/is-array-buffer@2.2.0': dependencies: @@ -8258,6 +7338,7 @@ snapshots: '@smithy/is-array-buffer@4.2.1': dependencies: tslib: 2.8.1 + optional: true '@smithy/md5-js@4.0.1': dependencies: @@ -8265,12 +7346,6 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/md5-js@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@smithy/middleware-content-length@4.0.1': dependencies: '@smithy/protocol-http': 5.0.1 @@ -8282,6 +7357,7 @@ snapshots: '@smithy/protocol-http': 5.3.10 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/middleware-endpoint@4.0.6': dependencies: @@ -8304,6 +7380,7 @@ snapshots: '@smithy/url-parser': 4.2.10 '@smithy/util-middleware': 4.2.10 tslib: 2.8.1 + optional: true '@smithy/middleware-retry@4.0.7': dependencies: @@ -8328,6 +7405,7 @@ snapshots: '@smithy/util-retry': 4.2.10 '@smithy/uuid': 1.1.1 tslib: 2.8.1 + optional: true '@smithy/middleware-serde@4.0.2': dependencies: @@ -8339,6 +7417,7 @@ snapshots: '@smithy/protocol-http': 5.3.10 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/middleware-stack@4.0.1': dependencies: @@ -8349,6 +7428,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/node-config-provider@4.0.1': dependencies: @@ -8363,6 +7443,7 @@ snapshots: '@smithy/shared-ini-file-loader': 4.4.5 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/node-http-handler@4.0.3': dependencies: @@ -8379,6 +7460,7 @@ snapshots: '@smithy/querystring-builder': 4.2.10 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/property-provider@4.0.1': dependencies: @@ -8389,6 +7471,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/protocol-http@5.0.1': dependencies: @@ -8399,6 +7482,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/querystring-builder@4.0.1': dependencies: @@ -8411,6 +7495,7 @@ snapshots: '@smithy/types': 4.13.0 '@smithy/util-uri-escape': 4.2.1 tslib: 2.8.1 + optional: true '@smithy/querystring-parser@4.0.1': dependencies: @@ -8421,6 +7506,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/service-error-classification@4.0.1': dependencies: @@ -8429,6 +7515,7 @@ snapshots: '@smithy/service-error-classification@4.2.10': dependencies: '@smithy/types': 4.13.0 + optional: true '@smithy/shared-ini-file-loader@4.0.1': dependencies: @@ -8439,6 +7526,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/signature-v4@5.0.1': dependencies: @@ -8451,17 +7539,6 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/signature-v4@5.3.10': - dependencies: - '@smithy/is-array-buffer': 4.2.1 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-hex-encoding': 4.2.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-uri-escape': 4.2.1 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@smithy/smithy-client@4.1.6': dependencies: '@smithy/core': 3.1.5 @@ -8481,6 +7558,7 @@ snapshots: '@smithy/types': 4.13.0 '@smithy/util-stream': 4.5.15 tslib: 2.8.1 + optional: true '@smithy/types@4.1.0': dependencies: @@ -8501,6 +7579,7 @@ snapshots: '@smithy/querystring-parser': 4.2.10 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/util-base64@4.0.0': dependencies: @@ -8513,6 +7592,7 @@ snapshots: '@smithy/util-buffer-from': 4.2.1 '@smithy/util-utf8': 4.2.1 tslib: 2.8.1 + optional: true '@smithy/util-body-length-browser@4.0.0': dependencies: @@ -8521,6 +7601,7 @@ snapshots: '@smithy/util-body-length-browser@4.2.1': dependencies: tslib: 2.8.1 + optional: true '@smithy/util-body-length-node@4.0.0': dependencies: @@ -8529,6 +7610,7 @@ snapshots: '@smithy/util-body-length-node@4.2.2': dependencies: tslib: 2.8.1 + optional: true '@smithy/util-buffer-from@2.2.0': dependencies: @@ -8544,6 +7626,7 @@ snapshots: dependencies: '@smithy/is-array-buffer': 4.2.1 tslib: 2.8.1 + optional: true '@smithy/util-config-provider@4.0.0': dependencies: @@ -8552,6 +7635,7 @@ snapshots: '@smithy/util-config-provider@4.2.1': dependencies: tslib: 2.8.1 + optional: true '@smithy/util-defaults-mode-browser@4.0.7': dependencies: @@ -8567,6 +7651,7 @@ snapshots: '@smithy/smithy-client': 4.12.0 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/util-defaults-mode-node@4.0.7': dependencies: @@ -8587,6 +7672,7 @@ snapshots: '@smithy/smithy-client': 4.12.0 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/util-endpoints@3.0.1': dependencies: @@ -8599,6 +7685,7 @@ snapshots: '@smithy/node-config-provider': 4.3.10 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/util-hex-encoding@4.0.0': dependencies: @@ -8607,6 +7694,7 @@ snapshots: '@smithy/util-hex-encoding@4.2.1': dependencies: tslib: 2.8.1 + optional: true '@smithy/util-middleware@4.0.1': dependencies: @@ -8617,6 +7705,7 @@ snapshots: dependencies: '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/util-retry@4.0.1': dependencies: @@ -8629,6 +7718,7 @@ snapshots: '@smithy/service-error-classification': 4.2.10 '@smithy/types': 4.13.0 tslib: 2.8.1 + optional: true '@smithy/util-stream@4.1.2': dependencies: @@ -8651,6 +7741,7 @@ snapshots: '@smithy/util-hex-encoding': 4.2.1 '@smithy/util-utf8': 4.2.1 tslib: 2.8.1 + optional: true '@smithy/util-uri-escape@4.0.0': dependencies: @@ -8659,6 +7750,7 @@ snapshots: '@smithy/util-uri-escape@4.2.1': dependencies: tslib: 2.8.1 + optional: true '@smithy/util-utf8@2.3.0': dependencies: @@ -8674,6 +7766,7 @@ snapshots: dependencies: '@smithy/util-buffer-from': 4.2.1 tslib: 2.8.1 + optional: true '@smithy/util-waiter@4.0.2': dependencies: @@ -8681,17 +7774,10 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-waiter@4.2.10': - dependencies: - '@smithy/abort-controller': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/uuid@1.1.1': dependencies: tslib: 2.8.1 - - '@socket.io/component-emitter@3.1.2': {} + optional: true '@szmarczak/http-timer@5.0.1': dependencies: @@ -8732,22 +7818,18 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/buffer-json@2.0.3': {} '@types/clean-css@4.2.11': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 source-map: 0.6.1 '@types/connect@3.4.38': dependencies: - '@types/node': 25.3.2 - - '@types/cors@2.8.19': - dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/debug@4.1.12': dependencies: @@ -8761,7 +7843,7 @@ snapshots: '@types/express-serve-static-core@5.0.7': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -8779,21 +7861,21 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/hast@3.0.4': dependencies: @@ -8815,7 +7897,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/mdast@4.0.4': dependencies: @@ -8831,17 +7913,17 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.0.3 + minimatch: 10.2.4 '@types/ms@2.1.0': {} '@types/mute-stream@0.0.4': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/node-forge@1.3.11': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/node@16.9.1': {} @@ -8849,7 +7931,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@25.3.2': + '@types/node@25.3.5': dependencies: undici-types: 7.18.2 @@ -8868,22 +7950,22 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/symbol-tree@3.2.5': {} '@types/tar-stream@3.1.4': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/through2@2.0.41': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/trusted-types@2.0.7': {} @@ -8905,7 +7987,7 @@ snapshots: '@types/whatwg-url@8.2.2': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/webidl-conversions': 7.0.3 '@types/which@3.0.4': {} @@ -8914,11 +7996,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 '@types/yauzl@2.10.3': dependencies: - '@types/node': 25.3.2 + '@types/node': 25.3.5 optional: true '@ungap/structured-clone@1.3.0': {} @@ -9053,8 +8135,6 @@ snapshots: base64-js@1.5.1: {} - base64id@2.0.0: {} - basic-ftp@5.0.5: {} bmp-ts@1.0.9: {} @@ -9076,20 +8156,6 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.0: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 4.4.1 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - on-finished: 2.4.1 - qs: 6.14.0 - raw-body: 3.0.0 - type-is: 2.0.1 - transitivePeerDependencies: - - supports-color - body-parser@2.2.2: dependencies: bytes: 3.1.2 @@ -9119,13 +8185,6 @@ snapshots: dependencies: balanced-match: 4.0.4 - broadcast-channel@7.1.0: - dependencies: - '@babel/runtime': 7.27.0 - oblivious-set: 1.4.0 - p-queue: 6.6.2 - unload: 2.4.1 - broadcast-channel@7.3.0: dependencies: '@babel/runtime': 7.28.6 @@ -9203,9 +8262,9 @@ snapshots: chardet@0.7.0: {} - chokidar@4.0.3: + chokidar@5.0.0: dependencies: - readdirp: 4.1.2 + readdirp: 5.0.0 chromium-bidi@2.0.0(devtools-protocol@0.0.1402036): dependencies: @@ -9284,11 +8343,6 @@ snapshots: cookie@0.7.2: {} - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.9.3): dependencies: env-paths: 2.2.1 @@ -9300,6 +8354,8 @@ snapshots: crc-32@1.2.2: {} + croner@10.0.1: {} + croner@4.4.1: {} croner@5.7.0: {} @@ -9322,14 +8378,12 @@ snapshots: dayjs@1.11.13: {} + dayjs@1.11.19: {} + debug@2.6.9: dependencies: ms: 2.0.0 - debug@4.3.7: - dependencies: - ms: 2.1.3 - debug@4.4.0: dependencies: ms: 2.1.3 @@ -9360,8 +8414,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.0.1 - define-lazy-prop@2.0.0: {} - define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -9424,36 +8476,6 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.3: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-parser: 5.2.3 - ws: 8.17.1 - xmlhttprequest-ssl: 2.1.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine.io-parser@5.2.3: {} - - engine.io@6.6.4: - dependencies: - '@types/cors': 2.8.19 - '@types/node': 25.3.2 - accepts: 1.3.8 - base64id: 2.0.0 - cookie: 0.7.2 - cors: 2.8.5 - debug: 4.3.7 - engine.io-parser: 5.2.3 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - entities@4.5.0: {} env-paths@2.2.1: {} @@ -9544,10 +8566,6 @@ snapshots: exif-parser@0.1.12: {} - express-force-ssl@0.3.2: - dependencies: - lodash.assign: 3.2.0 - express@4.21.2: dependencies: accepts: 1.3.8 @@ -9637,33 +8655,16 @@ snapshots: fake-indexeddb@5.0.2: {} - fake-indexeddb@6.0.1: {} - fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} fast-json-stable-stringify@2.1.0: {} - fast-xml-builder@1.0.0: {} - fast-xml-parser@4.4.1: dependencies: strnum: 1.1.2 - fast-xml-parser@4.5.3: - dependencies: - strnum: 1.1.2 - - fast-xml-parser@5.3.6: - dependencies: - strnum: 2.1.2 - - fast-xml-parser@5.4.1: - dependencies: - fast-xml-builder: 1.0.0 - strnum: 2.1.2 - fault@2.0.1: dependencies: format: 0.2.2 @@ -9738,6 +8739,10 @@ snapshots: optionalDependencies: debug: 4.4.1 + follow-redirects@1.15.11(debug@4.4.3): + optionalDependencies: + debug: 4.4.3 + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -9901,12 +8906,6 @@ snapshots: graceful-fs@4.2.11: {} - happy-dom@15.11.7: - dependencies: - entities: 4.5.0 - webidl-conversions: 7.0.0 - whatwg-mimetype: 3.0.0 - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 @@ -10008,10 +9007,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -10066,8 +9061,6 @@ snapshots: is-callable@1.2.7: {} - is-docker@2.2.1: {} - is-fullwidth-code-point@3.0.0: {} is-ip@4.0.0: @@ -10097,16 +9090,14 @@ snapshots: is-windows@1.0.2: {} - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - isarray@2.0.5: {} isexe@2.0.0: {} isexe@3.1.1: {} + isexe@4.0.0: {} + isomorphic-git@1.37.2: dependencies: async-lock: 1.4.1 @@ -10195,8 +9186,6 @@ snapshots: kind-of@6.0.3: {} - lenis@1.3.8: {} - lines-and-columns@1.2.4: {} linkify-it@5.0.0: @@ -10213,12 +9202,6 @@ snapshots: dependencies: '@types/trusted-types': 2.0.7 - lit@3.3.1: - dependencies: - '@lit/reactive-element': 2.1.1 - lit-element: 4.2.1 - lit-html: 3.3.1 - lit@3.3.2: dependencies: '@lit/reactive-element': 2.1.1 @@ -10229,45 +9212,8 @@ snapshots: dependencies: p-locate: 4.1.0 - lodash._baseassign@3.2.0: - dependencies: - lodash._basecopy: 3.0.1 - lodash.keys: 3.1.2 - - lodash._basecopy@3.0.1: {} - - lodash._bindcallback@3.0.1: {} - - lodash._createassigner@3.1.1: - dependencies: - lodash._bindcallback: 3.0.1 - lodash._isiterateecall: 3.0.9 - lodash.restparam: 3.6.1 - - lodash._getnative@3.9.1: {} - - lodash._isiterateecall@3.0.9: {} - - lodash.assign@3.2.0: - dependencies: - lodash._baseassign: 3.2.0 - lodash._createassigner: 3.1.1 - lodash.keys: 3.1.2 - lodash.clonedeep@4.5.0: {} - lodash.isarguments@3.1.0: {} - - lodash.isarray@3.0.4: {} - - lodash.keys@3.1.2: - dependencies: - lodash._getnative: 3.9.1 - lodash.isarguments: 3.1.0 - lodash.isarray: 3.0.4 - - lodash.restparam@3.6.1: {} - longest-streak@3.1.0: {} lower-case@1.1.4: {} @@ -10631,7 +9577,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -10718,9 +9664,9 @@ snapshots: dependencies: async-mutex: 0.5.0 camelcase: 6.3.0 - debug: 4.4.1 + debug: 4.4.3 find-cache-dir: 3.3.2 - follow-redirects: 1.15.11(debug@4.4.1) + follow-redirects: 1.15.11(debug@4.4.3) https-proxy-agent: 7.0.6 mongodb: 6.18.0(@aws-sdk/credential-providers@3.750.0)(socks@2.8.4) new-find-package-json: 2.0.0 @@ -10788,7 +9734,7 @@ snapshots: new-find-package-json@2.0.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -10804,14 +9750,10 @@ snapshots: normalize-url@8.0.2: {} - object-assign@4.1.1: {} - object-inspect@1.13.4: {} object-keys@1.1.1: {} - oblivious-set@1.4.0: {} - oblivious-set@2.0.0: {} observable-fns@0.6.1: {} @@ -10826,15 +9768,9 @@ snapshots: dependencies: wrappy: 1.0.2 - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openai@5.23.2(ws@8.18.3)(zod@3.25.76): + openai@5.23.2(ws@8.19.0)(zod@3.25.76): optionalDependencies: - ws: 8.18.3 + ws: 8.19.0 zod: 3.25.76 os-tmpdir@1.0.2: {} @@ -10991,6 +9927,10 @@ snapshots: dependencies: parse-ms: 4.0.0 + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + process@0.11.10: {} progress@2.0.3: {} @@ -11101,13 +10041,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.0: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - unpipe: 1.0.0 - raw-body@3.0.2: dependencies: bytes: 3.1.2 @@ -11140,7 +10073,7 @@ snapshots: dependencies: readable-stream: 4.7.0 - readdirp@4.1.2: {} + readdirp@5.0.0: {} reflect-metadata@0.2.2: {} @@ -11417,47 +10350,6 @@ snapshots: smart-buffer@4.2.0: {} - socket.io-adapter@2.5.5: - dependencies: - debug: 4.3.7 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-client@4.8.1: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-client: 6.6.3 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-parser@4.2.4: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - socket.io@4.8.1: - dependencies: - accepts: 1.3.8 - base64id: 2.0.0 - cors: 2.8.5 - debug: 4.3.7 - engine.io: 6.6.4 - socket.io-adapter: 2.5.5 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.3 @@ -11540,8 +10432,6 @@ snapshots: strnum@1.1.2: {} - strnum@2.1.2: {} - strtok3@10.3.4: dependencies: '@tokenizer/token': 0.3.0 @@ -11587,7 +10477,7 @@ snapshots: threads@1.7.0: dependencies: callsites: 3.1.0 - debug: 4.4.1 + debug: 4.4.3 is-observable: 2.1.0 observable-fns: 0.6.1 optionalDependencies: @@ -11786,8 +10676,6 @@ snapshots: webidl-conversions@7.0.0: {} - whatwg-mimetype@3.0.0: {} - whatwg-url@11.0.0: dependencies: tr46: 3.0.0 @@ -11816,6 +10704,10 @@ snapshots: dependencies: isexe: 3.1.1 + which@6.0.1: + dependencies: + isexe: 4.0.0 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -11836,12 +10728,12 @@ snapshots: wrappy@1.0.2: {} - ws@8.17.1: {} - ws@8.18.1: {} ws@8.18.3: {} + ws@8.19.0: {} + xml-parse-from-string@1.0.1: {} xml2js@0.5.0: @@ -11851,12 +10743,8 @@ snapshots: xmlbuilder@11.0.1: {} - xmlhttprequest-ssl@2.1.2: {} - y18n@5.0.8: {} - yaml@2.8.0: {} - yaml@2.8.2: {} yargs-parser@21.1.1: {} diff --git a/readme.md b/readme.md index b9066fc..6adec7f 100644 --- a/readme.md +++ b/readme.md @@ -73,7 +73,7 @@ interface IPdf { ## 📚 How It Works -SmartPDF spins up a lightweight Express server bound to `localhost` and a headless Chromium browser. When you call a generation method: +SmartPDF spins up a lightweight HTTP server (via `@push.rocks/smartserve`) bound to `localhost` and a headless Chromium browser. When you call a generation method: 1. Your HTML is registered internally and served at `http://localhost:{port}/{id}` 2. Puppeteer navigates to that URL, waits for the page to fully render, and captures a PDF @@ -362,7 +362,7 @@ await Promise.all(instances.map(i => i.stop())); | Property | Type | Description | |----------|------|-------------| -| `serverPort` | `number` | The port the internal Express server is listening on | +| `serverPort` | `number` | The port the internal HTTP server is listening on | #### Instance Methods diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 4f2fcfe..97f3678 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartpdf', - version: '4.1.3', + version: '4.2.0', description: 'A library for creating PDFs dynamically from HTML or websites with additional features like merging PDFs.' } diff --git a/ts/smartpdf.classes.smartpdf.ts b/ts/smartpdf.classes.smartpdf.ts index 33e24ff..9241ea6 100644 --- a/ts/smartpdf.classes.smartpdf.ts +++ b/ts/smartpdf.classes.smartpdf.ts @@ -1,6 +1,5 @@ import * as plugins from './smartpdf.plugins.js'; import * as paths from './smartpdf.paths.js'; -import { Server } from 'http'; import { PdfCandidate } from './smartpdf.classes.pdfcandidate.js'; import { type IPdf } from '@tsclass/tsclass/dist_ts/business/pdf.js'; declare const document: any; @@ -16,7 +15,7 @@ export class SmartPdf { public static readonly SCALE_SCREEN = 2.0; // ~144 DPI - Good for screen display public static readonly SCALE_HIGH = 3.0; // ~216 DPI - High quality (default) public static readonly SCALE_PRINT = 6.0; // ~432 DPI - Print quality - + /** * Calculate scale factor for desired DPI * PDF.js default is 72 DPI, so scale = desiredDPI / 72 @@ -24,7 +23,7 @@ export class SmartPdf { public static getScaleForDPI(dpi: number): number { return dpi / 72; } - + // STATIC public static async create(optionsArg?: ISmartPdfOptions) { const smartpdfInstance = new SmartPdf(optionsArg); @@ -32,13 +31,14 @@ export class SmartPdf { } // INSTANCE - htmlServerInstance: Server; + private smartserveInstance: plugins.smartserve.SmartServe; serverPort: number; headlessBrowser: plugins.smartpuppeteer.puppeteer.Browser; externalBrowserBool: boolean = false; private _readyDeferred: plugins.smartpromise.Deferred; private _candidates: { [key: string]: PdfCandidate } = {}; private _options: ISmartPdfOptions; + private _isRunning: boolean = false; constructor(optionsArg?: ISmartPdfOptions) { this._readyDeferred = new plugins.smartpromise.Deferred(); @@ -50,7 +50,13 @@ export class SmartPdf { } async start(headlessBrowserArg?: plugins.smartpuppeteer.puppeteer.Browser) { - const done = plugins.smartpromise.defer(); + if (this._isRunning) { + throw new Error('SmartPdf is already running. Call stop() before starting again.'); + } + + // Reset readiness deferred for this start cycle + this._readyDeferred = new plugins.smartpromise.Deferred(); + // lets set the external browser in case one is provided this.headlessBrowser = headlessBrowserArg; // setup puppeteer @@ -64,7 +70,7 @@ export class SmartPdf { // Find an available port BEFORE creating server const smartnetworkInstance = new plugins.smartnetwork.SmartNetwork(); - + if (this._options.port) { // If a specific port is requested, check if it's available const isPortAvailable = await smartnetworkInstance.isLocalPortUnused(this._options.port); @@ -74,6 +80,7 @@ export class SmartPdf { // Clean up browser if we created one if (!this.externalBrowserBool && this.headlessBrowser) { await this.headlessBrowser.close(); + this.headlessBrowser = null; } throw new Error(`Requested port ${this._options.port} is already in use`); } @@ -87,45 +94,62 @@ export class SmartPdf { // Clean up browser if we created one if (!this.externalBrowserBool && this.headlessBrowser) { await this.headlessBrowser.close(); + this.headlessBrowser = null; } throw new Error(`No free ports available in range ${this._options.portRangeStart}-${this._options.portRangeEnd}`); } } - - // Now setup server after we know we have a valid port - const app = plugins.express(); - app.get('/:pdfId', (req, res) => { - const wantedCandidate = this._candidates[req.params.pdfId]; - if (!wantedCandidate) { - console.log(`${req.url} not attached to a candidate`); - return; + + // Now setup server using smartserve + this.smartserveInstance = new plugins.smartserve.SmartServe({ + port: this.serverPort, + hostname: 'localhost', + }); + + this.smartserveInstance.setHandler(async (request) => { + const url = new URL(request.url); + const pdfId = url.pathname.slice(1); // Remove leading / + const candidate = this._candidates[pdfId]; + if (!candidate) { + console.log(`${url.pathname} not attached to a candidate`); + return new Response('Not found', { status: 404 }); } - res.setHeader('pdf-id', wantedCandidate.pdfId); - res.send(wantedCandidate.htmlString); + return new Response(candidate.htmlString, { + headers: { + 'Content-Type': 'text/html; charset=utf-8', + 'pdf-id': candidate.pdfId, + }, + }); }); - this.htmlServerInstance = plugins.http.createServer(app); - - this.htmlServerInstance.listen(this.serverPort, 'localhost'); - this.htmlServerInstance.on('listening', () => { - console.log(`SmartPdf server listening on port ${this.serverPort}`); - this._readyDeferred.resolve(); - done.resolve(); - }); - await done.promise; + + await this.smartserveInstance.start(); + console.log(`SmartPdf server listening on port ${this.serverPort}`); + this._isRunning = true; + this._readyDeferred.resolve(); } // stop async stop() { - const done = plugins.smartpromise.defer(); - this.htmlServerInstance.close(() => { - done.resolve(); - }); - - if (!this.externalBrowserBool) { - await this.headlessBrowser.close(); + if (!this._isRunning) { + return; } - await done.promise; + this._isRunning = false; + + // Close browser first to cleanly terminate keepalive connections + // before the server shuts down (prevents ECONNRESET errors) + if (!this.externalBrowserBool && this.headlessBrowser) { + await this.headlessBrowser.close(); + } + this.headlessBrowser = null; + + if (this.smartserveInstance) { + await this.smartserveInstance.stop(); + this.smartserveInstance = null; + } + + // Clear any remaining candidates + this._candidates = {}; } /** @@ -135,124 +159,144 @@ export class SmartPdf { await this._readyDeferred.promise; const pdfCandidate = new PdfCandidate(htmlStringArg); this._candidates[pdfCandidate.pdfId] = pdfCandidate; - const page = await this.headlessBrowser.newPage(); - await page.setViewport({ - width: 794, - height: 1122, - }); - const response = await page.goto(`http://localhost:${this.serverPort}/${pdfCandidate.pdfId}`, { - waitUntil: 'networkidle2', - }); - const headers = response.headers(); - if (headers['pdf-id'] !== pdfCandidate.pdfId) { - console.log('Error! Headers do not match. For security reasons no pdf is being emitted!'); - return; - } else { - console.log(`id security check passed for ${pdfCandidate.pdfId}`); - } + let page: plugins.smartpuppeteer.puppeteer.Page; + try { + page = await this.headlessBrowser.newPage(); + await page.setViewport({ + width: 794, + height: 1122, + }); + const response = await page.goto(`http://localhost:${this.serverPort}/${pdfCandidate.pdfId}`, { + waitUntil: 'networkidle2', + }); + const headers = response.headers(); + if (headers['pdf-id'] !== pdfCandidate.pdfId) { + console.log('Error! Headers do not match. For security reasons no pdf is being emitted!'); + return; + } else { + console.log(`id security check passed for ${pdfCandidate.pdfId}`); + } - const pdfBuffer = await page.pdf({ - width: 794, - height: 1122, - printBackground: true, - displayHeaderFooter: false, - }); - // Convert Uint8Array to Node Buffer - const nodePdfBuffer = Buffer.from(pdfBuffer); - await page.close(); - delete this._candidates[pdfCandidate.pdfId]; - pdfCandidate.doneDeferred.resolve(); - await pdfCandidate.doneDeferred.promise; - return { - id: pdfCandidate.pdfId, - name: `${pdfCandidate.pdfId}.js`, - metadata: { - textExtraction: await this.extractTextFromPdfBuffer(nodePdfBuffer), - }, - buffer: nodePdfBuffer, - }; + const pdfBuffer = await page.pdf({ + width: 794, + height: 1122, + printBackground: true, + displayHeaderFooter: false, + }); + // Convert Uint8Array to Node Buffer + const nodePdfBuffer = Buffer.from(pdfBuffer); + await page.close(); + delete this._candidates[pdfCandidate.pdfId]; + pdfCandidate.doneDeferred.resolve(); + await pdfCandidate.doneDeferred.promise; + return { + id: pdfCandidate.pdfId, + name: `${pdfCandidate.pdfId}.js`, + metadata: { + textExtraction: await this.extractTextFromPdfBuffer(nodePdfBuffer), + }, + buffer: nodePdfBuffer, + }; + } catch (err) { + // Clean up candidate on error + delete this._candidates[pdfCandidate.pdfId]; + if (page) { + await page.close().catch(() => {}); + } + throw err; + } } async getPdfResultForWebsite(websiteUrl: string): Promise { const page = await this.headlessBrowser.newPage(); - await page.setViewport({ - width: 1980, - height: 1200, - }); - await page.emulateMediaType('screen'); - const response = await page.goto(websiteUrl, { waitUntil: 'networkidle2' }); - const pdfId = plugins.smartunique.shortId(); - const { documentHeight, documentWidth } = await page.evaluate(() => { + try { + await page.setViewport({ + width: 1980, + height: 1200, + }); + await page.emulateMediaType('screen'); + const response = await page.goto(websiteUrl, { waitUntil: 'networkidle2' }); + const pdfId = plugins.smartunique.shortId(); + const { documentHeight, documentWidth } = await page.evaluate(() => { + return { + documentHeight: document.height, + documentWidth: document.width, + }; + }); + const pdfBuffer = await page.pdf({ + height: documentHeight, + width: documentWidth, + printBackground: true, + displayHeaderFooter: false, + }); + // Convert Uint8Array to Node Buffer + const nodePdfBuffer = Buffer.from(pdfBuffer); + await page.close(); return { - documentHeight: document.height, - documentWidth: document.width, + id: pdfId, + name: `${pdfId}.js`, + metadata: { + textExtraction: await this.extractTextFromPdfBuffer(nodePdfBuffer), + }, + buffer: nodePdfBuffer, }; - }); - const pdfBuffer = await page.pdf({ - height: documentHeight, - width: documentWidth, - printBackground: true, - displayHeaderFooter: false, - }); - // Convert Uint8Array to Node Buffer - const nodePdfBuffer = Buffer.from(pdfBuffer); - await page.close(); - return { - id: pdfId, - name: `${pdfId}.js`, - metadata: { - textExtraction: await this.extractTextFromPdfBuffer(nodePdfBuffer), - }, - buffer: nodePdfBuffer, - }; + } catch (err) { + await page.close().catch(() => {}); + throw err; + } } async getFullWebsiteAsSinglePdf(websiteUrl: string): Promise { const page = await this.headlessBrowser.newPage(); - await page.setViewport({ - width: 1920, - height: 1200, - }); - await page.emulateMediaType('screen'); - const response = await page.goto(websiteUrl, { waitUntil: 'networkidle2' }); - const pdfId = plugins.smartunique.shortId(); - // Use both document.body and document.documentElement to ensure we have a valid height and width. - const { documentHeight, documentWidth } = await page.evaluate(() => { + try { + await page.setViewport({ + width: 1920, + height: 1200, + }); + await page.emulateMediaType('screen'); + const response = await page.goto(websiteUrl, { waitUntil: 'networkidle2' }); + const pdfId = plugins.smartunique.shortId(); + // Use both document.body and document.documentElement to ensure we have a valid height and width. + const { documentHeight, documentWidth } = await page.evaluate(() => { + return { + documentHeight: Math.max( + document.body.scrollHeight, + document.documentElement.scrollHeight + ) || 1200, + documentWidth: Math.max( + document.body.clientWidth, + document.documentElement.clientWidth + ) || 1920, + }; + }); + // Update viewport height to the full document height. + await page.setViewport({ + width: 1920, + height: documentHeight, + }); + const pdfBuffer = await page.pdf({ + height: documentHeight, + width: 1920, + printBackground: true, + displayHeaderFooter: false, + scale: 1, + pageRanges: '1', + }); + // Convert Uint8Array to Node Buffer + const nodePdfBuffer = Buffer.from(pdfBuffer); + await page.close(); return { - documentHeight: Math.max( - document.body.scrollHeight, - document.documentElement.scrollHeight - ) || 1200, - documentWidth: Math.max( - document.body.clientWidth, - document.documentElement.clientWidth - ) || 1920, + id: pdfId, + name: `${pdfId}.js`, + metadata: { + textExtraction: await this.extractTextFromPdfBuffer(nodePdfBuffer), + }, + buffer: nodePdfBuffer, }; - }); - // Update viewport height to the full document height. - await page.setViewport({ - width: 1920, - height: documentHeight, - }); - const pdfBuffer = await page.pdf({ - height: documentHeight, - width: 1920, - printBackground: true, - displayHeaderFooter: false, - scale: 1, - pageRanges: '1', - }); - // Convert Uint8Array to Node Buffer - const nodePdfBuffer = Buffer.from(pdfBuffer); - await page.close(); - return { - id: pdfId, - name: `${pdfId}.js`, - metadata: { - textExtraction: await this.extractTextFromPdfBuffer(nodePdfBuffer), - }, - buffer: nodePdfBuffer, - }; + } catch (err) { + await page.close().catch(() => {}); + throw err; + } } public async mergePdfs(inputPdfBuffers: Uint8Array[]): Promise { @@ -318,89 +362,94 @@ export class SmartPdf { // Create a new page using the headless browser. const page = await this.headlessBrowser.newPage(); - // Prepare PDF data as a base64 string. - const base64Pdf: string = Buffer.from(pdfBytes).toString('base64'); + try { + // Prepare PDF data as a base64 string. + const base64Pdf: string = Buffer.from(pdfBytes).toString('base64'); - // HTML template that loads PDF.js and renders the PDF. - const htmlTemplate: string = ` - - - - - PDF to PNG Converter - - - - - - - - `; + // HTML template that loads PDF.js and renders the PDF. + const htmlTemplate: string = ` + + + + + PDF to PNG Converter + + + + + + + + `; - for (const canvasElement of canvasElements) { - // Screenshot the canvas element. The screenshot will be a PNG buffer. - const screenshotBuffer = (await canvasElement.screenshot({ encoding: 'binary' })) as Buffer; - pngBuffers.push(new Uint8Array(screenshotBuffer)); + // Replace the placeholder with the actual base64 PDF data. + const htmlContent: string = htmlTemplate.replace("__PDF_DATA__", base64Pdf); + + // Set the page content. + await page.setContent(htmlContent, { waitUntil: 'networkidle0' }); + + // Wait until the PDF.js rendering is complete. + await page.waitForFunction(() => (window as any).renderComplete === true, { timeout: 30000 }); + + // Query all canvas elements (each representing a rendered PDF page). + const canvasElements = await page.$$('canvas'); + const pngBuffers: Uint8Array[] = []; + + for (const canvasElement of canvasElements) { + // Screenshot the canvas element. The screenshot will be a PNG buffer. + const screenshotBuffer = (await canvasElement.screenshot({ encoding: 'binary' })) as Buffer; + pngBuffers.push(new Uint8Array(screenshotBuffer)); + } + + await page.close(); + return pngBuffers; + } catch (err) { + await page.close().catch(() => {}); + throw err; } - - await page.close(); - return pngBuffers; } /** @@ -424,94 +473,99 @@ export class SmartPdf { // Create a new page using the headless browser const page = await this.headlessBrowser.newPage(); - // Prepare PDF data as a base64 string - const base64Pdf: string = Buffer.from(pdfBytes).toString('base64'); + try { + // Prepare PDF data as a base64 string + const base64Pdf: string = Buffer.from(pdfBytes).toString('base64'); - // HTML template that loads PDF.js and renders the PDF with scaling - const htmlTemplate: string = ` - - - - - PDF to WebP Preview Converter - - - - - - - - `; + // HTML template that loads PDF.js and renders the PDF with scaling + const htmlTemplate: string = ` + + + + + PDF to WebP Preview Converter + + + + + + + + `; + + // Replace the placeholder with the actual base64 PDF data + const htmlContent: string = htmlTemplate.replace("__PDF_DATA__", base64Pdf); + + // Set the page content + await page.setContent(htmlContent, { waitUntil: 'networkidle0' }); + + // Wait until the PDF.js rendering is complete + await page.waitForFunction(() => (window as any).renderComplete === true, { timeout: 30000 }); + + // Query all canvas elements (each representing a rendered PDF page) + const canvasElements = await page.$$('canvas'); + const webpBuffers: Uint8Array[] = []; + + for (const canvasElement of canvasElements) { + // Screenshot the canvas element as WebP + const screenshotBuffer = (await canvasElement.screenshot({ + type: 'webp', + quality: quality, + encoding: 'binary' + })) as Buffer; + webpBuffers.push(new Uint8Array(screenshotBuffer)); + } + + await page.close(); + return webpBuffers; + } catch (err) { + await page.close().catch(() => {}); + throw err; } - - await page.close(); - return webpBuffers; } /** @@ -538,11 +592,11 @@ export class SmartPdf { // Initialize SmartJimp in sharp mode for progressive JPEG support const smartJimpInstance = new plugins.smartjimp.SmartJimp({ mode: 'sharp' }); - + // Convert each PNG to progressive JPEG const jpegBuffers: Uint8Array[] = []; const quality = options.quality || 85; - + for (const pngBuffer of pngBuffers) { // Convert PNG buffer to progressive JPEG const jpegBuffer = await smartJimpInstance.computeAssetVariation( @@ -550,15 +604,13 @@ export class SmartPdf { { format: 'jpeg', progressive: true, - // SmartJimp uses a different quality scale, need to check if adjustment is needed - // For now, pass through the quality value quality } ); - + jpegBuffers.push(new Uint8Array(jpegBuffer)); } - + return jpegBuffers; } -} \ No newline at end of file +} diff --git a/ts/smartpdf.plugins.ts b/ts/smartpdf.plugins.ts index 8f7c4bf..87d31e7 100644 --- a/ts/smartpdf.plugins.ts +++ b/ts/smartpdf.plugins.ts @@ -1,8 +1,7 @@ // native -import * as http from 'http'; import * as path from 'path'; -export { http, path }; +export { path }; // @pushrocks import * as smartbuffer from '@push.rocks/smartbuffer'; @@ -12,6 +11,7 @@ import * as smartpromise from '@push.rocks/smartpromise'; import * as smartpath from '@push.rocks/smartpath'; import * as smartpuppeteer from '@push.rocks/smartpuppeteer'; import * as smartnetwork from '@push.rocks/smartnetwork'; +import * as smartserve from '@push.rocks/smartserve'; import * as smartunique from '@push.rocks/smartunique'; import * as smartjimp from '@push.rocks/smartjimp'; @@ -24,6 +24,7 @@ export { smartpuppeteer, smartunique, smartnetwork, + smartserve, smartjimp, }; @@ -33,8 +34,7 @@ import * as tsclass from '@tsclass/tsclass'; export { tsclass }; // thirdparty -import express from 'express'; import pdf2json from 'pdf2json'; import pdfLib from 'pdf-lib'; -export { express, pdf2json, pdfLib, }; +export { pdf2json, pdfLib };