<NME> aws-config.ts
<BEF> ADDFILE
<MSG> Merge pull request #1755 from cardstack/s3-json-task

S3 json task
<DFF> @@ -0,0 +1,24 @@
+import config from 'config';
+
+interface AwsConfigResult {
+  credentials: any;
+  region: string | undefined;
+}
+
+// if credentials or region are configured, return them
+export default function awsConfig() {
+  let result = {} as AwsConfigResult;
+
+  let accessKeyId = config.get('aws.config.credentials.AccessKeyId');
+  let secretAccessKey = config.get('aws.config.credentials.SecretAccessKey');
+  if (accessKeyId || secretAccessKey) {
+    result.credentials = config.get('aws.config.credentials');
+  }
+
+  let region = config.get('aws.config.region');
+  if (region) {
+    result.region = config.get('aws.config.region');
+  }
+
+  return result;
+}

{'commit': 'diff --git a/packages/hub/README.md b/packages/hub/README.md\nindex 8dfeda71e..a84eea163 100644\n--- a/packages/hub/README.md\n+++ b/packages/hub/README.md\n@@ -15,6 +15,10 @@ After configuration and database setup as described below, start this by running\n \n Below is a list of the most common environment variables that the Hub accepts:\n \n+- `HUB_AWS_ACCESS_KEY_ID` \n+- `HUB_AWS_SECRET_ACCESS_KEY` \n+- `HUB_AWS_REGION`\n+- `AWS_PROFILE` - if none of the HUB_AWS_* variables are defined, no credentials or region will be passed to the aws-sdk. This will make the aws-sdk\'s default behavior take effect, which includes using an AWS_PROFILE env var if it is set\n - `SERVER_SECRET` (required) - to generate one for your machine, run `node --eval="console.log(crypto.randomBytes(32).toString(\'base64\'))"`\n - `DATABASE_URL` - defaults in development to postgres://postgres:postgres@localhost:5432/hub_development\n - `LOG_LEVELS` - defaults to `*=info`\ndiff --git a/packages/hub/config/custom-environment-variables.json b/packages/hub/config/custom-environment-variables.json\nindex 3efafb96e..22835fafa 100644\n--- a/packages/hub/config/custom-environment-variables.json\n+++ b/packages/hub/config/custom-environment-variables.json\n@@ -1,4 +1,13 @@\n {\n+  "aws": {\n+    "config": {\n+      "credentials": {\n+        "AccessKeyId": "HUB_AWS_ACCESS_KEY_ID",\n+        "SecretAccessKey": "HUB_AWS_SECRET_ACCESS_KEY"\n+      },\n+      "region": "HUB_AWS_REGION"\n+    }\n+  },\n   "db": {\n     "url": "DATABASE_URL"\n   },\ndiff --git a/packages/hub/config/default.json b/packages/hub/config/default.json\nindex f55042f5c..eef9bfccc 100644\n--- a/packages/hub/config/default.json\n+++ b/packages/hub/config/default.json\n@@ -1,4 +1,14 @@\n {\n+  "aws": {\n+    "config": {\n+      "credentials": {\n+        "AccessKeyId": null,\n+        "SecretAccessKey": null\n+      },\n+      "region": "us-east-1"\n+    },\n+    "offchainStorageBucketName": "offchain-storage"\n+  },\n   "db": {\n     "url": "postgres://postgres:postgres@localhost:5432/hub_development",\n     "migrations-dir": "db/migrations",\ndiff --git a/packages/hub/package.json b/packages/hub/package.json\nindex db0dcec4f..07bdf969a 100644\n--- a/packages/hub/package.json\n+++ b/packages/hub/package.json\n@@ -10,6 +10,7 @@\n   "license": "MIT",\n   "description": "Stock API server for the Cardstack tech stack.",\n   "dependencies": {\n+    "@aws-sdk/client-s3": "^3.18.0",\n     "@cardstack/did-resolver": "0.19.22",\n     "@cardstack/logger": "^0.2.1",\n     "@graphile/logger": "^0.2.0",\ndiff --git a/packages/hub/tasks/hello.ts b/packages/hub/tasks/hello.ts\ndeleted file mode 100644\nindex cc4e26a60..000000000\n--- a/packages/hub/tasks/hello.ts\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-import { Helpers } from \'graphile-worker\';\n-\n-export default async (payload: any, helpers: Helpers) => {\n-  const { name } = payload;\n-  helpers.logger.info(`Hello, ${name}!!!!`);\n-};\ndiff --git a/packages/hub/tasks/s3-put-json.ts b/packages/hub/tasks/s3-put-json.ts\nnew file mode 100644\nindex 000000000..40e2e4182\n--- /dev/null\n+++ b/packages/hub/tasks/s3-put-json.ts\n@@ -0,0 +1,20 @@\n+/* eslint-disable @typescript-eslint/naming-convention */\n+import { Helpers } from \'graphile-worker\';\n+import { S3Client, PutObjectCommand } from \'@aws-sdk/client-s3\';\n+import awsConfig from \'../utils/aws-config\';\n+\n+export default async (payload: any, helpers: Helpers) => {\n+  const { bucket, path, json } = payload;\n+  helpers.logger.info(`Writing JSON to S3 bucket ${bucket} at ${path}...`);\n+  let s3Config = awsConfig();\n+  console.log(s3Config);\n+  let s3Client = new S3Client(s3Config);\n+  const command = new PutObjectCommand({\n+    Bucket: bucket,\n+    Body: JSON.stringify(json),\n+    ContentType: \'application/json\',\n+    Key: path,\n+  });\n+  const response = await s3Client.send(command);\n+  helpers.logger.info(`S3 PUT completed ${bucket}:${path} [${response.$metadata.httpStatusCode}]`);\n+};\ndiff --git a/packages/hub/utils/aws-config.ts b/packages/hub/utils/aws-config.ts\nnew file mode 100644\nindex 000000000..f73ba2271\n--- /dev/null\n+++ b/packages/hub/utils/aws-config.ts\n@@ -0,0 +1,24 @@\n+import config from \'config\';\n+\n+interface AwsConfigResult {\n+  credentials: any;\n+  region: string | undefined;\n+}\n+\n+// if credentials or region are configured, return them\n+export default function awsConfig() {\n+  let result = {} as AwsConfigResult;\n+\n+  let accessKeyId = config.get(\'aws.config.credentials.AccessKeyId\');\n+  let secretAccessKey = config.get(\'aws.config.credentials.SecretAccessKey\');\n+  if (accessKeyId || secretAccessKey) {\n+    result.credentials = config.get(\'aws.config.credentials\');\n+  }\n+\n+  let region = config.get(\'aws.config.region\');\n+  if (region) {\n+    result.region = config.get(\'aws.config.region\');\n+  }\n+\n+  return result;\n+}\ndiff --git a/yarn.lock b/yarn.lock\nindex e2c0488ad..970ff2537 100644\n--- a/yarn.lock\n+++ b/yarn.lock\n@@ -2,6 +2,758 @@\n # yarn lockfile v1\n \n \n+"@aws-crypto/crc32@^1.0.0":\n+  version "1.0.0"\n+  resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-1.0.0.tgz#6a0164fd92bb365860ba6afb5dfef449701eb8ca"\n+  integrity sha512-wr4EyCv3ZfLH3Sg7FErV6e/cLhpk9rUP/l5322y8PRgpQsItdieaLbtE4aDOR+dxl8U7BG9FIwWXH4TleTDZ9A==\n+  dependencies:\n+    tslib "^1.11.1"\n+\n+"@aws-crypto/ie11-detection@^1.0.0":\n+  version "1.0.0"\n+  resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz#d3a6af29ba7f15458f79c41d1cd8cac3925e726a"\n+  integrity sha512-kCKVhCF1oDxFYgQrxXmIrS5oaWulkvRcPz+QBDMsUr2crbF4VGgGT6+uQhSwJFdUAQ2A//Vq+uT83eJrkzFgXA==\n+  dependencies:\n+    tslib "^1.11.1"\n+\n+"@aws-crypto/sha256-browser@^1.0.0":\n+  version "1.1.0"\n+  resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-1.1.0.tgz#20092cc6c08d8f04db0ed57b6f05cff150384f77"\n+  integrity sha512-VIpuLRDonMAHgomrsm/zKbeXTnxpr4aHDQmS4pF+NcpvBp64l675yjGA9hyUYs/QJwBjUl8WqMjh9tIRgi85Sg==\n+  dependencies:\n+    "@aws-crypto/ie11-detection" "^1.0.0"\n+    "@aws-crypto/sha256-js" "^1.1.0"\n+    "@aws-crypto/supports-web-crypto" "^1.0.0"\n+    "@aws-sdk/types" "^3.1.0"\n+    "@aws-sdk/util-locate-window" "^3.0.0"\n+    "@aws-sdk/util-utf8-browser" "^3.0.0"\n+    tslib "^1.11.1"\n+\n+"@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.1.0":\n+  version "1.1.0"\n+  resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.1.0.tgz#a58386ad18186e392e0f1d98d18831261d27b071"\n+  integrity sha512-VIhuqbPgXDVr8sZe2yhgQcDRRmzf4CI8fmC1A3bHiRfE6wlz1d8KpeemqbuoEHotz/Dch9yOxlshyQDNjNFeHA==\n+  dependencies:\n+    "@aws-sdk/types" "^3.1.0"\n+    "@aws-sdk/util-utf8-browser" "^3.0.0"\n+    tslib "^1.11.1"\n+\n+"@aws-crypto/supports-web-crypto@^1.0.0":\n+  version "1.0.0"\n+  resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz#c40901bc17ac1e875e248df16a2b47ad8bfd9a93"\n+  integrity sha512-IHLfv+WmVH89EW4n6a5eE8/hUlz6qkWGMn/v4r5ZgzcXdTC5nolii2z3k46y01hWRiC2PPhOdeSLzMUCUMco7g==\n+  dependencies:\n+    tslib "^1.11.1"\n+\n+"@aws-sdk/abort-controller@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.18.0.tgz#ff39bf1e07c7ae7790c26f93517a08fa3c27dd10"\n+  integrity sha512-AxDm2QLq2Z+PjzMESB+lPD5XL73MzC4CtUAajPn09ocWj7p9poVN0dd8NVFhBDfQMVPWTQaQBZk7h5TDvZrsBg==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/chunked-blob-reader-native@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.18.0.tgz#9de0f178c3751460c6b9677f0d84f754bab18a3d"\n+  integrity sha512-1ogm6vVt8qtRUOzExURHVspDPaLCOtahD5edsJeqPWUPNv5tGGaRi5LyZcXUTGky34Z4cVoy69FwxUBpkaJ6SA==\n+  dependencies:\n+    "@aws-sdk/util-base64-browser" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/chunked-blob-reader@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.18.0.tgz#f6856ec377a0ab48569f07b4c4f1152838ff7aec"\n+  integrity sha512-Xl4Dw67OgYEEqmPvcjcC4vvnZ7esAFKW32WRxhccfR0cqRhsM1RsDFHPfD8o5wJRiB3amc4Ui8ZbYBUy8a/2Fw==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/client-s3@^3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.18.0.tgz#57ad13e49b63c6a96f6669e1d13780105e404406"\n+  integrity sha512-7qXl7Pg+/V0BxJNq+XRsj154clbKL9f4Jnx5pXO63ym/xhE9jxnJgi16/7krTBGkTCjVA0eYsj5d8wuJmJOdZA==\n+  dependencies:\n+    "@aws-crypto/sha256-browser" "^1.0.0"\n+    "@aws-crypto/sha256-js" "^1.0.0"\n+    "@aws-sdk/client-sts" "3.18.0"\n+    "@aws-sdk/config-resolver" "3.18.0"\n+    "@aws-sdk/credential-provider-node" "3.18.0"\n+    "@aws-sdk/eventstream-serde-browser" "3.18.0"\n+    "@aws-sdk/eventstream-serde-config-resolver" "3.18.0"\n+    "@aws-sdk/eventstream-serde-node" "3.18.0"\n+    "@aws-sdk/fetch-http-handler" "3.18.0"\n+    "@aws-sdk/hash-blob-browser" "3.18.0"\n+    "@aws-sdk/hash-node" "3.18.0"\n+    "@aws-sdk/hash-stream-node" "3.18.0"\n+    "@aws-sdk/invalid-dependency" "3.18.0"\n+    "@aws-sdk/md5-js" "3.18.0"\n+    "@aws-sdk/middleware-apply-body-checksum" "3.18.0"\n+    "@aws-sdk/middleware-bucket-endpoint" "3.18.0"\n+    "@aws-sdk/middleware-content-length" "3.18.0"\n+    "@aws-sdk/middleware-expect-continue" "3.18.0"\n+    "@aws-sdk/middleware-host-header" "3.18.0"\n+    "@aws-sdk/middleware-location-constraint" "3.18.0"\n+    "@aws-sdk/middleware-logger" "3.18.0"\n+    "@aws-sdk/middleware-retry" "3.18.0"\n+    "@aws-sdk/middleware-sdk-s3" "3.18.0"\n+    "@aws-sdk/middleware-serde" "3.18.0"\n+    "@aws-sdk/middleware-signing" "3.18.0"\n+    "@aws-sdk/middleware-ssec" "3.18.0"\n+    "@aws-sdk/middleware-stack" "3.18.0"\n+    "@aws-sdk/middleware-user-agent" "3.18.0"\n+    "@aws-sdk/node-config-provider" "3.18.0"\n+    "@aws-sdk/node-http-handler" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/smithy-client" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/url-parser" "3.18.0"\n+    "@aws-sdk/util-base64-browser" "3.18.0"\n+    "@aws-sdk/util-base64-node" "3.18.0"\n+    "@aws-sdk/util-body-length-browser" "3.18.0"\n+    "@aws-sdk/util-body-length-node" "3.18.0"\n+    "@aws-sdk/util-user-agent-browser" "3.18.0"\n+    "@aws-sdk/util-user-agent-node" "3.18.0"\n+    "@aws-sdk/util-utf8-browser" "3.18.0"\n+    "@aws-sdk/util-utf8-node" "3.18.0"\n+    "@aws-sdk/util-waiter" "3.18.0"\n+    "@aws-sdk/xml-builder" "3.18.0"\n+    entities "2.2.0"\n+    fast-xml-parser "3.19.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/client-sso@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.18.0.tgz#c3ce974fc6786cd2ff3ac9f14dafe5d28633aea9"\n+  integrity sha512-OAS2R13NJ/mNnKxBc//Nva/+BmqaZZrzJ3pHsfGNUvzYE6rNj5iWHACD8LIV/Glf5Z3H52fbwfmYpwkMuvPuXQ==\n+  dependencies:\n+    "@aws-crypto/sha256-browser" "^1.0.0"\n+    "@aws-crypto/sha256-js" "^1.0.0"\n+    "@aws-sdk/config-resolver" "3.18.0"\n+    "@aws-sdk/fetch-http-handler" "3.18.0"\n+    "@aws-sdk/hash-node" "3.18.0"\n+    "@aws-sdk/invalid-dependency" "3.18.0"\n+    "@aws-sdk/middleware-content-length" "3.18.0"\n+    "@aws-sdk/middleware-host-header" "3.18.0"\n+    "@aws-sdk/middleware-logger" "3.18.0"\n+    "@aws-sdk/middleware-retry" "3.18.0"\n+    "@aws-sdk/middleware-serde" "3.18.0"\n+    "@aws-sdk/middleware-stack" "3.18.0"\n+    "@aws-sdk/middleware-user-agent" "3.18.0"\n+    "@aws-sdk/node-config-provider" "3.18.0"\n+    "@aws-sdk/node-http-handler" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/smithy-client" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/url-parser" "3.18.0"\n+    "@aws-sdk/util-base64-browser" "3.18.0"\n+    "@aws-sdk/util-base64-node" "3.18.0"\n+    "@aws-sdk/util-body-length-browser" "3.18.0"\n+    "@aws-sdk/util-body-length-node" "3.18.0"\n+    "@aws-sdk/util-user-agent-browser" "3.18.0"\n+    "@aws-sdk/util-user-agent-node" "3.18.0"\n+    "@aws-sdk/util-utf8-browser" "3.18.0"\n+    "@aws-sdk/util-utf8-node" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/client-sts@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.18.0.tgz#0add98614ed0233855b067c5e8b5905ae272808b"\n+  integrity sha512-xRaBx3A4Edd216ZSZP4360siOx7yGiPY2Ez/w4JbdcwFRjoen8cP9kTgbipgMhbwHVUvgNZpyDrCp0eRHL24bg==\n+  dependencies:\n+    "@aws-crypto/sha256-browser" "^1.0.0"\n+    "@aws-crypto/sha256-js" "^1.0.0"\n+    "@aws-sdk/config-resolver" "3.18.0"\n+    "@aws-sdk/credential-provider-node" "3.18.0"\n+    "@aws-sdk/fetch-http-handler" "3.18.0"\n+    "@aws-sdk/hash-node" "3.18.0"\n+    "@aws-sdk/invalid-dependency" "3.18.0"\n+    "@aws-sdk/middleware-content-length" "3.18.0"\n+    "@aws-sdk/middleware-host-header" "3.18.0"\n+    "@aws-sdk/middleware-logger" "3.18.0"\n+    "@aws-sdk/middleware-retry" "3.18.0"\n+    "@aws-sdk/middleware-sdk-sts" "3.18.0"\n+    "@aws-sdk/middleware-serde" "3.18.0"\n+    "@aws-sdk/middleware-signing" "3.18.0"\n+    "@aws-sdk/middleware-stack" "3.18.0"\n+    "@aws-sdk/middleware-user-agent" "3.18.0"\n+    "@aws-sdk/node-config-provider" "3.18.0"\n+    "@aws-sdk/node-http-handler" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/smithy-client" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/url-parser" "3.18.0"\n+    "@aws-sdk/util-base64-browser" "3.18.0"\n+    "@aws-sdk/util-base64-node" "3.18.0"\n+    "@aws-sdk/util-body-length-browser" "3.18.0"\n+    "@aws-sdk/util-body-length-node" "3.18.0"\n+    "@aws-sdk/util-user-agent-browser" "3.18.0"\n+    "@aws-sdk/util-user-agent-node" "3.18.0"\n+    "@aws-sdk/util-utf8-browser" "3.18.0"\n+    "@aws-sdk/util-utf8-node" "3.18.0"\n+    entities "2.2.0"\n+    fast-xml-parser "3.19.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/config-resolver@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.18.0.tgz#39ce169776ccb96d9809df8a262c545e1318c342"\n+  integrity sha512-2uSa/YccHckyYuY0OLDemgb+Jprif/NP+6OW+4eAjkwMGpZ3TtyGXoAZprBHqDXV12QxOYWjL6X6pyHvvsBAsQ==\n+  dependencies:\n+    "@aws-sdk/signature-v4" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-env@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.18.0.tgz#1a9be36a06fb4dc131e4e9ba63d8f4c85320a729"\n+  integrity sha512-+PajLjjpXib9rseqC/r8hnlgq5mOloIaTLYZsdbEC9Afwo5VmYlemL5gAfH+ABxYeanbTvHaP7lUNS3pLrM7dA==\n+  dependencies:\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-imds@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.18.0.tgz#6876189a2b04d8f9430c667d4a6f606c61044152"\n+  integrity sha512-l/yDGjmZkkO0mSqatk7lOHKE6/EGplD5HHgAEY6pr5Y7C5a6ck7/mU7iNtmfq5HAv/YFsXHrewMGyXoE9iQBpg==\n+  dependencies:\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-ini@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.18.0.tgz#1c3a4002473fb432a173569623cc535ce38e648c"\n+  integrity sha512-Hsef5NC4hPh4BDlin/Eik9S2icFZIvQjPGVL2z3OO30Xer0GHwIQNMAf0WTREQ+cCuXFrIyCwSsdxIo1n2yQnA==\n+  dependencies:\n+    "@aws-sdk/credential-provider-env" "3.18.0"\n+    "@aws-sdk/credential-provider-imds" "3.18.0"\n+    "@aws-sdk/credential-provider-web-identity" "3.18.0"\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/shared-ini-file-loader" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.18.0.tgz#60f5e0a19e7bd689d35ced18e21a8cbd5dba5acc"\n+  integrity sha512-iFwBl6w7mJAFo4YNVL960bkY6c4bUtABtbI+Wka8QbauGTGfAPMlET0JBesPNRAjkB7xzEtujPQL7pz4qlzeNQ==\n+  dependencies:\n+    "@aws-sdk/credential-provider-env" "3.18.0"\n+    "@aws-sdk/credential-provider-imds" "3.18.0"\n+    "@aws-sdk/credential-provider-ini" "3.18.0"\n+    "@aws-sdk/credential-provider-process" "3.18.0"\n+    "@aws-sdk/credential-provider-sso" "3.18.0"\n+    "@aws-sdk/credential-provider-web-identity" "3.18.0"\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/shared-ini-file-loader" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-process@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.18.0.tgz#9fb5b69b8c0d04ac03c4c4e29aed0778c55908da"\n+  integrity sha512-0KwouUPsAALTqAlzy7HOddujjka3FmlNLe58bPPUk+2nqgg1qKGaNEtDTGCpusIaqLJm7ZbPJ0cJ8B+q/ytuwg==\n+  dependencies:\n+    "@aws-sdk/credential-provider-ini" "3.18.0"\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/shared-ini-file-loader" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-sso@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.18.0.tgz#86c00cacf638fa110000d2f6b15013c81fb16cb4"\n+  integrity sha512-EEHnWb/tFvFb9+a7dfChBdHmOZnqZeAbn6TOgc4LME4No9EG3XvkH48wxS0Mdhi9ziEGEdnNLQSVaIFzprWn8w==\n+  dependencies:\n+    "@aws-sdk/client-sso" "3.18.0"\n+    "@aws-sdk/credential-provider-ini" "3.18.0"\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/shared-ini-file-loader" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/credential-provider-web-identity@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.18.0.tgz#9730dc9a5e8575dd634fecd41413611dc75426da"\n+  integrity sha512-s+F9hE5f2hcrVluEWpDMCSAWUntNQyzJexQKq5KYdJuHsm+oQbACJwWPcB63rbmpzWQht88tU6+YeMRq8P9HIA==\n+  dependencies:\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/eventstream-marshaller@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.18.0.tgz#b0650680f0cc1b0496fd20d5bf155066a16a1e15"\n+  integrity sha512-DbvQfpBHolEanxjaJ3uJdfTdZdyE7Js7v2fvvYT/r59/zNYNNwUtjdciL25Dg2H4OfJtMp10r2neB23U5IKLVQ==\n+  dependencies:\n+    "@aws-crypto/crc32" "^1.0.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-hex-encoding" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/eventstream-serde-browser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.18.0.tgz#31245cb34a10a49c520522627b0dc208d780ab0d"\n+  integrity sha512-RDaRPyfXnabcLlci/PZAY7rqd7x2408kLiRNzpj824+yVgnjRlKG45YYkYggxZo2F4ZKVeU2rJE9zhxP9XT6AA==\n+  dependencies:\n+    "@aws-sdk/eventstream-marshaller" "3.18.0"\n+    "@aws-sdk/eventstream-serde-universal" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/eventstream-serde-config-resolver@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.18.0.tgz#a30b7f2622b8d60ddbf29e617bb8392835dd82fe"\n+  integrity sha512-CDPwXQUiQbzFqGnn2QQSloRLZ6KogbGPqcAxVADdHiFw8+UdA+bjBbfQmmv0tTWvasrvPOLomHw42DZ1v+DvEw==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/eventstream-serde-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.18.0.tgz#4d5796ca25d765d090ad73bf469d58d8d64850b4"\n+  integrity sha512-EPg7QUxIAVHO5Zmp+9D8KYV3gcPvsz1v6nmw3ZFOGStgJM37j6KYbu84gFPradkEgTzE+bxb3OgB/mMC2j3XSg==\n+  dependencies:\n+    "@aws-sdk/eventstream-marshaller" "3.18.0"\n+    "@aws-sdk/eventstream-serde-universal" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/eventstream-serde-universal@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.18.0.tgz#84ee198fc0b76d6c151cbbd3ded310759f9d71de"\n+  integrity sha512-pqQEFY4U16oV25vXAfaDnnTSe78ZDaqAEkVZxSt1gyfLBjin9AmFa4JpBx0TGbm5ZjwEk8KDwGa4+HPMTTQjxw==\n+  dependencies:\n+    "@aws-sdk/eventstream-marshaller" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/fetch-http-handler@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.18.0.tgz#8614c8e99e7c4f80f07445a3ce962283672bdcef"\n+  integrity sha512-jJS34wJzv+5wumVpQ7fGOmTxkJlu1tmGkbCt13xuSjYpt2M/by+WAShxcxEhrsBJlMNMHTHF+v2Tew6JwEP00w==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/querystring-builder" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-base64-browser" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/hash-blob-browser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.18.0.tgz#f49433d94af35a1f3826edd9fb99f48f9ae12b57"\n+  integrity sha512-4+c/AoMLt50EeetoDhVKRq3CNnpHgrbQomQI4LjDZeSnlNuTZ/fQ6MvRnWPOoZgTwK2xtI31LrAt95G/54oa0Q==\n+  dependencies:\n+    "@aws-sdk/chunked-blob-reader" "3.18.0"\n+    "@aws-sdk/chunked-blob-reader-native" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/hash-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.18.0.tgz#6e7c8b7defb707315fe89d65ba33d484066c9543"\n+  integrity sha512-rmjpJl4oG4JxHydnb9F3GzHu5wDJAQswgnBV0NszHfDndJm34f0Dta6OTmreK5nZ8ns/g6ZAjLjiTuKJoxjVmg==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-buffer-from" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/hash-stream-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.18.0.tgz#93febb646b0d3959b14eaa74b9a3a3d7204febc4"\n+  integrity sha512-dW8nMYy4Wz5wjkID9z8e6cNdTVralDXfilgaPas7D+Q3RfnCm5PgDFHXFhDcY51rLwuuWCHmxi2QLqx9tGngmg==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/invalid-dependency@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.18.0.tgz#8edf6c9ebdcb5932fe3a81868bd78daf305f8649"\n+  integrity sha512-+VlXE8G22+H7d6K0EafpmihodOiF8I957J/euWIAGTSYYhLuAXPgCyPoKk1Qmxqfb3oAoG/cuoehCuPfFWwTPA==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/is-array-buffer@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.18.0.tgz#ad505580d4a7bcaba60f084553c11b8329ddb2b7"\n+  integrity sha512-HvPRgESVQt0UbzRQZVKhf8SpGGc5Jrln3AtTzkVu6PBHO04Dh2EHsrsxiu7X3oB453Mnp8+LYBVIgsmM/RyJzA==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/md5-js@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.18.0.tgz#962d6577276ab84cd166d6526ae42dbf9064f60c"\n+  integrity sha512-EYYOdfl5i4o1XeaJYqQDk/3ETzLdzhR2JwqPxPGJfTC7E44yFJYV0fLFEmS46WXgN5Dtz4DXkw0GZdf/jJecyA==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-utf8-browser" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-apply-body-checksum@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.18.0.tgz#14e075cc93330574548ca0db87d4783a94124112"\n+  integrity sha512-ODM+Lb89Zpuzmo/36O+PxfQb82Y1U8QG+BoLULdCYKGW0yqB6zywuHXhfJaTzSjZYufckVKPFaoKYUvE3GmPMw==\n+  dependencies:\n+    "@aws-sdk/is-array-buffer" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-bucket-endpoint@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.18.0.tgz#63461a14862b65638b40e834a5d4af469bc0b080"\n+  integrity sha512-MDNyGgPVf16vLOXbrRwiWqKc4muQwOaPHnKbx87w7M/MT4Uoq0d/r7rcCja2aEqr0iPLOxbRtASAhcPnQltxEA==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-arn-parser" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-content-length@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.18.0.tgz#3da77642f082bab1864926c3bc903f87e9187cd5"\n+  integrity sha512-N1qTzkn+vNjMXBRybW9/S9WtCFiJp2B8agr+41zja4hnZVA07kClvI76jM6KUwQHADB2q79FWT+i6PeyCHHh1Q==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-expect-continue@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.18.0.tgz#1210e54c0a0b37d5352516af643ac3fa4b98ac71"\n+  integrity sha512-JiTx+22XRdC1MHp7wLdIuAIzgBVp/3EoAbSRdg4Qhs88yFwUZM7G3vNRtnq4l8He2T/VExVZjTLMcGBCKpu/pA==\n+  dependencies:\n+    "@aws-sdk/middleware-header-default" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-header-default@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.18.0.tgz#da208e11abebb8e5dfe0734d967d9ac88d8daae9"\n+  integrity sha512-mWT/p2gVVB3us5Otf0g66zTIUaZXPMamatzmqEUVWC40VQxIcC0HeuXKBJrBQz63TqgFEUuFIPe5fdyaWgsjLQ==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-host-header@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.18.0.tgz#527bed316636ec42aea113458fcd0358269f9db9"\n+  integrity sha512-MPX9GJk3Wl3OjRJ3ti+ptkG+7dTpXGtEjIPF0MsCSlfTKH01lsNGDpSZpeUyhYFrvl3fXoMrPeJHUuFeXA3bIA==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-location-constraint@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.18.0.tgz#f17f5e0eb9959acac4501df60972d5377d4349b8"\n+  integrity sha512-VjMFFE7FXfmuwtFDnNLeqVM4/Q9rXC2a0YkYjXoGSzF4CuMarkyu3dPb590ubdSsYhYpKQDaoRFgJNzCRjmssA==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-logger@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.18.0.tgz#00addf99fcc41879fb4cd9521630931dbcf8deff"\n+  integrity sha512-GGiT4w8R7GOvlp4Q1w8JmBaBSsxNUL+ebEcs8ahJBrm9brYZG7tN8ncLXfF7d3oLd5XMoSbBkTn8+dQ973pkEQ==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-retry@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.18.0.tgz#61b5fd249bdd0c945ed04912030f098514a1bc7b"\n+  integrity sha512-PIvbtN05IftmbLACEdV6atNXJVuXNDkK5pcqKgggCteIKHz0QWnLUrgvi9wh2/HqDJD/XpY+ZmOEoZqUnwYSgg==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/service-error-classification" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+    uuid "^8.3.2"\n+\n+"@aws-sdk/middleware-sdk-s3@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.18.0.tgz#d63433460f0a2d04fb8a554eeeaba328477babaf"\n+  integrity sha512-JQ0UGyixH3QTnLd27eG2rpgMswhe2T7e0h9iI9YLGDiYQLRAULYIagR6XZep1vKJljyY8VNmnII89aMb132I1w==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-arn-parser" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-sdk-sts@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.18.0.tgz#e26f0f335553e3e1956a3b190080d9f82377b5f9"\n+  integrity sha512-FVowN386wlLBt7ND5ALbkgJl65ynzxYNBH351mcD2/VwgCx3PZqZSr8sLoVDyuB+X2n9/GAI+r3W++zQ8YOymQ==\n+  dependencies:\n+    "@aws-sdk/middleware-signing" "3.18.0"\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/signature-v4" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-serde@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.18.0.tgz#583687b7b7f278ecbb18a5f273399ceef7921bf8"\n+  integrity sha512-46PtAvnGONN/v5OcNE4/3UywadCJunITwXDK/AGs6SMijkOPtoGMjP7fme9XlB6wg4QTSfeF3eKsieOF47RlPg==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-signing@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.18.0.tgz#6dc6b27d09e18b5b792acef0a856f13b1f76e8c9"\n+  integrity sha512-0DCwl1Hp66XVG3UUIvBhf7zy8pmeHFATInqRMF91Ch4mYJJdk/U0xLla+ouA2t6SjBkl2tb1bJLgjwkWnvR5Rg==\n+  dependencies:\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/signature-v4" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-ssec@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.18.0.tgz#8e05f809e0b779e35cd0146d7665f2cfb9335967"\n+  integrity sha512-j4WdgNLrHH5w5Nn3JbnMFFvTPTNU6a9FvLT08tfWYT93UOgRBe+d8c8BZzTY+OYkoA77EgEYuI5TYetratXiIw==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-stack@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.18.0.tgz#e3977d0dce6690e83d281e4ae4313b7ee8547aea"\n+  integrity sha512-+FDsKMRq3Gsd6ddVt1P+7ltSiRRcEj6KpRccMHkFkFqWWqn9OcPh+Et076ivSBXCW8q9Ib4qJi04hiCD/md2EQ==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/middleware-user-agent@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.18.0.tgz#0319b51faa04fcc187f852538e5d99709e4f465f"\n+  integrity sha512-BGm+buvq0wHtIylYGmyLhuRUvb2MsKx2mBhEx9m5Vs4M8I8GnTgrWtblOzwqZ+Q7dl+GQCL0/tLYTw50BTeLGQ==\n+  dependencies:\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/node-config-provider@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.18.0.tgz#4dc346592f81084d09cd81c4e6a26cf9bcd2b083"\n+  integrity sha512-U+qqNIWivZK9bd1BJMwRyXcTHZAS9r4sgPMrjFyOutdLxBCrhU7QUUr0hFaHdrsVA7cU+D3bBhFxq6JxGmj8Hg==\n+  dependencies:\n+    "@aws-sdk/property-provider" "3.18.0"\n+    "@aws-sdk/shared-ini-file-loader" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/node-http-handler@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.18.0.tgz#9771340d008d83f245e0cb222d5bb31128805c74"\n+  integrity sha512-87ZxGlq3dnlPjAIN0yhawiF+n3oQQihxYaSeysltsuz13X/beYTDyGTEBZXWKwB06O/XHbfBV6iYUR7XgMP20w==\n+  dependencies:\n+    "@aws-sdk/abort-controller" "3.18.0"\n+    "@aws-sdk/protocol-http" "3.18.0"\n+    "@aws-sdk/querystring-builder" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/property-provider@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.18.0.tgz#7ab800603e12c4baad4492729cc072df7976cd0d"\n+  integrity sha512-e7ADhSv8zAePAJLdXT0QItFPnA2ewOCDrD130E0NYA90AnW3xIyLB+J5HbwTWYUcF9Fbo0xSKh+0y8hBjNsT/w==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/protocol-http@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.18.0.tgz#fc6448505b5b2b95afde71e33df5887371152a74"\n+  integrity sha512-GIKvZBEnm87/mRaVYHnsQDYBSvU6qyKjyVdHDpQHhF+MZ+MKafygmpdBjsrRRstWr7h5WepnUVImYgvmaW6vyw==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/querystring-builder@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.18.0.tgz#e49393e318072f70ea66e951a4db9795879bc43b"\n+  integrity sha512-1DrzflLp80RG674XfhZsl4jehIe0mdSPqXqMH6vOMDcmF/lLEsfwPs307G+Go3kwWXSUup52bcMmfi8Ef4xLBg==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-uri-escape" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/querystring-parser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.18.0.tgz#4210f462cfd5a3f79ef02f0a13a8406d7786b745"\n+  integrity sha512-7pkgPCeTtsgcgBwYSK2QN9Kij88Adi4bKMBxCqpanloTng2KrZ3DfyyD7c0H70mt21Zqfwr2M1HrPSs1SZKBkw==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/service-error-classification@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.18.0.tgz#5e8a9609a6fcd64f1f3f0e71b8a0bbd3bed9b21c"\n+  integrity sha512-bgKy3fl1sIimpXUKqN9Mmb6tRtdtFQDYd/eX0LISSbdtJiVnMgiTxwTPEX72pN54L8zun3zU6xOuwoZP1Af6YA==\n+\n+"@aws-sdk/shared-ini-file-loader@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.18.0.tgz#9cc4cd96753862a1c0aaefa903353e4bc17dda6a"\n+  integrity sha512-YpBCZWRvJhnPHbdFLzRvLIfx7Zxre8/5YsWrrNNBWRJ90z/6czzPdOn9jab/AVfLPpC/VSSubf4v4b8Cjeb4eA==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/signature-v4@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.18.0.tgz#b816b3d5436a9e1cd008a95db192cf36fa87ebd8"\n+  integrity sha512-md52+v+aIDfhwtaN+xIJ+7XgSqtRmreGkSCnJziGINRSnUSdycoR/ZJhT5d9TbMpYHdoT0Rm9RXNXImlfKCNGw==\n+  dependencies:\n+    "@aws-sdk/is-array-buffer" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    "@aws-sdk/util-hex-encoding" "3.18.0"\n+    "@aws-sdk/util-uri-escape" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/smithy-client@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.18.0.tgz#ed441f76921c0f21558a35839cc1e8af91668647"\n+  integrity sha512-fIcfzrf2TnhB4W8UyqdPQ9fPAfIfuLQ0dO/Y9qwzsw0Bvj4qYYPcUaNI2raX7WN1G2KHa9wZdiceR0J+uQO7yg==\n+  dependencies:\n+    "@aws-sdk/middleware-stack" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/types@3.18.0", "@aws-sdk/types@^3.1.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.18.0.tgz#2158f054b83ea1319c47306bf08245fb26edeed0"\n+  integrity sha512-fyk6HXK1wk83n4fDvsG+ewV+yS4uegepeMNrmLr7iBKjzc/bLckTWk7GKFM5ZaF/9jWyk7o2eKW3C3BltgDrfQ==\n+\n+"@aws-sdk/url-parser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.18.0.tgz#6974e26036f85194240eff475e27f4bcc2621d73"\n+  integrity sha512-ye3sSF8R6kp1r98MRNk9UDj6P0luQfSZ5N2EZjF8AUG0y4PTVc4L/PlSsH3/sMOjG831al+khNo+cZNO9wZeiQ==\n+  dependencies:\n+    "@aws-sdk/querystring-parser" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-arn-parser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.18.0.tgz#473c70a0e64b7af186e4d91d232f8eab0d3e9b4b"\n+  integrity sha512-zqzkRwxbt73/SLZAmmLLqTavSF0BucButJQ5m9uIGgobPi7kZBjOwh4sY6WQw3E80MFc6EExiVyry3rSHiWMBg==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-base64-browser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.18.0.tgz#f625d06c0e9923d39976fbe6474bbed5a287f491"\n+  integrity sha512-XG7ls/9utSgCGzD0hgnNAQWLWU9Nnc/IqjQCZ6td84Y1/kTBBafSN3RTPeQ3fLzJ063sTDOy/DPEh21IPZCF6A==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-base64-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.18.0.tgz#5807aa9c036a4037d68fca0fa353e66ea10c1a9d"\n+  integrity sha512-NzkHCynFU2wfqU/15IkI5H0ukafu//LSUTFp9w4MzFNYpfbXAjcAK4S53VQe46bvciRRk8pyHc4wixiYsxFbpA==\n+  dependencies:\n+    "@aws-sdk/util-buffer-from" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-body-length-browser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.18.0.tgz#c67c51219f44540e8b032065302a5e3fc74012f6"\n+  integrity sha512-+x0yrV9Z/gGGRVoWmx7t+skwG110vngkq5Clu7z+k/DtuZrkrspYKOVzidaH80pGJwJi+0JzxbIhA5JblBAf7Q==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-body-length-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.18.0.tgz#fcd93fec88161ca3f2392c7cf657fc74a38acbe3"\n+  integrity sha512-r/m+TP9O1G8k9V51LvDCjkoc53Parn7BjP81cBplDrA6Uc2iezVRcjuXzRU+4X8EBIlUtCNhDYryl5xN8cohKw==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-buffer-from@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.18.0.tgz#b2e18e04b7e28f701cc60e2da342d32a60b449d4"\n+  integrity sha512-4Pp4owEfjNdmqH9cByJnN0GbfM2II3I4FnRN5d9BysJ6mG+rLhc6WYxBgr4sEFtsJGYCgFzLU5MfUMx9OuDdPA==\n+  dependencies:\n+    "@aws-sdk/is-array-buffer" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-hex-encoding@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.18.0.tgz#b20ad7db4394c664e681b3744e216e405b2cdf13"\n+  integrity sha512-tayCN0+jLJRyM7W059ybwaEojjI4ylP4UyyG+LDc4m62PskmsCWTWOJzudjtx4d765e0I/F1w1ELrE+VhUdOpQ==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-locate-window@^3.0.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.18.0.tgz#47bb20b6f9fcff45ec948e125a4e8f892f029d80"\n+  integrity sha512-Lj2O9KaXCn+gPW23l3ydcSWe4HK0jH6teeSymbaFTwTjKtr4oLfDDKAOFoG5YyppQstEPqsL/RidVey4kOFfcg==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-uri-escape@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.18.0.tgz#53efc98623e9fee697f45697bf9406737b68dce1"\n+  integrity sha512-Ui+uydvhzQALj/Q8sat4cVnCedwB/8iBPoMzcm1hr1r7ttWfmBKKElFZFl6ljCUtKaCE3rTb3JrZ2sKy9wT09A==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-user-agent-browser@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.18.0.tgz#4ffd5bf63361825e4fa0bc4b0599e1d73e624a94"\n+  integrity sha512-qBfyQJqN3RFyeY6nr03RZQ6uT6t5BIdthqwSPZ99K2gvf75TdhPA3PJsaIZfluNHEPQrgrNd32OED8jnd+GXwA==\n+  dependencies:\n+    "@aws-sdk/types" "3.18.0"\n+    bowser "^2.11.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-user-agent-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.18.0.tgz#92a21dafc2cf0d1aeaf4ccd06987f0eb50c28e30"\n+  integrity sha512-gSdWW3X0kLMvooo2vc0yqWClclGUqcBfRq0K2w6XhYaJRT4E07KmQa4nPdBMYD1g79xW+53AbdQNnGq8b/bmhA==\n+  dependencies:\n+    "@aws-sdk/node-config-provider" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-utf8-browser@3.18.0", "@aws-sdk/util-utf8-browser@^3.0.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.18.0.tgz#d7d68290a323e4f9eb4f1d3f6add618c17e01a36"\n+  integrity sha512-JwcdTb6AAMtnlt2Sg0I18DBK1sWlsfDR/23CkDQ52niXvCSRdHeNkh5b7SdEPVUKI76hyce9nEshzI1OasTv7w==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-utf8-node@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.18.0.tgz#634457d568225e1b2a78c4a474a92ea0cd82e280"\n+  integrity sha512-yQtKkW5V6ycT6DlJkYgeMjj6HJc+jj50LUUx2ukW6IfRmCeAGWdUu82NgIzlzvlsqH1jvmQ/kaeqZ7ruOtmA6Q==\n+  dependencies:\n+    "@aws-sdk/util-buffer-from" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/util-waiter@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.18.0.tgz#a4d1ae639a22cc48479d70b22d6d759b7bac7f24"\n+  integrity sha512-ba67ZEn96RR7Nm0xXGtxD1ISWsG6ePpnOEi2p6hhP1/zJth70mCgxfMPHbxBmfQuadCtP3lhMGpRIptdAlXnDA==\n+  dependencies:\n+    "@aws-sdk/abort-controller" "3.18.0"\n+    "@aws-sdk/types" "3.18.0"\n+    tslib "^2.0.0"\n+\n+"@aws-sdk/xml-builder@3.18.0":\n+  version "3.18.0"\n+  resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.18.0.tgz#85ddb03539f2ebbe88577a27bb89135be2d766ba"\n+  integrity sha512-w8cx5Dx1njWjks+AH9tnQy6yvPbZUQrfJupvMFEY3wmXHnUGWCQrZC8GUOgcaLUbS27SykQAv+COxwNuZZMicQ==\n+  dependencies:\n+    tslib "^2.0.0"\n+\n "@babel/code-frame@7.12.11":\n   version "7.12.11"\n   resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"\n@@ -6288,6 +7040,11 @@ bower-endpoint-parser@0.2.2:\n   version "0.2.2"\n   resolved "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz#00b565adbfab6f2d35addde977e97962acbcb3f6"\n \n+bowser@^2.11.0:\n+  version "2.11.0"\n+  resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"\n+  integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==\n+\n brace-expansion@^1.1.7:\n   version "1.1.11"\n   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"\n@@ -10820,16 +11577,16 @@ ensure-posix-path@^1.0.0, ensure-posix-path@^1.0.1, ensure-posix-path@^1.0.2, en\n   resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce"\n   integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==\n \n+entities@2.2.0, entities@^2.0.0:\n+  version "2.2.0"\n+  resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"\n+  integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==\n+\n entities@^1.1.1, entities@~1.1.1:\n   version "1.1.2"\n   resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"\n   integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==\n \n-entities@^2.0.0:\n-  version "2.2.0"\n-  resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"\n-  integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==\n-\n entities@~2.0:\n   version "2.0.3"\n   resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"\n@@ -11953,6 +12710,11 @@ fast-sourcemap-concat@^2.1.0:\n     source-map-url "^0.3.0"\n     sourcemap-validator "^1.1.0"\n \n+fast-xml-parser@3.19.0:\n+  version "3.19.0"\n+  resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01"\n+  integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==\n+\n fastboot-transform@^0.1.2:\n   version "0.1.3"\n   resolved "https://registry.yarnpkg.com/fastboot-transform/-/fastboot-transform-0.1.3.tgz#7dea0b117594afd8772baa6c9b0919644e7f7dcd"\n@@ -21311,6 +22073,11 @@ tsconfig-paths@^3.9.0:\n     minimist "^1.2.0"\n     strip-bom "^3.0.0"\n \n+tslib@^1.11.1:\n+  version "1.14.1"\n+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"\n+  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==\n+\n tslib@^1.8.1, tslib@^1.9.0:\n   version "1.10.0"\n   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"\n', 'commit_subject': 'Merge pull request #1755 from cardstack/s3-json-task', 'repo_name': 'cardstack/cardstack', 'committer': {'name': 'GitHub', 'email': '1505422b2465e9a84f6fdfaa161078890c593f06@github.com', 'time_sec': '1624608862', 'tz_offset': '480', 'date': {'seconds': '1624608862'}}, 'commit_tree': '1f815026a6f1112256e9213205f7c650bc14b08a', 'commit_message': 'Merge pull request #1755 from cardstack/s3-json-task\n\nS3 json task', 'language_name': 'HTML', 'license': 'mit', 'hunks': "@@ -0,0 +1,24 @@\n+import config from 'config';\n+\n+interface AwsConfigResult {\n+  credentials: any;\n+  region: string | undefined;\n+}\n+\n+// if credentials or region are configured, return them\n+export default function awsConfig() {\n+  let result = {} as AwsConfigResult;\n+\n+  let accessKeyId = config.get('aws.config.credentials.AccessKeyId');\n+  let secretAccessKey = config.get('aws.config.credentials.SecretAccessKey');\n+  if (accessKeyId || secretAccessKey) {\n+    result.credentials = config.get('aws.config.credentials');\n+  }\n+\n+  let region = config.get('aws.config.region');\n+  if (region) {\n+    result.region = config.get('aws.config.region');\n+  }\n+\n+  return result;\n+}\n", 'addition_count': 24, 'deletion_count': 0, 'src_file': '/dev/null', 'tgt_file': 'b/packages/hub/utils/aws-config.ts', 'file_extension': '.ts', 'before_file': 'ADDFILE', 'message': 'Merge pull request #1755 from cardstack/s3-json-task\n\nS3 json task', 'author_name': 'GitHub', 'lang': 'ts'}