diff --git a/package-lock.json b/package-lock.json index 817fc7a8..4c22c8c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1034,19 +1034,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-dynamodb": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.511.0.tgz", @@ -1100,18 +1087,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-lambda": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.511.0.tgz", @@ -1168,19 +1143,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-s3": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.511.0.tgz", @@ -1249,128 +1211,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.511.0.tgz", - "integrity": "sha512-G4dAAHPUZbpDCVBaCcAOlFoctO9lcecSs0EZYrvzQc/9d4XJvNWGd1C7GSdf204VPOCPZCjNpTkdWGm25r00wA==", - "dependencies": { - "@aws-sdk/types": "3.511.0", - "@aws-sdk/util-arn-parser": "3.495.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.511.0.tgz", - "integrity": "sha512-zjDzrJV9PFCkEqhNLKKK+9PB1vPveVZLJbcY71V3PZFvPII1bhlgwvI1e99MhEiaiH2a9I2PnS56bGwEKuNTrw==", - "dependencies": { - "@aws-sdk/types": "3.511.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.511.0.tgz", - "integrity": "sha512-oI8zULi6VXLXJ3zA6aCdbOoceSNOxGITosB7EKDsLllzAQFV1WlzmQCtjFY8DLLYZ521atgJNcVbzjxPQnrnJA==", - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.511.0", - "@smithy/is-array-buffer": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.511.0.tgz", - "integrity": "sha512-PKHnOT3oBo41NELq3Esz3K9JuV1l9E+SrCcfr/07yU4EbqhS4UGPb22Yf5JakQu4fGbTFlAftcc8PXcE2zLr4g==", - "dependencies": { - "@aws-sdk/types": "3.511.0", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.511.0.tgz", - "integrity": "sha512-SKJr8mKaqjcGpu0xxRPXZiKrJmyetDfgzvWuZ7QOgdnPa+6jk5fmEUTFoPb3VCarMkf8xo/l6cTZ5lei7Lbflw==", - "dependencies": { - "@aws-sdk/types": "3.511.0", - "@aws-sdk/util-arn-parser": "3.495.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-ssec": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.511.0.tgz", - "integrity": "sha512-8pfgBard9pj7oWJ79R6dbXHUGr7JPP/OmAsKBYZA0r/91a1XdFUDtRYZadstjcOv/X3QbeG3QqWOtNco+XgM7Q==", - "dependencies": { - "@aws-sdk/types": "3.511.0", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.511.0.tgz", - "integrity": "sha512-lwbU3LX5TpYu1DHBMH2Wz+2MWGccn5G3psu1Y9WTPc+1bubVQHWf8UD2lzON5L2QirT9tQheQjTke1u5JC7FTQ==", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.511.0", - "@aws-sdk/types": "3.511.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-secrets-manager": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.511.0.tgz", @@ -1423,19 +1263,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-sqs": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.511.0.tgz", @@ -1488,18 +1315,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-ssm": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.511.0.tgz", @@ -1553,19 +1368,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-sso": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.511.0.tgz", @@ -1665,30 +1467,6 @@ "@aws-sdk/credential-provider-node": "^3.511.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-sts": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.511.0.tgz", @@ -1741,18 +1519,6 @@ "@aws-sdk/credential-provider-node": "^3.511.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/core": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.511.0.tgz", @@ -1783,18 +1549,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.511.0.tgz", @@ -1814,18 +1568,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.511.0.tgz", @@ -1847,18 +1589,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-node": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.511.0.tgz", @@ -1881,22 +1611,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/credential-provider-process": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.511.0.tgz", - "integrity": "sha512-88hLUPqcTwjSubPS+34ZfmglnKeLny8GbmZsyllk96l26PmDTAqo5RScSA8BWxL0l5pRRWGtcrFyts+oibHIuQ==", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.511.0.tgz", + "integrity": "sha512-88hLUPqcTwjSubPS+34ZfmglnKeLny8GbmZsyllk96l26PmDTAqo5RScSA8BWxL0l5pRRWGtcrFyts+oibHIuQ==", "dependencies": { "@aws-sdk/types": "3.511.0", "@smithy/property-provider": "^2.1.1", @@ -1908,18 +1626,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.511.0.tgz", @@ -1937,18 +1643,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.511.0.tgz", @@ -1964,18 +1658,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/endpoint-cache": { "version": "3.465.0", "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.465.0.tgz", @@ -2005,6 +1687,23 @@ "@aws-sdk/client-dynamodb": "^3.0.0" } }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.511.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.511.0.tgz", + "integrity": "sha512-G4dAAHPUZbpDCVBaCcAOlFoctO9lcecSs0EZYrvzQc/9d4XJvNWGd1C7GSdf204VPOCPZCjNpTkdWGm25r00wA==", + "dependencies": { + "@aws-sdk/types": "3.511.0", + "@aws-sdk/util-arn-parser": "3.495.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.511.0.tgz", @@ -2033,11 +1732,13 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.511.0.tgz", + "integrity": "sha512-zjDzrJV9PFCkEqhNLKKK+9PB1vPveVZLJbcY71V3PZFvPII1bhlgwvI1e99MhEiaiH2a9I2PnS56bGwEKuNTrw==", "dependencies": { + "@aws-sdk/types": "3.511.0", + "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -2045,25 +1746,31 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { + "node_modules/@aws-sdk/middleware-flexible-checksums": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.511.0.tgz", - "integrity": "sha512-DbBzQP/6woSHR/+g9dHN3YiYaLIqFw9u8lQFMxi3rT3hqITFVYLzzXtEaHjDD6/is56pNT84CIKbyJ6/gY5d1Q==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.511.0.tgz", + "integrity": "sha512-oI8zULi6VXLXJ3zA6aCdbOoceSNOxGITosB7EKDsLllzAQFV1WlzmQCtjFY8DLLYZ521atgJNcVbzjxPQnrnJA==", "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@aws-crypto/crc32c": "3.0.0", "@aws-sdk/types": "3.511.0", + "@smithy/is-array-buffer": "^2.1.1", "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", + "@smithy/util-utf8": "^2.1.1", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-host-header": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.511.0.tgz", + "integrity": "sha512-DbBzQP/6woSHR/+g9dHN3YiYaLIqFw9u8lQFMxi3rT3hqITFVYLzzXtEaHjDD6/is56pNT84CIKbyJ6/gY5d1Q==", "dependencies": { + "@aws-sdk/types": "3.511.0", + "@smithy/protocol-http": "^3.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -2071,10 +1778,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { + "node_modules/@aws-sdk/middleware-location-constraint": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.511.0.tgz", - "integrity": "sha512-EYU9dBlJXvQcCsM2Tfgi0NQoXrqovfDv/fDy8oGJgZFrgNuHDti8tdVVxeJTUJNEAF67xlDl5o+rWEkKthkYGQ==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.511.0.tgz", + "integrity": "sha512-PKHnOT3oBo41NELq3Esz3K9JuV1l9E+SrCcfr/07yU4EbqhS4UGPb22Yf5JakQu4fGbTFlAftcc8PXcE2zLr4g==", "dependencies": { "@aws-sdk/types": "3.511.0", "@smithy/types": "^2.9.1", @@ -2084,11 +1791,12 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-logger": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.511.0.tgz", + "integrity": "sha512-EYU9dBlJXvQcCsM2Tfgi0NQoXrqovfDv/fDy8oGJgZFrgNuHDti8tdVVxeJTUJNEAF67xlDl5o+rWEkKthkYGQ==", "dependencies": { + "@aws-sdk/types": "3.511.0", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -2110,12 +1818,19 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-sdk-s3": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.511.0.tgz", + "integrity": "sha512-SKJr8mKaqjcGpu0xxRPXZiKrJmyetDfgzvWuZ7QOgdnPa+6jk5fmEUTFoPb3VCarMkf8xo/l6cTZ5lei7Lbflw==", "dependencies": { + "@aws-sdk/types": "3.511.0", + "@aws-sdk/util-arn-parser": "3.495.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", "tslib": "^2.5.0" }, "engines": { @@ -2138,18 +1853,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-sqs/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/middleware-sdk-sts": { "version": "3.465.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.465.0.tgz", @@ -2210,11 +1913,12 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-ssec": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.511.0.tgz", + "integrity": "sha512-8pfgBard9pj7oWJ79R6dbXHUGr7JPP/OmAsKBYZA0r/91a1XdFUDtRYZadstjcOv/X3QbeG3QqWOtNco+XgM7Q==", "dependencies": { + "@aws-sdk/types": "3.511.0", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -2237,18 +1941,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.511.0.tgz", @@ -2265,11 +1957,15 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.511.0.tgz", + "integrity": "sha512-lwbU3LX5TpYu1DHBMH2Wz+2MWGccn5G3psu1Y9WTPc+1bubVQHWf8UD2lzON5L2QirT9tQheQjTke1u5JC7FTQ==", "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.511.0", + "@aws-sdk/types": "3.511.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, @@ -2293,7 +1989,7 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/types": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", @@ -2305,18 +2001,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/types": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.502.0.tgz", - "integrity": "sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/util-arn-parser": { "version": "3.495.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz", @@ -2356,18 +2040,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.465.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", @@ -2390,18 +2062,6 @@ "tslib": "^2.5.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.511.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.511.0.tgz", @@ -2424,18 +2084,6 @@ } } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/@aws-sdk/types": { - "version": "3.511.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz", - "integrity": "sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==", - "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", @@ -2764,86 +2412,6 @@ "wizer-darwin-arm64": "wizer" } }, - "node_modules/@bytecodealliance/wizer-darwin-x64": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/wizer-darwin-x64/-/wizer-darwin-x64-3.0.1.tgz", - "integrity": "sha512-bMReultN/r+W/BRXV0F+28U5dZwbQT/ZO0k4icZlhUhrv5/wpQJix7Z/ZvBnVQ+/JHb0QDUpFk2/zCtgkRXP6Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "bin": { - "wizer-darwin-x64": "wizer" - } - }, - "node_modules/@bytecodealliance/wizer-linux-arm64": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/wizer-linux-arm64/-/wizer-linux-arm64-3.0.1.tgz", - "integrity": "sha512-35ZhAeYxWK3bTqqgwysbBWlGlrlMNKNng3ZITQV2PAtafpE7aCeqywl7VAS4lLRG5eTb7wxNgN7zf8d3wiIFTQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "bin": { - "wizer-linux-arm64": "wizer" - } - }, - "node_modules/@bytecodealliance/wizer-linux-s390x": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/wizer-linux-s390x/-/wizer-linux-s390x-3.0.1.tgz", - "integrity": "sha512-Smvy9mguEMtX0lupDLTPshXUzAHeOhgscr1bhGNjeCCLD1sd8rIjBvWV19Wtra0BL1zTuU2EPOHjR/4k8WoyDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "bin": { - "wizer-linux-s390x": "wizer" - } - }, - "node_modules/@bytecodealliance/wizer-linux-x64": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/wizer-linux-x64/-/wizer-linux-x64-3.0.1.tgz", - "integrity": "sha512-uUue78xl7iwndsGgTsagHLTLyLBVHhwzuywiwHt1xw8y0X0O8REKRLBoB7+LdM+pttDPdFtKJgbTFL4UPAA7Yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "bin": { - "wizer-linux-x64": "wizer" - } - }, - "node_modules/@bytecodealliance/wizer-win32-x64": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/wizer-win32-x64/-/wizer-win32-x64-3.0.1.tgz", - "integrity": "sha512-ycd38sx1UTZpHZwh8IfH/4N3n0OQUB8awxkUSLXf9PolEd088YbxoPB3noHy4E+L2oYN7KZMrg9517pX0z2RhQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "bin": { - "wizer-win32-x64": "wizer" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2875,54 +2443,6 @@ "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==", "dev": true }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", @@ -2939,294 +2459,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", diff --git a/src/digest/handler-external.js b/src/digest/handler-external.js index a51e29d0..887ec0b9 100644 --- a/src/digest/handler-external.js +++ b/src/digest/handler-external.js @@ -16,7 +16,7 @@ import { BaseSlackClient, SLACK_TARGETS } from '@adobe/spacecat-shared-slack-cli import { getSlackContextForAlert, hasAlertConfig, isDigestReport, } from '../support/config.js'; -import { sendInitialMessage } from '../support/slack.js'; +import { sendMessage } from '../support/slack.js'; export default async function externalDigestHandler( context, @@ -24,11 +24,11 @@ export default async function externalDigestHandler( INITIAL_MESSAGE, processLatestAudit, sendReport, + NO_DATA_MESSAGE, ) { const { dataAccess, log } = context; const organizations = await dataAccess.getOrganizations(); - let sentInitialMessage = false; const slackClient = BaseSlackClient.createFrom(context, SLACK_TARGETS.WORKSPACE_EXTERNAL); for (const organization of organizations) { @@ -42,25 +42,25 @@ export default async function externalDigestHandler( false, ); let slackContext = {}; + const isDigest = isDigestReport(orgConfig, type); + if (isDigest && sites.length > 0) { + slackContext = getSlackContextForAlert(orgConfig, {}, type); + try { + // eslint-disable-next-line no-await-in-loop + slackContext = await sendMessage(slackClient, slackContext, INITIAL_MESSAGE); + } catch (e) { + log.error(`Failed to send initial Slack message. Reason: ${e.message}`); + return internalServerError('Failed to send initial Slack message'); + } + } for (const site of sites) { const latestAuditReports = site.getAudits(); + const siteConfig = site.getConfig(); + if (!isDigest) { + slackContext = getSlackContextForAlert(orgConfig, siteConfig, type); + } const message = processLatestAudit(context, site, latestAuditReports); if (Object.keys(message).length > 0) { - const siteConfig = site.getConfig(); - const isDigest = isDigestReport(orgConfig, type); - if (!isDigest || !sentInitialMessage) { - slackContext = getSlackContextForAlert(orgConfig, siteConfig, type); - } - if (!sentInitialMessage && isDigest) { - try { - // eslint-disable-next-line no-await-in-loop - slackContext = await sendInitialMessage(slackClient, slackContext, INITIAL_MESSAGE); - sentInitialMessage = true; - } catch (e) { - log.error(`Failed to send initial Slack message. Reason: ${e.message}`); - return internalServerError('Failed to send initial Slack message'); - } - } try { // eslint-disable-next-line no-await-in-loop await sendReport({ @@ -71,6 +71,13 @@ export default async function externalDigestHandler( } catch (e) { log.error(`Failed to send Slack message for ${site.getBaseURL()}. Reason: ${e.message}`); } + } else { + try { + // eslint-disable-next-line no-await-in-loop + await sendMessage(slackClient, slackContext, NO_DATA_MESSAGE(site.getBaseURL())); + } catch (e) { + log.error(`Failed to send Slack message for ${site.getBaseURL()}. Reason: ${e.message}`); + } } } } diff --git a/src/digest/handler-internal.js b/src/digest/handler-internal.js index 0d0e80b4..022801c1 100644 --- a/src/digest/handler-internal.js +++ b/src/digest/handler-internal.js @@ -12,7 +12,7 @@ import { internalServerError, noContent } from '@adobe/spacecat-shared-http-utils'; import { BaseSlackClient, SLACK_TARGETS } from '@adobe/spacecat-shared-slack-client'; -import { sendInitialMessage } from '../support/slack.js'; +import { sendMessage } from '../support/slack.js'; export default async function internalDigestHandler( context, @@ -36,7 +36,7 @@ export default async function internalDigestHandler( if (!sentInitialMessage) { try { // eslint-disable-next-line no-await-in-loop - slackContext = await sendInitialMessage( + slackContext = await sendMessage( slackClient, { channel: slackChannelId }, INITIAL_MESSAGE, diff --git a/src/notfound/handler-external.js b/src/notfound/handler-external.js index 675da60e..5593576a 100644 --- a/src/notfound/handler-external.js +++ b/src/notfound/handler-external.js @@ -10,7 +10,12 @@ * governing permissions and limitations under the License. */ import externalDigestHandler from '../digest/handler-external.js'; -import { INITIAL_404_SLACK_MESSAGE, processLatest404Audit, send404Report } from '../support/notfound.js'; +import { + INITIAL_404_SLACK_MESSAGE, + NO_404_SLACK_MESSAGE, + processLatest404Audit, + send404Report, +} from '../support/notfound.js'; const ALERT_TYPE = '404'; @@ -21,5 +26,6 @@ export default async function notFoundExternalDigestHandler(message, context) { INITIAL_404_SLACK_MESSAGE, processLatest404Audit, send404Report, + NO_404_SLACK_MESSAGE, ); } diff --git a/src/notfound/handler-internal.js b/src/notfound/handler-internal.js index e62a1ffb..7e6e5dae 100644 --- a/src/notfound/handler-internal.js +++ b/src/notfound/handler-internal.js @@ -10,7 +10,11 @@ * governing permissions and limitations under the License. */ import internalDigestHandler from '../digest/handler-internal.js'; -import { send404Report, INITIAL_404_SLACK_MESSAGE, processLatest404Audit } from '../support/notfound.js'; +import { + send404Report, + INITIAL_404_SLACK_MESSAGE, + processLatest404Audit, +} from '../support/notfound.js'; const ALERT_TYPE = '404'; diff --git a/src/support/notfound.js b/src/support/notfound.js index 517d1aea..f6290921 100644 --- a/src/support/notfound.js +++ b/src/support/notfound.js @@ -15,6 +15,7 @@ import commaNumber from 'comma-number'; import { markdown, section } from './slack.js'; export const INITIAL_404_SLACK_MESSAGE = '*404 REPORT* for the *last week* :thread:'; +export const NO_404_SLACK_MESSAGE = (url) => `Good news! For ${url}, there were no 404 errors last week for the end users`; export const get404Backlink = async (context, url) => { try { @@ -30,7 +31,7 @@ export function build404SlackMessage(url, auditResult, backlink, mentions) { const blocks = []; blocks.push(section({ - text: markdown(`${isArray(mentions) ? mentions.join(' ').toString() : ''} For *${url}*, ${auditResult.length} page(s) had 404s *last week* for the real users.\n More information is below (up to three pages):`), + text: markdown(`${isArray(mentions) ? mentions.join(' ').toString() : ''} For *${url}*, ${auditResult.length} page(s) had 404s *last week* for for the end users of the site.\n More information is below (up to three pages):`), })); for (let i = 0; i < Math.min(3, auditResult.length); i += 1) { diff --git a/src/support/slack.js b/src/support/slack.js index c386765c..ed16b5ef 100644 --- a/src/support/slack.js +++ b/src/support/slack.js @@ -106,20 +106,20 @@ export async function uploadSlackFile(token, opts) { } } -export function buildInitialSlackMessage(initialMessage, mentions) { +export function buildSlackMessage(message, mentions) { return [ { type: 'section', text: { type: 'mrkdwn', - text: `${isArray(mentions) ? `${mentions.join(' ').toString()} ` : ''}${initialMessage}`, + text: `${isArray(mentions) ? `${mentions.join(' ').toString()} ` : ''}${message}`, }, }, ]; } -export const sendInitialMessage = async (slackClient, slackContext, initialMessage) => { - const blocks = buildInitialSlackMessage(initialMessage, slackContext?.mentions); +export const sendMessage = async (slackClient, slackContext, message) => { + const blocks = buildSlackMessage(message, slackContext?.mentions); const { threadId } = await slackClient.postMessage( { channel: slackContext?.channel, diff --git a/test/notfound/handler-external.test.js b/test/notfound/handler-external.test.js index 5f765fde..41a9b976 100644 --- a/test/notfound/handler-external.test.js +++ b/test/notfound/handler-external.test.js @@ -16,8 +16,8 @@ import chai from 'chai'; import sinonChai from 'sinon-chai'; import chaiAsPromised from 'chai-as-promised'; import notFoundExternalDigestHandler from '../../src/notfound/handler-external.js'; -import { INITIAL_404_SLACK_MESSAGE, build404SlackMessage } from '../../src/support/notfound.js'; -import { buildInitialSlackMessage } from '../../src/support/slack.js'; +import { INITIAL_404_SLACK_MESSAGE, build404SlackMessage, NO_404_SLACK_MESSAGE } from '../../src/support/notfound.js'; +import { buildSlackMessage } from '../../src/support/slack.js'; chai.use(sinonChai); chai.use(chaiAsPromised); @@ -109,13 +109,29 @@ describe('not found external handler', () => { getAudits: () => [auditData], }; + const siteData3 = { + getId: () => 'site3', + getBaseURL: () => 'https://abcd.com', + getConfig: () => ({ + slack: { + workspace: 'workspace', + channel: 'channelSite3', + }, + alerts: [{ + type: '404', + mentions: [{ slack: ['slackSiteId3'] }], + }], + }), + getAudits: () => [], + }; + const mockDataAccess = { getOrganizations: sinon.stub().resolves([organizationData1, { getId: () => 'default', getConfig: () => {} }, organizationData2]), getSitesByOrganizationIDWithLatestAudits: sinon.stub(), getLatestAuditForSite: sinon.stub().resolves(auditData), }; mockDataAccess.getSitesByOrganizationIDWithLatestAudits.withArgs(organizationData1.getId(), '404', false).returns([siteData1]); - mockDataAccess.getSitesByOrganizationIDWithLatestAudits.withArgs(organizationData2.getId(), '404', false).returns([siteData2]); + mockDataAccess.getSitesByOrganizationIDWithLatestAudits.withArgs(organizationData2.getId(), '404', false).returns([siteData2, siteData3]); beforeEach('setup', () => { context = { log: console, @@ -135,11 +151,13 @@ describe('not found external handler', () => { create404Backlink: sandbox.stub().resolves(backlink), }; const orgChannel = 'channelOrg1'; - const siteChannel = 'channelSite2'; + const siteChannel2 = 'channelSite2'; + const siteChannel3 = 'channelSite3'; context.slackClients = { WORKSPACE_EXTERNAL_STANDARD: { postMessage: sandbox.stub().resolves({ channel: orgChannel, threadId: 'thread-1' }) }, }; - const initialBlocks = buildInitialSlackMessage(INITIAL_404_SLACK_MESSAGE, ['slackOrgId1']); + const initialBlocks = buildSlackMessage(INITIAL_404_SLACK_MESSAGE, ['slackOrgId1']); + const noNotFoundBlocks = buildSlackMessage(NO_404_SLACK_MESSAGE('https://abcd.com'), ['slackSiteId3']); const blocksOrg = build404SlackMessage( 'https://abcd.com', auditData.getAuditResult().result, @@ -162,7 +180,12 @@ describe('not found external handler', () => { ); expect(context.slackClients.WORKSPACE_EXTERNAL_STANDARD.postMessage).calledWith( { - blocks: blocksSite, channel: siteChannel, mentions: ['slackSiteId2'], unfurl_links: false, + blocks: blocksSite, channel: siteChannel2, mentions: ['slackSiteId2'], unfurl_links: false, + }, + ); + expect(context.slackClients.WORKSPACE_EXTERNAL_STANDARD.postMessage).calledWith( + { + blocks: noNotFoundBlocks, channel: siteChannel3, }, ); expect(resp.status).to.equal(204); @@ -170,7 +193,7 @@ describe('not found external handler', () => { it('builds no message when there is no audit', async () => { context.slackClients = { - WORKSPACE_EXTERNAL_STANDARD: { postMessage: sandbox.stub().resolves() }, + WORKSPACE_EXTERNAL_STANDARD: { postMessage: sandbox.stub().resolves({ threadId: 't1' }) }, }; const noAuditContext = { ...context }; noAuditContext.dataAccess = { ...context.dataAccess };