From cfcdb895b0dbdb4e465b2d69a1b2aef4ca6ba325 Mon Sep 17 00:00:00 2001 From: mertmit Date: Fri, 17 Nov 2023 10:33:54 +0000 Subject: [PATCH 1/3] fix(s3): use stream to upload via url --force-- --- packages/nocodb/src/plugins/s3/S3.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/nocodb/src/plugins/s3/S3.ts b/packages/nocodb/src/plugins/s3/S3.ts index c83180f23b..866f7b9fad 100644 --- a/packages/nocodb/src/plugins/s3/S3.ts +++ b/packages/nocodb/src/plugins/s3/S3.ts @@ -2,6 +2,7 @@ import fs from 'fs'; import { promisify } from 'util'; import { GetObjectCommand, S3 as S3Client } from '@aws-sdk/client-s3'; import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; +import { Upload } from '@aws-sdk/lib-storage'; import axios from 'axios'; import { useAgent } from 'request-filtering-agent'; import type { IStorageAdapterV2, XcFile } from 'nc-plugin'; @@ -60,7 +61,7 @@ export default class S3 implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), - responseType: 'arraybuffer', + responseType: 'stream', }) .then((response) => { uploadParams.Body = response.data; @@ -162,8 +163,13 @@ export default class S3 implements IStorageAdapterV2 { private async upload(uploadParams): Promise { return new Promise((resolve, reject) => { // call S3 to retrieve upload file to specified bucket - this.s3Client - .putObject({ ...this.defaultParams, ...uploadParams }) + const upload = new Upload({ + client: this.s3Client, + params: { ...this.defaultParams, ...uploadParams }, + }); + + upload + .done() .then((data) => { if (data) { resolve( From 20f229fca06be9e498fe6611da62a3cfe9d5f776 Mon Sep 17 00:00:00 2001 From: mertmit Date: Fri, 17 Nov 2023 10:33:55 +0000 Subject: [PATCH 2/3] chore: add planned todos --- packages/nocodb/src/plugins/backblaze/Backblaze.ts | 1 + packages/nocodb/src/plugins/gcs/Gcs.ts | 1 + packages/nocodb/src/plugins/linode/LinodeObjectStorage.ts | 1 + packages/nocodb/src/plugins/mino/Minio.ts | 1 + packages/nocodb/src/plugins/ovhCloud/OvhCloud.ts | 1 + packages/nocodb/src/plugins/scaleway/ScalewayObjectStorage.ts | 1 + packages/nocodb/src/plugins/spaces/Spaces.ts | 1 + packages/nocodb/src/plugins/upcloud/UpoCloud.ts | 1 + packages/nocodb/src/plugins/vultr/Vultr.ts | 1 + 9 files changed, 9 insertions(+) diff --git a/packages/nocodb/src/plugins/backblaze/Backblaze.ts b/packages/nocodb/src/plugins/backblaze/Backblaze.ts index ecc6803b40..351ace6964 100644 --- a/packages/nocodb/src/plugins/backblaze/Backblaze.ts +++ b/packages/nocodb/src/plugins/backblaze/Backblaze.ts @@ -54,6 +54,7 @@ export default class Backblaze implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/gcs/Gcs.ts b/packages/nocodb/src/plugins/gcs/Gcs.ts index 0bc7340138..c3033e5454 100644 --- a/packages/nocodb/src/plugins/gcs/Gcs.ts +++ b/packages/nocodb/src/plugins/gcs/Gcs.ts @@ -110,6 +110,7 @@ export default class Gcs implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/linode/LinodeObjectStorage.ts b/packages/nocodb/src/plugins/linode/LinodeObjectStorage.ts index eec1276cdb..b830a6c261 100644 --- a/packages/nocodb/src/plugins/linode/LinodeObjectStorage.ts +++ b/packages/nocodb/src/plugins/linode/LinodeObjectStorage.ts @@ -53,6 +53,7 @@ export default class LinodeObjectStorage implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/mino/Minio.ts b/packages/nocodb/src/plugins/mino/Minio.ts index 33d875ea82..ea2bdd58f0 100644 --- a/packages/nocodb/src/plugins/mino/Minio.ts +++ b/packages/nocodb/src/plugins/mino/Minio.ts @@ -100,6 +100,7 @@ export default class Minio implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/ovhCloud/OvhCloud.ts b/packages/nocodb/src/plugins/ovhCloud/OvhCloud.ts index 42281d01a4..e1114f4a34 100644 --- a/packages/nocodb/src/plugins/ovhCloud/OvhCloud.ts +++ b/packages/nocodb/src/plugins/ovhCloud/OvhCloud.ts @@ -53,6 +53,7 @@ export default class OvhCloud implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/scaleway/ScalewayObjectStorage.ts b/packages/nocodb/src/plugins/scaleway/ScalewayObjectStorage.ts index 31ea0de26a..8c6459fb07 100644 --- a/packages/nocodb/src/plugins/scaleway/ScalewayObjectStorage.ts +++ b/packages/nocodb/src/plugins/scaleway/ScalewayObjectStorage.ts @@ -103,6 +103,7 @@ export default class ScalewayObjectStorage implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/spaces/Spaces.ts b/packages/nocodb/src/plugins/spaces/Spaces.ts index 5cfbd9184b..e2f94c3835 100644 --- a/packages/nocodb/src/plugins/spaces/Spaces.ts +++ b/packages/nocodb/src/plugins/spaces/Spaces.ts @@ -53,6 +53,7 @@ export default class Spaces implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/upcloud/UpoCloud.ts b/packages/nocodb/src/plugins/upcloud/UpoCloud.ts index 8e522f058b..ff6a31b4fb 100644 --- a/packages/nocodb/src/plugins/upcloud/UpoCloud.ts +++ b/packages/nocodb/src/plugins/upcloud/UpoCloud.ts @@ -53,6 +53,7 @@ export default class UpoCloud implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { diff --git a/packages/nocodb/src/plugins/vultr/Vultr.ts b/packages/nocodb/src/plugins/vultr/Vultr.ts index 0a4d29a463..0d3e79c946 100644 --- a/packages/nocodb/src/plugins/vultr/Vultr.ts +++ b/packages/nocodb/src/plugins/vultr/Vultr.ts @@ -53,6 +53,7 @@ export default class Vultr implements IStorageAdapterV2 { .get(url, { httpAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), httpsAgent: useAgent(url, { stopPortScanningByUrlRedirection: true }), + // TODO - use stream instead of buffer responseType: 'arraybuffer', }) .then((response) => { From 2e4486cd73b180dc396ac992de8930e32c1a0191 Mon Sep 17 00:00:00 2001 From: mertmit Date: Fri, 17 Nov 2023 14:09:30 +0300 Subject: [PATCH 3/3] chore: install dependency Signed-off-by: mertmit --- packages/nocodb/package.json | 1 + pnpm-lock.yaml | 205 +++++++++++++++++++++++++++++++++++ 2 files changed, 206 insertions(+) diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index a0ede75c29..2d80a954ab 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -47,6 +47,7 @@ "dependencies": { "@aws-sdk/client-kafka": "^3.410.0", "@aws-sdk/client-s3": "^3.423.0", + "@aws-sdk/lib-storage": "^3.451.0", "@aws-sdk/s3-request-presigner": "^3.423.0", "@google-cloud/storage": "^7.1.0", "@graphql-tools/merge": "^6.0.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80b6c30215..4d88d11245 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -385,6 +385,9 @@ importers: '@aws-sdk/client-s3': specifier: ^3.423.0 version: 3.423.0 + '@aws-sdk/lib-storage': + specifier: ^3.451.0 + version: 3.451.0(@aws-sdk/client-s3@3.423.0) '@aws-sdk/s3-request-presigner': specifier: ^3.423.0 version: 3.423.0 @@ -2035,6 +2038,22 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/lib-storage@3.451.0(@aws-sdk/client-s3@3.423.0): + resolution: {integrity: sha512-pOtrE1Vs65J3k0bYvWw/zsQ6E80rZzS/jOMC9lQUUqXh8q0KTLq77K5+HCdadNHStXeZV3QJaSWajSR2qJKuyw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.0.0 + dependencies: + '@aws-sdk/client-s3': 3.423.0 + '@smithy/abort-controller': 2.0.10 + '@smithy/middleware-endpoint': 2.2.0 + '@smithy/smithy-client': 2.1.15 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-bucket-endpoint@3.418.0: resolution: {integrity: sha512-gj/mj1UfbKkGbQ1N4YUvjTTp8BVs5fO1QAL2AjFJ+jfJOToLReX72aNEkm7sPGbHML0TqOY4cQbJuWYy+zdD5g==} engines: {node: '>=14.0.0'} @@ -6892,6 +6911,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/abort-controller@2.0.13: + resolution: {integrity: sha512-eeOPD+GF9BzF/Mjy3PICLePx4l0f3rG/nQegQHRLTloN5p1lSJJNZsyn+FzDnW8P2AduragZqJdtKNCxXozB1Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/abort-controller@2.0.6: resolution: {integrity: sha512-4I7g0lyGUlW2onf8mD76IzU37oRWSHsQ5zlW5MjDzgg4I4J9bOK4500Gx6qOuoN7+GulAnGLe1YwyrIluzhakg==} engines: {node: '>=14.0.0'} @@ -7050,6 +7077,16 @@ packages: tslib: 2.6.2 dev: false + /@smithy/fetch-http-handler@2.2.6: + resolution: {integrity: sha512-PStY3XO1Ksjwn3wMKye5U6m6zxXpXrXZYqLy/IeCbh3nM9QB3Jgw/B0PUSLUWKdXg4U8qgEu300e3ZoBvZLsDg==} + dependencies: + '@smithy/protocol-http': 3.0.9 + '@smithy/querystring-builder': 2.0.13 + '@smithy/types': 2.5.0 + '@smithy/util-base64': 2.0.1 + tslib: 2.6.2 + dev: false + /@smithy/hash-blob-browser@2.0.10: resolution: {integrity: sha512-U2+wIWWloOZ9DaRuz2sk9f7A6STRTlwdcv+q6abXDvS0TRDk8KGgUmfV5lCZy8yxFxZIA0hvHDNqcd25r4Hrew==} dependencies: @@ -7174,6 +7211,19 @@ packages: tslib: 2.6.2 dev: false + /@smithy/middleware-endpoint@2.2.0: + resolution: {integrity: sha512-tddRmaig5URk2106PVMiNX6mc5BnKIKajHHDxb7K0J5MLdcuQluHMGnjkv18iY9s9O0tF+gAcPd/pDXA5L9DZw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.0.13 + '@smithy/node-config-provider': 2.1.5 + '@smithy/shared-ini-file-loader': 2.2.4 + '@smithy/types': 2.5.0 + '@smithy/url-parser': 2.0.13 + '@smithy/util-middleware': 2.0.6 + tslib: 2.6.2 + dev: false + /@smithy/middleware-retry@2.0.13: resolution: {integrity: sha512-zuOva8xgWC7KYG8rEXyWIcZv2GWszO83DCTU6IKcf/FKu6OBmSE+EYv3EUcCGY+GfiwCX0EyJExC9Lpq9b0w5Q==} engines: {node: '>=14.0.0'} @@ -7210,6 +7260,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/middleware-serde@2.0.13: + resolution: {integrity: sha512-tBGbeXw+XsE6pPr4UaXOh+UIcXARZeiA8bKJWxk2IjJcD1icVLhBSUQH9myCIZLNNzJIH36SDjUX8Wqk4xJCJg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/middleware-serde@2.0.6: resolution: {integrity: sha512-8/GODBngYbrS28CMZtaHIL4R9rLNSQ/zgb+N1OAZ02NwBUawlnLDcatve9YRzhJC/IWz0/pt+WimJZaO1sGcig==} engines: {node: '>=14.0.0'} @@ -7233,6 +7291,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/middleware-stack@2.0.7: + resolution: {integrity: sha512-L1KLAAWkXbGx1t2jjCI/mDJ2dDNq+rp4/ifr/HcC6FHngxho5O7A5bQLpKHGlkfATH6fUnOEx0VICEVFA4sUzw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/node-config-provider@2.0.13: resolution: {integrity: sha512-pPpLqYuJcOq1sj1EGu+DoZK47DUS4gepqSTNgRezmrjnzNlSU2/Dcc9Ebzs+WZ0Z5vXKazuE+k+NksFLo07/AA==} engines: {node: '>=14.0.0'} @@ -7253,6 +7319,16 @@ packages: tslib: 2.6.2 dev: false + /@smithy/node-config-provider@2.1.5: + resolution: {integrity: sha512-3Omb5/h4tOCuKRx4p4pkYTvEYRCYoKk52bOYbKUyz/G/8gERbagsN8jFm4FjQubkrcIqQEghTpQaUw6uk+0edw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/property-provider': 2.0.14 + '@smithy/shared-ini-file-loader': 2.2.4 + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/node-http-handler@2.1.2: resolution: {integrity: sha512-PdEEDCShuM8zxGoaRxmGB/1ikB8oeqz+ZAF9VIA8FCP3E59j8zDTF+wCELoWd1Y6gtxr+RcTAg5sA8nvn5qH/w==} engines: {node: '>=14.0.0'} @@ -7275,6 +7351,17 @@ packages: tslib: 2.6.2 dev: false + /@smithy/node-http-handler@2.1.9: + resolution: {integrity: sha512-+K0q3SlNcocmo9OZj+fz67gY4lwhOCvIJxVbo/xH+hfWObvaxrMTx7JEzzXcluK0thnnLz++K3Qe7Z/8MDUreA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.0.13 + '@smithy/protocol-http': 3.0.9 + '@smithy/querystring-builder': 2.0.13 + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/property-provider@2.0.11: resolution: {integrity: sha512-kzuOadu6XvrnlF1iXofpKXYmo4oe19st9/DE8f5gHNaFepb4eTkR8gD8BSdTnNnv7lxfv6uOwZPg4VS6hemX1w==} engines: {node: '>=14.0.0'} @@ -7283,6 +7370,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/property-provider@2.0.14: + resolution: {integrity: sha512-k3D2qp9o6imTrLaXRj6GdLYEJr1sXqS99nLhzq8fYmJjSVOeMg/G+1KVAAc7Oxpu71rlZ2f8SSZxcSxkevuR0A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/property-provider@2.0.5: resolution: {integrity: sha512-cAFSUhX6aiHcmpWfrCLKvwBtgN1F6A0N8qY/8yeSi0LRLmhGqsY1/YTxFE185MCVzYbqBGXVr9TBv4RUcIV4rA==} engines: {node: '>=14.0.0'} @@ -7323,6 +7418,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/protocol-http@3.0.9: + resolution: {integrity: sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/querystring-builder@2.0.10: resolution: {integrity: sha512-uujJGp8jzrrU1UHme8sUKEbawQTcTmUWsh8rbGXYD/lMwNLQ+9jQ9dMDWbbH9Hpoa9RER1BeL/38WzGrbpob2w==} engines: {node: '>=14.0.0'} @@ -7332,6 +7435,15 @@ packages: tslib: 2.6.2 dev: false + /@smithy/querystring-builder@2.0.13: + resolution: {integrity: sha512-JhXKwp3JtsFUe96XLHy/nUPEbaXqn6r7xE4sNaH8bxEyytE5q1fwt0ew/Ke6+vIC7gP87HCHgQpJHg1X1jN2Fw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + '@smithy/util-uri-escape': 2.0.0 + tslib: 2.6.2 + dev: false + /@smithy/querystring-builder@2.0.6: resolution: {integrity: sha512-HnU00shCGoV8vKJZTiNBkNvR9NogU3NIUaVMAGJPSqNGJj3psWo+TUrC0BVCDcwiCljXwXCFGJqIcsWtClrktQ==} engines: {node: '>=14.0.0'} @@ -7349,6 +7461,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/querystring-parser@2.0.13: + resolution: {integrity: sha512-TEiT6o8CPZVxJ44Rly/rrsATTQsE+b/nyBVzsYn2sa75xAaZcurNxsFd8z1haoUysONiyex24JMHoJY6iCfLdA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/querystring-parser@2.0.6: resolution: {integrity: sha512-i4LKoXHP7pTFAPjLIJyQXYOhWokbcFha3WWsX74sAKmuluv0XM2cxONZoFxwEzmWhsNyM6buSwJSZXyPiec0AQ==} engines: {node: '>=14.0.0'} @@ -7393,6 +7513,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/shared-ini-file-loader@2.2.4: + resolution: {integrity: sha512-9dRknGgvYlRIsoTcmMJXuoR/3ekhGwhRq4un3ns2/byre4Ql5hyUN4iS0x8eITohjU90YOnUCsbRwZRvCkbRfw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/signature-v4@1.1.0: resolution: {integrity: sha512-fDo3m7YqXBs7neciOePPd/X9LPm5QLlDMdIC4m1H6dgNLnXfLMFNIxEfPyohGA8VW9Wn4X8lygnPSGxDZSmp0Q==} engines: {node: '>=14.0.0'} @@ -7421,6 +7549,16 @@ packages: tslib: 2.6.2 dev: false + /@smithy/smithy-client@2.1.15: + resolution: {integrity: sha512-rngZcQu7Jvs9UbHihK1EI67RMPuzkc3CJmu4MBgB7D7yBnMGuFR86tq5rqHfL2gAkNnMelBN/8kzQVvZjNKefQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-stack': 2.0.7 + '@smithy/types': 2.5.0 + '@smithy/util-stream': 2.0.20 + tslib: 2.6.2 + dev: false + /@smithy/smithy-client@2.1.3: resolution: {integrity: sha512-nSMMp2AKqcG/ruzCY01ogrMdbq/WS1cvGStTsw7yd6bTpp/bGtlOgXvy3h7e0zP7w2DH1AtvIwzYBD6ejZePsQ==} engines: {node: '>=14.0.0'} @@ -7469,6 +7607,13 @@ packages: tslib: 2.6.2 dev: false + /@smithy/types@2.5.0: + resolution: {integrity: sha512-/a31lYofrMBkJb3BuPlYJTMKDj0hUmKUP6JFZQu6YVuQVoAjubiY0A52U9S0Uysd33n/djexCUSNJ+G9bf3/aA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + /@smithy/url-parser@2.0.10: resolution: {integrity: sha512-4TXQFGjHcqru8aH5VRB4dSnOFKCYNX6SR1Do6fwxZ+ExT2onLsh2W77cHpks7ma26W5jv6rI1u7d0+KX9F0aOw==} dependencies: @@ -7477,6 +7622,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/url-parser@2.0.13: + resolution: {integrity: sha512-okWx2P/d9jcTsZWTVNnRMpFOE7fMkzloSFyM53fA7nLKJQObxM2T4JlZ5KitKKuXq7pxon9J6SF2kCwtdflIrA==} + dependencies: + '@smithy/querystring-parser': 2.0.13 + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/url-parser@2.0.6: resolution: {integrity: sha512-9i6j5QW6bapHZ4rtkXOAm0hOUG1+5IVdVJXNSUTcNskwJchZH5IQuDNPCbgUi/u2P8EZazKt4wXT51QxOXCz1A==} dependencies: @@ -7493,6 +7646,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-base64@2.0.1: + resolution: {integrity: sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + dev: false + /@smithy/util-body-length-browser@2.0.0: resolution: {integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==} dependencies: @@ -7611,6 +7772,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-middleware@2.0.6: + resolution: {integrity: sha512-7W4uuwBvSLgKoLC1x4LfeArCVcbuHdtVaC4g30kKsD1erfICyQ45+tFhhs/dZNeQg+w392fhunCm/+oCcb6BSA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.5.0 + tslib: 2.6.2 + dev: false + /@smithy/util-retry@2.0.0: resolution: {integrity: sha512-/dvJ8afrElasuiiIttRJeoS2sy8YXpksQwiM/TcepqdRVp7u4ejd9C4IQURHNjlfPUT7Y6lCDSa2zQJbdHhVTg==} engines: {node: '>= 14.0.0'} @@ -7642,6 +7811,20 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-stream@2.0.20: + resolution: {integrity: sha512-tT8VASuD8jJu0yjHEMTCPt1o5E3FVzgdsxK6FQLAjXKqVv5V8InCnc0EOsYrijgspbfDqdAJg7r0o2sySfcHVg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/fetch-http-handler': 2.2.6 + '@smithy/node-http-handler': 2.1.9 + '@smithy/types': 2.5.0 + '@smithy/util-base64': 2.0.1 + '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-hex-encoding': 2.0.0 + '@smithy/util-utf8': 2.0.2 + tslib: 2.6.2 + dev: false + /@smithy/util-stream@2.0.9: resolution: {integrity: sha512-Fn2/3IMwqu0l2hOC7K3bbtSqFEJ6nOzMLoPVIhuH84yw/95itNkFBwVbIIiAfDaout0ZfZ26+5ch86E2q3avww==} engines: {node: '>=14.0.0'} @@ -7686,6 +7869,14 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-utf8@2.0.2: + resolution: {integrity: sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + dev: false + /@smithy/util-waiter@2.0.10: resolution: {integrity: sha512-yQjwWVrwYw+/f3hFQccE3zZF7lk6N6xtNcA6jvhWFYhnyKAm6B2mX8Gzftl0TbgoPUpzCvKYlvhaEpVtRpVfVw==} engines: {node: '>=14.0.0'} @@ -10829,6 +11020,13 @@ packages: isarray: 1.0.0 dev: false + /buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -22314,6 +22512,13 @@ packages: engines: {node: '>=4', npm: '>=6'} dev: false + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: