From 535d9f8520155a91f7dcb595729477cd12423f10 Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Mon, 17 Jun 2024 16:01:35 +0200 Subject: [PATCH] fix(core): update --- package.json | 4 +- pnpm-lock.yaml | 1420 +++++++++++++++++++++++++++++++------ ts/00_commitinfo_data.ts | 2 +- ts/classes.bucket.ts | 243 +++---- ts/classes.directory.ts | 136 ++-- ts/classes.metadata.ts | 2 +- ts/classes.smartbucket.ts | 27 +- ts/plugins.ts | 8 +- 8 files changed, 1421 insertions(+), 421 deletions(-) diff --git a/package.json b/package.json index f071ecf..8e50e91 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@push.rocks/tapbundle": "^5.0.23" }, "dependencies": { + "@aws-sdk/client-s3": "^3.598.0", "@push.rocks/smartmime": "^2.0.2", "@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpromise": "^4.0.3", @@ -26,8 +27,7 @@ "@push.rocks/smartstream": "^3.0.44", "@push.rocks/smartstring": "^4.0.15", "@push.rocks/smartunique": "^3.0.9", - "@tsclass/tsclass": "^4.0.55", - "minio": "^8.0.0" + "@tsclass/tsclass": "^4.0.59" }, "private": false, "files": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 47f9e3c..f28ee07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@aws-sdk/client-s3': + specifier: ^3.598.0 + version: 3.598.0 '@push.rocks/smartmime': specifier: ^2.0.2 version: 2.0.2 @@ -30,11 +33,8 @@ importers: specifier: ^3.0.9 version: 3.0.9 '@tsclass/tsclass': - specifier: ^4.0.55 - version: 4.0.55 - minio: - specifier: ^8.0.0 - version: 8.0.0 + specifier: ^4.0.59 + version: 4.0.59 devDependencies: '@git.zone/tsbuild': specifier: ^2.1.80 @@ -72,6 +72,171 @@ packages: '@apiglobal/typedrequest-interfaces@2.0.1': resolution: {integrity: sha512-Oi7pNU4vKo5UvcCJmqkH43Us237Ws/Pp/WDYnwnonRnTmIMd+6QjNfN/gXcPnP6tbamk8r8Xzcz9mgnSDM2ysw==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.598.0': + resolution: {integrity: sha512-UMxftsgF6j1vzm4Qd9vQJHs2he1NQCWWV8esZfmNFq23OpUC2BPMxkqi13ZQ9tnTAZUNs7yFT/x4Zsi/wpRZEw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso-oidc@3.598.0': + resolution: {integrity: sha512-jfdH1pAO9Tt8Nkta/JJLoUnwl7jaRdxToQTJfUtE+o3+0JP5sA4LfC2rBkJSWcU5BdAA+kyOs5Lv776DlN04Vg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso@3.598.0': + resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sts@3.598.0': + resolution: {integrity: sha512-bXhz/cHL0iB9UH9IFtMaJJf4F8mV+HzncETCRFzZ9SyUMt5rP9j8A7VZknqGYSx/6mI8SsB1XJQkWSbhn6FiSQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/core@3.598.0': + resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-env@3.598.0': + resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.598.0': + resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.598.0': + resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.598.0 + + '@aws-sdk/credential-provider-node@3.598.0': + resolution: {integrity: sha512-sXTlqL5I/awlF9Dg2MQ17SfrEaABVnsj2mf4jF5qQrIRhfbvQOIYdEqdy8Rn1AWlJMz/N450SGzc0XJ5owxxqw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-process@3.598.0': + resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-sso@3.598.0': + resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.598.0': + resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.598.0 + + '@aws-sdk/middleware-bucket-endpoint@3.598.0': + resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.598.0': + resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.598.0': + resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-host-header@3.598.0': + resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.598.0': + resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-logger@3.598.0': + resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.598.0': + resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.598.0': + resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-signing@3.598.0': + resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.598.0': + resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-user-agent@3.598.0': + resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/region-config-resolver@3.598.0': + resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.598.0': + resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/token-providers@3.598.0': + resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.598.0 + + '@aws-sdk/types@3.598.0': + resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-endpoints@3.598.0': + resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-locate-window@3.568.0': + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-user-agent-browser@3.598.0': + resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + + '@aws-sdk/util-user-agent-node@3.598.0': + resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.598.0': + resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} + engines: {node: '>=16.0.0'} + '@babel/code-frame@7.24.2': resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -608,6 +773,209 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} + '@smithy/abort-controller@3.0.1': + resolution: {integrity: sha512-Jb7jg4E+C+uvrUQi+h9kbILY6ts6fglKZzseMCHlH9ayq+1f5QdpYf8MV/xppuiN6DAMJAmwGz53GwP3213dmA==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + + '@smithy/config-resolver@3.0.2': + resolution: {integrity: sha512-wUyG6ezpp2sWAvfqmSYTROwFUmJqKV78GLf55WODrosBcT0BAMd9bOLO4HRhynWBgAobPml2cF9ZOdgCe00r+g==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.2.1': + resolution: {integrity: sha512-R8Pzrr2v2oGUoj4CTZtKPr87lVtBsz7IUBGhSwS1kc6Cj0yPwNdYbkzhFsxhoDE9+BPl09VN/6rFsW9GJzWnBA==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.1.1': + resolution: {integrity: sha512-htndP0LwHdE3R3Nam9ZyVWhwPYOmD4xCL79kqvNxy8u/bv0huuy574CSiRY4cvEICgimv8jlVfLeZ7zZqbnB2g==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.1.0': + resolution: {integrity: sha512-XFDl70ZY+FabSnTX3oQGGYvdbEaC8vPEFkCEOoBkumqaZIwR1WjjJCDu2VMXlHbKWKshefWXdT0NYteL5v6uFw==} + + '@smithy/eventstream-serde-browser@3.0.2': + resolution: {integrity: sha512-6147vdedQGaWn3Nt4P1KV0LuV8IH4len1SAeycyko0p8oRLWFyYyx0L8JHGclePDSphkjxZqBHtyIfyupCaTGg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.1': + resolution: {integrity: sha512-6+B8P+5Q1mll4u7IoI7mpmYOSW3/c2r3WQoYLdqOjbIKMixJFGmN79ZjJiNMy4X2GZ4We9kQ6LfnFuczSlhcyw==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.2': + resolution: {integrity: sha512-DLtmGAfqxZAql8rB+HqyPlUne22u3EEVj+hxlUjgXk0hXt+SfLGK0ljzRFmiWQ3qGpHu1NdJpJA9e5JE/dJxFw==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.2': + resolution: {integrity: sha512-d3SgAIQ/s4EbU8HAHJ8m2MMJPAL30nqJktyVgvqZWNznA8PJl61gJw5gj/yjIt/Fvs3d4fU8FmPPAhdp2yr/7A==} + engines: {node: '>=16.0.0'} + + '@smithy/fetch-http-handler@3.0.2': + resolution: {integrity: sha512-0nW6tLK0b7EqSsfKvnOmZCgJqnodBAnvqcrlC5dotKfklLedPTRGsQamSVbVDWyuU/QGg+YbZDJUQ0CUufJXZQ==} + + '@smithy/hash-blob-browser@3.1.0': + resolution: {integrity: sha512-lKEHDN6bLzYdx5cFmdMHfYVmmTZTmjphwPBSumgkaniEYwRAXnbDEGETeuzfquS9Py1aH6cmqzXWxxkD7mV3sA==} + + '@smithy/hash-node@3.0.1': + resolution: {integrity: sha512-w2ncjgk2EYO2+WhAsSQA8owzoOSY7IL1qVytlwpnL1pFGWTjIoIh5nROkEKXY51unB63bMGZqDiVoXaFbyKDlg==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.1.0': + resolution: {integrity: sha512-OkU9vjN17yYsXTSrouctZn2iYwG4z8WSc7F50+9ogG2crOtMopkop+22j35tX2ry2i/vLRCYgnqEmBWfvnYT2g==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.1': + resolution: {integrity: sha512-RSNF/32BKygXKKMyS7koyuAq1rcdW5p5c4EFa77QenBFze9As+JiRnV9OWBh2cB/ejGZalEZjvIrMLHwJl7aGA==} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.1': + resolution: {integrity: sha512-wQa0YGsR4Zb1GQLGwOOgRAbkj22P6CFGaFzu5bKk8K4HVNIC2dBlIxqZ/baF0pLiSZySAPdDZT7CdZ7GkGXt5A==} + + '@smithy/middleware-content-length@3.0.1': + resolution: {integrity: sha512-6QdK/VbrCfXD5/QolE2W/ok6VqxD+SM28Ds8iSlEHXZwv4buLsvWyvoEEy0322K/g5uFgPzBmZjGqesTmPL+yQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.0.2': + resolution: {integrity: sha512-gWEaGYB3Bei17Oiy/F2IlUPpBazNXImytoOdJ1xbrUOaJKAOiUhx8/4FOnYLLJHdAwa9PlvJ2ULda2f/Dnwi9w==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.4': + resolution: {integrity: sha512-Tu+FggbLNF5G9L6Wi8o32Mg4bhlBInWlhhaFKyytGRnkfxGopxFVXJQn7sjZdFYJyTz6RZZa06tnlvavUgtoVg==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.1': + resolution: {integrity: sha512-ak6H/ZRN05r5+SR0/IUc5zOSyh2qp3HReg1KkrnaSLXmncy9lwOjNqybX4L4x55/e5mtVDn1uf/gQ6bw5neJPw==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.1': + resolution: {integrity: sha512-fS5uT//y1SlBdkzIvgmWQ9FufwMXrHSSbuR25ygMy1CRDIZkcBMoF4oTMYNfR9kBlVBcVzlv7joFdNrFuQirPA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.1': + resolution: {integrity: sha512-z5G7+ysL4yUtMghUd2zrLkecu0mTfnYlt5dR76g/HsFqf7evFazwiZP1ag2EJenGxNBDwDM5g8nm11NPogiUVA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.0.1': + resolution: {integrity: sha512-hlBI6MuREA4o1wBMEt+QNhUzoDtFFvwR6ecufimlx9D79jPybE/r8kNorphXOi91PgSO9S2fxRjcKCLk7Jw8zA==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.1.1': + resolution: {integrity: sha512-YknOMZcQkB5on+MU0DvbToCmT2YPtTETMXW0D3+/Iln7ezT+Zm1GMHhCW1dOH/X/+LkkQD9aXEoCX/B10s4Xdw==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@4.0.1': + resolution: {integrity: sha512-eBhm9zwcFPEazc654c0BEWtxYAzrw+OhoSf5pkwKzfftWKXRoqEhwOE2Pvn30v0iAdo7Mfsfb6pi1NnZlGCMpg==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.1': + resolution: {integrity: sha512-vKitpnG/2KOMVlx3x1S3FkBH075EROG3wcrcDaNerQNh8yuqnSL23btCD2UyX4i4lpPzNW6VFdxbn2Z25b/g5Q==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.1': + resolution: {integrity: sha512-Qt8DMC05lVS8NcQx94lfVbZSX+2Ym7032b/JR8AlboAa/D669kPzqb35dkjkvAG6+NWmUchef3ENtrD6F+5n8Q==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.1': + resolution: {integrity: sha512-ubFUvIePjDCyIzZ+pLETqNC6KXJ/fc6g+/baqel7Zf6kJI/kZKgjwkCI7zbUhoUuOZ/4eA/87YasVu40b/B4bA==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.1.1': + resolution: {integrity: sha512-nD6tXIX2126/P9e3wqRY1bm9dTtPZwRDyjVOd18G28o+1UOG+kOVgUwujE795HslSuPlEgqzsH5sgNP1hDjj9g==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@3.1.0': + resolution: {integrity: sha512-m0/6LW3IQ3/JBcdhqjpkpABPTPhcejqeAn0U877zxBdNLiWAnG2WmCe5MfkUyVuvpFTPQnQwCo/0ZBR4uF5kxg==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.1.2': + resolution: {integrity: sha512-f3eQpczBOFUtdT/ptw2WpUKu1qH1K7xrssrSiHYtd9TuLXkvFqb88l9mz9FHeUVNSUxSnkW1anJnw6rLwUKzQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/types@3.1.0': + resolution: {integrity: sha512-qi4SeCVOUPjhSSZrxxB/mB8DrmuSFUcJnD9KXjuP+7C3LV/KFV4kpuUSH3OHDZgQB9TEH/1sO/Fq/5HyaK9MPw==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.1': + resolution: {integrity: sha512-G140IlNFlzYWVCedC4E2d6NycM1dCUbe5CnsGW1hmGt4hYKiGOw0v7lVru9WAn5T2w09QEjl4fOESWjGmCvVmg==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.4': + resolution: {integrity: sha512-sXtin3Mue3A3xo4+XkozpgPptgmRwvNPOqTvb3ANGTCzzoQgAPBNjpE+aXCINaeSMXwHmv7E2oEn2vWdID+SAQ==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.4': + resolution: {integrity: sha512-CUF6TyxLh3CgBRVYgZNOPDfzHQjeQr0vyALR6/DkQkOm7rNfGEzW1BRFi88C73pndmfvoiIT7ochuT76OPz9Dw==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.0.2': + resolution: {integrity: sha512-4zFOcBFQvifd2LSD4a1dKvfIWWwh4sWNtS3oZ7mpob/qPPmJseqKB148iT+hWCDsG//TmI+8vjYPgZdvnkYlTg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@3.0.1': + resolution: {integrity: sha512-WRODCQtUsO7vIvfrdxS8RFPeLKcewYtaCglZsBsedIKSUGIIvMlZT5oh+pCe72I+1L+OjnZuqRNpN2LKhWA4KQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.1': + resolution: {integrity: sha512-5lRtYm+8fNFEUTdqZXg5M4ppVp40rMIJfR1TpbHAhKQgPIDpWT+iYMaqgnwEbtpi9U1smyUOPv5Sg+M1neOBgw==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.0.2': + resolution: {integrity: sha512-n5Obp5AnlI6qHo8sbupwrcpBe6vFp4qkl0SRNuExKPNrH3ABAMG2ZszRTIUIv2b4AsFrCO+qiy4uH1Q3z1dxTA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.0.1': + resolution: {integrity: sha512-wwnrVQdjQxvWGOAiLmqlEhENGCcDIN+XJ/+usPOgSZObAslrCXgKlkX7rNVwIWW2RhPguTKthvF+4AoO0Z6KpA==} + engines: {node: '>=16.0.0'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -627,8 +995,8 @@ packages: '@tsclass/tsclass@3.0.48': resolution: {integrity: sha512-hC65UvDlp9qvsl6OcIZXz0JNiWZ0gyzsTzbXpg215sGxopgbkOLCr6E0s4qCTnweYm95gt2AdY95uP7M7kExaQ==} - '@tsclass/tsclass@4.0.55': - resolution: {integrity: sha512-zg774JF90/3/rJ7xk4LyGgxcUzxdKIQcwtBVxez4LhvegESxvHiFmX42WL105iBpE53ISJ8sctLWlwG1JQZdlA==} + '@tsclass/tsclass@4.0.59': + resolution: {integrity: sha512-zSdNX/qzuekfCFG81k4e1X2tj1S+rbs2tM4CFAzT+aLiu2/AqdS1iPYwH/sYpY8vm+vBfllks9rlsuRSA2xTeg==} '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -866,9 +1234,6 @@ packages: resolution: {integrity: sha512-G0D3mv9jvR+5xILENchPP9v1ZjBf3QVlzarMLR5jedCNbgntzcayF0LeW5wh5uyafGZJH28cYm9jGrJvGipoPQ==} engines: {node: '>=18.0.0'} - '@zxing/text-encoding@0.9.0': - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -952,16 +1317,9 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - asynckit@0.4.0: resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - axe-core@4.9.1: resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} @@ -994,13 +1352,13 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - block-stream2@2.1.0: - resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} - body-parser@1.20.2: resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1014,16 +1372,9 @@ packages: broadcast-channel@3.7.0: resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} - browser-or-node@2.1.1: - resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} - buffer-crc32@0.2.13: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - buffer-json@2.0.0: resolution: {integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==} @@ -1237,10 +1588,6 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -1406,9 +1753,6 @@ packages: resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} engines: {node: '>= 0.6'} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - express-force-ssl@0.3.2: resolution: {integrity: sha1-AbK0mK5v0uQRUrIrV6Phc3c69n4=} engines: {node: '>=0.2.2'} @@ -1442,6 +1786,10 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + fast-xml-parser@4.3.6: resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} hasBin: true @@ -1471,10 +1819,6 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} - filter-obj@1.1.0: - resolution: {integrity: sha1-mzERErxsYSehbgFsbF1/GeCAXFs=} - engines: {node: '>=0.10.0'} - finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -1483,9 +1827,6 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -1719,22 +2060,10 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -1784,10 +2113,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - is-unicode-supported@2.0.0: resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} engines: {node: '>=18'} @@ -2192,10 +2517,6 @@ packages: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} - minio@8.0.0: - resolution: {integrity: sha512-GkM/lk+Gzwd4fAQvLlB+cy3NV3PRADe0tNXnH9JD5BmdAHKIp+5vypptbjdkU85xWBIQsa2xK35GpXjmYXBBYA==} - engines: {node: ^16 || ^18 || >=20} - minipass@7.1.1: resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} engines: {node: '>=16 || 14 >=14.17'} @@ -2407,10 +2728,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -2465,10 +2782,6 @@ packages: resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} engines: {node: '>=0.6'} - query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2660,10 +2973,6 @@ packages: resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} engines: {node: '>=8'} - split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - sprintf-js@1.0.3: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} @@ -2675,16 +2984,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - stream-chain@2.2.5: - resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} - - stream-json@1.8.0: - resolution: {integrity: sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==} - - strict-uri-encode@2.0.0: - resolution: {integrity: sha1-ucczDHBChi9rFC3CdLvMWGbONUY=} - engines: {node: '>=4'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2830,8 +3129,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.20.0: - resolution: {integrity: sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==} + type-fest@4.20.1: + resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==} engines: {node: '>=16'} type-is@1.6.18: @@ -2914,9 +3213,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - utils-merge@1.0.1: resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} engines: {node: '>= 0.4.0'} @@ -2941,9 +3237,6 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -2976,10 +3269,6 @@ packages: resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} engines: {node: '>=10'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -3141,7 +3430,7 @@ snapshots: '@push.rocks/taskbuffer': 3.1.7 '@push.rocks/webrequest': 3.0.37 '@push.rocks/webstore': 2.0.17 - '@tsclass/tsclass': 4.0.55 + '@tsclass/tsclass': 4.0.59 '@types/express': 4.17.21 body-parser: 1.20.2 cors: 2.8.5 @@ -3174,6 +3463,501 @@ snapshots: '@apiglobal/typedrequest-interfaces@2.0.1': {} + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.2 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.2 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.2 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.6.2 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + + '@aws-sdk/client-s3@3.598.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/client-sso-oidc': 3.598.0(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/client-sts': 3.598.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/middleware-bucket-endpoint': 3.598.0 + '@aws-sdk/middleware-expect-continue': 3.598.0 + '@aws-sdk/middleware-flexible-checksums': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-location-constraint': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/middleware-signing': 3.598.0 + '@aws-sdk/middleware-ssec': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/signature-v4-multi-region': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@aws-sdk/xml-builder': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/eventstream-serde-browser': 3.0.2 + '@smithy/eventstream-serde-config-resolver': 3.0.1 + '@smithy/eventstream-serde-node': 3.0.2 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-blob-browser': 3.1.0 + '@smithy/hash-node': 3.0.1 + '@smithy/hash-stream-node': 3.1.0 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/md5-js': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-retry': 3.0.1 + '@smithy/util-stream': 3.0.2 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.0.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.598.0(@aws-sdk/client-sts@3.598.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.598.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-node': 3.0.1 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/client-sso@3.598.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-node': 3.0.1 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.598.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.598.0(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-node': 3.0.1 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.598.0': + dependencies: + '@smithy/core': 2.2.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-env@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-http@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/node-http-handler': 3.0.1 + '@smithy/property-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-stream': 3.0.2 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0)': + dependencies: + '@aws-sdk/client-sts': 3.598.0 + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-node@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/credential-provider-process@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': + dependencies: + '@aws-sdk/client-sso': 3.598.0 + '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.598.0)': + dependencies: + '@aws-sdk/client-sts': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-bucket-endpoint@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-expect-continue@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-flexible-checksums@3.598.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-host-header@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-location-constraint@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-logger@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-recursion-detection@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-sdk-s3@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-signing@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/types': 3.1.0 + '@smithy/util-middleware': 3.0.1 + tslib: 2.6.2 + + '@aws-sdk/middleware-ssec@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-user-agent@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/region-config-resolver@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.1 + tslib: 2.6.2 + + '@aws-sdk/signature-v4-multi-region@3.598.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': + dependencies: + '@aws-sdk/client-sso-oidc': 3.598.0(@aws-sdk/client-sts@3.598.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/types@3.598.0': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/util-arn-parser@3.568.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-endpoints@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 + '@smithy/util-endpoints': 2.0.2 + tslib: 2.6.2 + + '@aws-sdk/util-locate-window@3.568.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-browser@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-node@3.598.0': + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@aws-sdk/xml-builder@3.598.0': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 @@ -3720,7 +4504,7 @@ snapshots: '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartpuppeteer': 2.0.2 '@push.rocks/smartunique': 3.0.9 - '@tsclass/tsclass': 4.0.55 + '@tsclass/tsclass': 4.0.59 '@types/express': 4.17.21 express: 4.19.2 pdf-lib: 1.17.1 @@ -3778,7 +4562,7 @@ snapshots: '@push.rocks/smartxml': 1.0.8 '@push.rocks/smartyaml': 2.0.5 '@push.rocks/webrequest': 3.0.37 - '@tsclass/tsclass': 4.0.55 + '@tsclass/tsclass': 4.0.59 '@push.rocks/smartsocket@2.0.27': dependencies: @@ -3912,7 +4696,7 @@ snapshots: dependencies: '@pushrocks/smartdelay': 3.0.1 '@pushrocks/smartpromise': 4.0.2 - '@tsclass/tsclass': 4.0.55 + '@tsclass/tsclass': 4.0.59 '@push.rocks/webstore@2.0.17': dependencies: @@ -4074,6 +4858,334 @@ snapshots: '@sindresorhus/is@5.6.0': {} + '@smithy/abort-controller@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader-native@3.0.0': + dependencies: + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/config-resolver@3.0.2': + dependencies: + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.1 + tslib: 2.6.2 + + '@smithy/core@2.2.1': + dependencies: + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-middleware': 3.0.1 + tslib: 2.6.2 + + '@smithy/credential-provider-imds@3.1.1': + dependencies: + '@smithy/node-config-provider': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + tslib: 2.6.2 + + '@smithy/eventstream-codec@3.1.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.1.0 + '@smithy/util-hex-encoding': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-browser@3.0.2': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.2 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-config-resolver@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-node@3.0.2': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.2 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-universal@3.0.2': + dependencies: + '@smithy/eventstream-codec': 3.1.0 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/fetch-http-handler@3.0.2': + dependencies: + '@smithy/protocol-http': 4.0.1 + '@smithy/querystring-builder': 3.0.1 + '@smithy/types': 3.1.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-blob-browser@3.1.0': + dependencies: + '@smithy/chunked-blob-reader': 3.0.0 + '@smithy/chunked-blob-reader-native': 3.0.0 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/hash-node@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-stream-node@3.1.0': + dependencies: + '@smithy/types': 3.1.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/invalid-dependency@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.6.2 + + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/md5-js@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-content-length@3.0.1': + dependencies: + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@3.0.2': + dependencies: + '@smithy/middleware-serde': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + '@smithy/util-middleware': 3.0.1 + tslib: 2.6.2 + + '@smithy/middleware-retry@3.0.4': + dependencies: + '@smithy/node-config-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/service-error-classification': 3.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 + tslib: 2.6.2 + uuid: 9.0.1 + + '@smithy/middleware-serde@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/middleware-stack@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/node-config-provider@3.1.1': + dependencies: + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/node-http-handler@3.0.1': + dependencies: + '@smithy/abort-controller': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/querystring-builder': 3.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/property-provider@3.1.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/protocol-http@4.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/querystring-builder@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.6.2 + + '@smithy/querystring-parser@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/service-error-classification@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + + '@smithy/shared-ini-file-loader@3.1.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/signature-v4@3.1.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/types': 3.1.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/smithy-client@3.1.2': + dependencies: + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-stack': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + '@smithy/util-stream': 3.0.2 + tslib: 2.6.2 + + '@smithy/types@3.1.0': + dependencies: + tslib: 2.6.2 + + '@smithy/url-parser@3.0.1': + dependencies: + '@smithy/querystring-parser': 3.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-body-length-browser@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-body-length-node@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.2 + + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-config-provider@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-defaults-mode-browser@3.0.4': + dependencies: + '@smithy/property-provider': 3.1.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@smithy/util-defaults-mode-node@3.0.4': + dependencies: + '@smithy/config-resolver': 3.0.2 + '@smithy/credential-provider-imds': 3.1.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/util-endpoints@2.0.2': + dependencies: + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-middleware@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/util-retry@3.0.1': + dependencies: + '@smithy/service-error-classification': 3.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/util-stream@3.0.2': + dependencies: + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/node-http-handler': 3.0.1 + '@smithy/types': 3.1.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.2 + + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-waiter@3.0.1': + dependencies: + '@smithy/abort-controller': 3.0.1 + '@smithy/types': 3.1.0 + tslib: 2.6.2 + '@socket.io/component-emitter@3.1.2': {} '@szmarczak/http-timer@5.0.1': @@ -4092,9 +5204,9 @@ snapshots: dependencies: type-fest: 2.19.0 - '@tsclass/tsclass@4.0.55': + '@tsclass/tsclass@4.0.59': dependencies: - type-fest: 4.20.0 + type-fest: 4.20.1 '@tsconfig/node10@1.0.11': {} @@ -4410,9 +5522,6 @@ snapshots: - supports-color - utf-8-validate - '@zxing/text-encoding@0.9.0': - optional: true - accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -4480,14 +5589,8 @@ snapshots: astral-regex@2.0.0: {} - async@3.2.5: {} - asynckit@0.4.0: {} - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - axe-core@4.9.1: {} bail@2.0.2: {} @@ -4510,10 +5613,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - block-stream2@2.1.0: - dependencies: - readable-stream: 3.6.2 - body-parser@1.20.2: dependencies: bytes: 3.1.2 @@ -4531,6 +5630,8 @@ snapshots: transitivePeerDependencies: - supports-color + bowser@2.11.0: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4555,12 +5656,8 @@ snapshots: rimraf: 3.0.2 unload: 2.2.0 - browser-or-node@2.1.1: {} - buffer-crc32@0.2.13: {} - buffer-crc32@1.0.0: {} - buffer-json@2.0.0: {} buffer@5.7.1: @@ -4763,8 +5860,6 @@ snapshots: dependencies: character-entities: 2.0.2 - decode-uri-component@0.2.2: {} - decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 @@ -4928,8 +6023,6 @@ snapshots: etag@1.8.1: {} - eventemitter3@5.0.1: {} - express-force-ssl@0.3.2: dependencies: lodash.assign: 3.2.0 @@ -5000,6 +6093,10 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-xml-parser@4.2.5: + dependencies: + strnum: 1.0.5 + fast-xml-parser@4.3.6: dependencies: strnum: 1.0.5 @@ -5034,8 +6131,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - filter-obj@1.1.0: {} - finalhandler@1.2.0: dependencies: debug: 2.6.9 @@ -5053,10 +6148,6 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - foreground-child@2.0.0: dependencies: cross-spawn: 7.0.3 @@ -5373,19 +6464,10 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-callable@1.2.7: {} - is-docker@2.2.1: {} is-extglob@2.1.1: {} @@ -5419,10 +6501,6 @@ snapshots: is-stream@2.0.1: {} - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - is-unicode-supported@2.0.0: {} is-windows@1.0.2: {} @@ -6035,23 +7113,6 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minio@8.0.0: - dependencies: - async: 3.2.5 - block-stream2: 2.1.0 - browser-or-node: 2.1.1 - buffer-crc32: 1.0.0 - eventemitter3: 5.0.1 - fast-xml-parser: 4.3.6 - ipaddr.js: 2.2.0 - lodash: 4.17.21 - mime-types: 2.1.35 - query-string: 7.1.3 - stream-json: 1.8.0 - through2: 4.0.2 - web-encoding: 1.1.5 - xml2js: 0.5.0 - minipass@7.1.1: {} mkdirp-classic@0.5.3: {} @@ -6202,8 +7263,6 @@ snapshots: dependencies: find-up: 4.1.0 - possible-typed-array-names@1.0.0: {} - pretty-ms@7.0.1: dependencies: parse-ms: 2.1.0 @@ -6271,13 +7330,6 @@ snapshots: dependencies: side-channel: 1.0.6 - query-string@7.1.3: - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - queue-microtask@1.2.3: {} quick-lru@5.1.1: {} @@ -6544,22 +7596,12 @@ snapshots: signal-exit: 3.0.7 which: 2.0.2 - split-on-first@1.1.0: {} - sprintf-js@1.0.3: {} statuses@1.5.0: {} statuses@2.0.1: {} - stream-chain@2.2.5: {} - - stream-json@1.8.0: - dependencies: - stream-chain: 2.2.5 - - strict-uri-encode@2.0.0: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -6713,7 +7755,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.20.0: {} + type-fest@4.20.1: {} type-is@1.6.18: dependencies: @@ -6796,14 +7838,6 @@ snapshots: util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - utils-merge@1.0.1: {} uuid@9.0.1: {} @@ -6828,12 +7862,6 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - web-encoding@1.1.5: - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - web-namespaces@2.0.1: {} webidl-conversions@3.0.1: {} @@ -6861,14 +7889,6 @@ snapshots: tr46: 2.1.0 webidl-conversions: 6.1.0 - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - which@1.3.1: dependencies: isexe: 2.0.0 diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 7049f97..d9cbc44 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartbucket', - version: '3.0.15', + version: '3.0.16', description: 'A TypeScript library offering simple and cloud-agnostic object storage with advanced features like bucket creation, file and directory management, and data streaming.' } diff --git a/ts/classes.bucket.ts b/ts/classes.bucket.ts index 9855cb0..d1e36cb 100644 --- a/ts/classes.bucket.ts +++ b/ts/classes.bucket.ts @@ -1,3 +1,5 @@ +// classes.bucket.ts + import * as plugins from './plugins.js'; import * as helpers from './helpers.js'; import * as interfaces from './interfaces.js'; @@ -7,16 +9,15 @@ import { File } from './classes.file.js'; import { Trash } from './classes.trash.js'; /** - * The bucket class exposes the basc functionality of a bucket. + * The bucket class exposes the basic functionality of a bucket. * The functions of the bucket alone are enough to - * operate in s3 basic fashion on blobs of data. + * operate in S3 basic fashion on blobs of data. */ export class Bucket { public static async getBucketByName(smartbucketRef: SmartBucket, bucketNameArg: string) { - const buckets = await smartbucketRef.minioClient.listBuckets(); - const foundBucket = buckets.find((bucket) => { - return bucket.name === bucketNameArg; - }); + const command = new plugins.s3.ListBucketsCommand({}); + const buckets = await smartbucketRef.s3Client.send(command); + const foundBucket = buckets.Buckets.find((bucket) => bucket.Name === bucketNameArg); if (foundBucket) { console.log(`bucket with name ${bucketNameArg} exists.`); @@ -28,12 +29,14 @@ export class Bucket { } public static async createBucketByName(smartbucketRef: SmartBucket, bucketName: string) { - await smartbucketRef.minioClient.makeBucket(bucketName, 'ams3').catch((e) => console.log(e)); + const command = new plugins.s3.CreateBucketCommand({ Bucket: bucketName }); + await smartbucketRef.s3Client.send(command).catch((e) => console.log(e)); return new Bucket(smartbucketRef, bucketName); } public static async removeBucketByName(smartbucketRef: SmartBucket, bucketName: string) { - await smartbucketRef.minioClient.removeBucket(bucketName).catch((e) => console.log(e)); + const command = new plugins.s3.DeleteBucketCommand({ Bucket: bucketName }); + await smartbucketRef.s3Client.send(command).catch((e) => console.log(e)); } public smartbucketRef: SmartBucket; @@ -65,7 +68,7 @@ export class Bucket { if (!pathDescriptorArg.path && !pathDescriptorArg.directory) { return this.getBaseDirectory(); } - let checkPath = await helpers.reducePathDescriptorToPath(pathDescriptorArg); + const checkPath = await helpers.reducePathDescriptorToPath(pathDescriptorArg); const baseDirectory = await this.getBaseDirectory(); return await baseDirectory.getSubDirectoryByName(checkPath); } @@ -77,13 +80,14 @@ export class Bucket { /** * store file */ - public async fastPut(optionsArg: interfaces.IPathDecriptor & { - contents: string | Buffer; - overwrite?: boolean; - }): Promise { + public async fastPut( + optionsArg: interfaces.IPathDecriptor & { + contents: string | Buffer; + overwrite?: boolean; + } + ): Promise { try { const reducedPath = await helpers.reducePathDescriptorToPath(optionsArg); - // Check if the object already exists const exists = await this.fastExists({ path: reducedPath }); if (exists && !optionsArg.overwrite) { @@ -97,16 +101,12 @@ export class Bucket { console.log(`Creating new object at path '${reducedPath}' in bucket '${this.name}'.`); } - // Proceed with putting the object - const streamIntake = new plugins.smartstream.StreamIntake(); - const putPromise = this.smartbucketRef.minioClient.putObject( - this.name, - reducedPath, - streamIntake - ); - streamIntake.pushData(optionsArg.contents); - streamIntake.signalEnd(); - await putPromise; + const command = new plugins.s3.PutObjectCommand({ + Bucket: this.name, + Key: reducedPath, + Body: optionsArg.contents, + }); + await this.smartbucketRef.s3Client.send(command); console.log(`Object '${reducedPath}' has been successfully stored in bucket '${this.name}'.`); const parsedPath = plugins.path.parse(reducedPath); @@ -161,27 +161,30 @@ export class Bucket { public async fastGetReplaySubject(optionsArg: { path: string; }): Promise> { - const fileStream = await this.smartbucketRef.minioClient - .getObject(this.name, optionsArg.path) - .catch((e) => console.log(e)); - const replaySubject = new plugins.smartrx.rxjs.ReplaySubject(); - const duplexStream = new plugins.smartstream.SmartDuplex({ - writeFunction: async (chunk) => { - replaySubject.next(chunk); - return; - }, - finalFunction: async (cb) => { - replaySubject.complete(); - return; - }, + const command = new plugins.s3.GetObjectCommand({ + Bucket: this.name, + Key: optionsArg.path, }); + const response = await this.smartbucketRef.s3Client.send(command); + const replaySubject = new plugins.smartrx.rxjs.ReplaySubject(); - if (!fileStream) { - return null; + // Convert the stream to a format that supports piping + const stream = response.Body as any; // SdkStreamMixin includes readable stream + if (typeof stream.pipe === 'function') { + const duplexStream = new plugins.smartstream.SmartDuplex({ + writeFunction: async (chunk) => { + replaySubject.next(chunk); + return; + }, + finalFunction: async (cb) => { + replaySubject.complete(); + return; + }, + }); + + stream.pipe(duplexStream); } - const smartstream = new plugins.smartstream.StreamWrapper([fileStream, duplexStream]); - smartstream.run(); return replaySubject; } @@ -198,18 +201,17 @@ export class Bucket { typeArg: 'nodestream' ): Promise; - /** - * fastGetStream - * @param optionsArg - * @returns - */ public async fastGetStream( optionsArg: { path: string }, typeArg: 'webstream' | 'nodestream' = 'nodestream' ): Promise { - const fileStream = await this.smartbucketRef.minioClient - .getObject(this.name, optionsArg.path) - .catch((e) => console.log(e)); + const command = new plugins.s3.GetObjectCommand({ + Bucket: this.name, + Key: optionsArg.path, + }); + const response = await this.smartbucketRef.s3Client.send(command); + const stream = response.Body as any; // SdkStreamMixin includes readable stream + const duplexStream = new plugins.smartstream.SmartDuplex({ writeFunction: async (chunk) => { return chunk; @@ -219,12 +221,10 @@ export class Bucket { }, }); - if (!fileStream) { - return null; + if (typeof stream.pipe === 'function') { + stream.pipe(duplexStream); } - const smartstream = new plugins.smartstream.StreamWrapper([fileStream, duplexStream]); - smartstream.run(); if (typeArg === 'nodestream') { return duplexStream; } @@ -243,7 +243,6 @@ export class Bucket { overwrite?: boolean; }): Promise { try { - // Check if the object already exists const exists = await this.fastExists({ path: optionsArg.path }); if (exists && !optionsArg.overwrite) { @@ -259,18 +258,13 @@ export class Bucket { console.log(`Creating new object at path '${optionsArg.path}' in bucket '${this.name}'.`); } - const streamIntake = await plugins.smartstream.StreamIntake.fromStream( - optionsArg.readableStream - ); - - // Proceed with putting the object - await this.smartbucketRef.minioClient.putObject( - this.name, - optionsArg.path, - streamIntake, - null, - null // TODO: Add support for custom metadata once proper support is in minio. - ); + const command = new plugins.s3.PutObjectCommand({ + Bucket: this.name, + Key: optionsArg.path, + Body: optionsArg.readableStream, + Metadata: optionsArg.nativeMetadata, + }); + await this.smartbucketRef.s3Client.send(command); console.log( `Object '${optionsArg.path}' has been successfully stored in bucket '${this.name}'.` @@ -295,28 +289,29 @@ export class Bucket { const targetBucketName = optionsArg.targetBucket ? optionsArg.targetBucket.name : this.name; // Retrieve current object information to use in copy conditions - const currentObjInfo = await this.smartbucketRef.minioClient.statObject( - targetBucketName, - optionsArg.sourcePath + const currentObjInfo = await this.smartbucketRef.s3Client.send( + new plugins.s3.HeadObjectCommand({ + Bucket: this.name, + Key: optionsArg.sourcePath, + }) ); - // Setting up copy conditions - const copyConditions = new plugins.minio.CopyConditions(); - // Prepare new metadata const newNativeMetadata = { - ...(optionsArg.deleteExistingNativeMetadata ? {} : currentObjInfo.metaData), + ...(optionsArg.deleteExistingNativeMetadata ? {} : currentObjInfo.Metadata), ...optionsArg.nativeMetadata, }; - // Define the copy operation as a Promise - // TODO: check on issue here: https://github.com/minio/minio-js/issues/1286 - await this.smartbucketRef.minioClient.copyObject( - this.name, - optionsArg.sourcePath, - `/${targetBucketName}/${optionsArg.destinationPath || optionsArg.sourcePath}`, - copyConditions - ); + // Define the copy operation + const copySource = `${this.name}/${optionsArg.sourcePath}`; + const command = new plugins.s3.CopyObjectCommand({ + Bucket: targetBucketName, + CopySource: copySource, + Key: optionsArg.destinationPath || optionsArg.sourcePath, + Metadata: newNativeMetadata, + MetadataDirective: optionsArg.deleteExistingNativeMetadata ? 'REPLACE' : 'COPY', + }); + await this.smartbucketRef.s3Client.send(command); } catch (err) { console.error('Error updating metadata:', err); throw err; // rethrow to allow caller to handle @@ -333,7 +328,6 @@ export class Bucket { overwrite?: boolean; }): Promise { try { - // Check if the destination object already exists const destinationBucket = optionsArg.targetBucket || this; const exists = await destinationBucket.fastExists({ path: optionsArg.destinationPath }); @@ -352,10 +346,7 @@ export class Bucket { ); } - // Proceed with copying the object to the new path await this.fastCopy(optionsArg); - - // Remove the original object after successful copy await this.fastRemove({ path: optionsArg.sourcePath }); console.log( @@ -374,21 +365,29 @@ export class Bucket { * removeObject */ public async fastRemove(optionsArg: { path: string }) { - await this.smartbucketRef.minioClient.removeObject(this.name, optionsArg.path); + const command = new plugins.s3.DeleteObjectCommand({ + Bucket: this.name, + Key: optionsArg.path, + }); + await this.smartbucketRef.s3Client.send(command); } /** - * check wether file exists + * check whether file exists * @param optionsArg * @returns */ public async fastExists(optionsArg: { path: string }): Promise { try { - await this.smartbucketRef.minioClient.statObject(this.name, optionsArg.path); + const command = new plugins.s3.HeadObjectCommand({ + Bucket: this.name, + Key: optionsArg.path, + }); + await this.smartbucketRef.s3Client.send(command); console.log(`Object '${optionsArg.path}' exists in bucket '${this.name}'.`); return true; } catch (error) { - if (error.code === 'NotFound') { + if (error.name === 'NotFound') { console.log(`Object '${optionsArg.path}' does not exist in bucket '${this.name}'.`); return false; } else { @@ -402,59 +401,39 @@ export class Bucket { * deletes this bucket */ public async delete() { - await this.smartbucketRef.minioClient.removeBucket(this.name); + await this.smartbucketRef.s3Client.send( + new plugins.s3.DeleteBucketCommand({ Bucket: this.name }) + ); } public async fastStat(pathDescriptor: interfaces.IPathDecriptor) { - let checkPath = await helpers.reducePathDescriptorToPath(pathDescriptor); - return this.smartbucketRef.minioClient.statObject(this.name, checkPath); + const checkPath = await helpers.reducePathDescriptorToPath(pathDescriptor); + const command = new plugins.s3.HeadObjectCommand({ + Bucket: this.name, + Key: checkPath, + }); + return this.smartbucketRef.s3Client.send(command); } public async isDirectory(pathDescriptor: interfaces.IPathDecriptor): Promise { - let checkPath = await helpers.reducePathDescriptorToPath(pathDescriptor); - - // lets check if the checkPath is a directory - const stream = this.smartbucketRef.minioClient.listObjectsV2(this.name, checkPath, true); - const done = plugins.smartpromise.defer(); - stream.on('data', (dataArg) => { - stream.destroy(); // Stop the stream early if we find at least one object - if (dataArg.prefix.startsWith(checkPath + '/')) { - done.resolve(true); - } + const checkPath = await helpers.reducePathDescriptorToPath(pathDescriptor); + const command = new plugins.s3.ListObjectsV2Command({ + Bucket: this.name, + Prefix: checkPath, + Delimiter: '/', }); - - stream.on('end', () => { - done.resolve(false); - }); - - stream.on('error', (err) => { - done.reject(err); - }); - - return done.promise; + const response = await this.smartbucketRef.s3Client.send(command); + return response.CommonPrefixes.length > 0; } public async isFile(pathDescriptor: interfaces.IPathDecriptor): Promise { - let checkPath = await helpers.reducePathDescriptorToPath(pathDescriptor); - - // lets check if the checkPath is a directory - const stream = this.smartbucketRef.minioClient.listObjectsV2(this.name, checkPath, true); - const done = plugins.smartpromise.defer(); - stream.on('data', (dataArg) => { - stream.destroy(); // Stop the stream early if we find at least one object - if (dataArg.prefix === checkPath) { - done.resolve(true); - } + const checkPath = await helpers.reducePathDescriptorToPath(pathDescriptor); + const command = new plugins.s3.ListObjectsV2Command({ + Bucket: this.name, + Prefix: checkPath, + Delimiter: '/', }); - - stream.on('end', () => { - done.resolve(false); - }); - - stream.on('error', (err) => { - done.reject(err); - }); - - return done.promise; + const response = await this.smartbucketRef.s3Client.send(command); + return response.Contents.length > 0; } } diff --git a/ts/classes.directory.ts b/ts/classes.directory.ts index c1c78b2..4584285 100644 --- a/ts/classes.directory.ts +++ b/ts/classes.directory.ts @@ -1,7 +1,8 @@ +// classes.directory.ts + import * as plugins from './plugins.js'; import { Bucket } from './classes.bucket.js'; import { File } from './classes.file.js'; - import * as helpers from './helpers.js'; export class Directory { @@ -13,9 +14,9 @@ export class Directory { public files: string[]; public folders: string[]; - constructor(bucketRefArg: Bucket, parentDiretory: Directory, name: string) { + constructor(bucketRefArg: Bucket, parentDirectory: Directory, name: string) { this.bucketRef = bucketRefArg; - this.parentDirectoryRef = parentDiretory; + this.parentDirectoryRef = parentDirectory; this.name = name; } @@ -73,15 +74,12 @@ export class Directory { directory: this, path: optionsArg.name, }; - // check wether the file exists const exists = await this.bucketRef.fastExists({ path: await helpers.reducePathDescriptorToPath(pathDescriptor), }); if (!exists && optionsArg.getFromTrash) { const trash = await this.bucketRef.getTrash(); - const trashedFile = await trash.getTrashedFileByOriginalName( - pathDescriptor - ) + const trashedFile = await trash.getTrashedFileByOriginalName(pathDescriptor); return trashedFile; } if (!exists && !optionsArg.createWithContents) { @@ -104,26 +102,17 @@ export class Directory { * lists all files */ public async listFiles(): Promise { - const done = plugins.smartpromise.defer(); - const fileNameStream = await this.bucketRef.smartbucketRef.minioClient.listObjectsV2( - this.bucketRef.name, - this.getBasePath(), - false - ); + const command = new plugins.s3.ListObjectsV2Command({ + Bucket: this.bucketRef.name, + Prefix: this.getBasePath(), + Delimiter: '/', + }); + const response = await this.bucketRef.smartbucketRef.s3Client.send(command); const fileArray: File[] = []; - const duplexStream = new plugins.smartstream.SmartDuplex({ - objectMode: true, - writeFunction: async (bucketItem) => { - if (bucketItem.prefix) { - return; - } - if (!bucketItem.name) { - return; - } - let subtractedPath = bucketItem.name.replace(this.getBasePath(), ''); - if (subtractedPath.startsWith('/')) { - subtractedPath = subtractedPath.substr(1); - } + + response.Contents.forEach((item) => { + if (item.Key && !item.Key.endsWith('/')) { + const subtractedPath = item.Key.replace(this.getBasePath(), ''); if (!subtractedPath.includes('/')) { fileArray.push( new File({ @@ -132,13 +121,9 @@ export class Directory { }) ); } - }, - finalFunction: async (tools) => { - done.resolve(); - }, + } }); - fileNameStream.pipe(duplexStream); - await done.promise; + return fileArray; } @@ -146,54 +131,52 @@ export class Directory { * lists all folders */ public async listDirectories(): Promise { - const done = plugins.smartpromise.defer(); - const basePath = this.getBasePath(); - const completeDirStream = await this.bucketRef.smartbucketRef.minioClient.listObjectsV2( - this.bucketRef.name, - this.getBasePath(), - false - ); - const directoryArray: Directory[] = []; - const duplexStream = new plugins.smartstream.SmartDuplex({ - objectMode: true, - writeFunction: async (bucketItem) => { - if (bucketItem.name) { - return; - } - let subtractedPath = bucketItem.prefix.replace(this.getBasePath(), ''); - if (subtractedPath.startsWith('/')) { - subtractedPath = subtractedPath.substr(1); - } - if (subtractedPath.includes('/')) { - const dirName = subtractedPath.split('/')[0]; - if (directoryArray.find((directory) => directory.name === dirName)) { - return; + try { + const command = new plugins.s3.ListObjectsV2Command({ + Bucket: this.bucketRef.name, + Prefix: this.getBasePath(), + Delimiter: '/', + }); + const response = await this.bucketRef.smartbucketRef.s3Client.send(command); + const directoryArray: Directory[] = []; + + if (response.CommonPrefixes) { + response.CommonPrefixes.forEach((item) => { + if (item.Prefix) { + const subtractedPath = item.Prefix.replace(this.getBasePath(), ''); + if (subtractedPath.endsWith('/')) { + const dirName = subtractedPath.slice(0, -1); + // Ensure the directory name is not empty (which would indicate the base directory itself) + if (dirName) { + directoryArray.push(new Directory(this.bucketRef, this, dirName)); + } + } } - directoryArray.push(new Directory(this.bucketRef, this, dirName)); - } - }, - finalFunction: async (tools) => { - done.resolve(); - }, - }); - completeDirStream.pipe(duplexStream); - await done.promise; - return directoryArray; + }); + } + + return directoryArray; + } catch (error) { + console.error('Error listing directories:', error); + throw error; + } } /** - * gets an array that has all objects with a certain prefix; + * gets an array that has all objects with a certain prefix */ public async getTreeArray() { - const treeArray = await this.bucketRef.smartbucketRef.minioClient.listObjectsV2( - this.bucketRef.name, - this.getBasePath(), - true - ); + const command = new plugins.s3.ListObjectsV2Command({ + Bucket: this.bucketRef.name, + Prefix: this.getBasePath(), + Delimiter: '/', + }); + const response = await this.bucketRef.smartbucketRef.s3Client.send(command); + return response.Contents; } /** - * gets a sub directory + * gets a sub directory by name */ public async getSubDirectoryByName(dirNameArg: string): Promise { const dirNameArray = dirNameArg.split('/'); @@ -204,11 +187,13 @@ export class Directory { return directory.name === dirNameToSearch; }); }; + let wantedDirectory: Directory; for (const dirNameToSearch of dirNameArray) { const directoryToSearchIn = wantedDirectory ? wantedDirectory : this; wantedDirectory = await getDirectory(directoryToSearchIn, dirNameToSearch); } + return wantedDirectory; } @@ -217,19 +202,20 @@ export class Directory { */ public async move() { // TODO - throw new Error('moving a directory is not yet implemented'); + throw new Error('Moving a directory is not yet implemented'); } /** - * creates a file within this directory + * creates an empty file within this directory * @param relativePathArg */ public async createEmptyFile(relativePathArg: string) { - const emtpyFile = await File.create({ + const emptyFile = await File.create({ directory: this, name: relativePathArg, contents: '', }); + return emptyFile; } // file operations @@ -313,7 +299,7 @@ export class Directory { const deleteDirectory = async (directoryArg: Directory) => { const childDirectories = await directoryArg.listDirectories(); if (childDirectories.length === 0) { - console.log('directory empty! Path complete!'); + console.log('Directory empty! Path complete!'); } else { for (const childDir of childDirectories) { await deleteDirectory(childDir); diff --git a/ts/classes.metadata.ts b/ts/classes.metadata.ts index e520eea..343ea9f 100644 --- a/ts/classes.metadata.ts +++ b/ts/classes.metadata.ts @@ -44,7 +44,7 @@ export class MetaData { const stat = await this.fileRef.parentDirectoryRef.bucketRef.fastStat({ path: this.fileRef.getBasePath(), }); - return stat.size; + return stat.ContentLength; } private prefixCustomMetaData = 'custom_'; diff --git a/ts/classes.smartbucket.ts b/ts/classes.smartbucket.ts index 286ed27..920515b 100644 --- a/ts/classes.smartbucket.ts +++ b/ts/classes.smartbucket.ts @@ -1,22 +1,33 @@ +// classes.smartbucket.ts + import * as plugins from './plugins.js'; import { Bucket } from './classes.bucket.js'; export class SmartBucket { public config: plugins.tsclass.storage.IS3Descriptor; - public minioClient: plugins.minio.Client; + public s3Client: plugins.s3.S3Client; + /** + * the constructor of SmartBucket + */ /** * the constructor of SmartBucket */ constructor(configArg: plugins.tsclass.storage.IS3Descriptor) { this.config = configArg; - this.minioClient = new plugins.minio.Client({ - endPoint: this.config.endpoint, - port: configArg.port || 443, - useSSL: configArg.useSsl !== undefined ? configArg.useSsl : true, - accessKey: this.config.accessKey, - secretKey: this.config.accessSecret, + const endpoint = this.config.endpoint.startsWith('http://') || this.config.endpoint.startsWith('https://') + ? this.config.endpoint + : `https://${this.config.endpoint}`; + + this.s3Client = new plugins.s3.S3Client({ + endpoint, + region: this.config.region || 'us-east-1', + credentials: { + accessKeyId: this.config.accessKey, + secretAccessKey: this.config.accessSecret, + }, + forcePathStyle: true, // Necessary for S3-compatible storage like MinIO or Wasabi }); } @@ -32,4 +43,4 @@ export class SmartBucket { public async getBucketByName(bucketName: string) { return Bucket.getBucketByName(this, bucketName); } -} +} \ No newline at end of file diff --git a/ts/plugins.ts b/ts/plugins.ts index 32952b4..ddfaa55 100644 --- a/ts/plugins.ts +++ b/ts/plugins.ts @@ -1,3 +1,5 @@ +// plugins.ts + // node native import * as path from 'path'; import * as stream from 'stream'; @@ -23,6 +25,8 @@ export { } // third party scope -import * as minio from 'minio'; +import * as s3 from '@aws-sdk/client-s3'; -export { minio }; +export { + s3, +}