diff --git a/changelog.md b/changelog.md index 5155019..5999103 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,14 @@ # Changelog +## 2026-03-22 - 6.4.0 - feat(collections) +add new collection APIs, iterator support, and tree serialization utilities + +- adds new convenience methods and properties across BackpressuredArray, FastMap, LimitedArray, ObjectMap, and Tree, including length/size accessors, iterators, batch operations, and utility helpers +- improves lookup performance by replacing object scans with Map-backed indexing in FastMap, ObjectMap, and InterestMap +- adds TimedAggregator restart support and exports a correctly spelled TimedAggregator alias +- fixes Tree iterator methods and implements JSON hierarchy serialization/deserialization +- expands test coverage substantially for collection classes and related utilities + ## 2026-03-01 - 6.3.1 - fix(classes) cleanup resources, add cancellable timeouts, and fix bugs in several core utility classes diff --git a/package.json b/package.json index a5f2eea..fb1fd0f 100644 --- a/package.json +++ b/package.json @@ -22,21 +22,20 @@ }, "homepage": "https://code.foss.global/push.rocks/lik", "devDependencies": { - "@git.zone/tsbuild": "^4.1.2", - "@git.zone/tsbundle": "^2.9.0", + "@git.zone/tsbuild": "^4.3.0", + "@git.zone/tsbundle": "^2.9.1", "@git.zone/tsrun": "^2.0.1", - "@git.zone/tstest": "^3.1.8", + "@git.zone/tstest": "^3.5.0", "@push.rocks/tapbundle": "^6.0.3", - "@types/node": "^25.3.3" + "@types/node": "^25.5.0", + "@types/symbol-tree": "^3.2.5" }, "dependencies": { "@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartmatch": "^2.0.0", - "@push.rocks/smartpromise": "^4.0.3", + "@push.rocks/smartpromise": "^4.2.3", "@push.rocks/smartrx": "^3.0.10", "@push.rocks/smarttime": "^4.2.3", - "@types/minimatch": "^5.1.2", - "@types/symbol-tree": "^3.2.5", "symbol-tree": "^3.2.4" }, "files": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0156a93..58389da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,7 +15,7 @@ importers: specifier: ^2.0.0 version: 2.0.0 '@push.rocks/smartpromise': - specifier: ^4.0.3 + specifier: ^4.2.3 version: 4.2.3 '@push.rocks/smartrx': specifier: ^3.0.10 @@ -23,9 +23,6 @@ importers: '@push.rocks/smarttime': specifier: ^4.2.3 version: 4.2.3 - '@types/minimatch': - specifier: ^5.1.2 - version: 5.1.2 '@types/symbol-tree': specifier: ^3.2.5 version: 3.2.5 @@ -34,23 +31,23 @@ importers: version: 3.2.4 devDependencies: '@git.zone/tsbuild': - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^4.3.0 + version: 4.3.0 '@git.zone/tsbundle': - specifier: ^2.9.0 - version: 2.9.0 + specifier: ^2.9.1 + version: 2.9.1 '@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.758.0)(socks@2.8.4)(typescript@5.9.3) + specifier: ^3.5.0 + version: 3.5.0(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4)(typescript@5.9.3) '@push.rocks/tapbundle': specifier: ^6.0.3 version: 6.0.3(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4) '@types/node': - specifier: ^25.3.3 - version: 25.3.3 + specifier: ^25.5.0 + version: 25.5.0 packages: @@ -66,12 +63,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'} @@ -99,10 +90,6 @@ packages: resolution: {integrity: sha512-8bOXVYtf/0OUN0jXTIHLv3V0TAS6kvvCRAy7nmiL/fDde0O+ChW1WZU7CVPAOtFEpFCdKskDcxFspM7m1k6qyg==} 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.758.0': resolution: {integrity: sha512-f8SlhU9/93OC/WEI6xVJf/x/GoQFj9a/xXK6QCtr5fvCjfSLgMVFmKTiIl/tgtDRzxUDc8YS6EGtbHjJ3Y/atg==} engines: {node: '>=18.0.0'} @@ -115,14 +102,6 @@ packages: resolution: {integrity: sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==} 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.758.0': resolution: {integrity: sha512-y/rHZqyChlEkNRr59gn4hv0gjhJwGmdCdW0JI1K9p3P9p7EurWGjr2M6+goTn3ilOlcAwrl5oFKR5jLt27TkOA==} engines: {node: '>=18.0.0'} @@ -131,62 +110,30 @@ packages: resolution: {integrity: sha512-N27eFoRrO6MeUNumtNHDW9WOiwfd59LPXPqDrIa3kWL/s+fOKFHb9xIcF++bAwtcZnAxKkgpDCUP+INNZskE+w==} 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.758.0': resolution: {integrity: sha512-Xt9/U8qUCiw1hihztWkNeIR+arg6P+yda10OuCHX6kFVx3auTlU7+hCqs3UxqniGU4dguHuftf3mRpi5/GJ33Q==} 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.758.0': resolution: {integrity: sha512-cymSKMcP5d+OsgetoIZ5QCe1wnp2Q/tq+uIxVdh9MbfdBBEnl9Ecq6dH6VlYS89sp4QKuxHxkWXVnbXU3Q19Aw==} 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.758.0': resolution: {integrity: sha512-+DaMv63wiq7pJrhIQzZYMn4hSarKiizDoJRvyR7WGhnn0oQ/getX9Z0VNCV3i7lIFoLNTb7WMmQ9k7+z/uD5EQ==} 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.758.0': resolution: {integrity: sha512-AzcY74QTPqcbXWVgjpPZ3HOmxQZYPROIBz2YINF0OQk0MhezDWV/O7Xec+K1+MPGQO3qS6EDrUUlnPLjsqieHA==} 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.758.0': resolution: {integrity: sha512-x0FYJqcOLUCv8GLLFDYMXRAQKGjoM+L0BG4BiHYZRDf24yQWFCAZsCQAYKo6XZYh2qznbsW6f//qpyJ5b0QVKQ==} 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.758.0': resolution: {integrity: sha512-XGguXhBqiCXMXRxcfCAVPlMbm3VyJTou79r/3mxWddHWF0XbhaQiBIbUz6vobVTD25YQRbWSmSch7VA8kI5Lrw==} 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.758.0': resolution: {integrity: sha512-BaGVBdm9ynsErIc/mLuUwJ1OQcL/pkhCuAm24jpsif3evZ5wgyZnEAZB2yRin+mQnQaQT3L+KvTbdKGfjL8+fQ==} engines: {node: '>=18.0.0'} @@ -195,114 +142,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.758.0': resolution: {integrity: sha512-o8Rk71S08YTKLoSobucjnbj97OCGaXgpEDNKXpXaavUM5xLNoHCLSUPRCiEN86Ivqxg1n17Y2nSRhfbsveOXXA==} 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.758.0': resolution: {integrity: sha512-6mJ2zyyHPYSV6bAcaFpsdoXZJeQlR1QgBnZZ6juY/+dcYiuyWCdyLUbGzSZSE7GTfx6i+9+QWFeoIMlWKgU63A==} 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.758.0': resolution: {integrity: sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==} 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.758.0': resolution: {integrity: sha512-YZ5s7PSvyF3Mt2h1EQulCG93uybprNGbBkPmVuy/HMMfbFTt4iL3SbKjxqvOZelm86epFfj7pvK7FliI2WOEcg==} 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.758.0': resolution: {integrity: sha512-0RPCo8fYJcrenJ6bRtiUbFOSgQ1CX/GpvwtLU2Fam1tS9h2klKK8d74caeV6A1mIUvBU7bhyQ0wMGlwMtn3EYw==} 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.758.0': resolution: {integrity: sha512-ckptN1tNrIfQUaGWm/ayW1ddG+imbKN7HHhjFdS4VfItsP0QQOB0+Ov+tpgb4MoNR4JaUghMIVStjIeHN2ks1w==} 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'} @@ -315,18 +206,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'} @@ -334,9 +217,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.758.0': resolution: {integrity: sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==} engines: {node: '>=18.0.0'} @@ -346,27 +226,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'} @@ -375,10 +238,6 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.23.4': - resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} @@ -386,8 +245,8 @@ 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==} '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} @@ -399,21 +258,12 @@ packages: '@dabh/diagnostics@2.0.3': resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@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.2': - resolution: {integrity: sha512-RfXR2t67M9kaCoF6CBkKJtVdsdp6p1O7S1OaWjrs8V0S3277ch4bSYfO+8f+QYweXKkI6Tr2PKaq3PIlwFSC1g==} - '@design.estate/dees-domtools@2.3.8': resolution: {integrity: sha512-jUG9GMvPxKMwmRIZ9oLTL3c8hHvHuiwIk8cTrYnuZzGO/uJJ5/czk9o6LRXUuCOOG7TRLtqgOpK8EEQgaadfZA==} - '@design.estate/dees-element@2.0.39': - resolution: {integrity: sha512-AQdGU/+GmWmU5M5pDf+GWT7GU8UN073WZvtIkfqQZemxd35HYU1vpi629m8/PjKd5dIHAU7QN2mKb6IQ8anPgw==} - '@design.estate/dees-element@2.1.6': resolution: {integrity: sha512-7zyHkUjB8UEQgT9VbB2IJtc/yuPt9CI5JGel3b6BxA1kecY64ceIjFvof1uIkc0QP8q2fMLLY45r1c+9zDTjzg==} @@ -585,32 +435,165 @@ packages: '@esm-bundle/chai@4.3.4-fix.0': resolution: {integrity: sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==} - '@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/tspublish@1.11.0': - resolution: {integrity: sha512-dkgaDBTzZJ53lAV72r7OW/W7l/KqpkncFuPojr11JO35OKAbjjDhZbAwPv4oGX9NplyXrhC5VJRPNX/orqNTHA==} + '@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.5.0': + resolution: {integrity: sha512-ugIJzdVkbgqSSw08SZajE7TB01GIYjEAmIy67O5skhvOyszGifwzJdR+8dS1VbQGlUUWQZMGQ2IowllHbAZYJQ==} hasBin: true '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} - '@happy-dom/global-registrator@15.11.7': - resolution: {integrity: sha512-mfOoUlIw8VBiJYPrl5RZfMzkXC/z7gbSpi2ecycrj/gRWLq2CMV+Q+0G+JPjeOmuNFgg0skEIzkVFzVYFP6URw==} - engines: {node: '>=18.0.0'} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] '@inquirer/checkbox@3.0.1': resolution: {integrity: sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==} @@ -688,13 +671,122 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jimp/core@1.6.0': + resolution: {integrity: sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==} + engines: {node: '>=18'} + + '@jimp/diff@1.6.0': + resolution: {integrity: sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==} + engines: {node: '>=18'} + + '@jimp/file-ops@1.6.0': + resolution: {integrity: sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==} + engines: {node: '>=18'} + + '@jimp/js-bmp@1.6.0': + resolution: {integrity: sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==} + engines: {node: '>=18'} + + '@jimp/js-gif@1.6.0': + resolution: {integrity: sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==} + engines: {node: '>=18'} + + '@jimp/js-jpeg@1.6.0': + resolution: {integrity: sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==} + engines: {node: '>=18'} + + '@jimp/js-png@1.6.0': + resolution: {integrity: sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==} + engines: {node: '>=18'} + + '@jimp/js-tiff@1.6.0': + resolution: {integrity: sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==} + engines: {node: '>=18'} + + '@jimp/plugin-blit@1.6.0': + resolution: {integrity: sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==} + engines: {node: '>=18'} + + '@jimp/plugin-blur@1.6.0': + resolution: {integrity: sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==} + engines: {node: '>=18'} + + '@jimp/plugin-circle@1.6.0': + resolution: {integrity: sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==} + engines: {node: '>=18'} + + '@jimp/plugin-color@1.6.0': + resolution: {integrity: sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==} + engines: {node: '>=18'} + + '@jimp/plugin-contain@1.6.0': + resolution: {integrity: sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==} + engines: {node: '>=18'} + + '@jimp/plugin-cover@1.6.0': + resolution: {integrity: sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==} + engines: {node: '>=18'} + + '@jimp/plugin-crop@1.6.0': + resolution: {integrity: sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==} + engines: {node: '>=18'} + + '@jimp/plugin-displace@1.6.0': + resolution: {integrity: sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==} + engines: {node: '>=18'} + + '@jimp/plugin-dither@1.6.0': + resolution: {integrity: sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==} + engines: {node: '>=18'} + + '@jimp/plugin-fisheye@1.6.0': + resolution: {integrity: sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==} + engines: {node: '>=18'} + + '@jimp/plugin-flip@1.6.0': + resolution: {integrity: sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==} + engines: {node: '>=18'} + + '@jimp/plugin-hash@1.6.0': + resolution: {integrity: sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==} + engines: {node: '>=18'} + + '@jimp/plugin-mask@1.6.0': + resolution: {integrity: sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==} + engines: {node: '>=18'} + + '@jimp/plugin-print@1.6.0': + resolution: {integrity: sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==} + engines: {node: '>=18'} + + '@jimp/plugin-quantize@1.6.0': + resolution: {integrity: sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==} + engines: {node: '>=18'} + + '@jimp/plugin-resize@1.6.0': + resolution: {integrity: sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==} + engines: {node: '>=18'} + + '@jimp/plugin-rotate@1.6.0': + resolution: {integrity: sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==} + engines: {node: '>=18'} + + '@jimp/plugin-threshold@1.6.0': + resolution: {integrity: sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==} + engines: {node: '>=18'} + + '@jimp/types@1.6.0': + resolution: {integrity: sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==} + engines: {node: '>=18'} + + '@jimp/utils@1.6.0': + resolution: {integrity: sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==} + engines: {node: '>=18'} + '@koa/router@9.4.0': resolution: {integrity: sha512-dOOXgzqaDoHu5qqMEPLKEgLz5CeIA7q8+1W62mCvFVCOqeC71UoTGJ4u1xUSOpIl2J1x2pqrNULkFteUeZW3/A==} engines: {node: '>= 8.0.0'} - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@lit-labs/ssr-dom-shim@1.3.0': resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==} @@ -833,9 +925,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==} @@ -863,25 +952,21 @@ packages: '@push.rocks/smartarchive@4.2.4': resolution: {integrity: sha512-uiqVAXPxmr8G5rv3uZvZFMOCt8l7cZC3nzvsy4YQqKf/VkPhKIEX+b7LkAeNlxPSYUiBQUkNRoawg9+5BaMcHg==} - '@push.rocks/smartbrowser@2.0.8': - resolution: {integrity: sha512-0KWRZj3TuKo/sNwgPbiSE6WL+TMeR19t1JmXBZWh9n8iA2mpc4HhMrQAndEUdRCkx5ofSaHWojIRVFzGChj0Dg==} + '@push.rocks/smartbrowser@2.0.11': + resolution: {integrity: sha512-Rj3+VodlFbW7CkvXqYxH4dEhtbYy987gVY7wsM76B+ipvnkSfjfEGuKUeMfKe4DscUBSmhlbJVYEYaH8RafUoQ==} '@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.4': resolution: {integrity: sha512-TLfhx/JD61YC8XGO9TI6Ux6US38R14HaIM84QT8hZZod8axfXrg+h8xA8tMUBpSV8PXsQy9LzxmOq0Il1fmDXw==} + '@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.2.0': - resolution: {integrity: sha512-I5fR++k6nR1wiMQUwcTYzO0g8FwD6gN+3HwfIzpQlolrM91i6Q5TaoMlt3aysbvKCSNvkL3FlJLOfUHNGWoWkA==} - deprecated: This package has been renamed. Please use @push.rocks/smartwatch instead. - '@push.rocks/smartcli@4.0.20': resolution: {integrity: sha512-gCo4ItvsPj8WoVAJw/6vkuoGA5FtIoACux2ktcCeH0nrFe7/xGR6waJ1aZcYAi7QN4gi52TlsgwuKz7BzXqhmQ==} @@ -912,12 +997,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==} @@ -933,6 +1018,9 @@ packages: '@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/smartguard@3.1.0': resolution: {integrity: sha512-J23q84f1O+TwFGmd4lrO9XLHUh2DaLXo9PN/9VmTWYzTkQDv5JehmifXVI0esophXcCIfbdIu6hbt7/aHlDF4A==} @@ -945,6 +1033,9 @@ packages: '@push.rocks/smartinteract@2.0.16': resolution: {integrity: sha512-eltvVRRUKBKd77DSFA4DPY2g4V4teZLNe8A93CDy/WglglYcUjxMoLY/b0DFTWCWKYT+yjk6Fe6p0FRrvX9Yvg==} + '@push.rocks/smartjimp@1.2.0': + resolution: {integrity: sha512-SPz8p2ZuphNqIXK/UDsNFrnpJn/jr6FbuBSMQc0V2v2ffQIF32ZqktKQpXpitiqD1K5JEYS56JAhlYHgrAu7yw==} + '@push.rocks/smartjson@5.0.20': resolution: {integrity: sha512-ogGBLyOTluphZVwBYNyjhm5sziPGuiAwWihW07OSRxD4HQUyqj9Ek6r1pqH07JUG5EbtRYivM1Yt1cCwnu3JVQ==} @@ -954,9 +1045,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==} @@ -969,9 +1057,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==} @@ -984,8 +1069,8 @@ packages: '@push.rocks/smartmongo@2.2.0': resolution: {integrity: sha512-ovVCNoJ3D0aBuKtoKaQWWQKvBngaGJq9fAPQigzji1EHsS1XyGpXWCpe5nq/ptGvBROOcpqZcOFEGAcrnb+OjA==} - '@push.rocks/smartnetwork@3.0.2': - resolution: {integrity: sha512-s6CNGzQ1n/d/6cOKXbxeW6/tO//dr1woLqI01g7XhqTriw0nsm2G2kWaZh2J0VOguGNWBgQVCIpR0LjdRNWb3g==} + '@push.rocks/smartmongo@5.1.0': + resolution: {integrity: sha512-2tpKf8K+SMdLHOEpafgKPIN+ypWTLwHc33hCUDNMQ1KaL7vokkavA44+fHxQydOGPMtDi22tSMFeVMCcUSzs4w==} '@push.rocks/smartnetwork@4.4.0': resolution: {integrity: sha512-OvFtz41cvQ7lcXwaIOhghNUUlNoMxvwKDctbDvMyuZyEH08SpLjhyv2FuKbKL/mgwA/WxakTbohoC8SW7t+kiw==} @@ -993,23 +1078,17 @@ 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.0.18': resolution: {integrity: sha512-kIyRTlOoeEth5b4Qp8KPUxNOGNdvhb2aD0hbHfF3oGTQ0xnDdgB1l03/4bIoapHG48OrTgh4uQ5tUorykgdOzw==} '@push.rocks/smartpath@6.0.0': resolution: {integrity: sha512-r94u1MbBaIOSy+517PZp2P7SuZPSe9LkwJ8l3dXQKHeIOri/zDxk/RQPiFM+j4N9301ztkRyhvRj7xgUDroOsg==} - '@push.rocks/smartpdf@3.2.2': - resolution: {integrity: sha512-SKGNHz7HsgU6uVSVrRCL13kIeAFMvd4oQBLI3VmPcMkxXfWNPJkb6jKknqP8bhobWA/ryJS+3Dj///UELUvVKQ==} + '@push.rocks/smartpdf@4.2.0': + resolution: {integrity: sha512-+egzby5QKJGO10MDvWp+N69cJ8i5M354l9ntc+uLRpxuq/FEY9kigpRwMvRYF5qwOBTuGTLqvmvILzlLtboAQg==} '@push.rocks/smartping@1.0.8': resolution: {integrity: sha512-Fvx1Db6hSsDOI6pdiCuS9GjtOX8ugx865YQrPg5vK2iw6Qj/srwyXcWLFYt+19WVKtvtWDJIAKbW+q3bXFsCeA==} @@ -1032,45 +1111,39 @@ packages: '@push.rocks/smartrequest@5.0.1': resolution: {integrity: sha512-gZQQF6HVt3LwTBxaPh6hHObd4VF76PUYQcs5pHD7f0VXaEewmrNAQSnccoinOY7fi45+0dOf04PJOXu9MibPzQ==} - '@push.rocks/smartrouter@1.3.2': - resolution: {integrity: sha512-JtkxClN4CaHXMSeLDNvfWPwiVEPdEoQVSX2ee3gLgbXNO9dt9hvXdIhFrnFeLwyeA6M8nJdb9SqjrjZroYJsxw==} - '@push.rocks/smartrouter@1.3.3': resolution: {integrity: sha512-1+xZEnWlhzqLWAaJ1zFNhQ0zgbfCWQl1DBT72LygLxTs+P0K8AwJKgqo/IX6CT55kGCFnPAZIYSbVJlGsgrB0w==} '@push.rocks/smartrust@1.3.1': resolution: {integrity: sha512-3ApbgF6yGeE2TRQxBY9Y48H1JlpcRheIp7QDBLSSfk80Uoe6fjdgBAfNz3Ir8hW3RZ3b7hA3sm1ZshCok58SEA==} + '@push.rocks/smartrust@1.3.2': + resolution: {integrity: sha512-HPzSJgDnKUdE5fkn2+BC9JvFXk7wl6aURAiHAXjHSCBLtzfgB7jEXjlg+K6CEfMjwQV7sy+hYABlq5DLXcFseQ==} + '@push.rocks/smartrx@3.0.10': resolution: {integrity: sha512-USjIYcsSfzn14cwOsxgq/bBmWDTTzy3ouWAnW5NdMyRRzEbmeNrvmy6TRqNeDlJ2PsYNTt1rr/zGUqvIy72ITg==} '@push.rocks/smarts3@2.2.5': resolution: {integrity: sha512-OZjD0jBCUTJCLnwraxBcyZ3he5buXf2OEM1zipiTBChA2EcKUZWKk/a6KR5WT+NlFCIIuB23UG+U+cxsIWM91Q==} - '@push.rocks/smarts3@3.0.3': - resolution: {integrity: sha512-Y9nXMwurthJ9Z7yi0RwjhPFUC58aY8Mhia8kFo6Xj1tBM4LE8Oxg/ydejF7otHqQGr3QyqV5C4YrDEG17rUuzg==} + '@push.rocks/smartserve@2.0.1': + resolution: {integrity: sha512-YQb2qexfCzCqOlLWBBXKMg6xG4zahCPAxomz/KEKAwHtW6wMTtuHKSTSkRTQ0vl9jssLMAmRz2OyafiL9XGJXQ==} '@push.rocks/smartshell@3.2.3': resolution: {integrity: sha512-BWA/DH1H9lG7Er23d4uYgirfYaya5dX4g/WpWm2la7mOzuL9o2FnPIhel52DQUKIh7ty3Ql305ApV8YaAb4+/w==} - '@push.rocks/smartshell@3.3.0': - resolution: {integrity: sha512-m0w618H6YBs+vXGz1CgS4nPi5CUAnqRtckcS9/koGwfcIx1IpjqmiP47BoCTbdgcv0IPUxQVBG1IXTHPuZ8Z5g==} - - '@push.rocks/smartsitemap@2.0.4': - resolution: {integrity: sha512-76dYWG/o/EjV4vYCK7ZKM35T9xgrI+oHEiiIE6E2MDaFIU6QnSfciTfbscH5nc0vxx8Ah+I0HPEJO94BM2S39w==} - - '@push.rocks/smartsocket@2.0.27': - resolution: {integrity: sha512-planM3EkBvx/+guLLWHLBNnNp4mcWDwp1k9G0It0ul7IhdaBQsSWzKSQJxym3Bx2dypgA2UIeT3/hRvSa5Nqdw==} + '@push.rocks/smartshell@3.3.8': + resolution: {integrity: sha512-t9J/py0vnea4ZtOs7Anc9dc6lcvg6EDvYBw5eE1mB+KUWxMQf/ROIQwWMo6B9SMNY4JS2UwvfuJQJ8makP/7Tg==} '@push.rocks/smartspawn@3.0.3': resolution: {integrity: sha512-DyrGPV69wwOiJgKkyruk5hS3UEGZ99xFAqBE9O2nM8VXCRLbbty3xt1Ug5Z092ZZmJYaaGMSnMw3ijyZJFCT0Q==} - '@push.rocks/smartstate@2.0.19': - resolution: {integrity: sha512-Rx2/2n8YaSBW6b4Ww+lYceq5dwkD+QzcnRwAjQDXlsEe8K+KU2T6revTZyf9PchBoC9pNFaAJofIZNebEGMzYA==} - '@push.rocks/smartstate@2.1.1': resolution: {integrity: sha512-4OM9TXfiiSYIgVz2pQdM2UCTurXwd8o9LCtyZ/o+rnntnXp/X8UTWZ+WyTxgnfuzXhpIYXt83t34bVBJ2EPUOw==} + '@push.rocks/smartstorage@6.3.1': + resolution: {integrity: sha512-Emxwyeb/BH//q32IB2Z34Clz0yR3mjWKgd+qhnAKA6UADRmF3DMemdz5cQVkmpQeD1YE8hu633gHmynsLTFMRA==} + '@push.rocks/smartstream@3.2.5': resolution: {integrity: sha512-PLGGIFDy8JLNVUnnntMSIYN4W081YSbNC7Y/sWpvUT8PAXtbEXXUiDFgK5o3gcI0ptpKQxHAwxhzNlPj0sbFVg==} @@ -1092,15 +1165,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/tapbundle@6.0.3': resolution: {integrity: sha512-SuP14V6TPdtd1y1CYTvwTKJdpHa7EzY55NfaaEMxW4oRKvHgJiOiPEiR/IrtL9tSiDMSfrx12waTMgZheYaBug==} @@ -1197,10 +1268,6 @@ packages: resolution: {integrity: sha512-t2lXXGMpKnPlwubIcYGD6cGi2CUJxJ3t2yftVt8tHfjX68jELA5sJhFMtyD3AeFZVxePFZOCiHwWEbWkSDNnmw==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartpath - '@pushrocks/smartping@1.0.8': - resolution: {integrity: sha512-VM2gfS1sTuycj/jHyDa0lDntkPe7/JT0b2kGsy265RkichAJZkoEp3fboRJH/WAdzM8T4Du64JYgZkc8v2HHQg==} - deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartping - '@pushrocks/smartpromise@3.1.10': resolution: {integrity: sha512-VeTurbZ1+ZMxBDJk1Y1LV8SN9xLI+oDXKVeCFw41FAGEKOUEqordqFpi6t+7Vhe/TXUZzCVpZ5bXxAxrGf8yTQ==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartpromise @@ -1401,130 +1468,66 @@ packages: resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} engines: {node: '>=18.0.0'} - '@smithy/abort-controller@4.2.10': - resolution: {integrity: sha512-qocxM/X4XGATqQtUkbE9SPUB6wekBi+FyJOMbPj0AhvyvFGYEmOlz6VB22iMePCQsFmMIvFSeViDvA7mZJG47g==} - engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader-native@4.0.0': 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'} - '@smithy/config-resolver@4.4.9': - resolution: {integrity: sha512-ejQvXqlcU30h7liR9fXtj7PIAau1t/sFbJpgWPfiYDs7zd16jpH0IsSXKcba2jF6ChTXvIjACs27kNMc5xxE2Q==} - engines: {node: '>=18.0.0'} - '@smithy/core@3.1.5': resolution: {integrity: sha512-HLclGWPkCsekQgsyzxLhCQLa8THWXtB5PxyYN+2O6nkyLt550KQKTlbV2D1/j5dNIQapAZM1+qFnpBFxZQkgCA==} engines: {node: '>=18.0.0'} - '@smithy/core@3.23.6': - resolution: {integrity: sha512-4xE+0L2NrsFKpEVFlFELkIHQddBvMbQ41LRIP74dGCXnY1zQ9DgksrBcRBDJT+iOzGy4VEJIeU3hkUK5mn06kg==} - engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.0.1': resolution: {integrity: sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.2.10': - resolution: {integrity: sha512-3bsMLJJLTZGZqVGGeBVFfLzuRulVsGTj12BzRKODTHqUABpIr0jMN1vN3+u6r2OfyhAQ2pXaMZWX/swBK5I6PQ==} - engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.0.1': 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'} - '@smithy/fetch-http-handler@5.3.11': - resolution: {integrity: sha512-wbTRjOxdFuyEg0CpumjZO0hkUl+fetJFqxNROepuLIoijQh51aMBmzFLfoQdwRjxsuuS2jizzIUTjPWgd8pd7g==} - engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.0.1': 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'} - '@smithy/hash-node@4.2.10': - resolution: {integrity: sha512-1VzIOI5CcsvMDvP3iv1vG/RfLJVVVc67dCRyLSB2Hn9SWCZrDO3zvcIzj3BfEtqRW5kcMg5KAeVf1K3dR6nD3w==} - engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.0.1': 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'} - '@smithy/invalid-dependency@4.2.10': - resolution: {integrity: sha512-vy9KPNSFUU0ajFYk0sDZIYiUlAWGEAhRfehIr5ZkdFrRFTAuXEPUd41USuqHU6vvLX4r6Q9X7MKBco5+Il0Org==} - engines: {node: '>=18.0.0'} - '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} @@ -1533,138 +1536,70 @@ packages: resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} engines: {node: '>=18.0.0'} - '@smithy/is-array-buffer@4.2.1': - resolution: {integrity: sha512-Yfu664Qbf1B4IYIsYgKoABt010daZjkaCRvdU/sPnZG6TtHOB0md0RjNdLGzxe5UIdn9js4ftPICzmkRa9RJ4Q==} - engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.0.1': 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'} - '@smithy/middleware-content-length@4.2.10': - resolution: {integrity: sha512-TQZ9kX5c6XbjhaEBpvhSvMEZ0klBs1CFtOdPFwATZSbC9UeQfKHPLPN9Y+I6wZGMOavlYTOlHEPDrt42PMSH9w==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.0.6': resolution: {integrity: sha512-ftpmkTHIFqgaFugcjzLZv3kzPEFsBFSnq1JsIkr2mwFzCraZVhQk2gqN51OOeRxqhbPTkRFj39Qd2V91E/mQxg==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.20': - resolution: {integrity: sha512-9W6Np4ceBP3XCYAGLoMCmn8t2RRVzuD1ndWPLBbv7H9CrwM9Bprf6Up6BM9ZA/3alodg0b7Kf6ftBK9R1N04vw==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.0.7': resolution: {integrity: sha512-58j9XbUPLkqAcV1kHzVX/kAR16GT+j7DUZJqwzsxh1jtz7G82caZiGyyFgUvogVfNTg3TeAOIJepGc8TXF4AVQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.37': - resolution: {integrity: sha512-/1psZZllBBSQ7+qo5+hhLz7AEPGLx3Z0+e3ramMBEuPK2PfvLK4SrncDB9VegX5mBn+oP/UTDrM6IHrFjvX1ZA==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.2': resolution: {integrity: sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.2.11': - resolution: {integrity: sha512-STQdONGPwbbC7cusL60s7vOa6He6A9w2jWhoapL0mgVjmR19pr26slV+yoSP76SIssMTX/95e5nOZ6UQv6jolg==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.0.1': resolution: {integrity: sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.2.10': - resolution: {integrity: sha512-pmts/WovNcE/tlyHa8z/groPeOtqtEpp61q3W0nW1nDJuMq/x+hWa/OVQBtgU0tBqupeXq0VBOLA4UZwE8I0YA==} - engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.0.1': resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.3.10': - resolution: {integrity: sha512-UALRbJtVX34AdP2VECKVlnNgidLHA2A7YgcJzwSBg1hzmnO/bZBHl/LDQQyYifzUwp1UOODnl9JJ3KNawpUJ9w==} - engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.0.3': resolution: {integrity: sha512-dYCLeINNbYdvmMLtW0VdhW1biXt+PPCGazzT5ZjKw46mOtdgToQEwjqZSS9/EN8+tNs/RO0cEWG044+YZs97aA==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.4.12': - resolution: {integrity: sha512-zo1+WKJkR9x7ZtMeMDAAsq2PufwiLDmkhcjpWPRRkmeIuOm6nq1qjFICSZbnjBvD09ei8KMo26BWxsu2BUU+5w==} - engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.1': resolution: {integrity: sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.2.10': - resolution: {integrity: sha512-5jm60P0CU7tom0eNrZ7YrkgBaoLFXzmqB0wVS+4uK8PPGmosSrLNf6rRd50UBvukztawZ7zyA8TxlrKpF5z9jw==} - engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.0.1': resolution: {integrity: sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.3.10': - resolution: {integrity: sha512-2NzVWpYY0tRdfeCJLsgrR89KE3NTWT2wGulhNUxYlRmtRmPwLQwKzhrfVaiNlA9ZpJvbW7cjTVChYKgnkqXj1A==} - engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.0.1': resolution: {integrity: sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.2.10': - resolution: {integrity: sha512-HeN7kEvuzO2DmAzLukE9UryiUvejD3tMp9a1D1NJETerIfKobBUCLfviP6QEk500166eD2IATaXM59qgUI+YDA==} - engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.0.1': resolution: {integrity: sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.2.10': - resolution: {integrity: sha512-4Mh18J26+ao1oX5wXJfWlTT+Q1OpDR8ssiC9PDOuEgVBGloqg18Fw7h5Ct8DyT9NBYwJgtJ2nLjKKFU6RP1G1Q==} - engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.1': resolution: {integrity: sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.2.10': - resolution: {integrity: sha512-0R/+/Il5y8nB/By90o8hy/bWVYptbIfvoTYad0igYQO5RefhNCDmNzqxaMx7K1t/QWo0d6UynqpqN5cCQt1MCg==} - engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.1': resolution: {integrity: sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.4.5': - resolution: {integrity: sha512-pHgASxl50rrtOztgQCPmOXFjRW+mCd7ALr/3uXNzRrRoGV5G2+78GOsQ3HlQuBVHCh9o6xqMNvlIKZjWn4Euug==} - engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.0.1': 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'} - '@smithy/smithy-client@4.12.0': - resolution: {integrity: sha512-R8bQ9K3lCcXyZmBnQqUZJF4ChZmtWT5NLi6x5kgWx5D+/j0KorXcA0YcFg/X5TOgnTCy1tbKc6z2g2y4amFupQ==} - engines: {node: '>=18.0.0'} - '@smithy/types@4.1.0': resolution: {integrity: sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==} engines: {node: '>=18.0.0'} @@ -1677,34 +1612,18 @@ packages: resolution: {integrity: sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.2.10': - resolution: {integrity: sha512-uypjF7fCDsRk26u3qHmFI/ePL7bxxB9vKkE+2WKEciHhz+4QtbzWiHRVNRJwU3cKhrYDYQE3b0MRFtqfLYdA4A==} - engines: {node: '>=18.0.0'} - '@smithy/util-base64@4.0.0': resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} engines: {node: '>=18.0.0'} - '@smithy/util-base64@4.3.1': - resolution: {integrity: sha512-BKGuawX4Doq/bI/uEmg+Zyc36rJKWuin3py89PquXBIBqmbnJwBBsmKhdHfNEp0+A4TDgLmT/3MSKZ1SxHcR6w==} - engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.0.0': resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.2.1': - resolution: {integrity: sha512-SiJeLiozrAoCrgDBUgsVbmqHmMgg/2bA15AzcbcW+zan7SuyAVHN4xTSbq0GlebAIwlcaX32xacnrG488/J/6g==} - engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@4.0.0': resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@4.2.2': - resolution: {integrity: sha512-4rHqBvxtJEBvsZcFQSPQqXP2b/yy/YlB66KlcEgcH2WNoOKCKB03DSLzXmOsXjbl8dJ4OEYTn31knhdznwk7zw==} - engines: {node: '>=18.0.0'} - '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} @@ -1713,82 +1632,42 @@ packages: resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} engines: {node: '>=18.0.0'} - '@smithy/util-buffer-from@4.2.1': - resolution: {integrity: sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==} - engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.0.0': resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.2.1': - resolution: {integrity: sha512-462id/00U8JWFw6qBuTSWfN5TxOHvDu4WliI97qOIOnuC/g+NDAknTU8eoGXEPlLkRVgWEr03jJBLV4o2FL8+A==} - engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.7': resolution: {integrity: sha512-CZgDDrYHLv0RUElOsmZtAnp1pIjwDVCSuZWOPhIOBvG36RDfX1Q9+6lS61xBf+qqvHoqRjHxgINeQz47cYFC2Q==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.3.36': - resolution: {integrity: sha512-R0smq7EHQXRVMxkAxtH5akJ/FvgAmNF6bUy/GwY/N20T4GrwjT633NFm0VuRpC+8Bbv8R9A0DoJ9OiZL/M3xew==} - engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.7': resolution: {integrity: sha512-79fQW3hnfCdrfIi1soPbK3zmooRFnLpSx3Vxi6nUlqaaQeC5dm8plt4OTNDNqEEEDkvKghZSaoti684dQFVrGQ==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.2.39': - resolution: {integrity: sha512-otWuoDm35btJV1L8MyHrPl462B07QCdMTktKc7/yM+Psv6KbED/ziXiHnmr7yPHUjfIwE9S8Max0LO24Mo3ZVg==} - engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.1': resolution: {integrity: sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.3.1': - resolution: {integrity: sha512-xyctc4klmjmieQiF9I1wssBWleRV0RhJ2DpO8+8yzi2LO1Z+4IWOZNGZGNj4+hq9kdo+nyfrRLmQTzc16Op2Vg==} - engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.0.0': resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.2.1': - resolution: {integrity: sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==} - engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.1': resolution: {integrity: sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.2.10': - resolution: {integrity: sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==} - engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.1': resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.2.10': - resolution: {integrity: sha512-HrBzistfpyE5uqTwiyLsFHscgnwB0kgv8vySp7q5kZ0Eltn/tjosaSGGDj/jJ9ys7pWzIP/icE2d+7vMKXLv7A==} - engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.1.2': resolution: {integrity: sha512-44PKEqQ303d3rlQuiDpcCcu//hV8sn+u2JBo84dWCE0rvgeiVl0IlLMagbU++o0jCWhYCsHaAt9wZuZqNe05Hw==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.5.15': - resolution: {integrity: sha512-OlOKnaqnkU9X+6wEkd7mN+WB7orPbCVDauXOj22Q7VtiTkvy7ZdSsOg4QiNAZMgI4OkvNf+/VLUC3VXkxuWJZw==} - engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@4.0.0': resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@4.2.1': - resolution: {integrity: sha512-YmiUDn2eo2IOiWYYvGQkgX5ZkBSiTQu4FlDo5jNPpAxng2t6Sjb6WutnZV9l6VR4eJul1ABmCrnWBC9hKHQa6Q==} - engines: {node: '>=18.0.0'} - '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} @@ -1797,25 +1676,10 @@ packages: resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} engines: {node: '>=18.0.0'} - '@smithy/util-utf8@4.2.1': - resolution: {integrity: sha512-DSIwNaWtmzrNQHv8g7DBGR9mulSit65KSj5ymGEIAknmIN8IpbZefEep10LaMG/P/xquwbmJ1h9ectz8z6mV6g==} - engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.0.2': 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'} @@ -1853,6 +1717,9 @@ packages: '@tsclass/tsclass@9.3.0': resolution: {integrity: sha512-KD3oTUN3RGu67tgjNHgWWZGsdYipr1RUDxQ9MMKSgIJ6oNZ4q5m2rg0ibrgyHWkAjTPlHVa6kHP3uVOY+8bnHw==} + '@tsclass/tsclass@9.5.0': + resolution: {integrity: sha512-HwMVwkrBnEFMjwOsMkGwWN/q+XEczSpf4a/PBAXgkDdV6sXdxAMFXUH1tW8Y5ecuvXFYMvFry4X57MCCT7Dm8A==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1892,15 +1759,9 @@ packages: '@types/convert-source-map@2.0.3': resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==} - '@types/cookie@0.4.1': - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - '@types/cookies@0.9.0': resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} - '@types/cors@2.8.17': - resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} - '@types/debounce@1.2.4': resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==} @@ -1910,18 +1771,12 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/default-gateway@3.0.1': - resolution: {integrity: sha512-tpu0hp+AOIzwdAHyZPzLE5pCf9uT0pb+xZ76T4S7MrY2YTVq918Q7Q2VQ3KCVQqYxM7nxuCK/SL3X97jBEIeKQ==} - '@types/express-serve-static-core@5.0.6': resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} '@types/express@5.0.0': resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} - '@types/express@5.0.6': - resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} - '@types/fast-json-stable-stringify@2.1.2': resolution: {integrity: sha512-vsxcbfLDdjytnCnHXtinE40Xl46Wr7l/VGRGt7ewJwCPMKEHOdEsTxXX8xwgoR7cbc+6dE8SB4jlMrOV2zAg7g==} deprecated: This is a stub types definition. fast-json-stable-stringify provides its own type definitions, so you do not need this installed. @@ -2004,11 +1859,14 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node@16.9.1': + resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} + '@types/node@22.13.9': resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==} - '@types/node@25.3.3': - resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==} + '@types/node@25.5.0': + resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -2040,9 +1898,6 @@ packages: '@types/serve-static@1.15.7': resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - '@types/serve-static@2.2.0': - resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} - '@types/sinon-chai@3.2.12': resolution: {integrity: sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==} @@ -2135,14 +1990,14 @@ packages: resolution: {integrity: sha512-84E1025aUSjvZU1j17eCTwV7m5Zg3cZHErV3+CaJM9JPCesZwLraIa0ONIQ9w4KLgcDgJFw9UnJ0LbFf42h6tg==} engines: {node: '>=18.0.0'} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} - acme-client@5.4.0: resolution: {integrity: sha512-mORqg60S8iML6XSmVjqjGHJkINrCGLMj2QvDmFzI9vIlv1RGlyjmw3nrzaINJjkNsYXC41XhhD5pfy7CtuGcbA==} engines: {node: '>= 16'} @@ -2155,10 +2010,6 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - aggregate-error@4.0.1: - resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} - engines: {node: '>=12'} - ansi-256-colors@1.1.0: resolution: {integrity: sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo=} engines: {node: '>=0.10.0'} @@ -2191,15 +2042,15 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-flatten@1.1.1: - resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} - array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -2225,6 +2076,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + await-to-js@3.0.0: + resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==} + engines: {node: '>=6.0.0'} + axe-core@4.10.2: resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} engines: {node: '>=4'} @@ -2273,21 +2128,12 @@ 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'} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - body-parser@2.2.2: - resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} - engines: {node: '>=18'} + bmp-ts@1.0.9: + resolution: {integrity: sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==} bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} @@ -2306,9 +2152,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - broadcast-channel@7.0.0: - resolution: {integrity: sha512-a2tW0Ia1pajcPBOGUF2jXlDnvE9d5/dg6BG9h60OmRUcZVr/veUrU8vEQFwwQIhwG3KVzYwSk3v2nRRGFgQDXQ==} - broadcast-channel@7.3.0: resolution: {integrity: sha512-UHPhLBQKfQ8OmMFMpmPfO5dRakyA1vsfiDGWTYNvChYol65tbuhivPEGgZZiuetorvExdvxaWiBy/ym1Ty08yA==} @@ -2426,10 +2269,6 @@ packages: resolution: {integrity: sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=} engines: {node: '>=4'} - clean-stack@4.2.0: - resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} - engines: {node: '>=12'} - cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -2503,10 +2342,6 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} - content-disposition@1.0.1: - resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} - engines: {node: '>=18'} - content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -2514,29 +2349,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} - - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} - - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cookies@0.9.1: resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} engines: {node: '>= 0.8'} - 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'} @@ -2581,14 +2397,6 @@ packages: debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2597,15 +2405,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'} @@ -2689,6 +2488,10 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2707,14 +2510,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - dns-socket@4.2.2: - resolution: {integrity: sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==} - engines: {node: '>=6'} - dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -2738,28 +2533,9 @@ packages: resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} engines: {node: '>= 0.8'} - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - engine.io-client@6.5.4: - resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} - - engine.io-parser@5.2.3: - resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} - engines: {node: '>=10.0.0'} - - engine.io@6.5.4: - resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} - engines: {node: '>=10.2.0'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -2843,29 +2619,28 @@ packages: resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} engines: {node: '>= 0.6'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - 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'} - - express@5.2.1: - resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} - engines: {node: '>= 18'} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2882,10 +2657,6 @@ packages: resolution: {integrity: sha512-cB507r5T3D55DfclY01GLkninZLfU7HXV/mhVRTnTRm5k2u+fY7Fof2dBkr80p5t7G7dlA/G5dI87QiMdPpMCQ==} engines: {node: '>=18'} - fake-indexeddb@6.0.0: - resolution: {integrity: sha512-YEboHE5VfopUclOck7LncgIqskAqnv4q0EWbYCaxKKjAvO93c+TJIaBuGy8CBFdbg9nKdpN3AuPRwVBJ4k7NrQ==} - engines: {node: '>=18'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2899,9 +2670,6 @@ 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@3.21.1: resolution: {integrity: sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==} hasBin: true @@ -2910,18 +2678,6 @@ packages: 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 - fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -2941,6 +2697,10 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + file-type@19.6.0: resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==} engines: {node: '>=18'} @@ -2953,14 +2713,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - finalhandler@2.1.1: - resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} - engines: {node: '>= 18.0.0'} - find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -3005,18 +2757,10 @@ packages: resolution: {integrity: sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=} engines: {node: '>=0.4.x'} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - fresh@0.5.2: resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} engines: {node: '>= 0.6'} - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} - fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -3075,6 +2819,9 @@ packages: resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} + gifwrap@0.10.1: + resolution: {integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3110,10 +2857,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-flag@3.0.0: resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} @@ -3180,10 +2923,6 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -3210,10 +2949,6 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.2: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} - engines: {node: '>=0.10.0'} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3221,14 +2956,13 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + image-q@4.0.0: + resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -3261,10 +2995,6 @@ packages: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} - ip-regex@5.0.0: - resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -3300,10 +3030,6 @@ packages: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} - is-ip@4.0.0: - resolution: {integrity: sha512-4B4XA2HEIm/PY+OSpeMBXr8pGWBYbXuHgjMAqrwbLO3CPTCAd9ArEJzBUKGZtk9viY6+aSfadGnWyjY3ydYZkw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -3324,9 +3050,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3362,6 +3085,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'} + isopen@1.3.0: resolution: {integrity: sha512-AN6Q9J0UlqHFl1fN/2xJCHCBLCBCFDjZhpGBO1gh3wzgRPsFSFBUL36I2Lbfd9qkuoj58axmE7j83iejTQsk8Q==} @@ -3405,6 +3132,13 @@ packages: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jimp@1.6.0: + resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} + engines: {node: '>=18'} + + jpeg-js@0.4.4: + resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} + js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} @@ -3474,20 +3208,6 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - lenis@1.1.22: - resolution: {integrity: sha512-mHNfRSKixzy/QWfo0viB7qfTOqfm5IRTa0e3A1upcsAYFJdVTqUSqifAJccNx5Vtv0FZ5xgqD2MW0VdCjBuiig==} - 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==} @@ -3513,42 +3233,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=} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -3657,20 +3344,9 @@ packages: resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3777,21 +3453,13 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} hasBin: true mime@4.0.6: @@ -3893,9 +3561,6 @@ packages: socks: optional: true - ms@2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3920,10 +3585,6 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} - netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -3951,10 +3612,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - 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'} @@ -3963,10 +3620,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'} @@ -3974,6 +3627,9 @@ packages: observable-fns@0.6.1: resolution: {integrity: sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==} + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -4056,6 +3712,15 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -4098,9 +3763,6 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -4115,12 +3777,15 @@ packages: pdf-lib@1.17.1: resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} - pdf2json@3.1.5: - resolution: {integrity: sha512-djZPInDLNuJU+o6GaJNvcoUh6MtUAx3IYTQCTxywHzeg1jC5YWgz/XzlgmduxxBblpMTqY2fjcWwvyRdGPTyrQ==} - engines: {node: '>=20.18.0', npm: '>=10.8.2'} + pdf2json@4.0.2: + resolution: {integrity: sha512-iiRSuRmLihoEJ4YGkoqSq3/r4MR0OmkMTYDda0Pq7DAWqJwMylTilXu46T16gfS3DUp3fhiVuz7NtRMbk3uBhw==} + engines: {node: '>=20.18.0'} hasBin: true - bundledDependencies: - - '@xmldom/xmldom' + bundledDependencies: [] + + peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} peek-readable@5.4.2: resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} @@ -4144,10 +3809,22 @@ packages: resolution: {integrity: sha512-56ZMC0j7SCsMMLdOoUg12VZCfj/+ZO+yfOSjaNCRrmZZr6GLbN2X/Ui56T15dI8NhiHckaw5X2pvyfAomanwqQ==} engines: {node: '>=4.0.0'} + pixelmatch@5.3.0: + resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} + hasBin: true + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + pngjs@6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} + + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4164,6 +3841,10 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} + process@0.11.10: + resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} + engines: {node: '>= 0.6.0'} + progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -4174,10 +3855,6 @@ packages: proto-list@1.2.4: resolution: {integrity: sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - proxy-agent@6.5.0: resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} @@ -4185,10 +3862,6 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - public-ip@6.0.2: - resolution: {integrity: sha512-+6bkjnf0yQ4+tZV0zJv1017DiIF7y6R4yg17Mrhhkc25L7dtQtXWHgSCrz9BbLL4OeTFbPK4EALXqJUrwCIWXw==} - engines: {node: '>=14.16'} - pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -4215,18 +3888,10 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - qs@6.14.0: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} - qs@6.15.0: - resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} - engines: {node: '>=0.6'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4238,18 +3903,10 @@ packages: resolution: {integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==} engines: {node: '>= 0.10.0'} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - raw-body@3.0.2: - resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} - engines: {node: '>= 0.10'} - rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -4261,6 +3918,14 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readable-web-to-node-stream@3.0.4: + 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'} @@ -4272,9 +3937,6 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - registry-auth-token@5.1.0: resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} engines: {node: '>=14'} @@ -4345,10 +4007,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} - run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -4378,6 +4036,10 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -4392,22 +4054,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - send@1.2.1: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - serve-static@2.2.1: - resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} - engines: {node: '>= 18'} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -4418,6 +4064,10 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4452,6 +4102,10 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=} + simple-xml-to-json@1.2.4: + resolution: {integrity: sha512-3MY16e0ocMHL7N1ufpdObURGyX+lCo0T/A+y6VCwosLdH1HSda4QZl1Sdt/O+2qWp48WFi26XEp5rF0LoaL0Dg==} + engines: {node: '>=20.12.2'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4464,21 +4118,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.7.5: - resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} - 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.7.5: - resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} - engines: {node: '>=10.2.0'} - socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} @@ -4526,10 +4165,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} - streamsearch@0.1.2: resolution: {integrity: sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=} engines: {node: '>=0.8.0'} @@ -4574,13 +4209,14 @@ packages: strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} - strnum@2.2.0: - resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==} - strtok3@10.3.4: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} + strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + strtok3@9.1.1: resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} engines: {node: '>=16'} @@ -4599,18 +4235,16 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - systeminformation@5.25.11: - resolution: {integrity: sha512-jI01fn/t47rrLTQB0FTlMCC+5dYx8o0RRF+R4BPiUNsvg5OdY0s9DKMFmJGrx5SwMZQ4cag0Gl6v8oycso9b/g==} - engines: {node: '>=8.0.0'} - os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] - hasBin: true - systeminformation@5.31.1: resolution: {integrity: sha512-6pRwxoGeV/roJYpsfcP6tN9mep6pPeCtXbUOCdVa0nme05Brwcwdge/fVNhIZn2wuUitAKZm4IYa7QjnRIa9zA==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tar-fs@3.0.8: resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} @@ -4632,6 +4266,9 @@ packages: tiny-worker@2.3.0: resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -4644,6 +4281,10 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + token-types@6.0.0: resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==} engines: {node: '>=14.16'} @@ -4715,14 +4356,14 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.5.0: + resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} + engines: {node: '>=20'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} - typed-query-selector@2.12.0: resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} @@ -4786,13 +4427,12 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} + utif2@4.1.0: + resolution: {integrity: sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==} + util-deprecate@1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} - engines: {node: '>= 0.4.0'} - uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -4811,10 +4451,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'} @@ -4833,6 +4469,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 + winston-transport@4.9.0: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} @@ -4868,30 +4509,6 @@ packages: utf-8-validate: optional: true - ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - 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.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.19.0: resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} @@ -4904,19 +4521,21 @@ packages: utf-8-validate: optional: true - xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} - engines: {node: '>= 14.6'} - hasBin: true - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -4980,71 +4599,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.2.0 - '@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.4.2 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartsitemap': 2.0.4 - '@push.rocks/smartstream': 3.2.5 - '@push.rocks/smarttime': 4.2.3 - '@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.2 - cors: 2.8.5 - express: 5.2.1 - express-force-ssl: 0.3.2 - lit: 3.3.2 - 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.0.27 - '@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 @@ -5137,66 +4691,6 @@ snapshots: - 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 - '@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-stream': 4.5.15 - '@smithy/util-utf8': 4.2.1 - '@smithy/util-waiter': 4.2.10 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/client-s3@3.758.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 @@ -5315,27 +4809,6 @@ 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.758.0': dependencies: '@aws-sdk/client-cognito-identity': 3.758.0 @@ -5355,14 +4828,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.758.0': dependencies: '@aws-sdk/core': 3.758.0 @@ -5376,19 +4841,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.758.0': dependencies: '@aws-sdk/core': 3.758.0 @@ -5407,38 +4859,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.758.0': dependencies: '@aws-sdk/credential-provider-env': 3.758.0 @@ -5456,23 +4876,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.758.0': dependencies: '@aws-sdk/core': 3.758.0 @@ -5482,15 +4885,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.758.0': dependencies: '@aws-sdk/client-sso': 3.758.0 @@ -5504,19 +4898,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.758.0': dependencies: '@aws-sdk/core': 3.758.0 @@ -5528,18 +4909,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.758.0': dependencies: '@aws-sdk/client-cognito-identity': 3.758.0 @@ -5573,16 +4942,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 @@ -5590,13 +4949,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.758.0': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -5613,23 +4965,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 @@ -5637,37 +4972,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 @@ -5675,14 +4991,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.758.0': dependencies: '@aws-sdk/core': 3.758.0 @@ -5700,35 +5008,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.758.0': dependencies: '@aws-sdk/core': 3.758.0 @@ -5739,16 +5024,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.758.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -5792,49 +5067,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 @@ -5844,14 +5076,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.758.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.758.0 @@ -5861,15 +5085,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.758.0': dependencies: '@aws-sdk/nested-clients': 3.758.0 @@ -5881,18 +5096,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 @@ -5907,10 +5110,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 @@ -5918,14 +5117,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 @@ -5937,13 +5128,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.758.0': dependencies: '@aws-sdk/middleware-user-agent': 3.758.0 @@ -5952,27 +5136,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 @@ -5981,15 +5149,11 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} - '@babel/runtime@7.23.4': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.28.6': {} '@borewit/text-codec@0.2.1': {} - '@cloudflare/workers-types@4.20260305.0': {} + '@cfworker/json-schema@4.1.1': {} '@colors/colors@1.6.0': {} @@ -6003,13 +5167,6 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@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.0.0 - '@design.estate/dees-comms@1.0.30': dependencies: '@api.global/typedrequest': 3.2.6 @@ -6017,32 +5174,6 @@ snapshots: '@push.rocks/smartdelay': 3.0.5 broadcast-channel: 7.3.0 - '@design.estate/dees-domtools@2.3.2': - 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.2 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smartstate': 2.0.19 - '@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.1.22 - lit: 3.3.2 - 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 @@ -6069,18 +5200,6 @@ snapshots: - supports-color - vue - '@design.estate/dees-element@2.0.39': - dependencies: - '@design.estate/dees-domtools': 2.3.2 - '@push.rocks/isounique': 1.0.5 - '@push.rocks/smartrx': 3.0.10 - lit: 3.3.2 - transitivePeerDependencies: - - '@nuxt/kit' - - react - - supports-color - - vue - '@design.estate/dees-element@2.1.6': dependencies: '@design.estate/dees-domtools': 2.3.8 @@ -6191,23 +5310,26 @@ snapshots: dependencies: '@types/chai': 4.3.20 - '@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 typescript: 5.9.3 transitivePeerDependencies: + - '@nuxt/kit' - aws-crt + - react - supports-color + - vue - '@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 @@ -6227,25 +5349,31 @@ snapshots: rolldown: 1.0.0-beta.52 typescript: 5.9.3 transitivePeerDependencies: + - '@nuxt/kit' - '@swc/helpers' + - react - supports-color + - vue - '@git.zone/tspublish@1.11.0': + '@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.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 '@push.rocks/smartrequest': 5.0.1 - '@push.rocks/smartshell': 3.3.0 + '@push.rocks/smartshell': 3.3.8 transitivePeerDependencies: + - '@nuxt/kit' - aws-crt + - react - supports-color + - vue '@git.zone/tsrun@2.0.1': dependencies: @@ -6253,30 +5381,31 @@ snapshots: '@push.rocks/smartshell': 3.2.3 tsx: 4.21.0 - '@git.zone/tstest@3.1.8(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4)(typescript@5.9.3)': + '@git.zone/tstest@3.5.0(@aws-sdk/credential-providers@3.758.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.2.0 + '@push.rocks/smartbrowser': 2.0.11(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.758.0)(socks@2.8.4) + '@push.rocks/smartmongo': 5.1.0(@aws-sdk/credential-providers@3.758.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/smartserve': 2.0.1 + '@push.rocks/smartshell': 3.3.8 + '@push.rocks/smartstorage': 6.3.1 '@push.rocks/smarttime': 4.2.3 + '@push.rocks/smartwatch': 6.3.0 '@types/ws': 8.18.1 figures: 6.1.0 ws: 8.19.0 @@ -6301,9 +5430,101 @@ snapshots: '@hapi/bourne@3.0.0': {} - '@happy-dom/global-registrator@15.11.7': + '@img/colour@1.1.0': {} + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': dependencies: - happy-dom: 15.11.7 + '@emnapi/runtime': 1.8.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true '@inquirer/checkbox@3.0.1': dependencies: @@ -6425,10 +5646,199 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/yargs': 17.0.33 chalk: 4.1.2 + '@jimp/core@1.6.0': + dependencies: + '@jimp/file-ops': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + await-to-js: 3.0.0 + exif-parser: 0.1.12 + file-type: 16.5.4 + mime: 3.0.0 + + '@jimp/diff@1.6.0': + dependencies: + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + pixelmatch: 5.3.0 + + '@jimp/file-ops@1.6.0': {} + + '@jimp/js-bmp@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + bmp-ts: 1.0.9 + + '@jimp/js-gif@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + gifwrap: 0.10.1 + omggif: 1.0.10 + + '@jimp/js-jpeg@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + jpeg-js: 0.4.4 + + '@jimp/js-png@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + pngjs: 7.0.0 + + '@jimp/js-tiff@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + utif2: 4.1.0 + + '@jimp/plugin-blit@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-blur@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/utils': 1.6.0 + + '@jimp/plugin-circle@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-color@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + tinycolor2: 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-contain@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-cover@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-crop@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-displace@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-dither@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + + '@jimp/plugin-fisheye@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-flip@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-hash@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/js-bmp': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/js-tiff': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + any-base: 1.1.0 + + '@jimp/plugin-mask@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-print@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/types': 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.6 + simple-xml-to-json: 1.2.4 + zod: 3.24.2 + + '@jimp/plugin-quantize@1.6.0': + dependencies: + image-q: 4.0.0 + zod: 3.24.2 + + '@jimp/plugin-resize@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-rotate@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-threshold@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-hash': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/types@1.6.0': + dependencies: + zod: 3.24.2 + + '@jimp/utils@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + tinycolor2: 1.6.0 + '@koa/router@9.4.0': dependencies: debug: 4.4.0 @@ -6439,8 +5849,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@leichtgewicht/ip-codec@2.0.5': {} - '@lit-labs/ssr-dom-shim@1.3.0': {} '@lit-labs/ssr-dom-shim@1.5.1': {} @@ -6659,11 +6067,11 @@ snapshots: '@puppeteer/browsers@2.7.1': dependencies: - debug: 4.4.0 + debug: 4.4.3 extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 - semver: 7.7.1 + semver: 7.7.4 tar-fs: 3.0.8 yargs: 17.7.2 transitivePeerDependencies: @@ -6680,33 +6088,32 @@ snapshots: '@push.rocks/early@4.0.4': dependencies: - '@push.rocks/consolecolor': 2.0.2 + '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/isohash@2.0.1': - dependencies: - '@pushrocks/smartenv': 5.0.5 - '@pushrocks/smarthash': 3.0.2 - '@push.rocks/isounique@1.0.5': {} '@push.rocks/levelcache@3.1.1': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartbucket': 3.3.7 '@push.rocks/smartcache': 1.0.16 - '@push.rocks/smartenv': 5.0.12 + '@push.rocks/smartenv': 5.0.13 '@push.rocks/smartexit': 1.0.23 '@push.rocks/smartfile': 11.2.7 - '@push.rocks/smartjson': 5.0.20 + '@push.rocks/smartjson': 5.2.0 '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartstring': 4.0.15 + '@push.rocks/smartstring': 4.1.0 '@push.rocks/smartunique': 3.0.9 - '@push.rocks/taskbuffer': 3.1.7 + '@push.rocks/taskbuffer': 3.5.0 '@tsclass/tsclass': 4.4.0 transitivePeerDependencies: + - '@nuxt/kit' - aws-crt + - react + - supports-color + - vue '@push.rocks/lik@6.1.0': dependencies: @@ -6746,13 +6153,18 @@ snapshots: dependencies: '@push.rocks/qenv': 6.1.3 '@push.rocks/smartfile': 11.2.7 - '@push.rocks/smartjson': 5.0.20 + '@push.rocks/smartjson': 5.2.0 '@push.rocks/smartlog': 3.2.1 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartrx': 3.0.10 - '@push.rocks/taskbuffer': 3.1.7 + '@push.rocks/taskbuffer': 3.5.0 '@tsclass/tsclass': 9.3.0 + transitivePeerDependencies: + - '@nuxt/kit' + - react + - supports-color + - vue '@push.rocks/qenv@6.1.0': dependencies: @@ -6764,7 +6176,7 @@ snapshots: '@push.rocks/qenv@6.1.3': dependencies: - '@api.global/typedrequest': 3.1.10 + '@api.global/typedrequest': 3.2.6 '@configvault.io/interfaces': 1.0.17 '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartlog': 3.2.1 @@ -6788,18 +6200,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@push.rocks/smartbrowser@2.0.8(typescript@5.9.3)': + '@push.rocks/smartbrowser@2.0.11(typescript@5.9.3)': dependencies: '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartpdf': 3.2.2(typescript@5.9.3) + '@push.rocks/smartpdf': 4.2.0(typescript@5.9.3) '@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.3) '@push.rocks/smartunique': 3.0.9 transitivePeerDependencies: + - '@nuxt/kit' + - aws-crt - bare-buffer - bufferutil + - react - supports-color - typescript - utf-8-validate + - vue '@push.rocks/smartbucket@3.3.7': dependencies: @@ -6815,25 +6231,14 @@ 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.4': dependencies: uint8array-extras: 1.4.0 + '@push.rocks/smartbuffer@3.0.5': + dependencies: + uint8array-extras: 1.4.0 + '@push.rocks/smartcache@1.0.16': dependencies: '@pushrocks/smartdelay': 2.0.13 @@ -6842,14 +6247,6 @@ snapshots: '@pushrocks/smartpromise': 3.1.10 '@pushrocks/smarttime': 4.0.1 - '@push.rocks/smartchok@1.2.0': - dependencies: - '@push.rocks/lik': 6.2.2 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - chokidar: 5.0.0 - picomatch: 4.0.3 - '@push.rocks/smartcli@4.0.20': dependencies: '@push.rocks/lik': 6.2.2 @@ -6934,17 +6331,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.0': @@ -7005,6 +6402,11 @@ snapshots: dependencies: '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartfs@1.5.0': + dependencies: + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrust': 1.3.1 + '@push.rocks/smartguard@3.1.0': dependencies: '@push.rocks/smartpromise': 4.2.3 @@ -7027,11 +6429,27 @@ snapshots: '@push.rocks/smartinteract@2.0.16': dependencies: - '@push.rocks/lik': 6.1.0 + '@push.rocks/lik': 6.2.2 '@push.rocks/smartobject': 1.0.12 '@push.rocks/smartpromise': 4.2.3 inquirer: 11.1.0 + '@push.rocks/smartjimp@1.2.0': + dependencies: + '@push.rocks/levelcache': 3.1.1 + '@push.rocks/smartfile': 11.2.7 + '@push.rocks/smarthash': 3.2.6 + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrequest': 4.4.2 + jimp: 1.6.0 + sharp: 0.34.5 + transitivePeerDependencies: + - '@nuxt/kit' + - aws-crt + - react + - supports-color + - vue + '@push.rocks/smartjson@5.0.20': dependencies: '@push.rocks/smartenv': 5.0.12 @@ -7053,13 +6471,9 @@ 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 + '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartlog-interfaces': 3.0.2 '@push.rocks/smartpromise': 4.2.3 @@ -7086,8 +6500,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 @@ -7135,22 +6547,34 @@ snapshots: - socks - supports-color - '@push.rocks/smartnetwork@3.0.2': + '@push.rocks/smartmongo@5.1.0(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4)': dependencies: - '@pushrocks/smartping': 1.0.8 - '@pushrocks/smartpromise': 3.1.10 - '@pushrocks/smartstring': 4.0.7 - '@types/default-gateway': 3.0.1 - isopen: 1.3.0 - public-ip: 6.0.2 - systeminformation: 5.25.11 + '@push.rocks/mongodump': 1.0.8 + '@push.rocks/smartdata': 5.2.12(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4) + '@push.rocks/smartfs': 1.5.0 + '@push.rocks/smartpath': 5.0.18 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + bson: 6.10.3 + mingo: 7.2.0 + mongodb-memory-server: 10.4.3(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4) + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - aws-crt + - gcp-metadata + - kerberos + - mongodb-client-encryption + - snappy + - socks + - supports-color '@push.rocks/smartnetwork@4.4.0': dependencies: '@push.rocks/smartdns': 7.9.0 '@push.rocks/smartping': 1.0.8 '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartstring': 4.0.15 + '@push.rocks/smartstring': 4.1.0 isopen: 1.3.0 systeminformation: 5.31.1 transitivePeerDependencies: @@ -7168,18 +6592,9 @@ snapshots: '@push.rocks/smarttime': 4.2.3 '@push.rocks/smartversion': 3.0.5 package-json: 8.1.1 - transitivePeerDependencies: - - aws-crt - - supports-color - - '@push.rocks/smartntml@2.0.8': - dependencies: - '@design.estate/dees-element': 2.0.39 - '@happy-dom/global-registrator': 15.11.7 - '@push.rocks/smartpromise': 4.2.3 - fake-indexeddb: 6.0.0 transitivePeerDependencies: - '@nuxt/kit' + - aws-crt - react - supports-color - vue @@ -7189,35 +6604,35 @@ snapshots: 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.0.18': {} '@push.rocks/smartpath@6.0.0': {} - '@push.rocks/smartpdf@3.2.2(typescript@5.9.3)': + '@push.rocks/smartpdf@4.2.0(typescript@5.9.3)': dependencies: - '@push.rocks/smartbuffer': 3.0.4 + '@push.rocks/smartbuffer': 3.0.5 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.2.7 - '@push.rocks/smartnetwork': 3.0.2 - '@push.rocks/smartpath': 5.0.18 + '@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(typescript@5.9.3) + '@push.rocks/smartserve': 2.0.1 '@push.rocks/smartunique': 3.0.9 - '@tsclass/tsclass': 4.4.0 - '@types/express': 5.0.0 - express: 4.21.2 + '@tsclass/tsclass': 9.3.0 pdf-lib: 1.17.1 - pdf2json: 3.1.5 + pdf2json: 4.0.2 transitivePeerDependencies: + - '@nuxt/kit' + - aws-crt - bare-buffer - bufferutil + - react - supports-color - typescript - utf-8-validate + - vue '@push.rocks/smartping@1.0.8': dependencies: @@ -7229,7 +6644,7 @@ snapshots: '@push.rocks/smartpuppeteer@2.0.5(typescript@5.9.3)': dependencies: '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartshell': 3.3.0 + '@push.rocks/smartshell': 3.3.8 puppeteer: 24.3.1(typescript@5.9.3) tree-kill: 1.2.2 transitivePeerDependencies: @@ -7271,12 +6686,6 @@ snapshots: agentkeepalive: 4.6.0 form-data: 4.0.5 - '@push.rocks/smartrouter@1.3.2': - dependencies: - '@push.rocks/lik': 6.2.2 - '@push.rocks/smartrx': 3.0.10 - path-to-regexp: 8.2.0 - '@push.rocks/smartrouter@1.3.3': dependencies: '@push.rocks/lik': 6.2.2 @@ -7287,6 +6696,10 @@ snapshots: dependencies: '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrust@1.3.2': + dependencies: + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrx@3.0.10': dependencies: '@push.rocks/smartpromise': 4.2.3 @@ -7304,15 +6717,18 @@ snapshots: - aws-crt - supports-color - '@push.rocks/smarts3@3.0.3': + '@push.rocks/smartserve@2.0.1': dependencies: - '@push.rocks/smartbucket': 4.4.1 - '@push.rocks/smartfs': 1.3.1 + '@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 - '@push.rocks/smartxml': 2.0.0 - '@tsclass/tsclass': 9.3.0 + ws: 8.19.0 transitivePeerDependencies: - - aws-crt + - bufferutil + - utf-8-validate '@push.rocks/smartshell@3.2.3': dependencies: @@ -7323,48 +6739,13 @@ snapshots: tree-kill: 1.2.2 which: 5.0.0 - '@push.rocks/smartshell@3.3.0': + '@push.rocks/smartshell@3.3.8': dependencies: '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartexit': 1.0.23 + '@push.rocks/smartexit': 2.0.3 '@push.rocks/smartpromise': 4.2.3 '@types/which': 3.0.4 - tree-kill: 1.2.2 - which: 5.0.0 - - '@push.rocks/smartsitemap@2.0.4': - 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.0.27': - 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/smartpromise': 4.2.3 - '@push.rocks/smartrx': 3.0.10 - '@push.rocks/smarttime': 4.2.3 - engine.io: 6.5.4 - socket.io: 4.7.5 - socket.io-client: 4.7.5 - transitivePeerDependencies: - - '@nuxt/kit' - - bufferutil - - react - - supports-color - - utf-8-validate - - vue + which: 6.0.1 '@push.rocks/smartspawn@3.0.3': dependencies: @@ -7375,15 +6756,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@push.rocks/smartstate@2.0.19': - dependencies: - '@push.rocks/isohash': 2.0.1 - '@push.rocks/lik': 6.2.2 - '@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.1': dependencies: '@push.rocks/smarthash': 3.2.6 @@ -7392,6 +6764,12 @@ snapshots: '@push.rocks/smartrx': 3.0.10 '@push.rocks/webstore': 2.0.20 + '@push.rocks/smartstorage@6.3.1': + dependencies: + '@push.rocks/smartpath': 6.0.0 + '@push.rocks/smartrust': 1.3.2 + '@tsclass/tsclass': 9.5.0 + '@push.rocks/smartstream@3.2.5': dependencies: '@push.rocks/lik': 6.2.2 @@ -7436,21 +6814,22 @@ snapshots: '@push.rocks/smartversion@3.0.5': dependencies: '@types/semver': 7.5.8 - semver: 7.7.1 + semver: 7.7.4 - '@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.2 - '@push.rocks/tapbundle@6.0.3(@aws-sdk/credential-providers@3.758.0)(socks@2.8.4)': dependencies: '@open-wc/testing': 4.0.0 @@ -7653,11 +7032,6 @@ snapshots: '@pushrocks/smartpath@5.0.5': {} - '@pushrocks/smartping@1.0.8': - dependencies: - '@types/ping': 0.4.4 - ping: 0.4.4 - '@pushrocks/smartpromise@3.1.10': {} '@pushrocks/smartpromise@4.0.2': {} @@ -7824,29 +7198,15 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/abort-controller@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@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 @@ -7855,15 +7215,6 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/config-resolver@4.4.9': - dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-config-provider': 4.2.1 - '@smithy/util-endpoints': 3.3.1 - '@smithy/util-middleware': 4.2.10 - tslib: 2.8.1 - '@smithy/core@3.1.5': dependencies: '@smithy/middleware-serde': 4.0.2 @@ -7875,19 +7226,6 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/core@3.23.6': - dependencies: - '@smithy/middleware-serde': 4.2.11 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - '@smithy/util-body-length-browser': 4.2.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-stream': 4.5.15 - '@smithy/util-utf8': 4.2.1 - '@smithy/uuid': 1.1.1 - tslib: 2.8.1 - '@smithy/credential-provider-imds@4.0.1': dependencies: '@smithy/node-config-provider': 4.0.1 @@ -7896,14 +7234,6 @@ snapshots: '@smithy/url-parser': 4.0.1 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.2.10': - dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/property-provider': 4.2.10 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - tslib: 2.8.1 - '@smithy/eventstream-codec@4.0.1': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -7911,59 +7241,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 @@ -7972,14 +7272,6 @@ snapshots: '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.11': - dependencies: - '@smithy/protocol-http': 5.3.10 - '@smithy/querystring-builder': 4.2.10 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - tslib: 2.8.1 - '@smithy/hash-blob-browser@4.0.1': dependencies: '@smithy/chunked-blob-reader': 5.0.0 @@ -7987,13 +7279,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 @@ -8001,35 +7286,17 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/hash-node@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-buffer-from': 4.2.1 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@smithy/hash-stream-node@4.0.1': dependencies: '@smithy/types': 4.1.0 '@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 tslib: 2.8.1 - '@smithy/invalid-dependency@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 @@ -8038,34 +7305,18 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/is-array-buffer@4.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/md5-js@4.0.1': dependencies: '@smithy/types': 4.1.0 '@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 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-content-length@4.2.10': - dependencies: - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/middleware-endpoint@4.0.6': dependencies: '@smithy/core': 3.1.5 @@ -8077,17 +7328,6 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.20': - dependencies: - '@smithy/core': 3.23.6 - '@smithy/middleware-serde': 4.2.11 - '@smithy/node-config-provider': 4.3.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-middleware': 4.2.10 - tslib: 2.8.1 - '@smithy/middleware-retry@4.0.7': dependencies: '@smithy/node-config-provider': 4.0.1 @@ -8100,39 +7340,16 @@ snapshots: tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-retry@4.4.37': - dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/service-error-classification': 4.2.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-retry': 4.2.10 - '@smithy/uuid': 1.1.1 - tslib: 2.8.1 - '@smithy/middleware-serde@4.0.2': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-serde@4.2.11': - dependencies: - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/middleware-stack@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-stack@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/node-config-provider@4.0.1': dependencies: '@smithy/property-provider': 4.0.1 @@ -8140,13 +7357,6 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-config-provider@4.3.10': - dependencies: - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/node-http-handler@4.0.3': dependencies: '@smithy/abort-controller': 4.0.1 @@ -8155,74 +7365,36 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.4.12': - dependencies: - '@smithy/abort-controller': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/querystring-builder': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/property-provider@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/property-provider@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/protocol-http@5.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/protocol-http@5.3.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/querystring-builder@4.0.1': dependencies: '@smithy/types': 4.1.0 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-uri-escape': 4.2.1 - tslib: 2.8.1 - '@smithy/querystring-parser@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/querystring-parser@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/service-error-classification@4.0.1': dependencies: '@smithy/types': 4.1.0 - '@smithy/service-error-classification@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - '@smithy/shared-ini-file-loader@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/shared-ini-file-loader@4.4.5': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/signature-v4@5.0.1': dependencies: '@smithy/is-array-buffer': 4.0.0 @@ -8234,17 +7406,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 @@ -8255,16 +7416,6 @@ snapshots: '@smithy/util-stream': 4.1.2 tslib: 2.8.1 - '@smithy/smithy-client@4.12.0': - dependencies: - '@smithy/core': 3.23.6 - '@smithy/middleware-endpoint': 4.4.20 - '@smithy/middleware-stack': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-stream': 4.5.15 - tslib: 2.8.1 - '@smithy/types@4.1.0': dependencies: tslib: 2.8.1 @@ -8279,40 +7430,20 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/url-parser@4.2.10': - dependencies: - '@smithy/querystring-parser': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/util-base64@4.0.0': dependencies: '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/util-base64@4.3.1': - dependencies: - '@smithy/util-buffer-from': 4.2.1 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@smithy/util-body-length-browser@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-body-length-browser@4.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/util-body-length-node@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-body-length-node@4.2.2': - dependencies: - tslib: 2.8.1 - '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 @@ -8323,19 +7454,10 @@ snapshots: '@smithy/is-array-buffer': 4.0.0 tslib: 2.8.1 - '@smithy/util-buffer-from@4.2.1': - dependencies: - '@smithy/is-array-buffer': 4.2.1 - tslib: 2.8.1 - '@smithy/util-config-provider@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-config-provider@4.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.7': dependencies: '@smithy/property-provider': 4.0.1 @@ -8344,13 +7466,6 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.3.36': - dependencies: - '@smithy/property-provider': 4.2.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.7': dependencies: '@smithy/config-resolver': 4.0.1 @@ -8361,58 +7476,27 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.2.39': - dependencies: - '@smithy/config-resolver': 4.4.9 - '@smithy/credential-provider-imds': 4.2.10 - '@smithy/node-config-provider': 4.3.10 - '@smithy/property-provider': 4.2.10 - '@smithy/smithy-client': 4.12.0 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/util-endpoints@3.0.1': dependencies: '@smithy/node-config-provider': 4.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-endpoints@3.3.1': - dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/util-hex-encoding@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-hex-encoding@4.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/util-middleware@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-middleware@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/util-retry@4.0.1': dependencies: '@smithy/service-error-classification': 4.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-retry@4.2.10': - dependencies: - '@smithy/service-error-classification': 4.2.10 - '@smithy/types': 4.13.0 - tslib: 2.8.1 - '@smithy/util-stream@4.1.2': dependencies: '@smithy/fetch-http-handler': 5.0.1 @@ -8424,25 +7508,10 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/util-stream@4.5.15': - dependencies: - '@smithy/fetch-http-handler': 5.3.11 - '@smithy/node-http-handler': 4.4.12 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - '@smithy/util-buffer-from': 4.2.1 - '@smithy/util-hex-encoding': 4.2.1 - '@smithy/util-utf8': 4.2.1 - tslib: 2.8.1 - '@smithy/util-uri-escape@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-uri-escape@4.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 @@ -8453,29 +7522,12 @@ snapshots: '@smithy/util-buffer-from': 4.0.0 tslib: 2.8.1 - '@smithy/util-utf8@4.2.1': - dependencies: - '@smithy/util-buffer-from': 4.2.1 - tslib: 2.8.1 - '@smithy/util-waiter@4.0.2': dependencies: '@smithy/abort-controller': 4.0.1 '@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': {} - '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 @@ -8503,6 +7555,10 @@ snapshots: dependencies: type-fest: 4.41.0 + '@tsclass/tsclass@9.5.0': + dependencies: + type-fest: 5.5.0 + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -8510,14 +7566,14 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/babel__code-frame@7.0.6': {} '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/buffer-json@2.0.3': {} @@ -8533,34 +7589,28 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 source-map: 0.6.1 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/qs': 6.9.18 '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/content-disposition@0.5.8': {} '@types/convert-source-map@2.0.3': {} - '@types/cookie@0.4.1': {} - '@types/cookies@0.9.0': dependencies: '@types/connect': 3.4.38 '@types/express': 5.0.0 '@types/keygrip': 1.0.6 - '@types/node': 22.13.9 - - '@types/cors@2.8.17': - dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/debounce@1.2.4': {} @@ -8570,11 +7620,9 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/default-gateway@3.0.1': {} - '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -8586,12 +7634,6 @@ snapshots: '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 - '@types/express@5.0.6': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 5.0.6 - '@types/serve-static': 2.2.0 - '@types/fast-json-stable-stringify@2.1.2': dependencies: fast-json-stable-stringify: 2.1.0 @@ -8599,21 +7641,21 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/hast@3.0.4': dependencies: @@ -8647,7 +7689,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/keygrip@1.0.6': {} @@ -8664,7 +7706,7 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/mdast@4.0.4': dependencies: @@ -8682,17 +7724,19 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 + + '@types/node@16.9.1': {} '@types/node@22.13.9': dependencies: undici-types: 6.20.0 - '@types/node@25.3.3': + '@types/node@25.5.0': dependencies: undici-types: 7.18.2 @@ -8710,26 +7754,21 @@ snapshots: '@types/s3rver@3.7.4': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/send': 0.17.4 - '@types/serve-static@2.2.0': - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.13.9 - '@types/sinon-chai@3.2.12': dependencies: '@types/chai': 5.0.1 @@ -8747,11 +7786,11 @@ snapshots: '@types/tar-stream@3.1.4': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/through2@2.0.41': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/triple-beam@1.3.5': {} @@ -8775,7 +7814,7 @@ snapshots: '@types/whatwg-url@8.2.2': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/webidl-conversions': 7.0.3 '@types/which@3.0.4': {} @@ -8784,11 +7823,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/ws@8.18.1': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 '@types/yargs-parser@21.0.3': {} @@ -8798,7 +7837,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.13.9 + '@types/node': 25.5.0 optional: true '@ungap/structured-clone@1.3.0': {} @@ -8879,22 +7918,21 @@ snapshots: - supports-color - utf-8-validate + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - accepts@2.0.0: - dependencies: - mime-types: 3.0.2 - negotiator: 1.0.0 - acme-client@5.4.0: dependencies: '@peculiar/x509': 1.14.3 asn1js: 3.0.7 - axios: 1.13.6(debug@4.4.0) - debug: 4.4.0 + axios: 1.13.6(debug@4.4.3) + debug: 4.4.3 node-forge: 1.3.1 transitivePeerDependencies: - supports-color @@ -8905,11 +7943,6 @@ snapshots: dependencies: humanize-ms: 1.2.1 - aggregate-error@4.0.1: - dependencies: - clean-stack: 4.2.0 - indent-string: 5.0.0 - ansi-256-colors@1.1.0: {} ansi-escapes@4.3.2: @@ -8932,14 +7965,14 @@ snapshots: ansi-styles@6.2.1: {} + any-base@1.1.0: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 argparse@2.0.1: {} - array-flatten@1.1.1: {} - array-union@2.1.0: {} asn1js@3.0.7: @@ -8962,11 +7995,13 @@ snapshots: asynckit@0.4.0: {} + await-to-js@3.0.0: {} + axe-core@4.10.2: {} - axios@1.13.6(debug@4.4.0): + axios@1.13.6(debug@4.4.3): dependencies: - follow-redirects: 1.15.11(debug@4.4.0) + follow-redirects: 1.15.11(debug@4.4.3) form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -9009,40 +8044,9 @@ snapshots: base64-js@1.5.1: {} - base64id@2.0.0: {} - basic-ftp@5.0.5: {} - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - body-parser@2.2.2: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 4.4.3 - http-errors: 2.0.0 - iconv-lite: 0.7.2 - on-finished: 2.4.1 - qs: 6.15.0 - raw-body: 3.0.2 - type-is: 2.0.1 - transitivePeerDependencies: - - supports-color + bmp-ts@1.0.9: {} bowser@2.11.0: {} @@ -9063,13 +8067,6 @@ snapshots: dependencies: fill-range: 7.1.1 - broadcast-channel@7.0.0: - dependencies: - '@babel/runtime': 7.23.4 - 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 @@ -9193,10 +8190,6 @@ snapshots: clean-stack@1.3.0: {} - clean-stack@4.2.0: - dependencies: - escape-string-regexp: 5.0.0 - cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -9271,30 +8264,15 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-disposition@1.0.1: {} - content-type@1.0.5: {} convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} - - cookie-signature@1.2.2: {} - - cookie@0.4.2: {} - - cookie@0.7.1: {} - cookies@0.9.1: dependencies: depd: 2.0.0 keygrip: 1.1.0 - 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 @@ -9330,18 +8308,10 @@ snapshots: debounce@1.2.1: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@3.2.7: dependencies: ms: 2.1.3 - debug@4.3.7: - dependencies: - ms: 2.1.3 - debug@4.4.0: dependencies: ms: 2.1.3 @@ -9402,6 +8372,8 @@ snapshots: destroy@1.2.0: {} + detect-libc@2.1.2: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -9418,14 +8390,6 @@ snapshots: dependencies: path-type: 4.0.0 - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - - dns-socket@4.2.2: - dependencies: - dns-packet: 5.6.1 - dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -9444,45 +8408,10 @@ snapshots: encodeurl@1.0.2: {} - encodeurl@2.0.0: {} - end-of-stream@1.4.4: dependencies: once: 1.4.0 - engine.io-client@6.5.4: - 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.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine.io-parser@5.2.3: {} - - engine.io@6.5.4: - dependencies: - '@types/cookie': 0.4.1 - '@types/cors': 2.8.17 - '@types/node': 22.13.9 - accepts: 1.3.8 - base64id: 2.0.0 - cookie: 0.4.2 - cors: 2.8.5 - debug: 4.3.7 - engine.io-parser: 5.2.3 - ws: 8.11.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - entities@4.5.0: {} - env-paths@2.2.1: {} error-ex@1.3.2: @@ -9567,8 +8496,12 @@ snapshots: etag@1.8.1: {} + event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} + events@3.3.0: {} + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -9581,6 +8514,8 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + exif-parser@0.1.12: {} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -9589,79 +8524,6 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - express-force-ssl@0.3.2: - dependencies: - lodash.assign: 3.2.0 - - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - express@5.2.1: - dependencies: - accepts: 2.0.0 - body-parser: 2.2.2 - content-disposition: 1.0.1 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.2.2 - debug: 4.4.0 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.1.1 - fresh: 2.0.0 - http-errors: 2.0.0 - merge-descriptors: 2.0.0 - mime-types: 3.0.2 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.14.0 - range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 - serve-static: 2.2.1 - statuses: 2.0.1 - type-is: 2.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - extend@3.0.2: {} external-editor@3.1.0: @@ -9672,7 +8534,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0 + debug: 4.4.3 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -9682,8 +8544,6 @@ snapshots: fake-indexeddb@5.0.2: {} - fake-indexeddb@6.0.0: {} - fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} @@ -9698,8 +8558,6 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-xml-builder@1.0.0: {} - fast-xml-parser@3.21.1: dependencies: strnum: 1.1.2 @@ -9708,19 +8566,6 @@ snapshots: 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.2.0 - - fast-xml-parser@5.4.1: - dependencies: - fast-xml-builder: 1.0.0 - strnum: 2.2.0 - fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -9741,6 +8586,12 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-type@16.5.4: + dependencies: + readable-web-to-node-stream: 3.0.4 + strtok3: 6.3.0 + token-types: 4.2.1 + file-type@19.6.0: dependencies: get-stream: 9.0.1 @@ -9761,29 +8612,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - finalhandler@2.1.1: - dependencies: - debug: 4.4.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 @@ -9797,10 +8625,6 @@ snapshots: fn.name@1.1.0: {} - follow-redirects@1.15.11(debug@4.4.0): - optionalDependencies: - debug: 4.4.0 - follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3 @@ -9834,12 +8658,8 @@ snapshots: format@0.2.2: {} - forwarded@0.2.0: {} - fresh@0.5.2: {} - fresh@2.0.0: {} - fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -9910,10 +8730,15 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color + gifwrap@0.10.1: + dependencies: + image-q: 4.0.0 + omggif: 1.0.10 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -9974,12 +8799,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-flag@3.0.0: {} has-flag@4.0.0: {} @@ -10068,18 +8887,10 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-errors@2.0.1: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.2 - toidentifier: 1.0.1 - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -10107,21 +8918,19 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.2: - dependencies: - safer-buffer: 2.1.2 - ieee754@1.2.1: {} ignore@5.3.2: {} + image-q@4.0.0: + dependencies: + '@types/node': 16.9.1 + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - indent-string@5.0.0: {} - inflation@2.1.0: {} inflight@1.0.6: @@ -10160,8 +8969,6 @@ snapshots: ip-regex@4.3.0: {} - ip-regex@5.0.0: {} - ipaddr.js@1.9.1: {} is-arrayish@0.2.1: {} @@ -10189,10 +8996,6 @@ snapshots: dependencies: ip-regex: 4.3.0 - is-ip@4.0.0: - dependencies: - ip-regex: 5.0.0 - is-nan@1.3.2: dependencies: call-bind: 1.0.8 @@ -10206,8 +9009,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-promise@4.0.0: {} - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -10233,6 +9034,8 @@ snapshots: isexe@3.1.1: {} + isexe@4.0.0: {} + isopen@1.3.0: {} istanbul-lib-coverage@3.2.2: {} @@ -10287,12 +9090,44 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.9 + '@types/node': 25.5.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + jimp@1.6.0: + dependencies: + '@jimp/core': 1.6.0 + '@jimp/diff': 1.6.0 + '@jimp/js-bmp': 1.6.0 + '@jimp/js-gif': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/js-tiff': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/plugin-blur': 1.6.0 + '@jimp/plugin-circle': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-contain': 1.6.0 + '@jimp/plugin-cover': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-displace': 1.6.0 + '@jimp/plugin-dither': 1.6.0 + '@jimp/plugin-fisheye': 1.6.0 + '@jimp/plugin-flip': 1.6.0 + '@jimp/plugin-hash': 1.6.0 + '@jimp/plugin-mask': 1.6.0 + '@jimp/plugin-print': 1.6.0 + '@jimp/plugin-quantize': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/plugin-rotate': 1.6.0 + '@jimp/plugin-threshold': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + + jpeg-js@0.4.4: {} + js-base64@3.7.7: {} js-tokens@4.0.0: {} @@ -10395,8 +9230,6 @@ snapshots: kuler@2.0.0: {} - lenis@1.1.22: {} - lines-and-columns@1.2.4: {} lit-element@4.1.1: @@ -10435,45 +9268,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: {} - lodash@4.17.21: {} log-update@4.0.0: @@ -10659,14 +9455,8 @@ snapshots: media-typer@0.3.0: {} - media-typer@1.1.0: {} - memory-pager@1.5.0: {} - merge-descriptors@1.0.3: {} - - merge-descriptors@2.0.0: {} - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -10852,7 +9642,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -10878,17 +9668,11 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: dependencies: mime-db: 1.52.0 - mime-types@3.0.2: - dependencies: - mime-db: 1.54.0 - - mime@1.6.0: {} + mime@3.0.0: {} mime@4.0.6: {} @@ -10994,8 +9778,6 @@ snapshots: '@aws-sdk/credential-providers': 3.758.0 socks: 2.8.4 - ms@2.0.0: {} - ms@2.1.3: {} mute-stream@1.0.0: {} @@ -11008,8 +9790,6 @@ snapshots: negotiator@0.6.3: {} - negotiator@1.0.0: {} - netmask@2.0.2: {} new-find-package-json@2.0.0: @@ -11034,18 +9814,16 @@ snapshots: dependencies: path-key: 3.1.1 - 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: {} + omggif@1.0.10: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -11103,7 +9881,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.3 get-uri: 6.0.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -11124,7 +9902,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.1.0 registry-url: 6.0.1 - semver: 7.7.1 + semver: 7.7.4 pako@1.0.11: {} @@ -11136,6 +9914,15 @@ snapshots: dependencies: callsites: 3.1.0 + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.26.2 @@ -11166,8 +9953,6 @@ snapshots: lru-cache: 11.0.2 minipass: 7.1.2 - path-to-regexp@0.1.12: {} - path-to-regexp@6.3.0: {} path-to-regexp@8.2.0: {} @@ -11181,7 +9966,9 @@ snapshots: pako: 1.0.11 tslib: 1.14.1 - pdf2json@3.1.5: {} + pdf2json@4.0.2: {} + + peek-readable@4.1.0: {} peek-readable@5.4.2: {} @@ -11195,10 +9982,18 @@ snapshots: ping@0.4.4: {} + pixelmatch@5.3.0: + dependencies: + pngjs: 6.0.0 + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 + pngjs@6.0.0: {} + + pngjs@7.0.0: {} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -11217,21 +10012,18 @@ snapshots: dependencies: parse-ms: 4.0.0 + process@0.11.10: {} + progress@2.0.3: {} property-information@7.0.0: {} proto-list@1.2.4: {} - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - proxy-agent@6.5.0: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -11243,13 +10035,6 @@ snapshots: proxy-from-env@1.1.0: {} - public-ip@6.0.2: - dependencies: - aggregate-error: 4.0.1 - dns-socket: 4.2.2 - got: 12.6.1 - is-ip: 4.0.0 - pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -11263,7 +10048,7 @@ snapshots: dependencies: '@puppeteer/browsers': 2.7.1 chromium-bidi: 2.1.2(devtools-protocol@0.0.1402036) - debug: 4.4.0 + debug: 4.4.3 devtools-protocol: 0.0.1402036 typed-query-selector: 2.12.0 ws: 8.19.0 @@ -11294,18 +10079,10 @@ snapshots: pvutils@1.1.5: {} - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - qs@6.14.0: dependencies: side-channel: 1.1.0 - qs@6.15.0: - dependencies: - side-channel: 1.1.0 - queue-microtask@1.2.3: {} quick-lru@5.1.1: {} @@ -11316,8 +10093,6 @@ snapshots: kind-of: 6.0.3 math-random: 1.0.4 - range-parser@1.2.1: {} - raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -11325,13 +10100,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.1 - iconv-lite: 0.7.2 - unpipe: 1.0.0 - rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -11347,14 +10115,24 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readable-web-to-node-stream@3.0.4: + dependencies: + readable-stream: 4.7.0 + readdirp@4.1.2: {} readdirp@5.0.0: {} reflect-metadata@0.2.2: {} - regenerator-runtime@0.14.1: {} - registry-auth-token@5.1.0: dependencies: '@pnpm/npm-conf': 2.3.1 @@ -11458,16 +10236,6 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.52 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.52 - router@2.2.0: - dependencies: - debug: 4.4.0 - depd: 2.0.0 - is-promise: 4.0.0 - parseurl: 1.3.3 - path-to-regexp: 8.2.0 - transitivePeerDependencies: - - supports-color - run-async@3.0.0: {} run-parallel@1.2.0: @@ -11506,64 +10274,14 @@ snapshots: safer-buffer@2.1.2: {} + sax@1.6.0: {} + semver@6.3.1: {} semver@7.7.1: {} semver@7.7.4: {} - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - send@1.2.1: - dependencies: - debug: 4.4.3 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 2.0.0 - http-errors: 2.0.1 - mime-types: 3.0.2 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - serve-static@2.2.1: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 1.2.1 - transitivePeerDependencies: - - supports-color - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -11577,6 +10295,37 @@ snapshots: setprototypeof@1.2.0: {} + sharp@0.34.5: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.7.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -11619,6 +10368,8 @@ snapshots: dependencies: is-arrayish: 0.3.2 + simple-xml-to-json@1.2.4: {} + slash@3.0.0: {} slice-ansi@4.0.0: @@ -11629,51 +10380,10 @@ 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.7.5: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-client: 6.5.4 - 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.7.5: - dependencies: - accepts: 1.3.8 - base64id: 2.0.0 - cors: 2.8.5 - debug: 4.3.7 - engine.io: 6.5.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 - debug: 4.4.0 + debug: 4.4.3 socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -11716,8 +10426,6 @@ snapshots: statuses@2.0.1: {} - statuses@2.0.2: {} - streamsearch@0.1.2: {} streamx@2.22.0: @@ -11766,12 +10474,15 @@ snapshots: strnum@1.1.2: {} - strnum@2.2.0: {} - strtok3@10.3.4: dependencies: '@tokenizer/token': 0.3.0 + strtok3@6.3.0: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + strtok3@9.1.1: dependencies: '@tokenizer/token': 0.3.0 @@ -11789,10 +10500,10 @@ snapshots: symbol-tree@3.2.4: {} - systeminformation@5.25.11: {} - systeminformation@5.31.1: {} + tagged-tag@1.0.0: {} + tar-fs@3.0.8: dependencies: pump: 3.0.2 @@ -11818,7 +10529,7 @@ snapshots: threads@1.7.0: dependencies: callsites: 3.1.0 - debug: 4.4.0 + debug: 4.4.3 is-observable: 2.1.0 observable-fns: 0.6.1 optionalDependencies: @@ -11834,6 +10545,8 @@ snapshots: dependencies: esm: 3.2.25 + tinycolor2@1.6.0: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -11844,6 +10557,11 @@ snapshots: toidentifier@1.0.1: {} + token-types@4.2.1: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + token-types@6.0.0: dependencies: '@tokenizer/token': 0.3.0 @@ -11902,17 +10620,15 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.5.0: + dependencies: + tagged-tag: 1.0.0 + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - type-is@2.0.1: - dependencies: - content-type: 1.0.5 - media-typer: 1.1.0 - mime-types: 3.0.2 - typed-query-selector@2.12.0: {} typescript@5.9.3: {} @@ -11973,9 +10689,11 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 - util-deprecate@1.0.2: {} + utif2@4.1.0: + dependencies: + pako: 1.0.11 - utils-merge@1.0.1: {} + util-deprecate@1.0.2: {} uuid@9.0.1: {} @@ -11993,8 +10711,6 @@ snapshots: webidl-conversions@7.0.0: {} - whatwg-mimetype@3.0.0: {} - whatwg-url@11.0.0: dependencies: tr46: 3.0.0 @@ -12013,6 +10729,10 @@ snapshots: dependencies: isexe: 3.1.1 + which@6.0.1: + dependencies: + isexe: 4.0.0 + winston-transport@4.9.0: dependencies: logform: 2.7.0 @@ -12055,18 +10775,19 @@ snapshots: ws@7.5.10: {} - ws@8.11.0: {} - - ws@8.17.1: {} - ws@8.19.0: {} - xmlhttprequest-ssl@2.0.0: {} + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.6.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} y18n@5.0.8: {} - yaml@2.8.2: {} - yargs-parser@21.1.1: {} yargs-parser@22.0.0: {} diff --git a/readme.md b/readme.md index adc518e..b28190e 100644 --- a/readme.md +++ b/readme.md @@ -1,188 +1,241 @@ # @push.rocks/lik -A collection of lightweight utility classes for TypeScript/Node.js projects, providing efficient data structures and async helpers. +⚡ A lean, fully-typed collection of utility classes for TypeScript — efficient data structures, async execution control, and reactive helpers that work seamlessly in both Node.js and the browser. ## Install ```bash +# pnpm (recommended) +pnpm install @push.rocks/lik + +# npm npm install @push.rocks/lik ``` +This is a pure ESM package. Use `import` syntax in your TypeScript/JavaScript projects. + +## Issue Reporting and Security + +For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly. + ## Usage -`@push.rocks/lik` provides a set of focused helper classes for common programming tasks: managing collections, controlling async execution, tracking interests, and more. All classes are fully typed and work in both Node.js and browser environments. +`@push.rocks/lik` gives you **10 focused utility classes** — each solving one problem well. No bloat, no deep dependency trees, just clean tools for everyday TypeScript. -### AsyncExecutionStack +--- -Controls execution of asynchronous tasks in two modes: +### 🔒 AsyncExecutionStack -- **Exclusive**: tasks run one at a time, blocking all others until complete. -- **Non-exclusive**: tasks run in parallel with optional concurrency limits. +Control async task execution with **exclusive** (sequential, mutex-like) and **non-exclusive** (parallel with concurrency limits) modes. Think of it as a lightweight task scheduler. ```typescript import { AsyncExecutionStack } from '@push.rocks/lik'; const stack = new AsyncExecutionStack(); -// Exclusive execution (sequential, blocks other tasks) -await stack.getExclusiveExecutionSlot(async () => { - // critical section work +// 🔐 Exclusive: only one task runs at a time (mutex-style) +const result = await stack.getExclusiveExecutionSlot(async () => { + // critical section — no other task runs until this resolves + return await doSomethingImportant(); }, 5000); // optional timeout in ms -// Non-exclusive execution (parallel) -const p1 = stack.getNonExclusiveExecutionSlot(async () => { - // concurrent work 1 -}); -const p2 = stack.getNonExclusiveExecutionSlot(async () => { - // concurrent work 2 -}); -await Promise.all([p1, p2]); +// 🚀 Non-exclusive: tasks run in parallel +const p1 = stack.getNonExclusiveExecutionSlot(async () => fetchUser(1)); +const p2 = stack.getNonExclusiveExecutionSlot(async () => fetchUser(2)); +const p3 = stack.getNonExclusiveExecutionSlot(async () => fetchUser(3)); +await Promise.all([p1, p2, p3]); -// Control concurrency -stack.setNonExclusiveMaxConcurrency(3); -console.log(stack.getNonExclusiveMaxConcurrency()); // 3 -console.log(stack.getActiveNonExclusiveCount()); // currently running -console.log(stack.getPendingNonExclusiveCount()); // waiting for slots +// 🎚️ Concurrency control for non-exclusive tasks +stack.setNonExclusiveMaxConcurrency(3); // max 3 in parallel +stack.getNonExclusiveMaxConcurrency(); // 3 +stack.getActiveNonExclusiveCount(); // how many are running right now +stack.getPendingNonExclusiveCount(); // how many are waiting for a slot ``` -### BackpressuredArray +**Key behavior:** Exclusive and non-exclusive slots are processed in order. When an exclusive slot comes up, it waits for all running non-exclusive tasks to finish, then runs alone. Non-exclusive tasks arriving together are batched and run in parallel (respecting the concurrency limit). -An array with backpressure support using RxJS subjects. Useful for producer/consumer patterns where you need to throttle the producer when the consumer can't keep up. +--- + +### 🌊 BackpressuredArray + +A bounded buffer with **backpressure** — perfect for producer/consumer patterns where you need to throttle the producer when the consumer falls behind. Uses RxJS subjects under the hood. ```typescript import { BackpressuredArray } from '@push.rocks/lik'; -const buffer = new BackpressuredArray(16); // high water mark of 16 +const buffer = new BackpressuredArray(16); // high water mark -// Producer: push items, returns false when full +// Producer side const hasSpace = buffer.push('item1'); if (!hasSpace) { - await buffer.waitForSpace(); // wait until consumer frees space + await buffer.waitForSpace(); // blocks until consumer drains enough } -// Consumer: shift items out -await buffer.waitForItems(); // wait until items are available -const item = buffer.shift(); +// Consumer side +await buffer.waitForItems(); // blocks until something is available +const item = buffer.shift(); // grab the oldest item -// Check state -buffer.checkSpaceAvailable(); // true if below high water mark -buffer.checkHasItems(); // true if items exist +// Introspect +buffer.checkSpaceAvailable(); // true if below high water mark +buffer.checkHasItems(); // true if items exist + +// Teardown +buffer.destroy(); // completes all internal subjects ``` -### FastMap +--- -A high-performance key-value map optimized for rapid lookups and modifications. +### ⚡ FastMap + +A high-performance string-keyed map. Faster than native `Map` for simple key-value lookups thanks to plain-object backing. Supports merging, concatenation, and async search. ```typescript import { FastMap } from '@push.rocks/lik'; -const map = new FastMap(); +const map = new FastMap<{ name: string; score: number }>(); -map.addToMap('key1', 'value1'); -map.addToMap('key2', 'value2'); +// CRUD +map.addToMap('player1', { name: 'Alice', score: 100 }); +map.addToMap('player2', { name: 'Bob', score: 85 }); +map.getByKey('player1'); // { name: 'Alice', score: 100 } +map.isUniqueKey('player1'); // false (already exists) +map.removeFromMap('player2'); // returns the removed object +map.getKeys(); // ['player1'] -const value = map.getByKey('key1'); // 'value1' -map.isUniqueKey('key1'); // false (already exists) -map.removeFromMap('key1'); +// Force overwrite existing key +map.addToMap('player1', { name: 'Alice', score: 200 }, { force: true }); -// Merge maps -const otherMap = new FastMap(); -otherMap.addToMap('key3', 'value3'); -const merged = map.concat(otherMap); - -// Or merge in place -map.addAllFromOther(otherMap); +// Merge two maps +const otherMap = new FastMap<{ name: string; score: number }>(); +otherMap.addToMap('player3', { name: 'Carol', score: 90 }); +const merged = map.concat(otherMap); // new FastMap with all entries +map.addAllFromOther(otherMap); // merge in-place // Async find -const found = await map.find(async (item) => item === 'value2'); +const found = await map.find(async (item) => item.score > 95); + +// Reset +map.clean(); ``` -### InterestMap +--- -Manages subscriptions/interests in events or entities. Multiple parties can express interest in the same thing; the interest is deduplicated and fulfilled once. +### 🎯 InterestMap & Interest + +A deduplicating interest/subscription tracker. Multiple callers can express interest in the same thing — the `InterestMap` deduplicates them and fulfills all waiters at once. Great for caching layers, resource pooling, or subscription fan-out. ```typescript import { InterestMap } from '@push.rocks/lik'; -const interestMap = new InterestMap( - (str) => str, // comparison function to deduplicate interests - { markLostAfterDefault: 30000 } // optional: auto-mark lost after 30s +const interestMap = new InterestMap( + (id) => id, // comparison function for deduplication + { markLostAfterDefault: 30000 } // auto-destroy unfulfilled interests after 30s ); -// Express interest -const interest = await interestMap.addInterest('event1'); +// Express interest (returns existing Interest if one matches) +const interest = await interestMap.addInterest('user:42'); -// Wait for fulfillment -interest.interestFullfilled.then((result) => { - console.log('Got result:', result); +// The interest is a promise-like object +interest.interestFullfilled.then((response) => { + console.log('Got it!', response); }); -// Fulfill from elsewhere -const found = interestMap.findInterest('event1'); -found.fullfillInterest(42); +// Somewhere else — fulfill the interest for everyone waiting +const found = interestMap.findInterest('user:42'); +found.fullfillInterest(apiResponse); -// Check and manage interests -interestMap.checkInterest('event1'); // true/false -interestMap.informLostInterest('event1'); // starts destruction timer +// Provide a default fulfillment value (returned if interest is destroyed unfulfilled) +const interest2 = await interestMap.addInterest('user:99', fallbackResponse); -// Observable stream of new interests -interestMap.interestObservable; // ObservableIntake +// Check / manage +interestMap.checkInterest('user:42'); // true if active +interestMap.informLostInterest('user:42'); // starts the destruction timer + +// Observable stream of all new interests as they arrive +interestMap.interestObservable.subscribe((interest) => { + console.log('New interest:', interest.comparisonString); +}); + +// Clean up everything +interestMap.destroy(); ``` -### LimitedArray +**Interest lifecycle:** Created → (optionally) `markLost()` starts a 10s destruction timer → `renew()` resets the timer → `fullfillInterest(value)` resolves all waiters → `destroy()` cleans up. -An array that automatically enforces a maximum size, discarding oldest items when the limit is exceeded. +--- + +### 📏 LimitedArray + +A fixed-capacity array that automatically discards the oldest items when the limit is exceeded. Ideal for rolling logs, recent-history buffers, or sliding-window metrics. ```typescript import { LimitedArray } from '@push.rocks/lik'; -const arr = new LimitedArray(5); +const recentLogs = new LimitedArray(100); -arr.addMany([1, 2, 3, 4, 5, 6]); -console.log(arr.array.length); // 5 (oldest items dropped) +recentLogs.addOne('request received'); +recentLogs.addMany(['processed', 'response sent']); -arr.addOne(7); -arr.setLimit(3); // dynamically adjust limit +console.log(recentLogs.array.length); // never exceeds 100 -// Compute average (for numeric arrays) -const numArr = new LimitedArray(10); -numArr.addMany([10, 20, 30]); -console.log(numArr.getAverage()); // 20 +// Dynamically adjust the limit +recentLogs.setLimit(50); // trims immediately if over + +// Built-in average for numeric arrays +const latencies = new LimitedArray(1000); +latencies.addMany([12, 15, 9, 22, 18]); +console.log(latencies.getAverage()); // 15.2 ``` -### LoopTracker +--- -Detects and prevents infinite loops by tracking object references during iterations. +### 🔄 LoopTracker + +Detects infinite loops by tracking which objects have already been visited during a traversal. Lightweight guard for recursive algorithms. ```typescript import { LoopTracker } from '@push.rocks/lik'; const tracker = new LoopTracker(); -const obj1 = {}; -tracker.checkAndTrack(obj1); // true (first time, tracked) -tracker.checkAndTrack(obj1); // false (already seen - loop detected!) +function traverse(node: any) { + if (!tracker.checkAndTrack(node)) { + console.warn('Cycle detected — skipping'); + return; + } + // safe to process this node + for (const child of node.children) { + traverse(child); + } +} + +tracker.reset(); // clear for reuse +tracker.destroy(); // free resources ``` -### ObjectMap +--- -A managed collection of objects with add/remove/find operations and event notifications via RxJS. +### 📦 ObjectMap + +A managed, observable object collection. Add, remove, find, and iterate objects — with **RxJS event notifications** for every mutation. Supports both auto-keyed and manually-keyed entries. ```typescript import { ObjectMap } from '@push.rocks/lik'; -interface IUser { - id: number; - name: string; -} +interface IUser { id: number; name: string; } const users = new ObjectMap(); -// Add objects +// Auto-keyed add (returns generated key) const key = users.add({ id: 1, name: 'Alice' }); users.addArray([{ id: 2, name: 'Bob' }, { id: 3, name: 'Carol' }]); -// Find objects +// Manually-keyed add/get/remove +users.addMappedUnique('admin', { id: 99, name: 'Admin' }); +users.getMappedUnique('admin'); +users.removeMappedUnique('admin'); + +// Find (sync and async) const alice = users.findSync((u) => u.id === 1); const bob = await users.find(async (u) => u.id === 2); @@ -190,126 +243,176 @@ const bob = await users.find(async (u) => u.id === 2); const removed = await users.findOneAndRemove(async (u) => u.id === 3); const removedSync = users.findOneAndRemoveSync((u) => u.id === 2); -// Direct add/get by unique key -users.addMappedUnique('admin', { id: 99, name: 'Admin' }); -const admin = users.getMappedUnique('admin'); - -// Get one and remove (FIFO-style) +// FIFO-style pop const first = users.getOneAndRemove(); -// Iterate, check, and manage +// Iterate and inspect await users.forEach((u) => console.log(u.name)); users.checkForObject(alice); // true/false +users.getKeyForObject(alice); // the internal key string users.isEmpty(); // true/false users.getArray(); // cloned array of all objects -users.wipe(); // remove all -// Listen for changes +// 🔔 Observe mutations users.eventSubject.subscribe((event) => { - console.log(event.operation, event.payload); // 'add' | 'remove' + // event.operation: 'add' | 'remove' + // event.payload: the object }); -// Merge object maps -const merged = users.concat(otherObjectMap); -users.addAllFromOther(otherObjectMap); +// Merge +const merged = users.concat(otherObjectMap); // new ObjectMap +users.addAllFromOther(otherObjectMap); // merge in-place + +// Teardown +users.wipe(); // remove all entries (fires 'remove' events) +users.destroy(); // wipe + complete eventSubject ``` -### Stringmap +--- -Manages a collection of strings with add/remove/query operations and minimatch pattern matching. +### 🔤 Stringmap + +A string collection with add/remove/query operations and **glob pattern matching** (via minimatch). Supports reactive triggers that fire when a condition becomes true. ```typescript import { Stringmap } from '@push.rocks/lik'; -const strings = new Stringmap(); +const tags = new Stringmap(); -strings.addString('hello'); -strings.addStringArray(['world', 'example']); +tags.addString('feature:dark-mode'); +tags.addStringArray(['feature:i18n', 'bug:login']); -strings.checkString('hello'); // true -strings.checkMinimatch('hel*'); // true (glob matching) -strings.checkIsEmpty(); // false +tags.checkString('feature:dark-mode'); // true +tags.checkMinimatch('feature:*'); // true (glob matching!) +tags.checkIsEmpty(); // false -strings.removeString('hello'); -strings.getStringArray(); // ['world', 'example'] +tags.removeString('bug:login'); +tags.getStringArray(); // cloned array of current strings -// Register trigger that fires when condition is met -await strings.registerUntilTrue((arr) => arr.length === 0); -strings.wipe(); // triggers the above +// 🔔 Trigger: resolves when condition is met +const waitForEmpty = tags.registerUntilTrue((arr) => arr.length === 0); +tags.wipe(); // triggers the above → waitForEmpty resolves + +// Clean up +tags.destroy(); ``` -### TimedAggregator +--- -Batches items over a time interval, then processes them in bulk. Useful for aggregating logs, metrics, or events. +### ⏱️ TimedAggregator + +Batches incoming items over a configurable time window, then processes the entire batch at once. Perfect for log aggregation, metric flushing, or debounced event processing. ```typescript -import { TimedAggregtor } from '@push.rocks/lik'; +import { TimedAggregator } from '@push.rocks/lik'; +// Also available as: import { TimedAggregtor } from '@push.rocks/lik'; (legacy spelling) -const aggregator = new TimedAggregtor({ +const batcher = new TimedAggregator({ aggregationIntervalInMillis: 5000, - functionForAggregation: (items) => { - console.log('Batch:', items); + functionForAggregation: (batch) => { + console.log(`Processing ${batch.length} items:`, batch); }, }); -aggregator.add('event1'); -aggregator.add('event2'); -// After 5 seconds: Batch: ['event1', 'event2'] +batcher.add('event-a'); +batcher.add('event-b'); +batcher.add('event-c'); +// After 5 seconds → "Processing 3 items: ['event-a', 'event-b', 'event-c']" + +// Stop and flush any remaining items +batcher.stop(true); // true = flush remaining immediately + +// Restart after stopping +batcher.restart(); +batcher.add('event-d'); // timer starts again ``` -### Tree +**How it works:** The timer starts when the first item arrives. When it fires, all accumulated items are passed to `functionForAggregation` and a new timer starts. If no items arrive, the timer doesn't restart — it's lazy. -A typed wrapper around `symbol-tree` for managing hierarchical data structures with parent/child/sibling relationships. +--- + +### 🌳 Tree + +A typed wrapper around [`symbol-tree`](https://www.npmjs.com/package/symbol-tree) for managing hierarchical data. Full parent/child/sibling navigation, ordered iteration, and structural mutation. ```typescript import { Tree } from '@push.rocks/lik'; -class TreeNode { - constructor(public value: string) {} -} +interface INode { name: string; } -const tree = new Tree(); -const root = new TreeNode('root'); +const tree = new Tree(); +const root: INode = { name: 'root' }; tree.initialize(root); -const child1 = new TreeNode('child1'); -const child2 = new TreeNode('child2'); +const child1: INode = { name: 'child1' }; +const child2: INode = { name: 'child2' }; +const grandchild: INode = { name: 'grandchild' }; + tree.appendChild(root, child1); tree.appendChild(root, child2); +tree.appendChild(child1, grandchild); -// Navigate -tree.hasChildren(root); // true +// 🧭 Navigate +tree.parent(child1); // root tree.firstChild(root); // child1 tree.lastChild(root); // child2 tree.nextSibling(child1); // child2 -tree.parent(child1); // root +tree.previousSibling(child2); // child1 +tree.hasChildren(child1); // true -// Query -tree.childrenCount(root); // 2 -tree.index(child2); // 1 -tree.childrenToArray(root, {}); // [child1, child2] -tree.treeToArray(root, {}); // full tree as array +// 📊 Query +tree.childrenCount(root); // 2 +tree.index(child2); // 1 +tree.childrenToArray(root, {}); // [child1, child2] +tree.ancestorsToArray(grandchild, {}); // [child1, root] +tree.treeToArray(root, {}); // entire tree as flat array -// Mutate -tree.insertBefore(child2, new TreeNode('between')); +// 🔁 Iterate +for (const node of tree.treeIterator(root, {})) { + console.log(node.name); +} + +// ✂️ Mutate +tree.insertBefore(child2, { name: 'between' }); +tree.insertAfter(child1, { name: 'after1' }); +tree.prependChild(root, { name: 'new-first' }); tree.remove(child2); ``` +--- + +## API at a Glance + +| Class | Purpose | Key Feature | +|-------|---------|-------------| +| `AsyncExecutionStack` | Async task scheduling | Exclusive/non-exclusive modes with concurrency limits | +| `BackpressuredArray` | Bounded buffer | Producer/consumer backpressure via RxJS | +| `FastMap` | Key-value store | O(1) lookups, merge/concat support | +| `InterestMap` | Deduplicated subscriptions | Multiple waiters, single fulfillment | +| `LimitedArray` | Rolling buffer | Auto-trim + built-in average | +| `LoopTracker` | Cycle detection | Track-and-check in one call | +| `ObjectMap` | Observable collection | RxJS event stream on every mutation | +| `Stringmap` | String set | Glob matching + reactive triggers | +| `TimedAggregator` | Batch processor | Time-windowed aggregation with flush | +| `Tree` | Hierarchical data | Full navigation, iteration, mutation | + ## License and Legal Information -This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. +This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file. **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file. ### Trademarks -This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH. +This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein. + +Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar. ### Company Information Task Venture Capital GmbH -Registered at District court Bremen HRB 35230 HB, Germany +Registered at District Court Bremen HRB 35230 HB, Germany -For any legal inquiries or if you require further information, please contact us via email at hello@task.vc. +For any legal inquiries or further information, please contact us via email at hello@task.vc. By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works. diff --git a/test/test.backpressuredarray.both.ts b/test/test.backpressuredarray.both.ts new file mode 100644 index 0000000..02b9e5d --- /dev/null +++ b/test/test.backpressuredarray.both.ts @@ -0,0 +1,118 @@ +import { tap, expect } from '@push.rocks/tapbundle'; +import * as lik from '../ts/index.js'; + +let testArray: lik.BackpressuredArray; + +tap.test('should create a BackpressuredArray with default high water mark', async () => { + testArray = new lik.BackpressuredArray(); + expect(testArray).toBeInstanceOf(lik.BackpressuredArray); + expect(testArray.length).toEqual(0); +}); + +tap.test('should push items and return true while under high water mark', async () => { + const arr = new lik.BackpressuredArray(4); + expect(arr.push(1)).toBeTrue(); + expect(arr.push(2)).toBeTrue(); + expect(arr.push(3)).toBeTrue(); + expect(arr.length).toEqual(3); +}); + +tap.test('should return false when at high water mark', async () => { + const arr = new lik.BackpressuredArray(2); + arr.push(1); + const result = arr.push(2); + expect(result).toBeFalse(); + expect(arr.length).toEqual(2); +}); + +tap.test('should shift items correctly', async () => { + const arr = new lik.BackpressuredArray(4); + arr.push('a'); + arr.push('b'); + expect(arr.shift()).toEqual('a'); + expect(arr.shift()).toEqual('b'); + expect(arr.shift()).toBeUndefined(); +}); + +tap.test('should peek without removing', async () => { + const arr = new lik.BackpressuredArray(4); + arr.push('first'); + arr.push('second'); + expect(arr.peek()).toEqual('first'); + expect(arr.length).toEqual(2); +}); + +tap.test('should peek return undefined on empty', async () => { + const arr = new lik.BackpressuredArray(4); + expect(arr.peek()).toBeUndefined(); +}); + +tap.test('should pushMany items', async () => { + const arr = new lik.BackpressuredArray(10); + const result = arr.pushMany([1, 2, 3]); + expect(arr.length).toEqual(3); + expect(result).toBeTrue(); +}); + +tap.test('checkHasItems returns correct boolean', async () => { + const arr = new lik.BackpressuredArray(4); + expect(arr.checkHasItems()).toBeFalse(); + arr.push(1); + expect(arr.checkHasItems()).toBeTrue(); +}); + +tap.test('checkSpaceAvailable works correctly', async () => { + const arr = new lik.BackpressuredArray(2); + expect(arr.checkSpaceAvailable()).toBeTrue(); + arr.push(1); + expect(arr.checkSpaceAvailable()).toBeTrue(); + arr.push(2); + expect(arr.checkSpaceAvailable()).toBeFalse(); +}); + +tap.test('waitForItems resolves when items are pushed', async () => { + const arr = new lik.BackpressuredArray(4); + let resolved = false; + const waitPromise = arr.waitForItems().then(() => { + resolved = true; + }); + arr.push('hello'); + await waitPromise; + expect(resolved).toBeTrue(); +}); + +tap.test('waitForSpace resolves when items are shifted', async () => { + const arr = new lik.BackpressuredArray(1); + arr.push(1); + let resolved = false; + const waitPromise = arr.waitForSpace().then(() => { + resolved = true; + }); + arr.shift(); + await waitPromise; + expect(resolved).toBeTrue(); +}); + +tap.test('Symbol.iterator works', async () => { + const arr = new lik.BackpressuredArray(10); + arr.pushMany([10, 20, 30]); + const collected: number[] = []; + for (const item of arr) { + collected.push(item); + } + expect(collected).toEqual([10, 20, 30]); +}); + +tap.test('destroy completes subjects and unblocks waiters', async () => { + const arr = new lik.BackpressuredArray(1); + arr.push(1); + let spaceResolved = false; + const waitPromise = arr.waitForSpace().then(() => { + spaceResolved = true; + }); + arr.destroy(); + await waitPromise; + expect(spaceResolved).toBeTrue(); +}); + +export default tap.start(); diff --git a/test/test.fastmap.both.ts b/test/test.fastmap.both.ts index fc207cd..383e18d 100644 --- a/test/test.fastmap.both.ts +++ b/test/test.fastmap.both.ts @@ -1,10 +1,10 @@ import { tap, expect } from '@push.rocks/tapbundle'; - import * as lik from '../ts/index.js'; tap.test('should create a valid fastmap', async () => { const fastmap = new lik.FastMap(); expect(fastmap).toBeInstanceOf(lik.FastMap); + expect(fastmap.size).toEqual(0); }); tap.test('should find an entry', async () => { @@ -27,4 +27,125 @@ tap.test('should find an entry', async () => { expect(result.value1).toEqual('heyho3'); }); +tap.test('isUniqueKey returns true for new key, false for existing', async () => { + const map = new lik.FastMap(); + expect(map.isUniqueKey('foo')).toBeTrue(); + map.addToMap('foo', 'bar'); + expect(map.isUniqueKey('foo')).toBeFalse(); +}); + +tap.test('has() works correctly', async () => { + const map = new lik.FastMap(); + expect(map.has('x')).toBeFalse(); + map.addToMap('x', 42); + expect(map.has('x')).toBeTrue(); +}); + +tap.test('addToMap with force overwrites existing key', async () => { + const map = new lik.FastMap(); + map.addToMap('key1', 'original'); + const withoutForce = map.addToMap('key1', 'new'); + expect(withoutForce).toBeFalse(); + expect(map.getByKey('key1')).toEqual('original'); + + const withForce = map.addToMap('key1', 'new', { force: true }); + expect(withForce).toBeTrue(); + expect(map.getByKey('key1')).toEqual('new'); +}); + +tap.test('getByKey returns undefined for missing key', async () => { + const map = new lik.FastMap(); + expect(map.getByKey('nonexistent')).toBeUndefined(); +}); + +tap.test('removeFromMap removes and returns item', async () => { + const map = new lik.FastMap(); + map.addToMap('a', 'hello'); + const removed = map.removeFromMap('a'); + expect(removed).toEqual('hello'); + expect(map.has('a')).toBeFalse(); + expect(map.size).toEqual(0); +}); + +tap.test('getKeys returns all keys', async () => { + const map = new lik.FastMap(); + map.addToMap('a', 1); + map.addToMap('b', 2); + map.addToMap('c', 3); + const keys = map.getKeys(); + expect(keys.length).toEqual(3); + expect(keys).toContain('a'); + expect(keys).toContain('b'); + expect(keys).toContain('c'); +}); + +tap.test('values returns all values', async () => { + const map = new lik.FastMap(); + map.addToMap('x', 10); + map.addToMap('y', 20); + const vals = map.values(); + expect(vals.length).toEqual(2); + expect(vals).toContain(10); + expect(vals).toContain(20); +}); + +tap.test('entries returns key-value pairs', async () => { + const map = new lik.FastMap(); + map.addToMap('k1', 'v1'); + const entries = map.entries(); + expect(entries.length).toEqual(1); + expect(entries[0][0]).toEqual('k1'); + expect(entries[0][1]).toEqual('v1'); +}); + +tap.test('clean empties the map', async () => { + const map = new lik.FastMap(); + map.addToMap('a', 'b'); + map.addToMap('c', 'd'); + map.clean(); + expect(map.size).toEqual(0); + expect(map.getKeys().length).toEqual(0); +}); + +tap.test('concat merges two maps', async () => { + const map1 = new lik.FastMap(); + map1.addToMap('a', 1); + const map2 = new lik.FastMap(); + map2.addToMap('b', 2); + const merged = map1.concat(map2); + expect(merged.size).toEqual(2); + expect(merged.getByKey('a')).toEqual(1); + expect(merged.getByKey('b')).toEqual(2); +}); + +tap.test('addAllFromOther merges in place', async () => { + const map1 = new lik.FastMap(); + map1.addToMap('a', 1); + const map2 = new lik.FastMap(); + map2.addToMap('b', 2); + map2.addToMap('a', 99); + map1.addAllFromOther(map2); + expect(map1.size).toEqual(2); + expect(map1.getByKey('a')).toEqual(99); + expect(map1.getByKey('b')).toEqual(2); +}); + +tap.test('Symbol.iterator works with for...of', async () => { + const map = new lik.FastMap(); + map.addToMap('x', 1); + map.addToMap('y', 2); + const collected: [string, number][] = []; + for (const entry of map) { + collected.push(entry); + } + expect(collected.length).toEqual(2); +}); + +tap.test('find returns undefined when no match', async () => { + const map = new lik.FastMap(); + map.addToMap('a', 1); + const result = await map.find(async (item) => item === 999); + expect(result).toBeUndefined(); +}); + export default tap.start(); diff --git a/test/test.interestmap.both.ts b/test/test.interestmap.both.ts index 0abedfe..5c7dc35 100644 --- a/test/test.interestmap.both.ts +++ b/test/test.interestmap.both.ts @@ -15,11 +15,51 @@ tap.test('should create an interest', async () => { }); tap.test('should return an already existing interest', async () => { - await testInterestmap.addInterest(3); + const interest3a = await testInterestmap.addInterest(3); + const interest3b = await testInterestmap.addInterest(3); + expect(interest3a === interest3b).toBeTrue(); }); tap.test('should be able to inform about a lost interest', async () => { testInterestmap.informLostInterest(3); }); +tap.test('checkInterest returns true for existing', async () => { + expect(testInterestmap.checkInterest(4)).toBeTrue(); +}); + +tap.test('checkInterest returns false for non-existing', async () => { + expect(testInterestmap.checkInterest(999)).toBeFalse(); +}); + +tap.test('findInterest returns the interest', async () => { + const interest = testInterestmap.findInterest(4); + expect(interest).not.toBeNull(); + expect(interest.originalInterest).toEqual(4); +}); + +tap.test('findInterest returns null for non-existing', async () => { + const interest = testInterestmap.findInterest(888); + expect(interest).toBeNull(); +}); + +tap.test('fullfillInterest resolves the promise', async () => { + const im = new lik.InterestMap((s) => s); + const interest = await im.addInterest('hello'); + interest.fullfillInterest('world'); + const result = await interest.interestFullfilled; + expect(result).toEqual('world'); + expect(interest.isFullfilled).toBeTrue(); + im.destroy(); +}); + +tap.test('destroy cleans up interestmap', async () => { + const im = new lik.InterestMap((s) => s); + await im.addInterest('a'); + await im.addInterest('b'); + im.destroy(); + expect(im.checkInterest('a')).toBeFalse(); + expect(im.checkInterest('b')).toBeFalse(); +}); + export default tap.start(); diff --git a/test/test.limitedarray.both.ts b/test/test.limitedarray.both.ts index 636dc73..6f6301e 100644 --- a/test/test.limitedarray.both.ts +++ b/test/test.limitedarray.both.ts @@ -7,11 +7,83 @@ let testLimitedArray: LimitedArray; tap.test('should create a LimitedArray', async () => { testLimitedArray = new LimitedArray(6); expect(testLimitedArray).toBeInstanceOf(LimitedArray); + expect(testLimitedArray.length).toEqual(0); }); tap.test('should never be longer than the set length', async () => { testLimitedArray.addMany(['hi', 'this', 'is', 'quite', 'a', 'long', 'string', ':)']); expect(testLimitedArray.array.length < 7).toBeTrue(); + expect(testLimitedArray.length).toEqual(6); +}); + +tap.test('addOne respects limit', async () => { + const arr = new LimitedArray(3); + arr.addOne(1); + arr.addOne(2); + arr.addOne(3); + arr.addOne(4); + expect(arr.length).toEqual(3); +}); + +tap.test('setLimit truncates when lowered', async () => { + const arr = new LimitedArray(5); + arr.addMany([1, 2, 3, 4, 5]); + expect(arr.length).toEqual(5); + arr.setLimit(2); + expect(arr.length).toEqual(2); +}); + +tap.test('getAverage returns correct average for numbers', async () => { + const arr = new LimitedArray(10); + arr.addMany([10, 20, 30]); + expect(arr.getAverage()).toEqual(20); +}); + +tap.test('getAverage returns 0 for empty array', async () => { + const arr = new LimitedArray(10); + expect(arr.getAverage()).toEqual(0); +}); + +tap.test('getAverage returns null for non-number array', async () => { + const arr = new LimitedArray(10); + arr.addOne('hello'); + expect(arr.getAverage()).toBeNull(); +}); + +tap.test('remove removes an item', async () => { + const arr = new LimitedArray(10); + arr.addMany(['a', 'b', 'c']); + const removed = arr.remove('b'); + expect(removed).toBeTrue(); + expect(arr.length).toEqual(2); + const notFound = arr.remove('zzz'); + expect(notFound).toBeFalse(); +}); + +tap.test('clear empties the array', async () => { + const arr = new LimitedArray(10); + arr.addMany([1, 2, 3]); + arr.clear(); + expect(arr.length).toEqual(0); +}); + +tap.test('getArray returns a copy', async () => { + const arr = new LimitedArray(10); + arr.addMany([1, 2, 3]); + const copy = arr.getArray(); + expect(copy.length).toEqual(3); + copy.push(99); + expect(arr.length).toEqual(3); +}); + +tap.test('Symbol.iterator enables for...of', async () => { + const arr = new LimitedArray(10); + arr.addMany([5, 10, 15]); + const collected: number[] = []; + for (const item of arr) { + collected.push(item); + } + expect(collected.length).toEqual(3); }); export default tap.start(); diff --git a/test/test.looptracker.both.ts b/test/test.looptracker.both.ts index ba5ed20..52feb96 100644 --- a/test/test.looptracker.both.ts +++ b/test/test.looptracker.both.ts @@ -21,4 +21,14 @@ tap.test('should add objects once and return true', async () => { expect(myLoopTracker.checkAndTrack(object2)).toBeFalse(); }); +tap.test('reset allows re-tracking', async () => { + myLoopTracker.reset(); + expect(myLoopTracker.checkAndTrack(object1)).toBeTrue(); + expect(myLoopTracker.checkAndTrack(object1)).toBeFalse(); +}); + +tap.test('destroy cleans up', async () => { + myLoopTracker.destroy(); +}); + export default tap.start(); diff --git a/test/test.objectmap.both.ts b/test/test.objectmap.both.ts index fa3d790..56bf669 100644 --- a/test/test.objectmap.both.ts +++ b/test/test.objectmap.both.ts @@ -22,6 +22,8 @@ let testObject2: ITestObject = { tap.test('new lik.Objectmap() -> should correctly instantiate an Objectmap', async () => { testObjectmap = new lik.ObjectMap(); expect(testObjectmap).toBeInstanceOf(lik.ObjectMap); + expect(testObjectmap.length).toEqual(0); + expect(testObjectmap.isEmpty()).toBeTrue(); }); tap.test('lik.Objectmap.add() -> should correctly add an object to Objectmap', async () => { @@ -30,6 +32,14 @@ tap.test('lik.Objectmap.add() -> should correctly add an object to Objectmap', a expect(testObjectmap.checkForObject(testObject1)).toBeTrue(); // tslint:disable-next-line:no-unused-expression expect(testObjectmap.checkForObject(testObject2)).toBeFalse(); + expect(testObjectmap.length).toEqual(1); +}); + +tap.test('add same object twice returns same key', async () => { + const key1 = testObjectmap.add(testObject1); + const key2 = testObjectmap.add(testObject1); + expect(key1).toEqual(key2); + expect(testObjectmap.length).toEqual(1); }); tap.test('lik.Objectmap.remove() -> should correctly remove an object to Objectmap', async () => { @@ -73,4 +83,127 @@ tap.test('should get one object and then remove it', async () => { expect(testObjectmap.getArray()).not.toContain(oneObject); }); +tap.test('addMappedUnique and getMappedUnique work', async () => { + const map = new lik.ObjectMap(); + map.addMappedUnique('myKey', 'myValue'); + expect(map.getMappedUnique('myKey')).toEqual('myValue'); +}); + +tap.test('removeMappedUnique works', async () => { + const map = new lik.ObjectMap(); + map.addMappedUnique('k1', 'v1'); + const removed = map.removeMappedUnique('k1'); + expect(removed).toEqual('v1'); + expect(map.getMappedUnique('k1')).toBeUndefined(); +}); + +tap.test('addArray adds multiple objects', async () => { + const map = new lik.ObjectMap<{ id: number }>(); + const items = [{ id: 1 }, { id: 2 }, { id: 3 }]; + map.addArray(items); + expect(map.length).toEqual(3); + for (const item of items) { + expect(map.checkForObject(item)).toBeTrue(); + } +}); + +tap.test('findSync works', async () => { + const map = new lik.ObjectMap<{ name: string }>(); + const obj = { name: 'target' }; + map.add({ name: 'other' }); + map.add(obj); + const found = map.findSync((item) => item.name === 'target'); + expect(found).toEqual(obj); +}); + +tap.test('findOneAndRemove works', async () => { + const map = new lik.ObjectMap<{ val: number }>(); + map.add({ val: 1 }); + map.add({ val: 2 }); + const removed = await map.findOneAndRemove(async (item) => item.val === 1); + expect(removed.val).toEqual(1); + expect(map.length).toEqual(1); +}); + +tap.test('isEmpty returns correct state', async () => { + const map = new lik.ObjectMap(); + expect(map.isEmpty()).toBeTrue(); + map.add('hello'); + expect(map.isEmpty()).toBeFalse(); +}); + +tap.test('wipe clears all entries', async () => { + const map = new lik.ObjectMap(); + map.add(1); + map.add(2); + map.add(3); + map.wipe(); + expect(map.isEmpty()).toBeTrue(); + expect(map.length).toEqual(0); +}); + +tap.test('concat creates merged map', async () => { + const map1 = new lik.ObjectMap(); + map1.add('a'); + const map2 = new lik.ObjectMap(); + map2.add('b'); + const merged = map1.concat(map2); + expect(merged.length).toEqual(2); +}); + +tap.test('map/filter/reduce work', async () => { + const map = new lik.ObjectMap<{ val: number }>(); + map.add({ val: 1 }); + map.add({ val: 2 }); + map.add({ val: 3 }); + + const mapped = map.map((item) => item.val * 2); + expect(mapped.length).toEqual(3); + expect(mapped).toContain(2); + expect(mapped).toContain(4); + expect(mapped).toContain(6); + + const filtered = map.filter((item) => item.val > 1); + expect(filtered.length).toEqual(2); + + const sum = map.reduce((acc, item) => acc + item.val, 0); + expect(sum).toEqual(6); +}); + +tap.test('Symbol.iterator enables for...of', async () => { + const map = new lik.ObjectMap(); + map.add(10); + map.add(20); + const collected: number[] = []; + for (const item of map) { + collected.push(item); + } + expect(collected.length).toEqual(2); + expect(collected).toContain(10); + expect(collected).toContain(20); +}); + +tap.test('eventSubject emits add and remove events', async () => { + const map = new lik.ObjectMap(); + const events: Array<{ operation: string; payload: string }> = []; + map.eventSubject.subscribe((event) => { + events.push(event); + }); + map.add('x'); + map.remove('x'); + expect(events.length).toEqual(2); + expect(events[0].operation).toEqual('add'); + expect(events[1].operation).toEqual('remove'); +}); + +tap.test('destroy wipes and completes eventSubject', async () => { + const map = new lik.ObjectMap(); + map.add(1); + let completed = false; + map.eventSubject.subscribe({ complete: () => { completed = true; } }); + map.destroy(); + expect(map.isEmpty()).toBeTrue(); + expect(completed).toBeTrue(); +}); + export default tap.start(); diff --git a/test/test.timedaggregator.both.ts b/test/test.timedaggregator.both.ts index 8e83eda..e96baa2 100644 --- a/test/test.timedaggregator.both.ts +++ b/test/test.timedaggregator.both.ts @@ -4,20 +4,78 @@ import { expect, tap } from '@push.rocks/tapbundle'; // import the module import * as lik from '../ts/index.js'; -let testTimedAggregator: lik.TimedAggregtor; - -tap.test('should create a timed aggregaotor', async (tools) => { - testTimedAggregator = new lik.TimedAggregtor({ - aggregationIntervalInMillis: 1000, +tap.test('should create a timed aggregator and aggregate items', async (tools) => { + const batches: string[][] = []; + const aggregator = new lik.TimedAggregtor({ + aggregationIntervalInMillis: 200, functionForAggregation: (aggregation) => { - console.log(aggregation); + batches.push(aggregation); }, }); - testTimedAggregator.add('This'); - testTimedAggregator.add('is a whole sentence.'); - await tools.delayFor(1001); - testTimedAggregator.add('This one is another.'); - await tools.delayFor(2000); + aggregator.add('first'); + aggregator.add('second'); + await tools.delayFor(300); + expect(batches.length).toEqual(1); + expect(batches[0]).toContain('first'); + expect(batches[0]).toContain('second'); + + aggregator.add('third'); + await tools.delayFor(300); + expect(batches.length).toEqual(2); + expect(batches[1]).toContain('third'); + aggregator.stop(); +}); + +tap.test('stop() prevents further aggregation', async (tools) => { + const batches: number[][] = []; + const aggregator = new lik.TimedAggregtor({ + aggregationIntervalInMillis: 100, + functionForAggregation: (items) => { + batches.push(items); + }, + }); + aggregator.add(1); + aggregator.stop(); + aggregator.add(2); + await tools.delayFor(200); + expect(batches.length).toEqual(0); +}); + +tap.test('stop(true) flushes remaining items', async () => { + const batches: number[][] = []; + const aggregator = new lik.TimedAggregtor({ + aggregationIntervalInMillis: 5000, + functionForAggregation: (items) => { + batches.push(items); + }, + }); + aggregator.add(10); + aggregator.add(20); + aggregator.stop(true); + expect(batches.length).toEqual(1); + expect(batches[0]).toEqual([10, 20]); +}); + +tap.test('restart allows adding again after stop', async (tools) => { + const batches: string[][] = []; + const aggregator = new lik.TimedAggregtor({ + aggregationIntervalInMillis: 100, + functionForAggregation: (items) => { + batches.push(items); + }, + }); + aggregator.add('a'); + aggregator.stop(); + aggregator.restart(); + aggregator.add('b'); + await tools.delayFor(200); + expect(batches.length).toEqual(1); + expect(batches[0]).toContain('b'); + aggregator.stop(); +}); + +tap.test('TimedAggregator alias exists', async () => { + expect(lik.TimedAggregator).toEqual(lik.TimedAggregtor); }); export default tap.start(); diff --git a/test/test.tree.both.ts b/test/test.tree.both.ts index eedce72..e0a1fe3 100644 --- a/test/test.tree.both.ts +++ b/test/test.tree.both.ts @@ -33,8 +33,119 @@ tap.test('should add other objects in a hierachy', async () => { testTree.appendChild(testInstance, testInstance4); }); +tap.test('hasChildren returns correct value', async () => { + expect(testTree.hasChildren(testInstance)).toBeTrue(); + expect(testTree.hasChildren(testInstance2)).toBeFalse(); +}); + +tap.test('firstChild and lastChild work', async () => { + const first = testTree.firstChild(testInstance); + expect(first.hey).toEqual('second'); + const last = testTree.lastChild(testInstance); + expect(last.hey).toEqual('fourth'); +}); + +tap.test('parent returns correct parent', async () => { + const parent = testTree.parent(testInstance2); + expect(parent.hey).toEqual('first'); +}); + +tap.test('nextSibling and previousSibling work', async () => { + const next = testTree.nextSibling(testInstance2); + expect(next.hey).toEqual('third'); + const prev = testTree.previousSibling(testInstance3); + expect(prev.hey).toEqual('second'); +}); + +tap.test('childrenCount returns correct count', async () => { + expect(testTree.childrenCount(testInstance)).toEqual(3); + expect(testTree.childrenCount(testInstance2)).toEqual(0); +}); + +tap.test('index returns sibling index', async () => { + expect(testTree.index(testInstance2)).toEqual(0); + expect(testTree.index(testInstance3)).toEqual(1); + expect(testTree.index(testInstance4)).toEqual(2); +}); + +tap.test('childrenToArray returns children', async () => { + const children = testTree.childrenToArray(testInstance, {}); + expect(children.length).toEqual(3); + expect(children[0].hey).toEqual('second'); +}); + +tap.test('insertBefore works', async () => { + testTree.initialize(testInstance5); + testTree.insertBefore(testInstance3, testInstance5); + const idx = testTree.index(testInstance5); + expect(idx).toEqual(1); + expect(testTree.nextSibling(testInstance5).hey).toEqual('third'); +}); + +tap.test('insertAfter works', async () => { + testTree.initialize(testInstance6); + testTree.insertAfter(testInstance3, testInstance6); + expect(testTree.previousSibling(testInstance6).hey).toEqual('third'); +}); + +tap.test('remove detaches node', async () => { + const countBefore = testTree.childrenCount(testInstance); + testTree.remove(testInstance6); + expect(testTree.childrenCount(testInstance)).toEqual(countBefore - 1); +}); + +tap.test('treeIterator with options works', async () => { + const items: TestClass[] = []; + for (const item of testTree.treeIterator(testInstance, {})) { + items.push(item); + } + expect(items.length).toBeGreaterThan(1); + expect(items[0].hey).toEqual('first'); +}); + +tap.test('nextSiblingsIterator works (bug was fixed)', async () => { + const siblings: TestClass[] = []; + for (const item of testTree.nextSiblingsIterator(testInstance2)) { + siblings.push(item); + } + expect(siblings.length).toBeGreaterThan(0); +}); + +tap.test('ancestorsIterator works (bug was fixed)', async () => { + const ancestors: TestClass[] = []; + for (const item of testTree.ancestorsIterator(testInstance2)) { + ancestors.push(item); + } + expect(ancestors.length).toBeGreaterThan(0); +}); + tap.test("should create a JSON object that reflects a tree's hierachy", async () => { - const jsonTreet = testTree.toJsonWithHierachy(testInstance); + const jsonTree = testTree.toJsonWithHierachy(testInstance); + expect(jsonTree).toHaveProperty('data'); + expect(jsonTree).toHaveProperty('children'); + expect(jsonTree.data.hey).toEqual('first'); + expect(jsonTree.children.length).toBeGreaterThan(0); +}); + +tap.test('fromJsonWithHierachy rebuilds a tree', async () => { + const newTree = new lik.Tree<{ name: string }>(); + const jsonRoot = { + data: { name: 'root' }, + children: [ + { data: { name: 'child1' }, children: [] }, + { + data: { name: 'child2' }, + children: [{ data: { name: 'grandchild' }, children: [] }], + }, + ], + }; + const root = newTree.fromJsonWithHierachy(jsonRoot); + expect(root.name).toEqual('root'); + expect(newTree.hasChildren(root)).toBeTrue(); + expect(newTree.childrenCount(root)).toEqual(2); + const children = newTree.childrenToArray(root, {}); + expect(children[1].name).toEqual('child2'); + expect(newTree.hasChildren(children[1])).toBeTrue(); }); export default tap.start(); diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 62de182..05c568d 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/lik', - version: '6.3.1', + version: '6.4.0', description: 'Provides a collection of lightweight helpers and utilities for Node.js projects.' } diff --git a/ts/classes.backpressuredarray.ts b/ts/classes.backpressuredarray.ts index 80f4832..6ce3916 100644 --- a/ts/classes.backpressuredarray.ts +++ b/ts/classes.backpressuredarray.ts @@ -12,6 +12,10 @@ export class BackpressuredArray { this.highWaterMark = highWaterMark; } + public get length(): number { + return this.data.length; + } + push(item: T): boolean { this.data.push(item); this.itemsAvailable.next('itemsAvailable'); @@ -23,6 +27,13 @@ export class BackpressuredArray { return spaceAvailable; } + pushMany(items: T[]): boolean { + for (const item of items) { + this.push(item); + } + return this.checkSpaceAvailable(); + } + shift(): T | undefined { const item = this.data.shift(); if (this.checkSpaceAvailable()) { @@ -31,6 +42,10 @@ export class BackpressuredArray { return item; } + peek(): T | undefined { + return this.data[0]; + } + checkSpaceAvailable(): boolean { return this.data.length < this.highWaterMark; } @@ -75,6 +90,10 @@ export class BackpressuredArray { }); } + public [Symbol.iterator](): Iterator { + return this.data[Symbol.iterator](); + } + /** * destroys the BackpressuredArray, completing all subjects */ diff --git a/ts/classes.fastmap.ts b/ts/classes.fastmap.ts index b0a4c01..dd0e849 100644 --- a/ts/classes.fastmap.ts +++ b/ts/classes.fastmap.ts @@ -9,10 +9,18 @@ import * as plugins from './classes.plugins.js'; * fast map allows for very quick lookups of objects with a unique key */ export class FastMap { - private mapObject: { [key: string]: T } = {}; + private mapObject = new Map(); public isUniqueKey(keyArg: string): boolean { - return this.mapObject[keyArg] ? false : true; + return !this.mapObject.has(keyArg); + } + + public has(keyArg: string): boolean { + return this.mapObject.has(keyArg); + } + + public get size(): number { + return this.mapObject.size; } public addToMap( @@ -23,35 +31,37 @@ export class FastMap { } ): boolean { if (this.isUniqueKey(keyArg) || (optionsArg && optionsArg.force)) { - this.mapObject[keyArg] = objectArg; + this.mapObject.set(keyArg, objectArg); return true; } else { return false; } } - public getByKey(keyArg: string) { - return this.mapObject[keyArg]; + public getByKey(keyArg: string): T | undefined { + return this.mapObject.get(keyArg); } public removeFromMap(keyArg: string): T { - const removedItem = this.getByKey(keyArg); - delete this.mapObject[keyArg]; + const removedItem = this.mapObject.get(keyArg); + this.mapObject.delete(keyArg); return removedItem; } - public getKeys() { - const keys: string[] = []; - for (const keyArg in this.mapObject) { - if (this.mapObject[keyArg]) { - keys.push(keyArg); - } - } - return keys; + public getKeys(): string[] { + return Array.from(this.mapObject.keys()); + } + + public values(): T[] { + return Array.from(this.mapObject.values()); + } + + public entries(): [string, T][] { + return Array.from(this.mapObject.entries()); } public clean() { - this.mapObject = {}; + this.mapObject.clear(); } /** @@ -94,4 +104,8 @@ export class FastMap { } } } + + public [Symbol.iterator](): Iterator<[string, T]> { + return this.mapObject.entries(); + } } diff --git a/ts/classes.interestmap.ts b/ts/classes.interestmap.ts index 110cf7f..b23d9eb 100644 --- a/ts/classes.interestmap.ts +++ b/ts/classes.interestmap.ts @@ -26,6 +26,11 @@ export class InterestMap { */ private interestObjectMap = new ObjectMap>(); + /** + * O(1) lookup of interests by their comparison string + */ + private interestsByComparisonString = new Map>(); + /** * a function to compare interests */ @@ -49,29 +54,23 @@ export class InterestMap { ): Promise> { const comparisonString = this.comparisonFunc(interestId); let returnInterest: Interest; - const newInterest = new Interest( - this, - interestId, - this.comparisonFunc, - { - markLostAfterDefault: this.options.markLostAfterDefault, - defaultFullfillment: defaultFullfillmentArg, - } - ); - let interestExists = false; - await this.interestObjectMap.forEach((interestArg) => { - if (!interestExists && interestArg.comparisonString === newInterest.comparisonString) { - console.log('info', `interest already exists for ${newInterest.comparisonString}`); - interestExists = true; - returnInterest = interestArg; - returnInterest.renew(); - } - }); - if (!returnInterest) { - returnInterest = newInterest; - this.interestObjectMap.add(returnInterest); + + const existingInterest = this.interestsByComparisonString.get(comparisonString); + if (existingInterest) { + returnInterest = existingInterest; + returnInterest.renew(); } else { - newInterest.destroy(); // clean up abandoned Interest's timers + returnInterest = new Interest( + this, + interestId, + this.comparisonFunc, + { + markLostAfterDefault: this.options.markLostAfterDefault, + defaultFullfillment: defaultFullfillmentArg, + } + ); + this.interestObjectMap.add(returnInterest); + this.interestsByComparisonString.set(comparisonString, returnInterest); } this.interestObservable.push(returnInterest); return returnInterest; @@ -83,9 +82,10 @@ export class InterestMap { * removes an interest from the interest map */ public removeInterest(interestArg: Interest) { - const interestToRemove = this.interestObjectMap.findOneAndRemoveSync((interestArg2) => { + this.interestObjectMap.findOneAndRemoveSync((interestArg2) => { return interestArg.comparisonString === interestArg2.comparisonString; }); + this.interestsByComparisonString.delete(interestArg.comparisonString); } /** @@ -101,14 +101,7 @@ export class InterestMap { * @param comparisonStringArg */ public checkInterestByString(comparisonStringArg: string): boolean { - const foundInterest = this.interestObjectMap.findSync((interest) => { - return interest.comparisonString === comparisonStringArg; - }); - if (foundInterest) { - return true; - } else { - return false; - } + return this.interestsByComparisonString.has(comparisonStringArg); } /** @@ -128,10 +121,7 @@ export class InterestMap { */ public findInterest(interestId: DTInterestId): Interest { const comparableString = this.comparisonFunc(interestId); - const interest = this.interestObjectMap.findSync((interestArg) => { - return interestArg.comparisonString === comparableString; - }); - return interest; // if an interest is found, the interest is returned, otherwise interest is null + return this.interestsByComparisonString.get(comparableString) ?? null; } /** @@ -143,6 +133,7 @@ export class InterestMap { interest.destroy(); } this.interestObjectMap.wipe(); + this.interestsByComparisonString.clear(); this.interestObservable.signalComplete(); } } diff --git a/ts/classes.limitedarray.ts b/ts/classes.limitedarray.ts index d9daae7..a97a77a 100644 --- a/ts/classes.limitedarray.ts +++ b/ts/classes.limitedarray.ts @@ -7,6 +7,10 @@ export class LimitedArray { this.arrayLimit = limitArg; } + public get length(): number { + return this.array.length; + } + addOne(objectArg: T) { this.array.unshift(objectArg); if (this.array.length > this.arrayLimit) { @@ -28,6 +32,9 @@ export class LimitedArray { } getAverage(): number { + if (this.array.length === 0) { + return 0; + } if (typeof this.array[0] === 'number') { let sum = 0; for (let localNumber of this.array) { @@ -39,4 +46,25 @@ export class LimitedArray { return null; } } + + remove(item: T): boolean { + const idx = this.array.indexOf(item); + if (idx !== -1) { + this.array.splice(idx, 1); + return true; + } + return false; + } + + clear(): void { + this.array.length = 0; + } + + getArray(): T[] { + return [...this.array]; + } + + public [Symbol.iterator](): Iterator { + return this.array[Symbol.iterator](); + } } diff --git a/ts/classes.objectmap.ts b/ts/classes.objectmap.ts index da6f368..719761d 100644 --- a/ts/classes.objectmap.ts +++ b/ts/classes.objectmap.ts @@ -31,6 +31,7 @@ export interface IObjectMapEventData { */ export class ObjectMap { private fastMap = new FastMap(); + private reverseMap = new Map(); // events public eventSubject = new plugins.smartrx.rxjs.Subject>(); @@ -42,12 +43,20 @@ export class ObjectMap { // nothing here } + /** + * the number of objects in the map + */ + public get length(): number { + return this.fastMap.size; + } + /** * adds an object mapped to a string * the string must be unique */ addMappedUnique(uniqueKeyArg: string, objectArg: T) { this.fastMap.addToMap(uniqueKeyArg, objectArg); + this.reverseMap.set(objectArg, uniqueKeyArg); } /** @@ -65,6 +74,7 @@ export class ObjectMap { public removeMappedUnique(uniqueKey: string): T { const object = this.fastMap.removeFromMap(uniqueKey); if (object !== undefined) { + this.reverseMap.delete(object); this.eventSubject.next({ operation: 'remove', payload: object, @@ -75,19 +85,14 @@ export class ObjectMap { /** * add object to Objectmap - * returns false if the object is already in the map - * returns true if the object was added successfully + * returns the key for the object (existing or new) */ public add(objectArg: T): string { - // lets search for an existing unique key - for (const keyArg of this.fastMap.getKeys()) { - const object = this.fastMap.getByKey(keyArg); - if (object === objectArg) { - return keyArg; - } + const existingKey = this.reverseMap.get(objectArg); + if (existingKey !== undefined) { + return existingKey; } - // otherwise lets create it const uniqueKey = uni('key'); this.addMappedUnique(uniqueKey, objectArg); this.eventSubject.next({ @@ -110,23 +115,14 @@ export class ObjectMap { * check if object is in Objectmap */ public checkForObject(objectArg: T): boolean { - return !!this.getKeyForObject(objectArg); + return this.reverseMap.has(objectArg); } /** * get key for object - * @param findFunction */ - public getKeyForObject(objectArg: T) { - let foundKey: string = null; - for (const keyArg of this.fastMap.getKeys()) { - if (!foundKey && this.fastMap.getByKey(keyArg) === objectArg) { - foundKey = keyArg; - } else { - continue; - } - } - return foundKey; + public getKeyForObject(objectArg: T): string | null { + return this.reverseMap.get(objectArg) ?? null; } /** @@ -181,6 +177,7 @@ export class ObjectMap { } else { const keyToUse = keys[0]; const removedItem = this.fastMap.removeFromMap(keyToUse); + this.reverseMap.delete(removedItem); this.eventSubject.next({ operation: 'remove', payload: removedItem, @@ -193,27 +190,24 @@ export class ObjectMap { * returns a cloned array of all the objects currently in the Objectmap */ public getArray(): T[] { - const returnArray: any[] = []; - for (const keyArg of this.fastMap.getKeys()) { - returnArray.push(this.fastMap.getByKey(keyArg)); - } - return returnArray; + return this.fastMap.values(); } /** * check if Objectmap ist empty */ public isEmpty(): boolean { - return this.fastMap.getKeys().length === 0; + return this.fastMap.size === 0; } /** * remove object from Objectmap */ public remove(objectArg: T): T { - if (this.checkForObject(objectArg)) { - const keyArg = this.getKeyForObject(objectArg); + const keyArg = this.reverseMap.get(objectArg); + if (keyArg !== undefined) { const removedObject = this.fastMap.removeFromMap(keyArg); + this.reverseMap.delete(removedObject); this.eventSubject.next({ operation: 'remove', payload: removedObject, @@ -230,6 +224,7 @@ export class ObjectMap { const keys = this.fastMap.getKeys(); for (const keyArg of keys) { const removedObject = this.fastMap.removeFromMap(keyArg); + this.reverseMap.delete(removedObject); this.eventSubject.next({ operation: 'remove', payload: removedObject, @@ -244,6 +239,10 @@ export class ObjectMap { const concattedObjectMap = new ObjectMap(); concattedObjectMap.fastMap.addAllFromOther(this.fastMap); concattedObjectMap.fastMap.addAllFromOther(objectMapArg.fastMap); + // rebuild reverse map for the concatenated map + for (const key of concattedObjectMap.fastMap.getKeys()) { + concattedObjectMap.reverseMap.set(concattedObjectMap.fastMap.getByKey(key), key); + } return concattedObjectMap; } @@ -254,6 +253,26 @@ export class ObjectMap { */ public addAllFromOther(objectMapArg: ObjectMap) { this.fastMap.addAllFromOther(objectMapArg.fastMap); + // rebuild reverse map + for (const key of objectMapArg.fastMap.getKeys()) { + this.reverseMap.set(objectMapArg.fastMap.getByKey(key), key); + } + } + + public map(fn: (item: T) => U): U[] { + return this.getArray().map(fn); + } + + public filter(fn: (item: T) => boolean): T[] { + return this.getArray().filter(fn); + } + + public reduce(fn: (acc: U, item: T) => U, initial: U): U { + return this.getArray().reduce(fn, initial); + } + + public [Symbol.iterator](): Iterator { + return this.getArray()[Symbol.iterator](); } /** @@ -261,6 +280,7 @@ export class ObjectMap { */ public destroy() { this.wipe(); + this.reverseMap.clear(); this.eventSubject.complete(); } } diff --git a/ts/classes.stringmap.ts b/ts/classes.stringmap.ts index 813f5ce..eadbf4d 100644 --- a/ts/classes.stringmap.ts +++ b/ts/classes.stringmap.ts @@ -31,11 +31,7 @@ export class Stringmap { * removes a string from Stringmap */ removeString(stringArg: string) { - for (const keyArg in this._stringArray) { - if (this._stringArray[keyArg] === stringArg) { - this._stringArray.splice(parseInt(keyArg), 1); - } - } + this._stringArray = this._stringArray.filter(s => s !== stringArg); this.notifyTrigger(); } diff --git a/ts/classes.timedaggregator.ts b/ts/classes.timedaggregator.ts index 612e495..b21cd24 100644 --- a/ts/classes.timedaggregator.ts +++ b/ts/classes.timedaggregator.ts @@ -68,4 +68,11 @@ export class TimedAggregtor { this.storageArray = []; } } + + public restart(): void { + this.isStopped = false; + } } + +// correctly-spelled alias +export { TimedAggregtor as TimedAggregator }; diff --git a/ts/classes.tree.ts b/ts/classes.tree.ts index ebdb78b..9f01afe 100644 --- a/ts/classes.tree.ts +++ b/ts/classes.tree.ts @@ -75,15 +75,15 @@ export class Tree { } nextSiblingsIterator(objectArg: T) { - return this.symbolTree.nextSiblingsIterator(); + return this.symbolTree.nextSiblingsIterator(objectArg); } - ancestorsIterator(objectArg: T) { - this.symbolTree.ancestorsIterator(); + ancestorsIterator(objectArg: T): Iterable { + return this.symbolTree.ancestorsIterator(objectArg); } - treeIterator(rootArg: T, optionsArg: any): Iterable { - return this.symbolTree.treeIterator(rootArg); + treeIterator(rootArg: T, optionsArg?: any): Iterable { + return this.symbolTree.treeIterator(rootArg, optionsArg); } index(childArg: T): number { @@ -119,23 +119,48 @@ export class Tree { } // =========================================== - // Functionionality that extends symbol-tree + // Functionality that extends symbol-tree // =========================================== /** - * returns a branch of the tree as JSON - * can be user + * returns a branch of the tree as a recursive JSON structure */ - toJsonWithHierachy(rootElement: T) { - const treeIterable = this.treeIterator(rootElement, {}); - for (const treeItem of treeIterable) { - console.log(treeItem); - } + toJsonWithHierachy(rootElement: T): ITreeNode { + const buildNode = (element: T): ITreeNode => { + const children: ITreeNode[] = []; + if (this.hasChildren(element)) { + const childrenArray = this.childrenToArray(element, {}); + for (const child of childrenArray) { + children.push(buildNode(child)); + } + } + return { data: element, children }; + }; + return buildNode(rootElement); } /** - * builds a tree from a JSON with hierachy - * @param rootElement + * builds a tree from a recursive JSON structure + * @param jsonRoot the root node in ITreeNode format + * @param reviver optional function to reconstruct T from serialized data */ - fromJsonWithHierachy(rootElement: T) {} + fromJsonWithHierachy(jsonRoot: ITreeNode, reviver?: (data: any) => T): T { + const buildTree = (node: ITreeNode, parentElement?: T): T => { + const element = reviver ? reviver(node.data) : node.data; + this.initialize(element); + if (parentElement) { + this.appendChild(parentElement, element); + } + for (const childNode of node.children) { + buildTree(childNode, element); + } + return element; + }; + return buildTree(jsonRoot); + } +} + +export interface ITreeNode { + data: T; + children: ITreeNode[]; } diff --git a/ts/index.ts b/ts/index.ts index a389946..a0b194c 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -8,4 +8,5 @@ export * from './classes.looptracker.js'; export * from './classes.objectmap.js'; export * from './classes.stringmap.js'; export * from './classes.timedaggregator.js'; +export { TimedAggregator } from './classes.timedaggregator.js'; export * from './classes.tree.js'; diff --git a/tsconfig.json b/tsconfig.json index dfe5a55..70d3f34 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,5 @@ { "compilerOptions": { - "experimentalDecorators": true, - "useDefineForClassFields": false, "target": "ES2022", "module": "NodeNext", "moduleResolution": "NodeNext",