diff --git a/package-lock.json b/package-lock.json index 6961e2441..b29cb2c72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,25 +16,25 @@ "@adobe/helix-shared-wrap": "2.0.2", "@adobe/helix-status": "10.1.5", "@adobe/helix-universal-logger": "3.0.29", - "@adobe/mysticat-shared-seo-client": "1.3.0", + "@adobe/mysticat-shared-seo-client": "1.3.1", "@adobe/spacecat-helix-content-sdk": "1.4.33", - "@adobe/spacecat-shared-athena-client": "1.9.11", - "@adobe/spacecat-shared-brand-client": "1.1.41", - "@adobe/spacecat-shared-content-client": "1.8.23", - "@adobe/spacecat-shared-data-access": "3.63.0", + "@adobe/spacecat-shared-athena-client": "1.9.12", + "@adobe/spacecat-shared-brand-client": "1.1.42", + "@adobe/spacecat-shared-content-client": "1.8.24", + "@adobe/spacecat-shared-data-access": "3.65.0", "@adobe/spacecat-shared-data-access-v2": "npm:@adobe/spacecat-shared-data-access@2.109.0", - "@adobe/spacecat-shared-drs-client": "1.7.1", - "@adobe/spacecat-shared-gpt-client": "1.6.22", - "@adobe/spacecat-shared-http-utils": "1.27.1", - "@adobe/spacecat-shared-ims-client": "1.12.6", + "@adobe/spacecat-shared-drs-client": "1.7.2", + "@adobe/spacecat-shared-gpt-client": "1.6.23", + "@adobe/spacecat-shared-http-utils": "https://gist.github.com/ravverma/f48ea6bc8baae3d20c4f3812e34d8ae3/raw/d7c5733a3ff2293550cf8928d101b7abf28741eb/adobe-spacecat-shared-http-utils-1.27.2.tgz", + "@adobe/spacecat-shared-ims-client": "1.12.7", "@adobe/spacecat-shared-launchdarkly-client": "^1.1.0", - "@adobe/spacecat-shared-rum-api-client": "2.40.12", - "@adobe/spacecat-shared-scrape-client": "2.6.2", - "@adobe/spacecat-shared-slack-client": "1.6.6", - "@adobe/spacecat-shared-tier-client": "1.5.0", - "@adobe/spacecat-shared-tokowaka-client": "1.16.1", + "@adobe/spacecat-shared-rum-api-client": "2.40.13", + "@adobe/spacecat-shared-scrape-client": "2.6.3", + "@adobe/spacecat-shared-slack-client": "1.6.7", + "@adobe/spacecat-shared-tier-client": "1.5.1", + "@adobe/spacecat-shared-tokowaka-client": "1.16.2", "@adobe/spacecat-shared-utils": "1.115.4", - "@adobe/spacecat-shared-vault-secrets": "1.3.4", + "@adobe/spacecat-shared-vault-secrets": "1.3.5", "@aws-sdk/client-s3": "3.1045.0", "@aws-sdk/client-secrets-manager": "3.1045.0", "@aws-sdk/client-sfn": "3.1045.0", @@ -691,7 +691,6 @@ "resolved": "https://registry.npmjs.org/@adobe/helix-universal/-/helix-universal-5.4.1.tgz", "integrity": "sha512-wgmjwo0xJkYhFQUmv6GTPvCFjDYBoT7zP3OuAxLN+FlHgS6kDkbJOtKxwQn9SrWbhoIfM8GdCnRDpBn6BmkASw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@adobe/fetch": "4.3.0", "aws4": "1.13.2" @@ -799,9 +798,9 @@ } }, "node_modules/@adobe/mysticat-shared-seo-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@adobe/mysticat-shared-seo-client/-/mysticat-shared-seo-client-1.3.0.tgz", - "integrity": "sha512-ivkhI+W2HlCQEMPhHLzSTQXmlkLU4EDZld/6ThFXKAskGsW9phLCe4+SLnsJ5hISjBp/quI8VO/gBHhlPjHeSw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@adobe/mysticat-shared-seo-client/-/mysticat-shared-seo-client-1.3.1.tgz", + "integrity": "sha512-z3p42HCkN4Cbg06g4dX/XWfcYb74WM/CqDREWGlqLAch/qptzeOSprI8nb22ck4EJikNgScEvhZgv1kKPyzfIQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.3.0", @@ -1464,13 +1463,13 @@ } }, "node_modules/@adobe/spacecat-shared-athena-client": { - "version": "1.9.11", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-athena-client/-/spacecat-shared-athena-client-1.9.11.tgz", - "integrity": "sha512-YWyQR7FRh404zOG+9WSbhLkJAd55i1lyzctBR9Garcyf8Hhn9U/snEh7SkSeneEbm7LcCOOo6XypfcFE51U6Fw==", + "version": "1.9.12", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-athena-client/-/spacecat-shared-athena-client-1.9.12.tgz", + "integrity": "sha512-TWeJHY7KpVmb+k/XCJ2xXdpQ5cHAY4LRZfXVoxDShVCPwqzcZQcRvfM8VvOXGmZa5CB7fOwkEwKEZLq/It9j9g==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.96.3", - "@aws-sdk/client-athena": "3.1024.0" + "@aws-sdk/client-athena": "3.1045.0" }, "engines": { "node": ">=22.0.0 <25.0.0", @@ -2058,9 +2057,9 @@ } }, "node_modules/@adobe/spacecat-shared-brand-client": { - "version": "1.1.41", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-brand-client/-/spacecat-shared-brand-client-1.1.41.tgz", - "integrity": "sha512-ZT+AT9WTrZdu2zwvulaGbsEjQGoA7ZQh/VjRaYhWIMtqweqF/Mw+g/2AEjQ27QyRMil9OWSKykKlDBf+8p5qIA==", + "version": "1.1.42", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-brand-client/-/spacecat-shared-brand-client-1.1.42.tgz", + "integrity": "sha512-8OgJ+zEaQs4nSY6yx2ZeOfTX7D7dC2nEC5ynWkfynanqIItFfz+CMhr+bYGOBtRRmlpdbznN3sO2AbrYW9V95Q==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-universal": "5.4.1", @@ -2729,15 +2728,15 @@ } }, "node_modules/@adobe/spacecat-shared-content-client": { - "version": "1.8.23", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-content-client/-/spacecat-shared-content-client-1.8.23.tgz", - "integrity": "sha512-OYxjXrPbO2wikU08EOOLwiMkV4/jwWCrNTRfwhf2vNqx4yoLdpHZbMTCu+KZI5vRTxwkZWWe0II20QLQgcMVJQ==", + "version": "1.8.24", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-content-client/-/spacecat-shared-content-client-1.8.24.tgz", + "integrity": "sha512-6UirRPJ+IcVWdA1GG068OAC87L1i0fpADYjQVf8N0yAYO1Xd5m+akpIDxIgbQEjTYjTW7wYrj0ZblsRr7UQ8Yw==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-universal": "5.4.1", "@adobe/spacecat-helix-content-sdk": "1.4.33", "@adobe/spacecat-shared-utils": "1.81.1", - "@aws-sdk/client-secrets-manager": "3.1024.0", + "@aws-sdk/client-secrets-manager": "3.1045.0", "aws-xray-sdk": "3.12.0", "graph-data-structure": "4.5.0" }, @@ -2836,829 +2835,370 @@ "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.1024.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.1024.0.tgz", - "integrity": "sha512-EXbgMqueA5gw/jqpE2zMWAfBnzn6cZWqCISGdfn1201Um9IAIoTcHjyWoQMALQm0f8Lu1NF6yRtngs6zpZcagQ==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-sqs": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.940.0.tgz", + "integrity": "sha512-tXPi9OlELbiewGDb9maXDMhdYW617I9osGo/C1GAR6eLYwj40/TfOBeOQf3tX9EcH8NpDBuMksxoAvkpvqYIKw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.26", - "@aws-sdk/credential-provider-node": "^3.972.29", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.28", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.14", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.13", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.28", - "@smithy/middleware-retry": "^4.4.46", - "@smithy/middleware-serde": "^4.2.16", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.1", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.44", - "@smithy/util-defaults-mode-node": "^4.2.48", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.13", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.973.27", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.27.tgz", - "integrity": "sha512-CUZ5m8hwMCH6OYI4Li/WgMfIEx10Q2PLI9Y3XOUTPGZJ53aZ0007jCv+X/ywsaERyKPdw5MRZWk877roQksQ4A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@aws-sdk/xml-builder": "^3.972.17", - "@smithy/core": "^3.23.14", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/property-provider": "^4.2.13", - "@smithy/protocol-http": "^5.3.13", - "@smithy/signature-v4": "^5.3.13", - "@smithy/smithy-client": "^4.12.9", - "@smithy/types": "^4.14.0", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.13", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.25.tgz", - "integrity": "sha512-6QfI0wv4jpG5CrdO/AO0JfZ2ux+tKwJPrUwmvxXF50vI5KIypKVGNF6b4vlkYEnKumDTI1NX2zUBi8JoU5QU3A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.27", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.27.tgz", - "integrity": "sha512-3V3Usj9Gs93h865DqN4M2NWJhC5kXU9BvZskfN3+69omuYlE3TZxOEcVQtBGLOloJB7BVfJKXVLqeNhOzHqSlQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@smithy/fetch-http-handler": "^5.3.16", - "@smithy/node-http-handler": "^4.5.2", - "@smithy/property-provider": "^4.2.13", - "@smithy/protocol-http": "^5.3.13", - "@smithy/smithy-client": "^4.12.9", - "@smithy/types": "^4.14.0", - "@smithy/util-stream": "^4.5.22", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.29.tgz", - "integrity": "sha512-SiBuAnXecCbT/OpAf3vqyI/AVE3mTaYr9ShXLybxZiPLBiPCCOIWSGAtYYGQWMRvobBTiqOewaB+wcgMMZI2Aw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/credential-provider-env": "^3.972.25", - "@aws-sdk/credential-provider-http": "^3.972.27", - "@aws-sdk/credential-provider-login": "^3.972.29", - "@aws-sdk/credential-provider-process": "^3.972.25", - "@aws-sdk/credential-provider-sso": "^3.972.29", - "@aws-sdk/credential-provider-web-identity": "^3.972.29", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/credential-provider-imds": "^4.2.13", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/credential-provider-node": "3.940.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-sdk-sqs": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.940.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.940.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/md5-js": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.29.tgz", - "integrity": "sha512-OGOslTbOlxXexKMqhxCEbBQbUIfuhGxU5UXw3Fm56ypXHvrXH4aTt/xb5Y884LOoteP1QST1lVZzHfcTnWhiPQ==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/core": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.940.0.tgz", + "integrity": "sha512-KsGD2FLaX5ngJao1mHxodIVU9VYd1E8810fcYiGwO1PFHDzf5BEkp6D9IdMeQwT8Q6JLYtiiT1Y/o3UCScnGoA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/protocol-http": "^5.3.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.30", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.30.tgz", - "integrity": "sha512-FMnAnWxc8PG+ZrZ2OBKzY4luCUJhe9CG0B9YwYr4pzrYGLXBS2rl+UoUvjGbAwiptxRL6hyA3lFn03Bv1TLqTw==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.940.0.tgz", + "integrity": "sha512-/G3l5/wbZYP2XEQiOoIkRJmlv15f1P3MSd1a0gz27lHEMrOJOGq66rF1Ca4OJLzapWt3Fy9BPrZAepoAX11kMw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.25", - "@aws-sdk/credential-provider-http": "^3.972.27", - "@aws-sdk/credential-provider-ini": "^3.972.29", - "@aws-sdk/credential-provider-process": "^3.972.25", - "@aws-sdk/credential-provider-sso": "^3.972.29", - "@aws-sdk/credential-provider-web-identity": "^3.972.29", - "@aws-sdk/types": "^3.973.7", - "@smithy/credential-provider-imds": "^4.2.13", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.25.tgz", - "integrity": "sha512-HR7ynNRdNhNsdVCOCegy1HsfsRzozCOPtD3RzzT1JouuaHobWyRfJzCBue/3jP7gECHt+kQyZUvwg/cYLWurNQ==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.940.0.tgz", + "integrity": "sha512-dOrc03DHElNBD6N9Okt4U0zhrG4Wix5QUBSZPr5VN8SvmjD9dkrrxOkkJaMCl/bzrW7kbQEp7LuBdbxArMmOZQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.29.tgz", - "integrity": "sha512-HWv4SEq3jZDYPlwryZVef97+U8CxxRos5mK8sgGO1dQaFZpV5giZLzqGE5hkDmh2csYcBO2uf5XHjPTpZcJlig==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.940.0.tgz", + "integrity": "sha512-gn7PJQEzb/cnInNFTOaDoCN/hOKqMejNmLof1W5VW95Qk0TPO52lH8R4RmJPnRrwFMswOWswTOpR1roKNLIrcw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/token-providers": "3.1026.0", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/credential-provider-env": "3.940.0", + "@aws-sdk/credential-provider-http": "3.940.0", + "@aws-sdk/credential-provider-login": "3.940.0", + "@aws-sdk/credential-provider-process": "3.940.0", + "@aws-sdk/credential-provider-sso": "3.940.0", + "@aws-sdk/credential-provider-web-identity": "3.940.0", + "@aws-sdk/nested-clients": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.29.tgz", - "integrity": "sha512-PdMBza1WEKEUPFEmMGCfnU2RYCz9MskU2e8JxjyUOsMKku7j9YaDKvbDi2dzC0ihFoM6ods2SbhfAAro+Gwlew==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.940.0.tgz", + "integrity": "sha512-M8NFAvgvO6xZjiti5kztFiAYmSmSlG3eUfr4ZHSfXYZUA/KUdZU/D6xJyaLnU8cYRWBludb6K9XPKKVwKfqm4g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/credential-provider-env": "3.940.0", + "@aws-sdk/credential-provider-http": "3.940.0", + "@aws-sdk/credential-provider-ini": "3.940.0", + "@aws-sdk/credential-provider-process": "3.940.0", + "@aws-sdk/credential-provider-sso": "3.940.0", + "@aws-sdk/credential-provider-web-identity": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.9.tgz", - "integrity": "sha512-je5vRdNw4SkuTnmRbFZLdye4sQ0faLt8kwka5wnnSU30q1mHO4X+idGEJOOE+Tn1ME7Oryn05xxkDvIb3UaLaQ==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.940.0.tgz", + "integrity": "sha512-pILBzt5/TYCqRsJb7vZlxmRIe0/T+FZPeml417EK75060ajDGnVJjHcuVdLVIeKoTKm9gmJc9l45gon6PbHyUQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/protocol-http": "^5.3.13", - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.9.tgz", - "integrity": "sha512-HsVgDrruhqI28RkaXALm8grJ7Agc1wF6Et0xh6pom8NdO2VdO/SD9U/tPwUjewwK/pVoka+EShBxyCvgsPCtog==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.940.0.tgz", + "integrity": "sha512-q6JMHIkBlDCOMnA3RAzf8cGfup+8ukhhb50fNpghMs1SNBGhanmaMbZSgLigBRsPQW7fOk2l8jnzdVLS+BB9Uw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/types": "^4.14.0", + "@aws-sdk/client-sso": "3.940.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/token-providers": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.10.tgz", - "integrity": "sha512-RVQQbq5orQ/GHUnXvqEOj2HHPBJm+mM+ySwZKS5UaLBwra5ugRtiH09PLUoOZRl7a1YzaOzXSuGbn9iD5j60WQ==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.940.0.tgz", + "integrity": "sha512-9QLTIkDJHHaYL0nyymO41H8g3ui1yz6Y3GmAN1gYQa6plXisuFBnGAbmKVj7zNvjWaOKdF0dV3dd3AFKEDoJ/w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.13", - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/nested-clients": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.29.tgz", - "integrity": "sha512-f/sIRzuTfEjg6NsbMYvye2VsmnQoNgntntleQyx5uGacUYzszbfIlO3GcI6G6daWUmTm0IDZc11qMHWwF0o0mQ==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.936.0.tgz", + "integrity": "sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@aws-sdk/util-endpoints": "^3.996.6", - "@smithy/core": "^3.23.14", - "@smithy/protocol-http": "^5.3.13", - "@smithy/types": "^4.14.0", - "@smithy/util-retry": "^4.3.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/nested-clients": { - "version": "3.996.19", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.19.tgz", - "integrity": "sha512-uFkmCDXvmQYLanlYdOFS0+MQWkrj9wPMt/ZCc/0J0fjPim6F5jBVBmEomvGY/j77ILW6GTPwN22Jc174Mhkw6Q==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.936.0.tgz", + "integrity": "sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/middleware-host-header": "^3.972.9", - "@aws-sdk/middleware-logger": "^3.972.9", - "@aws-sdk/middleware-recursion-detection": "^3.972.10", - "@aws-sdk/middleware-user-agent": "^3.972.29", - "@aws-sdk/region-config-resolver": "^3.972.11", - "@aws-sdk/types": "^3.973.7", - "@aws-sdk/util-endpoints": "^3.996.6", - "@aws-sdk/util-user-agent-browser": "^3.972.9", - "@aws-sdk/util-user-agent-node": "^3.973.15", - "@smithy/config-resolver": "^4.4.14", - "@smithy/core": "^3.23.14", - "@smithy/fetch-http-handler": "^5.3.16", - "@smithy/hash-node": "^4.2.13", - "@smithy/invalid-dependency": "^4.2.13", - "@smithy/middleware-content-length": "^4.2.13", - "@smithy/middleware-endpoint": "^4.4.29", - "@smithy/middleware-retry": "^4.5.0", - "@smithy/middleware-serde": "^4.2.17", - "@smithy/middleware-stack": "^4.2.13", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/node-http-handler": "^4.5.2", - "@smithy/protocol-http": "^5.3.13", - "@smithy/smithy-client": "^4.12.9", - "@smithy/types": "^4.14.0", - "@smithy/url-parser": "^4.2.13", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.45", - "@smithy/util-defaults-mode-node": "^4.2.49", - "@smithy/util-endpoints": "^3.3.4", - "@smithy/util-middleware": "^4.2.13", - "@smithy/util-retry": "^4.3.0", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.11.tgz", - "integrity": "sha512-6Q8B1dcx6BBqUTY1Mc/eROKA0FImEEY5VPSd6AGPEUf0ErjExz4snVqa9kNJSoVDV1rKaNf3qrWojgcKW+SdDg==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.940.0.tgz", + "integrity": "sha512-WdsxDAVj5qaa5ApAP+JbpCOMHFGSmzjs2Y2OBSbWPeR9Ew7t/Okj+kUub94QJPsgzhvU1/cqNejhsw5VxeFKSQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/config-resolver": "^4.4.14", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/types": "^4.14.0", + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.1026.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1026.0.tgz", - "integrity": "sha512-Ieq/HiRrbEtrYP387Nes0XlR7H1pJiJOZKv+QyQzMYpvTiDs0VKy2ZB3E2Zf+aFovWmeE7lRE4lXyF7dYM6GgA==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.936.0.tgz", + "integrity": "sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { - "version": "3.973.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.7.tgz", - "integrity": "sha512-reXRwoJ6CfChoqAsBszUYajAF8Z2LRE+CRcKocvFSMpIiLOtYU3aJ9trmn6VVPAzbbY5LXF+FfmUslbXk1SYFg==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.940.0.tgz", + "integrity": "sha512-JYkLjgS1wLoKHJ40G63+afM1ehmsPsjcmrHirKh8+kSCx4ip7+nL1e/twV4Zicxr8RJi9Y0Ahq5mDvneilDDKQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.0", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.6.tgz", - "integrity": "sha512-2nUQ+2ih7CShuKHpGSIYvvAIOHy52dOZguYG36zptBukhw6iFwcvGfG0tes0oZFWQqEWvgZe9HLWaNlvXGdOrg==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-sdk-sqs": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.936.0.tgz", + "integrity": "sha512-39WohFCCPeD6LV8zLQq7CyYbIieetEDDNLsEPeGJSh2Uv9qpY9r6zJRSTjb8hTuQbHDSEOGntHMYKpLoHdoxdQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/types": "^4.14.0", - "@smithy/url-parser": "^4.2.13", - "@smithy/util-endpoints": "^3.3.4", + "@aws-sdk/types": "3.936.0", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.9.tgz", - "integrity": "sha512-sn/LMzTbGjYqCCF24390WxPd6hkpoSptiUn5DzVp4cD71yqw+yGEGm1YCxyEoPXyc8qciM8UzLJcZBFslxo5Uw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/types": "^4.14.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.15.tgz", - "integrity": "sha512-fYn3s9PtKdgQkczGZCFMgkNEe8aq1JCVbnRqjqN9RSVW43xn2RV9xdcZ3z01a48Jpkuh/xCmBKJxdLOo4Ozg7w==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-ssec": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.936.0.tgz", + "integrity": "sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.29", - "@aws-sdk/types": "^3.973.7", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/types": "^4.14.0", - "@smithy/util-config-provider": "^4.2.2", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/xml-builder": { - "version": "3.972.17", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.17.tgz", - "integrity": "sha512-Ra7hjqAZf1OXRRMueB13qex7mFJRDK/pgCvdSFemXBT8KCGnQDPoKzHY1SjN+TjJVmnpSF14W5tJ1vDamFu+Gg==", + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.940.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.940.0.tgz", + "integrity": "sha512-nJbLrUj6fY+l2W2rIB9P4Qvpiy0tnTdg/dmixRxrU1z3e8wBdspJlyE+AZN4fuVbeL6rrRrO/zxQC1bB3cw5IA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.0", - "fast-xml-parser": "5.5.8", + "@aws-sdk/core": "3.940.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/client-sqs": { + "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/nested-clients": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.940.0.tgz", - "integrity": "sha512-tXPi9OlELbiewGDb9maXDMhdYW617I9osGo/C1GAR6eLYwj40/TfOBeOQf3tX9EcH8NpDBuMksxoAvkpvqYIKw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.940.0", - "@aws-sdk/credential-provider-node": "3.940.0", - "@aws-sdk/middleware-host-header": "3.936.0", - "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-sdk-sqs": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.940.0", - "@aws-sdk/region-config-resolver": "3.936.0", - "@aws-sdk/types": "3.936.0", - "@aws-sdk/util-endpoints": "3.936.0", - "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.940.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/md5-js": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", - "@smithy/middleware-serde": "^4.2.6", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/core": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.940.0.tgz", - "integrity": "sha512-KsGD2FLaX5ngJao1mHxodIVU9VYd1E8810fcYiGwO1PFHDzf5BEkp6D9IdMeQwT8Q6JLYtiiT1Y/o3UCScnGoA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.936.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/core": "^3.18.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.940.0.tgz", - "integrity": "sha512-/G3l5/wbZYP2XEQiOoIkRJmlv15f1P3MSd1a0gz27lHEMrOJOGq66rF1Ca4OJLzapWt3Fy9BPrZAepoAX11kMw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.940.0.tgz", - "integrity": "sha512-dOrc03DHElNBD6N9Okt4U0zhrG4Wix5QUBSZPr5VN8SvmjD9dkrrxOkkJaMCl/bzrW7kbQEp7LuBdbxArMmOZQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.940.0.tgz", - "integrity": "sha512-gn7PJQEzb/cnInNFTOaDoCN/hOKqMejNmLof1W5VW95Qk0TPO52lH8R4RmJPnRrwFMswOWswTOpR1roKNLIrcw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/credential-provider-env": "3.940.0", - "@aws-sdk/credential-provider-http": "3.940.0", - "@aws-sdk/credential-provider-login": "3.940.0", - "@aws-sdk/credential-provider-process": "3.940.0", - "@aws-sdk/credential-provider-sso": "3.940.0", - "@aws-sdk/credential-provider-web-identity": "3.940.0", - "@aws-sdk/nested-clients": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.940.0.tgz", - "integrity": "sha512-M8NFAvgvO6xZjiti5kztFiAYmSmSlG3eUfr4ZHSfXYZUA/KUdZU/D6xJyaLnU8cYRWBludb6K9XPKKVwKfqm4g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.940.0", - "@aws-sdk/credential-provider-http": "3.940.0", - "@aws-sdk/credential-provider-ini": "3.940.0", - "@aws-sdk/credential-provider-process": "3.940.0", - "@aws-sdk/credential-provider-sso": "3.940.0", - "@aws-sdk/credential-provider-web-identity": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.940.0.tgz", - "integrity": "sha512-pILBzt5/TYCqRsJb7vZlxmRIe0/T+FZPeml417EK75060ajDGnVJjHcuVdLVIeKoTKm9gmJc9l45gon6PbHyUQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.940.0.tgz", - "integrity": "sha512-q6JMHIkBlDCOMnA3RAzf8cGfup+8ukhhb50fNpghMs1SNBGhanmaMbZSgLigBRsPQW7fOk2l8jnzdVLS+BB9Uw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.940.0", - "@aws-sdk/core": "3.940.0", - "@aws-sdk/token-providers": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.940.0.tgz", - "integrity": "sha512-9QLTIkDJHHaYL0nyymO41H8g3ui1yz6Y3GmAN1gYQa6plXisuFBnGAbmKVj7zNvjWaOKdF0dV3dd3AFKEDoJ/w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/nested-clients": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.936.0.tgz", - "integrity": "sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.936.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.936.0.tgz", - "integrity": "sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.936.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.940.0.tgz", - "integrity": "sha512-WdsxDAVj5qaa5ApAP+JbpCOMHFGSmzjs2Y2OBSbWPeR9Ew7t/Okj+kUub94QJPsgzhvU1/cqNejhsw5VxeFKSQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.936.0.tgz", - "integrity": "sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.936.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.940.0.tgz", - "integrity": "sha512-JYkLjgS1wLoKHJ40G63+afM1ehmsPsjcmrHirKh8+kSCx4ip7+nL1e/twV4Zicxr8RJi9Y0Ahq5mDvneilDDKQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/core": "^3.18.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.936.0.tgz", - "integrity": "sha512-39WohFCCPeD6LV8zLQq7CyYbIieetEDDNLsEPeGJSh2Uv9qpY9r6zJRSTjb8hTuQbHDSEOGntHMYKpLoHdoxdQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.936.0", - "@smithy/smithy-client": "^4.9.8", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-ssec": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.936.0.tgz", - "integrity": "sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.936.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.940.0.tgz", - "integrity": "sha512-nJbLrUj6fY+l2W2rIB9P4Qvpiy0tnTdg/dmixRxrU1z3e8wBdspJlyE+AZN4fuVbeL6rrRrO/zxQC1bB3cw5IA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.940.0", - "@aws-sdk/types": "3.936.0", - "@aws-sdk/util-endpoints": "3.936.0", - "@smithy/core": "^3.18.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/@aws-sdk/nested-clients": { - "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.940.0.tgz", - "integrity": "sha512-x0mdv6DkjXqXEcQj3URbCltEzW6hoy/1uIL+i8gExP6YKrnhiZ7SzuB4gPls2UOpK5UqLiqXjhRLfBb1C9i4Dw==", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.940.0.tgz", + "integrity": "sha512-x0mdv6DkjXqXEcQj3URbCltEzW6hoy/1uIL+i8gExP6YKrnhiZ7SzuB4gPls2UOpK5UqLiqXjhRLfBb1C9i4Dw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -3775,26 +3315,6 @@ } } }, - "node_modules/@adobe/spacecat-shared-content-client/node_modules/fast-xml-parser": { - "version": "5.5.8", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", - "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/@adobe/spacecat-shared-content-client/node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", @@ -3805,9 +3325,9 @@ } }, "node_modules/@adobe/spacecat-shared-data-access": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-3.63.0.tgz", - "integrity": "sha512-3ZjwhQig41OuhEhRpAO+LyBmViz31E4nb18rFDVIZ2md1Fn0eyGmCaTAvlO49f2dziMBdJUcHeO7TOkF4+RlGw==", + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-3.65.0.tgz", + "integrity": "sha512-if0tvFUn4BjL5ABwwk0PyK8KBkEgsavafDePC5TnG3WF8KdBAvjS8Ef485grrZyHsyfx7HA5o5bd/IKE66rJ3Q==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "^4.2.3", @@ -4732,9 +4252,9 @@ } }, "node_modules/@adobe/spacecat-shared-drs-client": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-drs-client/-/spacecat-shared-drs-client-1.7.1.tgz", - "integrity": "sha512-5XusGrHHSXtiaR0MPnMsT35KWulyhroyuOk35zGvQGD4S0gady3acZ0+6S35Bh8Gl000G6dHqFL9ZTg+MGYg0A==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-drs-client/-/spacecat-shared-drs-client-1.7.2.tgz", + "integrity": "sha512-ENlvz/0Q4Kp5gsU2kbbYudVAk+Qk8ex5a2Ld0ryWH+4uNL1BWBR1AFtaa0CsTVcWRGkD+cFjV3gHP7QkdC41UA==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.98.1", @@ -5035,9 +4555,9 @@ } }, "node_modules/@adobe/spacecat-shared-gpt-client": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-gpt-client/-/spacecat-shared-gpt-client-1.6.22.tgz", - "integrity": "sha512-BMzdR+5VPVHNDbtgqfkXn/k7Kfsy6MqARkYUEgFGN3+KydRzDBPp9bTPPM7bI0rMPNhrhgyiijACZX08vpzUtQ==", + "version": "1.6.23", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-gpt-client/-/spacecat-shared-gpt-client-1.6.23.tgz", + "integrity": "sha512-R8YiqPAs8aim1jehbaKZrMmnLydcc1yGHtgSEIePPlRiMyWfNz4Ydn9UuQ+pSmvAhRsiiPpcTUP96lHCdurfnw==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.3.0", @@ -5707,15 +5227,15 @@ } }, "node_modules/@adobe/spacecat-shared-http-utils": { - "version": "1.27.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-http-utils/-/spacecat-shared-http-utils-1.27.1.tgz", - "integrity": "sha512-f8HcDcff8ywX3U+mz1IzemAKqOAYgvnFX6e5INUgHsJvxSZDayMCFpcQdSc8yZluZXfXwJ4SZfDbjjIKYBtyNA==", + "version": "1.27.2", + "resolved": "https://gist.github.com/ravverma/f48ea6bc8baae3d20c4f3812e34d8ae3/raw/d7c5733a3ff2293550cf8928d101b7abf28741eb/adobe-spacecat-shared-http-utils-1.27.2.tgz", + "integrity": "sha512-QfjVoC33Se3oaTJ9fODfrs8aYoOVZokds2+OBz/AHCvuQEPyq9Z686JTrDkINcrmDs2QQJyEaHGClbNokGVY0w==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.3.0", "@adobe/spacecat-shared-launchdarkly-client": "1.0.4", "@adobe/spacecat-shared-utils": "1.81.1", - "jose": "6.2.2" + "jose": "6.2.3" }, "engines": { "node": ">=22.0.0 <25.0.0", @@ -6317,15 +5837,6 @@ } } }, - "node_modules/@adobe/spacecat-shared-http-utils/node_modules/jose": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", - "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/@adobe/spacecat-shared-http-utils/node_modules/zod": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", @@ -6336,15 +5847,15 @@ } }, "node_modules/@adobe/spacecat-shared-ims-client": { - "version": "1.12.6", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-ims-client/-/spacecat-shared-ims-client-1.12.6.tgz", - "integrity": "sha512-yVU3hjcsXMBEWVWp/Q/w5agHrjbWQWmThwSMJe9bt4Y8G6qoaXDoV4uOdeU+NA5YlX1f4drH2RT/EaKodGXm2w==", + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-ims-client/-/spacecat-shared-ims-client-1.12.7.tgz", + "integrity": "sha512-mkO5tLod8s1V0WiLnsK2oikPgOmADd5A3PFA5XGVjIKKMo5ewxVpPIV/Q3mTfi1CvcWYdDMdZCs4Ltxl1PaobQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.3.0", "@adobe/helix-universal": "5.4.1", "@adobe/spacecat-shared-utils": "1.81.1", - "@aws-sdk/client-secrets-manager": "3.1024.0", + "@aws-sdk/client-secrets-manager": "3.1045.0", "aws-xray-sdk": "3.12.0" }, "engines": { @@ -6442,465 +5953,6 @@ "node": ">=18.0.0" } }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.1024.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.1024.0.tgz", - "integrity": "sha512-EXbgMqueA5gw/jqpE2zMWAfBnzn6cZWqCISGdfn1201Um9IAIoTcHjyWoQMALQm0f8Lu1NF6yRtngs6zpZcagQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.26", - "@aws-sdk/credential-provider-node": "^3.972.29", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.28", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.14", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.13", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.28", - "@smithy/middleware-retry": "^4.4.46", - "@smithy/middleware-serde": "^4.2.16", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.1", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.44", - "@smithy/util-defaults-mode-node": "^4.2.48", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.13", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.973.27", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.27.tgz", - "integrity": "sha512-CUZ5m8hwMCH6OYI4Li/WgMfIEx10Q2PLI9Y3XOUTPGZJ53aZ0007jCv+X/ywsaERyKPdw5MRZWk877roQksQ4A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@aws-sdk/xml-builder": "^3.972.17", - "@smithy/core": "^3.23.14", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/property-provider": "^4.2.13", - "@smithy/protocol-http": "^5.3.13", - "@smithy/signature-v4": "^5.3.13", - "@smithy/smithy-client": "^4.12.9", - "@smithy/types": "^4.14.0", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.13", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.25.tgz", - "integrity": "sha512-6QfI0wv4jpG5CrdO/AO0JfZ2ux+tKwJPrUwmvxXF50vI5KIypKVGNF6b4vlkYEnKumDTI1NX2zUBi8JoU5QU3A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.27", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.27.tgz", - "integrity": "sha512-3V3Usj9Gs93h865DqN4M2NWJhC5kXU9BvZskfN3+69omuYlE3TZxOEcVQtBGLOloJB7BVfJKXVLqeNhOzHqSlQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@smithy/fetch-http-handler": "^5.3.16", - "@smithy/node-http-handler": "^4.5.2", - "@smithy/property-provider": "^4.2.13", - "@smithy/protocol-http": "^5.3.13", - "@smithy/smithy-client": "^4.12.9", - "@smithy/types": "^4.14.0", - "@smithy/util-stream": "^4.5.22", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.29.tgz", - "integrity": "sha512-SiBuAnXecCbT/OpAf3vqyI/AVE3mTaYr9ShXLybxZiPLBiPCCOIWSGAtYYGQWMRvobBTiqOewaB+wcgMMZI2Aw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/credential-provider-env": "^3.972.25", - "@aws-sdk/credential-provider-http": "^3.972.27", - "@aws-sdk/credential-provider-login": "^3.972.29", - "@aws-sdk/credential-provider-process": "^3.972.25", - "@aws-sdk/credential-provider-sso": "^3.972.29", - "@aws-sdk/credential-provider-web-identity": "^3.972.29", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/credential-provider-imds": "^4.2.13", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.29.tgz", - "integrity": "sha512-OGOslTbOlxXexKMqhxCEbBQbUIfuhGxU5UXw3Fm56ypXHvrXH4aTt/xb5Y884LOoteP1QST1lVZzHfcTnWhiPQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/protocol-http": "^5.3.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.30", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.30.tgz", - "integrity": "sha512-FMnAnWxc8PG+ZrZ2OBKzY4luCUJhe9CG0B9YwYr4pzrYGLXBS2rl+UoUvjGbAwiptxRL6hyA3lFn03Bv1TLqTw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.25", - "@aws-sdk/credential-provider-http": "^3.972.27", - "@aws-sdk/credential-provider-ini": "^3.972.29", - "@aws-sdk/credential-provider-process": "^3.972.25", - "@aws-sdk/credential-provider-sso": "^3.972.29", - "@aws-sdk/credential-provider-web-identity": "^3.972.29", - "@aws-sdk/types": "^3.973.7", - "@smithy/credential-provider-imds": "^4.2.13", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.25.tgz", - "integrity": "sha512-HR7ynNRdNhNsdVCOCegy1HsfsRzozCOPtD3RzzT1JouuaHobWyRfJzCBue/3jP7gECHt+kQyZUvwg/cYLWurNQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.29.tgz", - "integrity": "sha512-HWv4SEq3jZDYPlwryZVef97+U8CxxRos5mK8sgGO1dQaFZpV5giZLzqGE5hkDmh2csYcBO2uf5XHjPTpZcJlig==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/token-providers": "3.1026.0", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.29.tgz", - "integrity": "sha512-PdMBza1WEKEUPFEmMGCfnU2RYCz9MskU2e8JxjyUOsMKku7j9YaDKvbDi2dzC0ihFoM6ods2SbhfAAro+Gwlew==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.9.tgz", - "integrity": "sha512-je5vRdNw4SkuTnmRbFZLdye4sQ0faLt8kwka5wnnSU30q1mHO4X+idGEJOOE+Tn1ME7Oryn05xxkDvIb3UaLaQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/protocol-http": "^5.3.13", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.9.tgz", - "integrity": "sha512-HsVgDrruhqI28RkaXALm8grJ7Agc1wF6Et0xh6pom8NdO2VdO/SD9U/tPwUjewwK/pVoka+EShBxyCvgsPCtog==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.10.tgz", - "integrity": "sha512-RVQQbq5orQ/GHUnXvqEOj2HHPBJm+mM+ySwZKS5UaLBwra5ugRtiH09PLUoOZRl7a1YzaOzXSuGbn9iD5j60WQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.13", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.29.tgz", - "integrity": "sha512-f/sIRzuTfEjg6NsbMYvye2VsmnQoNgntntleQyx5uGacUYzszbfIlO3GcI6G6daWUmTm0IDZc11qMHWwF0o0mQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/types": "^3.973.7", - "@aws-sdk/util-endpoints": "^3.996.6", - "@smithy/core": "^3.23.14", - "@smithy/protocol-http": "^5.3.13", - "@smithy/types": "^4.14.0", - "@smithy/util-retry": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/nested-clients": { - "version": "3.996.19", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.19.tgz", - "integrity": "sha512-uFkmCDXvmQYLanlYdOFS0+MQWkrj9wPMt/ZCc/0J0fjPim6F5jBVBmEomvGY/j77ILW6GTPwN22Jc174Mhkw6Q==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/middleware-host-header": "^3.972.9", - "@aws-sdk/middleware-logger": "^3.972.9", - "@aws-sdk/middleware-recursion-detection": "^3.972.10", - "@aws-sdk/middleware-user-agent": "^3.972.29", - "@aws-sdk/region-config-resolver": "^3.972.11", - "@aws-sdk/types": "^3.973.7", - "@aws-sdk/util-endpoints": "^3.996.6", - "@aws-sdk/util-user-agent-browser": "^3.972.9", - "@aws-sdk/util-user-agent-node": "^3.973.15", - "@smithy/config-resolver": "^4.4.14", - "@smithy/core": "^3.23.14", - "@smithy/fetch-http-handler": "^5.3.16", - "@smithy/hash-node": "^4.2.13", - "@smithy/invalid-dependency": "^4.2.13", - "@smithy/middleware-content-length": "^4.2.13", - "@smithy/middleware-endpoint": "^4.4.29", - "@smithy/middleware-retry": "^4.5.0", - "@smithy/middleware-serde": "^4.2.17", - "@smithy/middleware-stack": "^4.2.13", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/node-http-handler": "^4.5.2", - "@smithy/protocol-http": "^5.3.13", - "@smithy/smithy-client": "^4.12.9", - "@smithy/types": "^4.14.0", - "@smithy/url-parser": "^4.2.13", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.45", - "@smithy/util-defaults-mode-node": "^4.2.49", - "@smithy/util-endpoints": "^3.3.4", - "@smithy/util-middleware": "^4.2.13", - "@smithy/util-retry": "^4.3.0", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.11.tgz", - "integrity": "sha512-6Q8B1dcx6BBqUTY1Mc/eROKA0FImEEY5VPSd6AGPEUf0ErjExz4snVqa9kNJSoVDV1rKaNf3qrWojgcKW+SdDg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/config-resolver": "^4.4.14", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.1026.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1026.0.tgz", - "integrity": "sha512-Ieq/HiRrbEtrYP387Nes0XlR7H1pJiJOZKv+QyQzMYpvTiDs0VKy2ZB3E2Zf+aFovWmeE7lRE4lXyF7dYM6GgA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.27", - "@aws-sdk/nested-clients": "^3.996.19", - "@aws-sdk/types": "^3.973.7", - "@smithy/property-provider": "^4.2.13", - "@smithy/shared-ini-file-loader": "^4.4.8", - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { - "version": "3.973.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.7.tgz", - "integrity": "sha512-reXRwoJ6CfChoqAsBszUYajAF8Z2LRE+CRcKocvFSMpIiLOtYU3aJ9trmn6VVPAzbbY5LXF+FfmUslbXk1SYFg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.6.tgz", - "integrity": "sha512-2nUQ+2ih7CShuKHpGSIYvvAIOHy52dOZguYG36zptBukhw6iFwcvGfG0tes0oZFWQqEWvgZe9HLWaNlvXGdOrg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/types": "^4.14.0", - "@smithy/url-parser": "^4.2.13", - "@smithy/util-endpoints": "^3.3.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.9.tgz", - "integrity": "sha512-sn/LMzTbGjYqCCF24390WxPd6hkpoSptiUn5DzVp4cD71yqw+yGEGm1YCxyEoPXyc8qciM8UzLJcZBFslxo5Uw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.7", - "@smithy/types": "^4.14.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.15.tgz", - "integrity": "sha512-fYn3s9PtKdgQkczGZCFMgkNEe8aq1JCVbnRqjqN9RSVW43xn2RV9xdcZ3z01a48Jpkuh/xCmBKJxdLOo4Ozg7w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.29", - "@aws-sdk/types": "^3.973.7", - "@smithy/node-config-provider": "^4.3.13", - "@smithy/types": "^4.14.0", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/xml-builder": { - "version": "3.972.17", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.17.tgz", - "integrity": "sha512-Ra7hjqAZf1OXRRMueB13qex7mFJRDK/pgCvdSFemXBT8KCGnQDPoKzHY1SjN+TjJVmnpSF14W5tJ1vDamFu+Gg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.0", - "fast-xml-parser": "5.5.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@adobe/spacecat-shared-ims-client/node_modules/@aws-sdk/client-sqs": { "version": "3.940.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.940.0.tgz", @@ -7381,26 +6433,6 @@ } } }, - "node_modules/@adobe/spacecat-shared-ims-client/node_modules/fast-xml-parser": { - "version": "5.5.8", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", - "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/@adobe/spacecat-shared-ims-client/node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", @@ -8005,9 +7037,9 @@ } }, "node_modules/@adobe/spacecat-shared-rum-api-client": { - "version": "2.40.12", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-rum-api-client/-/spacecat-shared-rum-api-client-2.40.12.tgz", - "integrity": "sha512-96hwODD1Fn9DU3u3GszE3HjtHTs5vI0LOj9FgrNwVE6HdzFNnCgR1h3qckdNgmn6YP4YHCjCw56BPloiYJhoVw==", + "version": "2.40.13", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-rum-api-client/-/spacecat-shared-rum-api-client-2.40.13.tgz", + "integrity": "sha512-UcgbDOvUAmuN32WuTAgwRYxXCfN5C8xyD170KBXRn0pPK4Zlp1xQU3p3nEcZd8+iarDzX4LQsfL+jv6PNTj7xA==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.3.0", @@ -8603,9 +7635,9 @@ } }, "node_modules/@adobe/spacecat-shared-scrape-client": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-scrape-client/-/spacecat-shared-scrape-client-2.6.2.tgz", - "integrity": "sha512-4zqI5P6CuXjh6wxg+W43BQGhF3O4QMjywDMTVh2y9EmLhsZ79ickQeR+mqCaS/PwRuhFkQ/+ex/IkoXamft40Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-scrape-client/-/spacecat-shared-scrape-client-2.6.3.tgz", + "integrity": "sha512-osYG7IkFwUIvTvH368uAuEvrnNiphzyOLnuxgATeoHQo+CcmsPVBu5zLKfy2soTeHjjjLD8xE2Q5/lFDgKFUAw==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-universal": "5.4.1", @@ -9197,14 +8229,14 @@ } }, "node_modules/@adobe/spacecat-shared-slack-client": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-slack-client/-/spacecat-shared-slack-client-1.6.6.tgz", - "integrity": "sha512-+M2NCwrJqUMLggoOIa1ZJ/sMnyc8xNGFYTl5ePwiyzIH1XFbHDf2gsgN44ABj3FW0xap7mX2ohoXe/EMdePvKQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-slack-client/-/spacecat-shared-slack-client-1.6.7.tgz", + "integrity": "sha512-zchiSmBcg3ck4Lw4WhoL6/kESw0oSaE6etr7K1+gH/+W1gLBDGPV8AfE292YdWYT8tvS8qCWTur/opxKGsOiKA==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-universal": "5.4.1", "@adobe/spacecat-shared-utils": "1.81.1", - "@slack/web-api": "7.15.0" + "@slack/web-api": "7.15.2" }, "engines": { "node": ">=22.0.0 <25.0.0", @@ -9781,30 +8813,6 @@ } } }, - "node_modules/@adobe/spacecat-shared-slack-client/node_modules/@slack/web-api": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.15.0.tgz", - "integrity": "sha512-va7zYIt3QHG1x9M/jqXXRPFMoOVlVSSRHC5YH+DzKYsrz5xUKOA3lR4THsu/Zxha9N1jOndbKFKLtr0WOPW1Vw==", - "license": "MIT", - "dependencies": { - "@slack/logger": "^4.0.1", - "@slack/types": "^2.20.1", - "@types/node": ">=18", - "@types/retry": "0.12.0", - "axios": "^1.13.5", - "eventemitter3": "^5.0.1", - "form-data": "^4.0.4", - "is-electron": "2.2.2", - "is-stream": "^2", - "p-queue": "^6", - "p-retry": "^4", - "retry": "^0.13.1" - }, - "engines": { - "node": ">= 18", - "npm": ">= 8.6.0" - } - }, "node_modules/@adobe/spacecat-shared-slack-client/node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", @@ -9815,9 +8823,9 @@ } }, "node_modules/@adobe/spacecat-shared-tier-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-tier-client/-/spacecat-shared-tier-client-1.5.0.tgz", - "integrity": "sha512-+OPIzMyeEnsHjvdqZGnKoSygxpO7j1JvfS8TWy2pUnGg7aqEBpH9vRfzEEIfWVFIjFhVtIn8b/3OKlEFCjI6YA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-tier-client/-/spacecat-shared-tier-client-1.5.1.tgz", + "integrity": "sha512-fNvpkvqaDoatYNnP2XUGdHOVRLil90H4qKQVzoIhhFRogRIRT8vs2rUNjTQvZywBc7NRZfmoXf0oYHzE3OAXMA==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -10408,14 +9416,14 @@ } }, "node_modules/@adobe/spacecat-shared-tokowaka-client": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-tokowaka-client/-/spacecat-shared-tokowaka-client-1.16.1.tgz", - "integrity": "sha512-VFEtClbLTWwLaF/sGf/OaYgyd0W3arl5kdZl/UkGoEj7/Oeq9pT0UQBupgy65W3kgpwQja5XQYXjzW/I5S1uOQ==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-tokowaka-client/-/spacecat-shared-tokowaka-client-1.16.2.tgz", + "integrity": "sha512-l39q27onNu9B7J76NtZypr+8quH7rFhnwHpW8z0Hc4VDKhZ7KRJoCNGzzGpkMEPOE6iRNBxppqZgJVsIBhcbKw==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", - "@aws-sdk/client-cloudfront": "3.1024.0", - "@aws-sdk/client-s3": "3.1024.0", + "@aws-sdk/client-cloudfront": "3.1045.0", + "@aws-sdk/client-s3": "3.1045.0", "hast-util-from-html": "2.0.3", "mdast-util-from-markdown": "2.0.3", "mdast-util-to-hast": "13.2.1", @@ -10732,174 +9740,6 @@ } } }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3": { - "version": "3.1024.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1024.0.tgz", - "integrity": "sha512-8qdO5aLCzaf9l0RdrSBW1iIroRKP2QBqtZ6lkrtHKiaaH0B18xEn+lrEgiN/eCf3uRAYk4cqbnI2XcWzm+7dDQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.26", - "@aws-sdk/credential-provider-node": "^3.972.29", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", - "@aws-sdk/middleware-expect-continue": "^3.972.8", - "@aws-sdk/middleware-flexible-checksums": "^3.974.6", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-location-constraint": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-sdk-s3": "^3.972.27", - "@aws-sdk/middleware-ssec": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.28", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/signature-v4-multi-region": "^3.996.15", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.14", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.13", - "@smithy/eventstream-serde-browser": "^4.2.12", - "@smithy/eventstream-serde-config-resolver": "^4.3.12", - "@smithy/eventstream-serde-node": "^4.2.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-blob-browser": "^4.2.13", - "@smithy/hash-node": "^4.2.12", - "@smithy/hash-stream-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/md5-js": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.28", - "@smithy/middleware-retry": "^4.4.46", - "@smithy/middleware-serde": "^4.2.16", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.1", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.44", - "@smithy/util-defaults-mode-node": "^4.2.48", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.13", - "@smithy/util-stream": "^4.5.21", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.14", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", - "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", - "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", - "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", - "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/config-resolver": "^4.4.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { - "version": "3.973.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", - "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", - "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-endpoints": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", - "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, "node_modules/@adobe/spacecat-shared-tokowaka-client/node_modules/@aws-sdk/client-sqs": { "version": "3.940.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.940.0.tgz", @@ -11633,9 +10473,9 @@ } }, "node_modules/@adobe/spacecat-shared-vault-secrets": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-vault-secrets/-/spacecat-shared-vault-secrets-1.3.4.tgz", - "integrity": "sha512-GWnAsaeComj6i55PE/S4SxVlaYqrgbtXtqNbXS/FIsLe01JQhBxaHHxgB6m6mhf58WGpobe5EDa44n6nDGvy7w==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-vault-secrets/-/spacecat-shared-vault-secrets-1.3.5.tgz", + "integrity": "sha512-Cki+INCuViMQFEKARcHQ97Z6iHRA91tQkHIsfslnLhIzK9jUWY2yFGy5o0/DBogeX7j6ldy0DBTZEc6RdcoBeA==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.3.0", @@ -12019,48 +10859,48 @@ } }, "node_modules/@aws-sdk/client-athena": { - "version": "3.1024.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.1024.0.tgz", - "integrity": "sha512-kKnsdeh58Se7GL+9HX56KWtjS55W3OuzZwGVXq20PXgY2N53d6+NI9I1w+X0cZJo2pz3JijiJ+3S76YYCBoprw==", + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.1045.0.tgz", + "integrity": "sha512-g5E7Bt9FFZSMloQeLlEE1JabVvLh5k9749sv95UPz7r0Lwj6mT0WkMgDZ/3q/YgafeM4Ug+Ttoxpje+0gc5hRQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.26", - "@aws-sdk/credential-provider-node": "^3.972.29", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.28", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.14", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.13", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.28", - "@smithy/middleware-retry": "^4.4.46", - "@smithy/middleware-serde": "^4.2.16", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.1", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.44", - "@smithy/util-defaults-mode-node": "^4.2.48", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.13", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -12069,14 +10909,12 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", - "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.12.tgz", + "integrity": "sha512-4QEreU2qPSu19Vsw/eQW8dq5wQEstoyR0nPvguprIa6U/wSA2/fMrisYO4ZZauD8zmYx53SoUodKLipHSi0ZYg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12084,13 +10922,12 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", - "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.11.tgz", + "integrity": "sha512-n/3aCOOnPnxrfh1+z2zWOi0yNC7xLv5nKx2QR4o5xHBjRHAv+vc/5GM8Rnn3Q2p288RSUOy7FhCKfhsZwlaBjg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12098,15 +10935,12 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz", - "integrity": "sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==", + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.13.tgz", + "integrity": "sha512-QZIpAIa6fDeVgJ8BEG1S6EHGKVul1DM6w6u24041Xl31FvgArh0slURCz5ij3oo0p249yjNHVRTw1GPJa7YUkQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12114,15 +10948,12 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz", - "integrity": "sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==", + "version": "3.972.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.15.tgz", + "integrity": "sha512-RROpdNPC4L15h4WE0Zlzxd2n5yRd4VaIY/Pgw/+6YNgiGZo61qavXgMG9Zdb+OnPkBnwfpXIguTcEwhSrjEHGw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/config-resolver": "^4.4.13", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12130,12 +10961,12 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/types": { - "version": "3.973.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", - "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "version": "3.973.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -12143,15 +10974,13 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", - "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "version": "3.996.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.10.tgz", + "integrity": "sha512-cdmvh+mmVWFKNhqFv/axpjJOYyaCgw+zta93IOv9sXKZPoL1m0XVhSI/Y7MGKLeVHUkG+ULVZy+q5AEAGivSDw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-endpoints": "^3.3.3", + "@aws-sdk/core": "^3.974.11", + "@smithy/core": "^3.24.2", "tslib": "^2.6.2" }, "engines": { @@ -12159,63 +10988,61 @@ } }, "node_modules/@aws-sdk/client-athena/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", - "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.12.tgz", + "integrity": "sha512-Glip9lOu73ttWJPO5OIbbWuivyCerLuCD/Rfk2BC/a23zpMeX3FGY9FMui5fh3YatGFZu1NVllVvA1sQy+PhJg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "bowser": "^2.11.0", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.1024.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1024.0.tgz", - "integrity": "sha512-jd3Mva86RKznPndyzlISIJt6seqc55gBuJprGKFraOq8KDbWjXniFLuz6QTG0qvTA82nVp5+6PX45Yzuye7ArQ==", + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1045.0.tgz", + "integrity": "sha512-84RIiLrMXcinBK1JXnP1bOavvQ+jxTxN4xsB20e39MfOZMyr7wIxMNn35kTYTg8UTJgN7zwEgzGJo64sU3mtPw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.26", - "@aws-sdk/credential-provider-node": "^3.972.29", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.28", - "@aws-sdk/region-config-resolver": "^3.972.10", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.14", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.13", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.28", - "@smithy/middleware-retry": "^4.4.46", - "@smithy/middleware-serde": "^4.2.16", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.1", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.44", - "@smithy/util-defaults-mode-node": "^4.2.48", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.13", - "@smithy/util-stream": "^4.5.21", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.14", + "@smithy/util-waiter": "^4.3.0", "tslib": "^2.6.2" }, "engines": { @@ -12223,14 +11050,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", - "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.12.tgz", + "integrity": "sha512-4QEreU2qPSu19Vsw/eQW8dq5wQEstoyR0nPvguprIa6U/wSA2/fMrisYO4ZZauD8zmYx53SoUodKLipHSi0ZYg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12238,13 +11063,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", - "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.11.tgz", + "integrity": "sha512-n/3aCOOnPnxrfh1+z2zWOi0yNC7xLv5nKx2QR4o5xHBjRHAv+vc/5GM8Rnn3Q2p288RSUOy7FhCKfhsZwlaBjg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12252,15 +11076,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz", - "integrity": "sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==", + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.13.tgz", + "integrity": "sha512-QZIpAIa6fDeVgJ8BEG1S6EHGKVul1DM6w6u24041Xl31FvgArh0slURCz5ij3oo0p249yjNHVRTw1GPJa7YUkQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12268,15 +11089,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz", - "integrity": "sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==", + "version": "3.972.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.15.tgz", + "integrity": "sha512-RROpdNPC4L15h4WE0Zlzxd2n5yRd4VaIY/Pgw/+6YNgiGZo61qavXgMG9Zdb+OnPkBnwfpXIguTcEwhSrjEHGw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/config-resolver": "^4.4.13", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" }, "engines": { @@ -12284,12 +11102,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/types": { - "version": "3.973.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", - "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "version": "3.973.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -12297,15 +11115,13 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", - "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "version": "3.996.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.10.tgz", + "integrity": "sha512-cdmvh+mmVWFKNhqFv/axpjJOYyaCgw+zta93IOv9sXKZPoL1m0XVhSI/Y7MGKLeVHUkG+ULVZy+q5AEAGivSDw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-endpoints": "^3.3.3", + "@aws-sdk/core": "^3.974.11", + "@smithy/core": "^3.24.2", "tslib": "^2.6.2" }, "engines": { @@ -12313,14 +11129,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", - "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.12.tgz", + "integrity": "sha512-Glip9lOu73ttWJPO5OIbbWuivyCerLuCD/Rfk2BC/a23zpMeX3FGY9FMui5fh3YatGFZu1NVllVvA1sQy+PhJg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "bowser": "^2.11.0", + "@aws-sdk/core": "^3.974.11", "tslib": "^2.6.2" } }, @@ -12329,7 +11143,6 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.940.0.tgz", "integrity": "sha512-u2sXsNJazJbuHeWICvsj6RvNyJh3isedEfPvB21jK/kxcriK+dE/izlKC2cyxUjERCmku0zTFNzY9FhrLbYHjQ==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -14030,24 +12843,18 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", - "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", + "version": "3.974.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", + "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.22", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", + "@aws-sdk/xml-builder": "^3.972.24", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/core": "^3.24.2", + "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { @@ -14068,14 +12875,14 @@ } }, "node_modules/@aws-sdk/core/node_modules/@aws-sdk/xml-builder": { - "version": "3.972.22", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", - "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", + "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", "license": "Apache-2.0", "dependencies": { "@nodable/entities": "2.1.0", "@smithy/types": "^4.14.1", - "fast-xml-parser": "5.7.2", + "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" }, "engines": { @@ -14083,9 +12890,9 @@ } }, "node_modules/@aws-sdk/core/node_modules/fast-xml-parser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", - "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", + "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", "funding": [ { "type": "github", @@ -14095,7 +12902,7 @@ "license": "MIT", "dependencies": { "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.1.5", + "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, @@ -15386,8 +14193,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.7.0.tgz", "integrity": "sha512-qn6tAIZEw5i/wiESBF4nQxZkl86aY4KoO0IkUa2Lh+rya64oTOdJQFlZuMwI1Qz9VBJQrQC4QlSA2DNek5gCOA==", - "license": "(Apache-2.0 AND BSD-3-Clause)", - "peer": true + "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@cfworker/json-schema": { "version": "4.1.1", @@ -15411,7 +14217,6 @@ "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-2.1.1.tgz", "integrity": "sha512-JzhkaTvM73m2K1URT6tv53k2RwngSmCXLZJgK580qNQOXRzZRR/BCMfZw3h+90JpnG6XksP5bYT+cz0rpUzUWQ==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "@bufbuild/protobuf": "^2.7.0" } @@ -16348,7 +15153,6 @@ "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.80.tgz", "integrity": "sha512-vcJDV2vk1AlCwSh3aBm/urQ1ZrlXFFBocv11bz/NBUfLWD5/UDNMzwPdaAd2dKvNmTWa9FM2lirLU3+JCf4cRA==", "license": "MIT", - "peer": true, "dependencies": { "@cfworker/json-schema": "^4.0.2", "ansi-styles": "^5.0.0", @@ -16646,7 +15450,6 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "license": "MIT", - "peer": true, "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.3", @@ -16853,7 +15656,6 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -17018,7 +15820,6 @@ "integrity": "sha512-r86ut4T1e8vNwB35CqCcKd45yzqH6/6Wzvpk2/cZB8PsPLlZFTvrh8yfOS3CYZYcUmAx4hHTZJ8AO8Dj8nrdhw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", @@ -18250,20 +17051,13 @@ } }, "node_modules/@smithy/core": { - "version": "3.23.17", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.17.tgz", - "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==", + "version": "3.24.3", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", + "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -18646,18 +17440,13 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", - "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", + "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -18683,9 +17472,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", - "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", + "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -18999,7 +17788,6 @@ "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", "license": "MIT", - "peer": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", @@ -19247,7 +18035,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -19295,7 +18082,6 @@ "integrity": "sha512-Ifm/pP/tul1qmAecpbVxCBluVE32rKfjf8gYXH4xI2gCv9mRWFhJMHzkPDM4TXlxwPQYIFegymlsy8lXz7optA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -19761,7 +18547,6 @@ "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.12.0.tgz", "integrity": "sha512-lwalRdxXRy+Sn49/vN7W507qqmBRk5Fy2o0a9U6XTjL9IV+oR5PUiiptoBrOcaYCiVuGld8OEbNqhm6wvV3m6A==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-sdk/types": "^3.4.1", "@smithy/service-error-classification": "^2.0.4", @@ -20424,7 +19209,6 @@ "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -22619,7 +21403,6 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -23171,9 +21954,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz", - "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", "funding": [ { "type": "github", @@ -23182,7 +21965,8 @@ ], "license": "MIT", "dependencies": { - "path-expression-matcher": "^1.1.3" + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" } }, "node_modules/fast-xml-parser": { @@ -25628,7 +24412,6 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -26584,7 +25367,6 @@ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -27639,7 +26421,6 @@ "integrity": "sha512-UczzB+0nnwGotYSgllfARAqWCJ5e/skuV2K/l+Zyck/H6pJIhLXuBnz+6vn2i211o7DtbE78HQtsYEKICHGI+g==", "dev": true, "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -30221,7 +29002,6 @@ "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -30748,7 +29528,6 @@ "resolved": "https://registry.npmjs.org/openai/-/openai-5.12.2.tgz", "integrity": "sha512-xqzHHQch5Tws5PcKR2xsZGX9xtch+JQFz5zb14dGqlshmmDAFBFEWmeIpf7wVqWV+w7Emj7jRgkNJakyKE0tYQ==", "license": "Apache-2.0", - "peer": true, "bin": { "openai": "bin/cli" }, @@ -31936,7 +30715,6 @@ "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -31947,7 +30725,6 @@ "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -32702,7 +31479,6 @@ "integrity": "sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@semantic-release/commit-analyzer": "^13.0.1", "@semantic-release/error": "^4.0.0", @@ -34068,7 +32844,6 @@ "integrity": "sha512-ADu2dF53esUzzM4I0ewxhxFtsDd6v4V6dNkg3vG0iFKhnt06sJneTZnRvujAosZwW0XD58IKgGMQoqri4wHRqg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@emotion/is-prop-valid": "1.4.0", "css-to-react-native": "3.2.0", @@ -35075,7 +33850,6 @@ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", - "peer": true, "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -35828,7 +34602,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -35863,6 +34636,21 @@ "xml-js": "bin/cli.js" } }, + "node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/xmlbuilder": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", @@ -36099,7 +34887,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -36109,7 +34896,6 @@ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", "license": "ISC", - "peer": true, "peerDependencies": { "zod": "^3.25 || ^4" } diff --git a/package.json b/package.json index d8b44f3c7..04008a001 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@adobe/spacecat-shared-data-access-v2": "npm:@adobe/spacecat-shared-data-access@2.109.0", "@adobe/spacecat-shared-drs-client": "1.7.2", "@adobe/spacecat-shared-gpt-client": "1.6.23", - "@adobe/spacecat-shared-http-utils": "1.27.2", + "@adobe/spacecat-shared-http-utils": "https://gist.github.com/ravverma/f48ea6bc8baae3d20c4f3812e34d8ae3/raw/d7c5733a3ff2293550cf8928d101b7abf28741eb/adobe-spacecat-shared-http-utils-1.27.2.tgz", "@adobe/spacecat-shared-ims-client": "1.12.7", "@adobe/spacecat-shared-launchdarkly-client": "^1.1.0", "@adobe/spacecat-shared-rum-api-client": "2.40.13", diff --git a/src/index.js b/src/index.js index d87aa9d6a..1ec756db6 100644 --- a/src/index.js +++ b/src/index.js @@ -22,6 +22,7 @@ import { notFound, authWrapper, enrichPathInfo, + facsWrapper, LegacyApiKeyHandler, ScopedApiKeyHandler, AdobeImsHandler, @@ -99,6 +100,7 @@ import FeatureFlagsController from './controllers/feature-flags.js'; import AutofixChecksController from './controllers/autofix-checks.js'; import DrsBpPgAuditController from './controllers/drs-bp-pg-audit.js'; import routeRequiredCapabilities, { INTERNAL_ROUTES } from './routes/required-capabilities.js'; +import routeFacsCapabilities from './routes/facs-capabilities.js'; import ContactSalesLeadsController from './controllers/contact-sales-leads.js'; import PageRelationshipsController from './controllers/page-relationships.js'; import PlgOnboardingController from './controllers/plg/plg-onboarding.js'; @@ -368,6 +370,10 @@ const { WORKSPACE_EXTERNAL } = SLACK_TARGETS; // 3. readOnlyAdminWrapper — enforces read-only access for read-only admin tokens (see // adobe/spacecat-shared#1469); routes not present in routeCapabilities default to deny // (fail-closed), so unmapped routes are blocked for read-only admins +// 4. facsWrapper — enforces FACS (MAC) permissions for external customer users on +// FACS-gated routes. Bypasses internal identities and non-enrolled product/orgs (per +// per-product LaunchDarkly flags); deny-by-default for enrolled products on unmapped +// routes. See mysticat-architecture/platform/decisions/mac-state-layer.md. // // authHandlers order contract: // - SkipAuthHandler first: local-dev escape hatch (no-op in Lambda). @@ -390,6 +396,7 @@ const AUTH_HANDLERS = [ ]; const wrappedMain = wrap(run) + .with(facsWrapper, { routeFacsCapabilities }) .with(readOnlyAdminWrapper, { routeCapabilities: routeRequiredCapabilities, internalRoutes: INTERNAL_ROUTES, diff --git a/src/routes/facs-capabilities.js b/src/routes/facs-capabilities.js new file mode 100644 index 000000000..f63a56f56 --- /dev/null +++ b/src/routes/facs-capabilities.js @@ -0,0 +1,654 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/** + * FACS (Federal Access Control Service) per-route required permissions, organised by product. + * + * Consumed by `facsWrapper` from `@adobe/spacecat-shared-http-utils` to enforce MAC + * (Modern Access Control) permissions for external customer users on a route-by-route basis. + * + * ## Top-level shape + * + * ``` + * { + * INTERNAL_ROUTES: ['METHOD /path', ...], // routes excluded from FACS + * PRODUCTS_ROUTES: { + * LLMO: { 'METHOD /path': 'llmo/can_*', ... }, + * ASO: { 'METHOD /path': 'aso/...', ... }, + * ACO: { ... }, + * } + * } + * ``` + * + * `INTERNAL_ROUTES` is the set of routes that are NOT exposed to FACS-governed external + * customer users at all — these are admin-only endpoints (gated upstream by + * `hasAdminAccess()` / `hasAdminReadAccess()` in controllers), S2S-only endpoints + * (gated by capability claim), or pure infrastructure surfaces (webhooks, slack events, + * hooks, monitoring). They are reachable only via the bypass paths in `facsWrapper` + * (`is_admin`, `is_s2s_admin`, `is_s2s_consumer`, `is_read_only_admin`, and Adobe + * internal IMS orgs). + * + * `PRODUCTS_ROUTES` is keyed by uppercase SpaceCat product code. Each product owns a + * complete map of every customer-facing route to its fully-qualified FACS permission + * (e.g. `'llmo/can_view'`). + * + * ## Per-product structure (departure from the original design) + * + * The original `mac-state-layer.md` design proposed a single flat map of `route → action` + * with the product prefix composed at runtime from the `x-product` header. That assumes a + * shared action vocabulary across all SpaceCat products (LLMO, ASO, ACO, …) and that the + * same route under different products implies the same permission semantics. + * + * In practice each product's MAC policy is authored independently with its own role and + * permission naming convention. ASO's read-equivalent may be `aso/view` while LLMO's is + * `llmo/can_view`; some routes only exist for one product. Storing full permission strings + * per product keeps: + * - product roll-outs decoupled (LLMO can ship while ASO policy is still being authored), + * - permission naming faithful to each product's MAC policy authoring, and + * - the map greppable — searching for `llmo/can_configure` finds every gated route. + * + * ## Runtime contract + * + * `facsWrapper` reads `x-product` from the request, looks up + * `routeFacsCapabilities.PRODUCTS_ROUTES[product.toUpperCase()]`, and resolves the route + * within that product's sub-map. If the route appears in `INTERNAL_ROUTES`, FACS does + * not apply (the request stands or falls on the upstream admin/S2S gates). A request + * without `x-product`, or for a product with no sub-map, is treated as not enrolled in + * FACS and falls through to the existing auth path. + * + * ## Deny-by-default within an enrolled product + * + * Once a product is enrolled in FACS (its per-product LaunchDarkly flag is on for the org) + * and the request maps to that product, absence from the product's sub-map means the route + * is not exposed to external customer users for that product — `facsWrapper` returns 403. + * + * ## Invariant + * + * For any populated product P: `routes(P) ∪ INTERNAL_ROUTES = all_routes_in_src/routes/index.js`, + * and `routes(P) ∩ INTERNAL_ROUTES = ∅`. Enforced by `test/routes/facs-capabilities.test.js`. + * + * ## Phase 1 scope + * + * MAC policy authoring is in progress; the entries below are the initial Phase 1 set agreed + * with the MAC team for LLMO. ASO and ACO sub-maps are stubbed empty and will be populated + * as their MAC policies land. See `mysticat-architecture/platform/decisions/mac-state-layer.md`. + * + * @type {{INTERNAL_ROUTES: string[], PRODUCTS_ROUTES: Record>}} + */ +const routeFacsCapabilities = { + /** + * Routes excluded from FACS enforcement. Each entry is either: + * - admin-only (gated in its controller by `hasAdminAccess()` or `hasAdminReadAccess()`), + * - S2S-only / capability-gated (`organization:readAll`, `site:readAll`, etc.), + * - restricted (always 403, e.g. `DELETE /sites/:siteId`), + * - pure infrastructure (webhooks, slack events, hooks, monitoring, fulfillment, trigger, + * ephemeral-run, internal configuration, consumer admin). + * + * Inline comment after each entry records the gate so the rationale is greppable. + */ + INTERNAL_ROUTES: [ + // Admin-only writes + 'POST /sites', // hasAdminAccess + 'DELETE /sites/:siteId', // restricted (always 403) + 'PATCH /sites/:siteId/:auditType', // hasAdminAccess (sites-audits-toggle) + 'POST /sites/:siteId/site-enrollments', // hasAdminAccess + 'POST /projects', // hasAdminAccess + 'DELETE /projects/:projectId', // hasAdminAccess + 'POST /organizations', // hasAdminAccess + 'DELETE /organizations/:organizationId', // restricted (always 403) + 'POST /organizations/:organizationId/entitlements', // hasAdminAccess + 'PUT /organizations/:organizationId/feature-flags/:product/:flagName', // hasAdminAccess + 'DELETE /organizations/:organizationId/feature-flags/:product/:flagName', // hasAdminAccess + 'POST /plg/records', // hasAdminAccess + 'PATCH /plg/records/:plgOnboardingId', // hasAdminAccess + 'DELETE /plg/records/:plgOnboardingId', // hasAdminAccess + 'PATCH /plg/onboard/:onboardingId', // hasAdminAccess + 'PATCH /plg/onboard/:onboardingId/status', // hasAdminAccess + + // Admin-only reads + 'GET /organizations', // admin OR S2S readAll + 'GET /sites', // admin OR S2S readAll + 'GET /sites.csv', // hasAdminReadAccess + 'GET /sites.xlsx', // hasAdminReadAccess + 'GET /sites/by-delivery-type/:deliveryType', // hasAdminReadAccess + 'GET /sites/with-latest-audit/:auditType', // hasAdminReadAccess + 'GET /projects', // hasAdminReadAccess + 'GET /audits/latest/:auditType', // hasAdminReadAccess + 'GET /organizations/by-ims-org-id/:imsOrgId/slack-config', // hasAdminReadAccess + 'GET /plg/sites', // hasAdminAccess + 'GET /admin/users/:userId', // admin surface + + // Pure infrastructure — webhooks / event ingestion / hooks / scheduling + 'POST /event/fulfillment', // external system shared-secret + 'POST /event/fulfillment/:eventType', // external system shared-secret + 'POST /hooks/site-detection/cdn/:hookSecret', // hookSecret in path + 'POST /hooks/site-detection/rum/:hookSecret', // hookSecret in path + 'POST /webhooks/github', // HMAC-signed webhook + 'GET /slack/events', // Slack signature verification + 'POST /slack/events', // Slack signature verification + 'POST /slack/channels/invite-by-user-id', // Slack-internal + 'GET /trigger', // internal scheduler + + // Monitoring / admin telemetry + 'GET /monitoring/drs-bp-pg-audit', // internal monitoring + + // Ephemeral-run admin surface + 'POST /ephemeral-run/batch', // admin/internal + 'GET /ephemeral-run/batch/:batchId/status', // admin/internal + + // System configuration (Configuration model — admin-only) + 'GET /configurations/:version', // admin + 'GET /configurations/latest', // admin + 'PATCH /configurations/latest', // admin + 'PATCH /configurations/latest/handlers/:handlerType', // admin + 'PATCH /configurations/latest/jobs/:jobType', // admin + 'PATCH /configurations/sites/audits', // admin + 'POST /configurations/:version/restore', // admin + 'POST /configurations/audits', // admin + 'DELETE /configurations/audits/:auditType', // admin + 'PUT /configurations/latest/queues', // admin + + // S2S consumer administration + 'GET /consumers', // admin (S2S consumer admin) + 'GET /consumers/:consumerId', // admin + 'GET /consumers/by-client-id/:clientId', // admin + 'PATCH /consumers/:consumerId', // admin + 'POST /consumers/:consumerId/revoke', // admin + 'POST /consumers/register', // admin + ], + + PRODUCTS_ROUTES: { + // LLMO — first product to enrol in FACS. + // + // Permission names follow the agreed LLMO MAC policy: + // - llmo/can_view — read-only + // - llmo/can_configure — edit/add/delete prompts, topics, categories, + // aliases, competitors, customer intent, strategy, + // sheet data, site config + // - llmo/can_onboard — brands, URLs, integrations (analytics, CMS, CDN) + // - llmo/can_deploy — optimizations (edge/source) + // - llmo/can_manage_user — add/delete user, assign capabilities, assign roles + // (Phase 2: state layer management endpoints will + // land under /facs/access-mappings) + // + // POST endpoints that are body-based queries (no side effects beyond a read / + // export) are mapped to `can_view`. Writes are categorised by their domain + // (configure vs onboard vs deploy), not by HTTP verb. + LLMO: { + // ---- Onboard / integrations ---------------------------------------- + 'POST /llmo/onboard': 'llmo/can_onboard', + 'POST /llmo/onboard/update-query-index': 'llmo/can_onboard', + 'POST /sites/:siteId/llmo/offboard': 'llmo/can_onboard', + 'PATCH /sites/:siteId/llmo/cdn-logs-bucket-config': 'llmo/can_onboard', + 'PATCH /sites/:siteId/llmo/cdn-logs-filter': 'llmo/can_onboard', + + // ---- Configure ----------------------------------------------------- + // Site-level LLMO config + 'POST /sites/:siteId/llmo/config': 'llmo/can_configure', + 'PATCH /sites/:siteId/llmo/config': 'llmo/can_configure', + // Customer intent + 'POST /sites/:siteId/llmo/customer-intent': 'llmo/can_configure', + 'PATCH /sites/:siteId/llmo/customer-intent/:intentKey': 'llmo/can_configure', + 'DELETE /sites/:siteId/llmo/customer-intent/:intentKey': 'llmo/can_configure', + // Prompts (questions) + 'POST /sites/:siteId/llmo/questions': 'llmo/can_configure', + 'PATCH /sites/:siteId/llmo/questions/:questionKey': 'llmo/can_configure', + 'DELETE /sites/:siteId/llmo/questions/:questionKey': 'llmo/can_configure', + // Strategy / opportunity review (state changes against configured content) + 'PUT /sites/:siteId/llmo/strategy': 'llmo/can_configure', + 'PUT /sites/:siteId/llmo/opportunities-reviewed': 'llmo/can_configure', + + // ---- Deploy -------------------------------------------------------- + // Edge-source optimization writes. Read-side endpoints stay under can_view. + 'POST /sites/:siteId/llmo/edge-optimize-config': 'llmo/can_deploy', + 'POST /sites/:siteId/llmo/edge-optimize-config/stage': 'llmo/can_deploy', + + // ---- View (read-only) ---------------------------------------------- + // Top-level LLMO surfaces + 'GET /v2/regions': 'llmo/can_view', + 'GET /llmo/agentic-traffic/global': 'llmo/can_view', + // Body-based queries that read sheet data (S2S: site:read). + 'POST /sites/:siteId/llmo/sheet-data/:dataSource': 'llmo/can_view', + 'POST /sites/:siteId/llmo/sheet-data/:sheetType/:dataSource': 'llmo/can_view', + 'POST /sites/:siteId/llmo/sheet-data/:sheetType/:week/:dataSource': 'llmo/can_view', + + // AI visibility + 'GET /llmo/ai-visibility/brands/stats': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/topics': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/prompts': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/cited-pages': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/topic-opportunities': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/top-brands': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/cited-sources': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/source-opportunities': 'llmo/can_view', + 'GET /llmo/ai-visibility/brands/competitors': 'llmo/can_view', + 'GET /llmo/ai-visibility/competitors/metrics': 'llmo/can_view', + 'GET /llmo/ai-visibility/competitors/gap-topics': 'llmo/can_view', + 'GET /llmo/ai-visibility/competitors/gap-source-domains': 'llmo/can_view', + 'GET /llmo/ai-visibility/competitors/gap-prompts': 'llmo/can_view', + 'GET /llmo/ai-visibility/meta': 'llmo/can_view', + 'GET /llmo/ai-visibility/prompts/responses/latest': 'llmo/can_view', + 'GET /llmo/ai-visibility/prompts/responses': 'llmo/can_view', + 'GET /llmo/ai-visibility/topics/research/stats': 'llmo/can_view', + 'GET /llmo/ai-visibility/topics/research/prompts': 'llmo/can_view', + 'GET /llmo/ai-visibility/topics/research/brands': 'llmo/can_view', + 'GET /llmo/ai-visibility/topics/research/source-domains': 'llmo/can_view', + 'GET /llmo/ai-visibility/topics/research': 'llmo/can_view', + 'GET /llmo/ai-visibility/topics/stats': 'llmo/can_view', + 'GET /llmo/ai-visibility/v1/topic/brand-topics': 'llmo/can_view', + 'GET /llmo/ai-visibility/v1/prompt/brand-prompts': 'llmo/can_view', + + // Brand presence — org-scoped, includes "all" and per-brand variants + 'GET /org/:spaceCatId/brands/:brandId/fanout-report': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/filter-dimensions': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/filter-dimensions': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/weeks': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/weeks': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/sentiment-overview': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/sentiment-overview': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/market-tracking-trends': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/market-tracking-trends': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/competitor-summary': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/competitor-summary': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/topics': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/topics': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/topics/:topicId/prompts': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/topics/:topicId/prompts': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/prompt-execution-status': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/prompt-execution-status': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/search': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/search': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/topics/:topicId/detail': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/topics/:topicId/detail': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/topics/:topicId/prompt-detail': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/topics/:topicId/prompt-detail': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/prompts/:promptId/detail': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/prompts/:promptId/detail': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/executions/:executionId/sources': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/executions/:executionId/sources': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/sentiment-movers': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/sentiment-movers': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/share-of-voice': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/share-of-voice': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/stats': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/stats': 'llmo/can_view', + + // URL inspector — read-only under brand presence + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/stats': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/stats': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/owned-urls': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/owned-urls': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/trending-urls': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/trending-urls': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/cited-domains': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/cited-domains': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/domain-urls': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/domain-urls': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/url-prompts': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/url-prompts': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/brand-presence/url-inspector/filter-dimensions': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/brand-presence/url-inspector/filter-dimensions': 'llmo/can_view', + + // Opportunities — org-scoped reads + 'GET /org/:spaceCatId/opportunities/count': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/all/opportunities': 'llmo/can_view', + 'GET /org/:spaceCatId/brands/:brandId/opportunities': 'llmo/can_view', + + // Agentic traffic (site-scoped) + 'GET /sites/:siteId/agentic-traffic/kpis': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/kpis-trend': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/by-region': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/by-category': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/by-page-type': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/by-status': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/by-user-agent': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/by-url': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/url-brand-presence': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/filter-dimensions': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/weeks': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/movers': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/has-data': 'llmo/can_view', + // Export — kicks off a data export job; read-only access semantics. + 'POST /sites/:siteId/agentic-traffic/urls/export': 'llmo/can_view', + 'GET /sites/:siteId/agentic-traffic/urls/export/:exportId': 'llmo/can_view', + + // Referral traffic (site-scoped) + 'GET /sites/:siteId/referral-traffic/kpis': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/trend': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/by-device': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/by-platform': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/by-region': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/by-page-intent': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/by-url': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/by-url-trend': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/business-impact': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/filter-dimensions': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/weeks': 'llmo/can_view', + 'GET /sites/:siteId/referral-traffic/has-data': 'llmo/can_view', + + // Site LLMO surfaces — read side + 'GET /sites/:siteId/llmo/brand-claims': 'llmo/can_view', + 'GET /sites/:siteId/llmo/config': 'llmo/can_view', + 'GET /sites/:siteId/llmo/customer-intent': 'llmo/can_view', + 'GET /sites/:siteId/llmo/data': 'llmo/can_view', + 'GET /sites/:siteId/llmo/data/:dataSource': 'llmo/can_view', + 'GET /sites/:siteId/llmo/data/:sheetType/:dataSource': 'llmo/can_view', + 'GET /sites/:siteId/llmo/data/:sheetType/:week/:dataSource': 'llmo/can_view', + 'GET /sites/:siteId/llmo/edge-optimize-config': 'llmo/can_view', + 'GET /sites/:siteId/llmo/edge-optimize-status': 'llmo/can_view', + 'GET /sites/:siteId/llmo/global-sheet-data/:configName': 'llmo/can_view', + 'GET /sites/:siteId/llmo/probes/edge-optimize': 'llmo/can_view', + 'GET /sites/:siteId/llmo/questions': 'llmo/can_view', + 'GET /sites/:siteId/llmo/rationale': 'llmo/can_view', + 'GET /sites/:siteId/llmo/sheet-data/:dataSource': 'llmo/can_view', + 'GET /sites/:siteId/llmo/sheet-data/:sheetType/:dataSource': 'llmo/can_view', + 'GET /sites/:siteId/llmo/sheet-data/:sheetType/:week/:dataSource': 'llmo/can_view', + 'GET /sites/:siteId/llmo/strategy': 'llmo/can_view', + 'GET /sites/:siteId/llmo/strategy/demo/brand-presence': 'llmo/can_view', + 'GET /sites/:siteId/llmo/strategy/demo/recommendations': 'llmo/can_view', + + // =================================================================== + // Cross-product routes — LLMO customers also call these. Deny-by-default + // in facsWrapper means anything an LLMO customer can plausibly hit must be + // declared here. Internal-only surfaces (admin/*, configurations/*, + // consumers/*, event/*, hooks/*, webhooks/*, slack/*, trigger, + // monitoring/*, ephemeral-run/*) are intentionally omitted and remain + // accessible only to internal identities (which bypass facsWrapper). + // =================================================================== + + // ---- Onboard (creation + integrations) ----------------------------- + // Admin-only creators (POST /sites, POST /projects, POST /organizations, + // POST /sites/:siteId/site-enrollments) are intentionally omitted — + // those handlers gate on `hasAdminAccess()` and are not reachable by + // external customers. They stay accessible to internal identities via + // facsWrapper's admin bypass. + 'POST /sites/:siteId/brand-profile': 'llmo/can_onboard', + 'POST /v2/orgs/:spaceCatId/brands': 'llmo/can_onboard', + 'POST /v2/orgs/:spaceCatId/sites/:siteId/sync-config': 'llmo/can_onboard', + 'POST /plg/onboard': 'llmo/can_onboard', + 'PATCH /sites/:siteId/config/cdn-logs': 'llmo/can_onboard', + + // ---- Deploy (edge optimizations + auto-fix) ------------------------ + 'POST /sites/:siteId/opportunities/:opportunityId/suggestions/edge-deploy': 'llmo/can_deploy', + 'POST /sites/:siteId/opportunities/:opportunityId/suggestions/edge-preview': 'llmo/can_deploy', + 'POST /sites/:siteId/opportunities/:opportunityId/suggestions/edge-live-preview': 'llmo/can_deploy', + 'POST /sites/:siteId/opportunities/:opportunityId/suggestions/edge-rollback': 'llmo/can_deploy', + 'POST /sites/:siteId/opportunities/:opportunityId/fixes/:fixId/actions/rolled_back': 'llmo/can_deploy', + 'PATCH /sites/:siteId/opportunities/:opportunityId/suggestions/auto-fix': 'llmo/can_deploy', + + // ---- Configure (default for writes that aren't onboard/deploy) ----- + // Admin-only writes live in INTERNAL_ROUTES above and bypass FACS entirely. + // DELETE + 'DELETE /sites/:siteId/geo-experiments/:geoExperimentId': 'llmo/can_configure', + 'DELETE /sites/:siteId/ims-org-access/:accessId': 'llmo/can_configure', + 'DELETE /sites/:siteId/opportunities/:opportunityId': 'llmo/can_configure', + 'DELETE /sites/:siteId/opportunities/:opportunityId/fixes/:fixId': 'llmo/can_configure', + 'DELETE /sites/:siteId/opportunities/:opportunityId/suggestions/:suggestionId': 'llmo/can_configure', + 'DELETE /sites/:siteId/reports/:reportId': 'llmo/can_configure', + 'DELETE /sites/:siteId/sentiment/guidelines/:guidelineId': 'llmo/can_configure', + 'DELETE /sites/:siteId/sentiment/topics/:topicId': 'llmo/can_configure', + 'DELETE /sites/:siteId/suggestions/grants/:grantId': 'llmo/can_configure', + 'DELETE /tools/api-keys/:id': 'llmo/can_configure', + 'DELETE /tools/import/jobs/:jobId': 'llmo/can_configure', + 'DELETE /v2/orgs/:spaceCatId/brands/:brandId': 'llmo/can_configure', + 'DELETE /v2/orgs/:spaceCatId/brands/:brandId/prompts/:promptId': 'llmo/can_configure', + 'DELETE /v2/orgs/:spaceCatId/categories/:categoryId': 'llmo/can_configure', + 'DELETE /v2/orgs/:spaceCatId/topics/:topicId': 'llmo/can_configure', + // PATCH + 'PATCH /contact-sales-leads/:contactSalesLeadId': 'llmo/can_configure', + 'PATCH /organizations/:organizationId': 'llmo/can_configure', + 'PATCH /projects/:projectId': 'llmo/can_configure', + 'PATCH /sites/:siteId': 'llmo/can_configure', + 'PATCH /sites/:siteId/geo-experiments/:geoExperimentId': 'llmo/can_configure', + 'PATCH /sites/:siteId/opportunities/:opportunityId': 'llmo/can_configure', + 'PATCH /sites/:siteId/opportunities/:opportunityId/fixes/:fixId': 'llmo/can_configure', + 'PATCH /sites/:siteId/opportunities/:opportunityId/status': 'llmo/can_configure', + 'PATCH /sites/:siteId/opportunities/:opportunityId/suggestions/:suggestionId': 'llmo/can_configure', + 'PATCH /sites/:siteId/opportunities/:opportunityId/suggestions/status': 'llmo/can_configure', + 'PATCH /sites/:siteId/reports/:reportId': 'llmo/can_configure', + 'PATCH /sites/:siteId/sentiment/guidelines/:guidelineId': 'llmo/can_configure', + 'PATCH /sites/:siteId/sentiment/topics/:topicId': 'llmo/can_configure', + 'PATCH /sites/:siteId/url-store': 'llmo/can_configure', + 'PATCH /tools/import/jobs/:jobId': 'llmo/can_configure', + 'PATCH /trial-users/email-preferences': 'llmo/can_configure', + 'PATCH /v2/orgs/:spaceCatId/brands/:brandId': 'llmo/can_configure', + 'PATCH /v2/orgs/:spaceCatId/brands/:brandId/prompts/:promptId': 'llmo/can_configure', + 'PATCH /v2/orgs/:spaceCatId/categories/:categoryId': 'llmo/can_configure', + 'PATCH /v2/orgs/:spaceCatId/topics/:topicId': 'llmo/can_configure', + // POST (non-onboard, non-deploy, non-query) + 'POST /consent-banner': 'llmo/can_configure', + 'POST /organizations/:organizationId/sites/:siteId/contact-sales-lead': 'llmo/can_configure', + 'POST /organizations/:organizationId/trial-user-invite': 'llmo/can_configure', + 'POST /preflight/beta/jobs': 'llmo/can_configure', + 'POST /preflight/jobs': 'llmo/can_configure', + 'POST /sites/:siteId/graph': 'llmo/can_configure', + 'POST /sites/:siteId/ims-org-access': 'llmo/can_configure', + 'POST /sites/:siteId/opportunities': 'llmo/can_configure', + 'POST /sites/:siteId/opportunities/:opportunityId/fixes': 'llmo/can_configure', + 'POST /sites/:siteId/opportunities/:opportunityId/suggestions': 'llmo/can_configure', + 'POST /sites/:siteId/reports': 'llmo/can_configure', + 'POST /sites/:siteId/sandbox/audit': 'llmo/can_configure', + 'POST /sites/:siteId/sentiment/guidelines': 'llmo/can_configure', + 'POST /sites/:siteId/sentiment/guidelines/:guidelineId/audits': 'llmo/can_configure', + 'POST /sites/:siteId/sentiment/guidelines/:guidelineId/audits/unlink': 'llmo/can_configure', + 'POST /sites/:siteId/sentiment/topics': 'llmo/can_configure', + 'POST /sites/:siteId/url-store': 'llmo/can_configure', + 'POST /sites/:siteId/url-store/delete': 'llmo/can_configure', + 'POST /sites/:siteId/user-activities': 'llmo/can_configure', + 'POST /sites/detect/jobs': 'llmo/can_configure', + 'POST /tools/api-keys': 'llmo/can_configure', + 'POST /tools/import/jobs': 'llmo/can_configure', + 'POST /tools/import/jobs/:jobId/result': 'llmo/can_configure', + 'POST /tools/scrape/jobs': 'llmo/can_configure', + 'POST /v2/orgs/:spaceCatId/brands/:brandId/prompts': 'llmo/can_configure', + 'POST /v2/orgs/:spaceCatId/brands/:brandId/prompts/delete': 'llmo/can_configure', + 'POST /v2/orgs/:spaceCatId/categories': 'llmo/can_configure', + 'POST /v2/orgs/:spaceCatId/topics': 'llmo/can_configure', + // POSTs that S2S confirms are :write (not body-based queries). + 'POST /llmo/agentic-traffic/global': 'llmo/can_configure', + 'POST /sites/:siteId/traffic/predominant-type': 'llmo/can_configure', + 'POST /sites/:siteId/traffic/predominant-type/:channel': 'llmo/can_configure', + + // ---- View (read-only) ---------------------------------------------- + // Cross-product GETs + POSTs that are body-based queries (no side + // effects beyond a read / lookup). Admin-only reads live in + // INTERNAL_ROUTES above and bypass FACS entirely. + 'GET /consent-banner/:jobId': 'llmo/can_view', + 'GET /organizations/:organizationId': 'llmo/can_view', + 'GET /organizations/:organizationId/brands': 'llmo/can_view', + 'GET /organizations/:organizationId/by-project-name/:projectName/sites': 'llmo/can_view', + 'GET /organizations/:organizationId/contact-sales-leads': 'llmo/can_view', + 'GET /organizations/:organizationId/entitlements': 'llmo/can_view', + 'GET /organizations/:organizationId/feature-flags': 'llmo/can_view', + 'GET /organizations/:organizationId/projects': 'llmo/can_view', + 'GET /organizations/:organizationId/projects/:projectId/sites': 'llmo/can_view', + 'GET /organizations/:organizationId/sites': 'llmo/can_view', + 'GET /organizations/:organizationId/sites/:siteId/contact-sales-lead': 'llmo/can_view', + 'GET /organizations/:organizationId/trial-users': 'llmo/can_view', + 'GET /organizations/:organizationId/userDetails/:externalUserId': 'llmo/can_view', + 'GET /organizations/by-ims-org-id/:imsOrgId': 'llmo/can_view', + 'GET /plg/onboard/status/:imsOrgId': 'llmo/can_view', + 'GET /preflight/beta/jobs/:jobId': 'llmo/can_view', + 'GET /preflight/jobs/:jobId': 'llmo/can_view', + 'GET /projects/:projectId': 'llmo/can_view', + 'GET /projects/:projectId/sites': 'llmo/can_view', + 'GET /projects/:projectId/sites/primary-locale': 'llmo/can_view', + 'GET /projects/by-project-name/:projectName/sites': 'llmo/can_view', + 'GET /sites-resolve': 'llmo/can_view', + 'GET /sites/:siteId': 'llmo/can_view', + 'GET /sites/:siteId/audits': 'llmo/can_view', + 'GET /sites/:siteId/audits/:auditType': 'llmo/can_view', + 'GET /sites/:siteId/audits/:auditType/:auditedAt': 'llmo/can_view', + 'GET /sites/:siteId/audits/latest': 'llmo/can_view', + 'GET /sites/:siteId/bot-blocker': 'llmo/can_view', + 'GET /sites/:siteId/brand-guidelines': 'llmo/can_view', + 'GET /sites/:siteId/brand-profile': 'llmo/can_view', + 'GET /sites/:siteId/experiments': 'llmo/can_view', + 'GET /sites/:siteId/files': 'llmo/can_view', + 'GET /sites/:siteId/geo-experiments': 'llmo/can_view', + 'GET /sites/:siteId/geo-experiments/:geoExperimentId': 'llmo/can_view', + 'GET /sites/:siteId/ims-org-access': 'llmo/can_view', + 'GET /sites/:siteId/ims-org-access/:accessId': 'llmo/can_view', + 'GET /sites/:siteId/latest-audit/:auditType': 'llmo/can_view', + 'GET /sites/:siteId/latest-metrics': 'llmo/can_view', + 'GET /sites/:siteId/metadata': 'llmo/can_view', + 'GET /sites/:siteId/metrics/:metric/:source': 'llmo/can_view', + 'GET /sites/:siteId/metrics/:metric/:source/by-url/:base64PageUrl': 'llmo/can_view', + 'GET /sites/:siteId/opportunities': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/fixes': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/fixes/:fixId': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/fixes/:fixId/suggestions': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/fixes/by-status/:status': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/:suggestionId': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/:suggestionId/fixes': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/by-status/:status': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/by-status/:status/paged/:limit': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/by-status/:status/paged/:limit/:cursor': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/paged/:limit': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/:opportunityId/suggestions/paged/:limit/:cursor': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/by-status/:status': 'llmo/can_view', + 'GET /sites/:siteId/opportunities/top-paid': 'llmo/can_view', + 'GET /sites/:siteId/page-citability/counts': 'llmo/can_view', + 'GET /sites/:siteId/reports': 'llmo/can_view', + 'GET /sites/:siteId/reports/:reportId': 'llmo/can_view', + 'GET /sites/:siteId/scraped-content/:type': 'llmo/can_view', + 'GET /sites/:siteId/sentiment/config': 'llmo/can_view', + 'GET /sites/:siteId/sentiment/guidelines': 'llmo/can_view', + 'GET /sites/:siteId/sentiment/guidelines/:guidelineId': 'llmo/can_view', + 'GET /sites/:siteId/sentiment/topics': 'llmo/can_view', + 'GET /sites/:siteId/sentiment/topics/:topicId': 'llmo/can_view', + 'GET /sites/:siteId/site-enrollments': 'llmo/can_view', + 'GET /sites/:siteId/tokens': 'llmo/can_view', + 'GET /sites/:siteId/tokens/:tokenId/grants': 'llmo/can_view', + 'GET /sites/:siteId/tokens/by-type/:tokenType': 'llmo/can_view', + 'GET /sites/:siteId/top-pages': 'llmo/can_view', + 'GET /sites/:siteId/top-pages/:source': 'llmo/can_view', + 'GET /sites/:siteId/top-pages/:source/:geo': 'llmo/can_view', + // Paid traffic (cross-product reads) + 'GET /sites/:siteId/traffic/paid': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign-channel-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign-channel-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign-channel-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign-url': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/campaign-url-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/channel-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/channel-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/display-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/display-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/impact-by-page': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/impact-by-page-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/impact-by-page-traffic-type': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/impact-by-page-traffic-type-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-campaign-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-platform-campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-platform-campaign-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/page-type-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/pta2/weekly-summary': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/search-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/search-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/social-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/social-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-campaign-channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-campaign-channel-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-campaign-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-channel-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-url': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-url-channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-url-channel-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/temporal-series-by-url-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/traffic-loss-by-devices': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/type': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/type-campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/type-channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/type-channel-campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/type-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/type-device-channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-channel': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-channel-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-channel-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-campaign': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-campaign-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-campaign-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-platform-campaign-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/url-page-type-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/video-platform': 'llmo/can_view', + 'GET /sites/:siteId/traffic/paid/video-platform-device': 'llmo/can_view', + 'GET /sites/:siteId/url-store': 'llmo/can_view', + 'GET /sites/:siteId/url-store/:base64Url': 'llmo/can_view', + 'GET /sites/:siteId/url-store/by-audit/:auditType': 'llmo/can_view', + 'GET /sites/:siteId/user-activities': 'llmo/can_view', + 'GET /sites/by-base-url/:baseURL': 'llmo/can_view', + 'GET /sites/detect/jobs/:jobId': 'llmo/can_view', + 'GET /tools/api-keys': 'llmo/can_view', + 'GET /tools/import/jobs/:jobId': 'llmo/can_view', + 'GET /tools/import/jobs/:jobId/progress': 'llmo/can_view', + 'GET /tools/import/jobs/by-date-range/:startDate/:endDate/all-jobs': 'llmo/can_view', + 'GET /tools/scrape/jobs/:jobId': 'llmo/can_view', + 'GET /tools/scrape/jobs/:jobId/results': 'llmo/can_view', + 'GET /tools/scrape/jobs/by-base-url/:baseURL': 'llmo/can_view', + 'GET /tools/scrape/jobs/by-base-url/:baseURL/by-processingtype/:processingType': 'llmo/can_view', + 'GET /tools/scrape/jobs/by-date-range/:startDate/:endDate/all-jobs': 'llmo/can_view', + 'GET /tools/scrape/jobs/by-url/:url': 'llmo/can_view', + 'GET /tools/scrape/jobs/by-url/:url/:processingType': 'llmo/can_view', + 'GET /trial-users/email-preferences': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/brands': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/brands/:brandId': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/brands/:brandId/prompts': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/brands/:brandId/prompts/:promptId': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/categories': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/sites/:siteId/brand': 'llmo/can_view', + 'GET /v2/orgs/:spaceCatId/topics': 'llmo/can_view', + // POST as query / bulk-read (S2S confirms these are :read). + 'POST /organizations/:organizationId/userDetails': 'llmo/can_view', + 'POST /sites/:siteId/page-relationships/search': 'llmo/can_view', + // Autofix check returns recommendations without applying them + // (S2S: site:read). + 'POST /sites/:siteId/autofix-checks': 'llmo/can_view', + + // ---- Manage user -------------------------------------------------- + // Phase 2: state-layer management endpoints (`/facs/access-mappings/*`) + // and any LLMO-scoped role/capability assignment endpoints land here. + // Intentionally empty for Phase 1 (the user-management routes that + // exist today, e.g. POST /organizations/:organizationId/trial-user-invite, + // are mapped to `can_configure` until a dedicated permission lands). + }, + + // ASO — TBD. MAC policy authoring for ASO is pending; routes will be added + // once the permission set is agreed. Until then, the absent/empty sub-map + // means ASO is not enrolled in FACS regardless of LaunchDarkly state. + ASO: { + }, + + // ACO — TBD. Same status as ASO. + ACO: { + }, + }, +}; + +export default routeFacsCapabilities; diff --git a/test/routes/facs-capabilities.test.js b/test/routes/facs-capabilities.test.js new file mode 100644 index 000000000..34747340b --- /dev/null +++ b/test/routes/facs-capabilities.test.js @@ -0,0 +1,173 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { readFileSync } from 'fs'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; +import { expect } from 'chai'; + +import routeFacsCapabilities from '../../src/routes/facs-capabilities.js'; + +const testDir = dirname(fileURLToPath(import.meta.url)); +const projectRoot = join(testDir, '..', '..'); + +/** + * Reads `src/routes/index.js` and returns the set of every `'METHOD /path'` literal + * declared as a route key. Implementation mirrors the regex used elsewhere to lock + * the route surface (e.g. `test/routes/index.test.js`). + */ +function loadAllDeclaredRoutes() { + const source = readFileSync(join(projectRoot, 'src/routes/index.js'), 'utf8'); + const re = /'((?:GET|POST|PATCH|PUT|DELETE) \/[^']*)'/g; + const out = new Set(); + for (const m of source.matchAll(re)) { + out.add(m[1]); + } + return out; +} + +/** + * Pins the structural contract `facsWrapper` (in `@adobe/spacecat-shared-http-utils`) + * depends on, plus the coverage invariant against `src/routes/index.js`: + * + * - top level has exactly two keys: `INTERNAL_ROUTES` (array) and `PRODUCTS_ROUTES` (object) + * - `INTERNAL_ROUTES` is an array of unique `'METHOD /path'` strings + * - `PRODUCTS_ROUTES` keys are uppercase product codes; each value is an object + * - each product route key is `'METHOD /path'` + * - each product permission value is `'/'` whose prefix equals + * the enclosing product key (case-insensitive) + * - every route in either bucket exists in `src/routes/index.js` (no stale entries) + * - for any populated product P: + * routes(P) ∪ INTERNAL_ROUTES = all declared routes + * routes(P) ∩ INTERNAL_ROUTES = ∅ + */ +describe('routeFacsCapabilities', () => { + const METHOD_PATH_RE = /^(GET|POST|PATCH|PUT|DELETE) \/.+$/; + const PERMISSION_RE = /^[a-z][a-z0-9_-]*\/[a-z][a-z0-9_-]*$/; + + let allDeclaredRoutes; + before(() => { + allDeclaredRoutes = loadAllDeclaredRoutes(); + }); + + describe('top-level shape', () => { + it('exposes exactly INTERNAL_ROUTES and PRODUCTS_ROUTES', () => { + expect(routeFacsCapabilities).to.have.all.keys('INTERNAL_ROUTES', 'PRODUCTS_ROUTES'); + }); + + it('INTERNAL_ROUTES is an array', () => { + expect(routeFacsCapabilities.INTERNAL_ROUTES).to.be.an('array'); + }); + + it('PRODUCTS_ROUTES is an object', () => { + expect(routeFacsCapabilities.PRODUCTS_ROUTES).to.be.an('object'); + }); + }); + + describe('INTERNAL_ROUTES', () => { + it('contains unique route strings', () => { + const arr = routeFacsCapabilities.INTERNAL_ROUTES; + expect(new Set(arr).size, 'INTERNAL_ROUTES has duplicate entries') + .to.equal(arr.length); + }); + + it('each entry follows the "METHOD /path" shape', () => { + routeFacsCapabilities.INTERNAL_ROUTES.forEach((route) => { + expect(route).to.match(METHOD_PATH_RE); + }); + }); + + it('every entry exists in src/routes/index.js (no stale routes)', () => { + const stale = routeFacsCapabilities.INTERNAL_ROUTES + .filter((route) => !allDeclaredRoutes.has(route)); + expect(stale, `stale INTERNAL_ROUTES not found in src/routes/index.js: ${stale.join(', ')}`) + .to.deep.equal([]); + }); + }); + + describe('PRODUCTS_ROUTES', () => { + it('keys are uppercase product codes', () => { + Object.keys(routeFacsCapabilities.PRODUCTS_ROUTES).forEach((product) => { + expect(product, `product key '${product}' must be uppercase`) + .to.equal(product.toUpperCase()); + }); + }); + + it('declares the Phase 1 products LLMO, ASO, ACO', () => { + expect(routeFacsCapabilities.PRODUCTS_ROUTES).to.have.all.keys('LLMO', 'ASO', 'ACO'); + }); + + it('each product value is an object (possibly empty)', () => { + Object.entries(routeFacsCapabilities.PRODUCTS_ROUTES).forEach(([product, subMap]) => { + expect(subMap, `${product} sub-map`).to.be.an('object'); + }); + }); + + it('each route key follows the "METHOD /path" shape', () => { + Object.entries(routeFacsCapabilities.PRODUCTS_ROUTES).forEach(([product, subMap]) => { + Object.keys(subMap).forEach((route) => { + expect(route, `${product} route '${route}'`).to.match(METHOD_PATH_RE); + }); + }); + }); + + it('each permission value is a "/" string scoped to its product', () => { + Object.entries(routeFacsCapabilities.PRODUCTS_ROUTES).forEach(([product, subMap]) => { + Object.entries(subMap).forEach(([route, permission]) => { + expect(permission, `${product} ${route}`) + .to.be.a('string').and.match(PERMISSION_RE); + const [prefix] = permission.split('/'); + expect( + prefix, + `permission '${permission}' for ${product} ${route} must be prefixed with the product code`, + ).to.equal(product.toLowerCase()); + }); + }); + }); + + it('every product route exists in src/routes/index.js (no stale routes)', () => { + Object.entries(routeFacsCapabilities.PRODUCTS_ROUTES).forEach(([product, subMap]) => { + const stale = Object.keys(subMap).filter((route) => !allDeclaredRoutes.has(route)); + expect(stale, `stale ${product} routes not found in src/routes/index.js: ${stale.join(', ')}`) + .to.deep.equal([]); + }); + }); + }); + + describe('invariant: routes(product) ∪ INTERNAL_ROUTES = all routes', () => { + it('INTERNAL_ROUTES is disjoint from every product sub-map', () => { + const internalSet = new Set(routeFacsCapabilities.INTERNAL_ROUTES); + Object.entries(routeFacsCapabilities.PRODUCTS_ROUTES).forEach(([product, subMap]) => { + const overlap = Object.keys(subMap).filter((route) => internalSet.has(route)); + expect(overlap, `${product} routes overlap with INTERNAL_ROUTES: ${overlap.join(', ')}`) + .to.deep.equal([]); + }); + }); + + it('every populated product P satisfies routes(P) ∪ INTERNAL_ROUTES = all declared routes', () => { + const internalSet = new Set(routeFacsCapabilities.INTERNAL_ROUTES); + Object.entries(routeFacsCapabilities.PRODUCTS_ROUTES).forEach(([product, subMap]) => { + const productRoutes = Object.keys(subMap); + if (productRoutes.length === 0) { + // ASO/ACO are stubs pending MAC policy — invariant kicks in once populated. + return; + } + const covered = new Set([...productRoutes, ...internalSet]); + const missing = [...allDeclaredRoutes].filter((route) => !covered.has(route)); + expect( + missing, + `${product} is missing ${missing.length} routes that are not in INTERNAL_ROUTES: ${missing.slice(0, 10).join(', ')}${missing.length > 10 ? '…' : ''}`, + ).to.deep.equal([]); + }); + }); + }); +});