From 5f21361a2d8f01b8032cc08cc7f849c5cc774482 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Fri, 30 Aug 2024 17:06:44 +0200 Subject: [PATCH 01/20] add steps component and initial permutations --- package-lock.json | 2576 ++++++++++++----- package.json | 1 + pages/steps/permutations-interactive.page.tsx | 23 + .../steps/permutations-with-updates.page.tsx | 160 + pages/steps/permutations.page.tsx | 23 + pages/steps/permutationts-utils.tsx | 546 ++++ pages/steps/styles.scss | 10 + src/steps/__tests__/steps.test.tsx | 66 + src/steps/index.tsx | 23 + src/steps/interfaces.ts | 43 + src/steps/internal.tsx | 52 + src/steps/styles.scss | 60 + src/steps/test-classes/styles.scss | 12 + src/test-utils/dom/steps/index.ts | 16 + 14 files changed, 2856 insertions(+), 755 deletions(-) create mode 100644 pages/steps/permutations-interactive.page.tsx create mode 100644 pages/steps/permutations-with-updates.page.tsx create mode 100644 pages/steps/permutations.page.tsx create mode 100644 pages/steps/permutationts-utils.tsx create mode 100644 pages/steps/styles.scss create mode 100644 src/steps/__tests__/steps.test.tsx create mode 100644 src/steps/index.tsx create mode 100644 src/steps/interfaces.ts create mode 100644 src/steps/internal.tsx create mode 100644 src/steps/styles.scss create mode 100644 src/steps/test-classes/styles.scss create mode 100644 src/test-utils/dom/steps/index.ts diff --git a/package-lock.json b/package-lock.json index fcbbcae878..213665609c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,6 +96,7 @@ "prettier": "^3.2.5", "react": "^16.14.0", "react-dom": "^16.14.0", + "react-markdown": "^8.0.7", "react-router-dom": "^5.3.0", "react-test-renderer": "^16.14.0", "react-virtual": "^2.8.2", @@ -164,576 +165,653 @@ "node": ">=6.0.0" } }, - "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dev": true, "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/crc32/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dev": true, "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dev": true, "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dev": true, "dependencies": { "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@aws-sdk/client-device-farm": { - "version": "3.423.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-device-farm/-/client-device-farm-3.423.0.tgz", - "integrity": "sha512-i8TWcZ3SCnRN7iW1NYialn98SEwcPwGs97tafYnq0F0RoDi7lycpmzrsLLXv6hnaIxbGxYyQjDUWSngyyWq5Ug==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.423.0", - "@aws-sdk/credential-provider-node": "3.423.0", - "@aws-sdk/middleware-host-header": "3.418.0", - "@aws-sdk/middleware-logger": "3.418.0", - "@aws-sdk/middleware-recursion-detection": "3.418.0", - "@aws-sdk/middleware-signing": "3.418.0", - "@aws-sdk/middleware-user-agent": "3.418.0", - "@aws-sdk/region-config-resolver": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@aws-sdk/util-endpoints": "3.418.0", - "@aws-sdk/util-user-agent-browser": "3.418.0", - "@aws-sdk/util-user-agent-node": "3.418.0", - "@smithy/config-resolver": "^2.0.10", - "@smithy/fetch-http-handler": "^2.1.5", - "@smithy/hash-node": "^2.0.9", - "@smithy/invalid-dependency": "^2.0.9", - "@smithy/middleware-content-length": "^2.0.11", - "@smithy/middleware-endpoint": "^2.0.9", - "@smithy/middleware-retry": "^2.0.12", - "@smithy/middleware-serde": "^2.0.9", - "@smithy/middleware-stack": "^2.0.2", - "@smithy/node-config-provider": "^2.0.12", - "@smithy/node-http-handler": "^2.1.5", - "@smithy/protocol-http": "^3.0.5", - "@smithy/smithy-client": "^2.1.6", - "@smithy/types": "^2.3.3", - "@smithy/url-parser": "^2.0.9", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.10", - "@smithy/util-defaults-mode-node": "^2.0.12", - "@smithy/util-retry": "^2.0.2", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dev": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.423.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.423.0.tgz", - "integrity": "sha512-znIufHkwhCIePgaYciIs3x/+BpzR57CZzbCKHR9+oOvGyufEPPpUT5bFLvbwTgfiVkTjuk6sG/ES3U5Bc+xtrA==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.418.0", - "@aws-sdk/middleware-logger": "3.418.0", - "@aws-sdk/middleware-recursion-detection": "3.418.0", - "@aws-sdk/middleware-user-agent": "3.418.0", - "@aws-sdk/region-config-resolver": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@aws-sdk/util-endpoints": "3.418.0", - "@aws-sdk/util-user-agent-browser": "3.418.0", - "@aws-sdk/util-user-agent-node": "3.418.0", - "@smithy/config-resolver": "^2.0.10", - "@smithy/fetch-http-handler": "^2.1.5", - "@smithy/hash-node": "^2.0.9", - "@smithy/invalid-dependency": "^2.0.9", - "@smithy/middleware-content-length": "^2.0.11", - "@smithy/middleware-endpoint": "^2.0.9", - "@smithy/middleware-retry": "^2.0.12", - "@smithy/middleware-serde": "^2.0.9", - "@smithy/middleware-stack": "^2.0.2", - "@smithy/node-config-provider": "^2.0.12", - "@smithy/node-http-handler": "^2.1.5", - "@smithy/protocol-http": "^3.0.5", - "@smithy/smithy-client": "^2.1.6", - "@smithy/types": "^2.3.3", - "@smithy/url-parser": "^2.0.9", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.10", - "@smithy/util-defaults-mode-node": "^2.0.12", - "@smithy/util-retry": "^2.0.2", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-device-farm": { + "version": "3.641.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-device-farm/-/client-device-farm-3.641.0.tgz", + "integrity": "sha512-FbyRu9qhFvr2sNs4waV8QX3pHPGY12jf4Zf4olchpsbcBSDd4Z6NlhMVNNsjJsryTSLu/lvh77XHGers2dG6sA==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.637.0", + "@aws-sdk/client-sts": "3.637.0", + "@aws-sdk/core": "3.635.0", + "@aws-sdk/credential-provider-node": "3.637.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.637.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.637.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.4.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.15", + "@smithy/util-defaults-mode-node": "^3.0.15", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.637.0.tgz", + "integrity": "sha512-+KjLvgX5yJYROWo3TQuwBJlHCY0zz9PsLuEolmXQn0BVK1L/m9GteZHtd+rEdAoDGBpE0Xqjy1oz5+SmtsaRUw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.635.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.637.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.637.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.4.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.15", + "@smithy/util-defaults-mode-node": "^3.0.15", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.637.0.tgz", + "integrity": "sha512-27bHALN6Qb6m6KZmPvRieJ/QRlj1lyac/GT2Rn5kJpre8Mpp+yxrtvp3h9PjNBty4lCeFEENfY4dGNSozBuBcw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.635.0", + "@aws-sdk/credential-provider-node": "3.637.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.637.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.637.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.4.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.15", + "@smithy/util-defaults-mode-node": "^3.0.15", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.637.0" + } + }, "node_modules/@aws-sdk/client-sts": { - "version": "3.423.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.423.0.tgz", - "integrity": "sha512-EcpkKu02QZbRX6dQE0u7a8RgWrn/5riz1qAlKd7rM8FZJpr/D6GGX8ZzWxjgp7pRUgfNvinTmIudDnyQY3v9Mg==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.423.0", - "@aws-sdk/middleware-host-header": "3.418.0", - "@aws-sdk/middleware-logger": "3.418.0", - "@aws-sdk/middleware-recursion-detection": "3.418.0", - "@aws-sdk/middleware-sdk-sts": "3.418.0", - "@aws-sdk/middleware-signing": "3.418.0", - "@aws-sdk/middleware-user-agent": "3.418.0", - "@aws-sdk/region-config-resolver": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@aws-sdk/util-endpoints": "3.418.0", - "@aws-sdk/util-user-agent-browser": "3.418.0", - "@aws-sdk/util-user-agent-node": "3.418.0", - "@smithy/config-resolver": "^2.0.10", - "@smithy/fetch-http-handler": "^2.1.5", - "@smithy/hash-node": "^2.0.9", - "@smithy/invalid-dependency": "^2.0.9", - "@smithy/middleware-content-length": "^2.0.11", - "@smithy/middleware-endpoint": "^2.0.9", - "@smithy/middleware-retry": "^2.0.12", - "@smithy/middleware-serde": "^2.0.9", - "@smithy/middleware-stack": "^2.0.2", - "@smithy/node-config-provider": "^2.0.12", - "@smithy/node-http-handler": "^2.1.5", - "@smithy/protocol-http": "^3.0.5", - "@smithy/smithy-client": "^2.1.6", - "@smithy/types": "^2.3.3", - "@smithy/url-parser": "^2.0.9", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.10", - "@smithy/util-defaults-mode-node": "^2.0.12", - "@smithy/util-retry": "^2.0.2", - "@smithy/util-utf8": "^2.0.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.637.0.tgz", + "integrity": "sha512-xUi7x4qDubtA8QREtlblPuAcn91GS/09YVEY/RwU7xCY0aqGuFwgszAANlha4OUIqva8oVj2WO4gJuG+iaSnhw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.637.0", + "@aws-sdk/core": "3.635.0", + "@aws-sdk/credential-provider-node": "3.637.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.637.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.637.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.4.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.15", + "@smithy/util-defaults-mode-node": "^3.0.15", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.418.0.tgz", - "integrity": "sha512-e74sS+x63EZUBO+HaI8zor886YdtmULzwKdctsZp5/37Xho1CVUNtEC+fYa69nigBD9afoiH33I4JggaHgrekQ==", + "node_modules/@aws-sdk/core": { + "version": "3.635.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.635.0.tgz", + "integrity": "sha512-i1x/E/sgA+liUE1XJ7rj1dhyXpAKO1UKFUcTTHXok2ARjWTvszHnSXMOsB77aPbmn0fUp1JTx2kHUAZ1LVt5Bg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@smithy/core": "^2.4.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.423.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.423.0.tgz", - "integrity": "sha512-7CsFWz8g7dQmblp57XzzxMirO4ClowGZIOwAheBkmk6q1XHbllcHFnbh2kdPyQQ0+JmjDg6waztIc7dY7Ycfvw==", + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.418.0", - "@aws-sdk/credential-provider-process": "3.418.0", - "@aws-sdk/credential-provider-sso": "3.423.0", - "@aws-sdk/credential-provider-web-identity": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.423.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.423.0.tgz", - "integrity": "sha512-lygbGJJUnDpgo8OEqdoYd51BKkyBVQ1Catiua/m0aHvL+SCmVrHiYPQPawWYGxpH8X3DXdXa0nd0LkEaevrHRg==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.635.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.635.0.tgz", + "integrity": "sha512-iJyRgEjOCQlBMXqtwPLIKYc7Bsc6nqjrZybdMDenPDa+kmLg7xh8LxHsu9088e+2/wtLicE34FsJJIfzu3L82g==", "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.418.0", - "@aws-sdk/credential-provider-ini": "3.423.0", - "@aws-sdk/credential-provider-process": "3.418.0", - "@aws-sdk/credential-provider-sso": "3.423.0", - "@aws-sdk/credential-provider-web-identity": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.418.0.tgz", - "integrity": "sha512-xPbdm2WKz1oH6pTkrJoUmr3OLuqvvcPYTQX0IIlc31tmDwDWPQjXGGFD/vwZGIZIkKaFpFxVMgAzfFScxox7dw==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.637.0.tgz", + "integrity": "sha512-h+PFCWfZ0Q3Dx84SppET/TFpcQHmxFW8/oV9ArEvMilw4EBN+IlxgbL0CnHwjHW64szcmrM0mbebjEfHf4FXmw==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.635.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.637.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.637.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.423.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.423.0.tgz", - "integrity": "sha512-zAH68IjRMmW22USbsCVQ5Q6AHqhmWABwLbZAMocSGMasddTGv/nkA/nUiVCJ/B4LI3P81FoPQVrG5JxNmkNH0w==", - "dev": true, - "dependencies": { - "@aws-sdk/client-sso": "3.423.0", - "@aws-sdk/token-providers": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.637.0.tgz", + "integrity": "sha512-yoEhoxJJfs7sPVQ6Is939BDQJZpZCoUgKr/ySse4YKOZ24t4VqgHA6+wV7rYh+7IW24Rd91UTvEzSuHYTlxlNA==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.635.0", + "@aws-sdk/credential-provider-ini": "3.637.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.637.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.418.0.tgz", - "integrity": "sha512-do7ang565n9p3dS1JdsQY01rUfRx8vkxQqz5M8OlcEHBNiCdi2PvSjNwcBdrv/FKkyIxZb0TImOfBSt40hVdxQ==", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.418.0.tgz", - "integrity": "sha512-LrMTdzalkPw/1ujLCKPLwCGvPMCmT4P+vOZQRbSEVZPnlZk+Aj++aL/RaHou0jL4kJH3zl8iQepriBt4a7UvXQ==", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.637.0.tgz", + "integrity": "sha512-Mvz+h+e62/tl+dVikLafhv+qkZJ9RUb8l2YN/LeKMWkxQylPT83CPk9aimVhCV89zth1zpREArl97+3xsfgQvA==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/protocol-http": "^3.0.5", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/client-sso": "3.637.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.418.0.tgz", - "integrity": "sha512-StKGmyPVfoO/wdNTtKemYwoJsqIl4l7oqarQY7VSf2Mp3mqaa+njLViHsQbirYpyqpgUEusOnuTlH5utxJ1NsQ==", + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.418.0.tgz", - "integrity": "sha512-kKFrIQglBLUFPbHSDy1+bbe3Na2Kd70JSUC3QLMbUHmqipXN8KeXRfAj7vTv97zXl0WzG0buV++WcNwOm1rFjg==", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/protocol-http": "^3.0.5", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.418.0.tgz", - "integrity": "sha512-cW8ijrCTP+mgihvcq4+TbhAcE/we5lFl4ydRqvTdtcSnYQAVQADg47rnTScQiFsPFEB3NKq7BGeyTJF9MKolPA==", + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", "dev": true, "dependencies": { - "@aws-sdk/middleware-signing": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-signing": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.418.0.tgz", - "integrity": "sha512-onvs5KoYQE8OlOE740RxWBGtsUyVIgAo0CzRKOQO63ZEYqpL1Os+MS1CGzdNhvQnJgJruE1WW+Ix8fjN30zKPA==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.5", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.3.3", - "@smithy/util-middleware": "^2.0.2", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.418.0.tgz", - "integrity": "sha512-Jdcztg9Tal9SEAL0dKRrnpKrm6LFlWmAhvuwv0dQ7bNTJxIxyEFbpqdgy7mpQHsLVZgq1Aad/7gT/72c9igyZw==", + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.637.0.tgz", + "integrity": "sha512-EYo0NE9/da/OY8STDsK2LvM4kNa79DBsf4YVtaG4P5pZ615IeFsD8xOHZeuJmUrSMlVQ8ywPRX7WMucUybsKug==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@aws-sdk/util-endpoints": "3.418.0", - "@smithy/protocol-http": "^3.0.5", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.637.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.418.0.tgz", - "integrity": "sha512-lJRZ/9TjZU6yLz+mAwxJkcJZ6BmyYoIJVo1p5+BN//EFdEmC8/c0c9gXMRzfISV/mqWSttdtccpAyN4/goHTYA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dev": true, "dependencies": { - "@smithy/node-config-provider": "^2.0.12", - "@smithy/types": "^2.3.3", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.2", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.418.0.tgz", - "integrity": "sha512-9P7Q0VN0hEzTngy3Sz5eya2qEOEf0Q8qf1vB3um0gE6ID6EVAdz/nc/DztfN32MFxk8FeVBrCP5vWdoOzmd72g==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.418.0", - "@aws-sdk/middleware-logger": "3.418.0", - "@aws-sdk/middleware-recursion-detection": "3.418.0", - "@aws-sdk/middleware-user-agent": "3.418.0", - "@aws-sdk/types": "3.418.0", - "@aws-sdk/util-endpoints": "3.418.0", - "@aws-sdk/util-user-agent-browser": "3.418.0", - "@aws-sdk/util-user-agent-node": "3.418.0", - "@smithy/config-resolver": "^2.0.10", - "@smithy/fetch-http-handler": "^2.1.5", - "@smithy/hash-node": "^2.0.9", - "@smithy/invalid-dependency": "^2.0.9", - "@smithy/middleware-content-length": "^2.0.11", - "@smithy/middleware-endpoint": "^2.0.9", - "@smithy/middleware-retry": "^2.0.12", - "@smithy/middleware-serde": "^2.0.9", - "@smithy/middleware-stack": "^2.0.2", - "@smithy/node-config-provider": "^2.0.12", - "@smithy/node-http-handler": "^2.1.5", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.5", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.6", - "@smithy/types": "^2.3.3", - "@smithy/url-parser": "^2.0.9", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.10", - "@smithy/util-defaults-mode-node": "^2.0.12", - "@smithy/util-retry": "^2.0.2", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.614.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.418.0.tgz", - "integrity": "sha512-y4PQSH+ulfFLY0+FYkaK4qbIaQI9IJNMO2xsxukW6/aNoApNymN1D2FSi2la8Qbp/iPjNDKsG8suNPm9NtsWXQ==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.418.0.tgz", - "integrity": "sha512-sYSDwRTl7yE7LhHkPzemGzmIXFVHSsi3AQ1KeNEk84eBqxMHHcCc2kqklaBk2roXWe50QDgRMy1ikZUxvtzNHQ==", + "version": "3.637.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.637.0.tgz", + "integrity": "sha512-pAqOKUHeVWHEXXDIp/qoMk/6jyxIb6GGjnK1/f8dKHtKIEs4tKsnnL563gceEvdad53OPXIt86uoevCcCzmBnw==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.418.0.tgz", - "integrity": "sha512-c4p4mc0VV/jIeNH0lsXzhJ1MpWRLuboGtNEpqE4s1Vl9ck2amv9VdUUZUmHbg+bVxlMgRQ4nmiovA4qIrqGuyg==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/types": "^2.3.3", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.418.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.418.0.tgz", - "integrity": "sha512-BXMskXFtg+dmzSCgmnWOffokxIbPr1lFqa1D9kvM3l3IFRiFGx2IyDg+8MAhq11aPDLvoa/BDuQ0Yqma5izOhg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.418.0", - "@smithy/node-config-provider": "^2.0.12", - "@smithy/types": "^2.3.3", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -744,15 +822,6 @@ } } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, - "dependencies": { - "tslib": "^2.3.1" - } - }, "node_modules/@babel/code-frame": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", @@ -2561,536 +2630,556 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.10.tgz", - "integrity": "sha512-xn7PnFD3m4rQIG00h1lPuDVnC2QMtTFhzRLX3y56KkgFaCysS7vpNevNBgmNUtmJ4eVFc+66Zucwo2KDLdicOg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/config-resolver": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.11.tgz", - "integrity": "sha512-q97FnlUmbai1c4JlQJgLVBsvSxgV/7Nvg/JK76E1nRq/U5UM56Eqo3dn2fY7JibqgJLg4LPsGdwtIyqyOk35CQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", "dev": true, "dependencies": { - "@smithy/node-config-provider": "^2.0.13", - "@smithy/types": "^2.3.4", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.3", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/credential-provider-imds": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.13.tgz", - "integrity": "sha512-/xe3wNoC4j+BeTemH9t2gSKLBfyZmk8LXB2pQm/TOEYi+QhBgT+PSolNDfNAhrR68eggNE17uOimsrnwSkCt4w==", - "dev": true, - "dependencies": { - "@smithy/node-config-provider": "^2.0.13", - "@smithy/property-provider": "^2.0.11", - "@smithy/types": "^2.3.4", - "@smithy/url-parser": "^2.0.10", - "tslib": "^2.5.0" + "node_modules/@smithy/core": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz", + "integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==", + "dev": true, + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-codec": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.10.tgz", - "integrity": "sha512-3SSDgX2nIsFwif6m+I4+ar4KDcZX463Noes8ekBgQHitULiWvaDZX8XqPaRQSQ4bl1vbeVXHklJfv66MnVO+lw==", + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "dev": true, "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.3.4", - "@smithy/util-hex-encoding": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.2.1.tgz", - "integrity": "sha512-bXyM8PBAIKxVV++2ZSNBEposTDjFQ31XWOdHED+2hWMNvJHUoQqFbECg/uhcVOa6vHie2/UnzIZfXBSTpDBnEw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", "dev": true, "dependencies": { - "@smithy/protocol-http": "^3.0.6", - "@smithy/querystring-builder": "^2.0.10", - "@smithy/types": "^2.3.4", - "@smithy/util-base64": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/hash-node": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.10.tgz", - "integrity": "sha512-jSTf6uzPk/Vf+8aQ7tVXeHfjxe9wRXSCqIZcBymSDTf7/YrVxniBdpyN74iI8ZUOx/Pyagc81OK5FROLaEjbXQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.10.tgz", - "integrity": "sha512-zw9p/zsmJ2cFcW4KMz3CJoznlbRvEA6HG2mvEaX5eAca5dq4VGI2MwPDTfmteC/GsnURS4ogoMQ0p6aHM2SDVQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/is-array-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", - "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.12.tgz", - "integrity": "sha512-QRhJTo5TjG7oF7np6yY4ZO9GDKFVzU/GtcqUqyEa96bLHE3yZHgNmsolOQ97pfxPHmFhH4vDP//PdpAIN3uI1Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", "dev": true, "dependencies": { - "@smithy/protocol-http": "^3.0.6", - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.10.tgz", - "integrity": "sha512-O6m4puZc16xfenotZUHL4bRlMrwf4gTp+0I5l954M5KNd3dOK18P+FA/IIUgnXF/dX6hlCUcJkBp7nAzwrePKA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", "dev": true, "dependencies": { - "@smithy/middleware-serde": "^2.0.10", - "@smithy/types": "^2.3.4", - "@smithy/url-parser": "^2.0.10", - "@smithy/util-middleware": "^2.0.3", - "tslib": "^2.5.0" + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-retry": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.13.tgz", - "integrity": "sha512-zuOva8xgWC7KYG8rEXyWIcZv2GWszO83DCTU6IKcf/FKu6OBmSE+EYv3EUcCGY+GfiwCX0EyJExC9Lpq9b0w5Q==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz", + "integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==", "dev": true, "dependencies": { - "@smithy/node-config-provider": "^2.0.13", - "@smithy/protocol-http": "^3.0.6", - "@smithy/service-error-classification": "^2.0.3", - "@smithy/types": "^2.3.4", - "@smithy/util-middleware": "^2.0.3", - "@smithy/util-retry": "^2.0.3", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.10.tgz", - "integrity": "sha512-+A0AFqs768256H/BhVEsBF6HijFbVyAwYRVXY/izJFkTalVWJOp4JA0YdY0dpXQd+AlW0tzs+nMQCE1Ew+DcgQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.4.tgz", - "integrity": "sha512-MW0KNKfh8ZGLagMZnxcLJWPNXoKqW6XV/st5NnCBmmA2e2JhrUjU0AJ5Ca/yjTyNEKs3xH7AQDwp1YmmpEpmQQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-config-provider": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.13.tgz", - "integrity": "sha512-pPpLqYuJcOq1sj1EGu+DoZK47DUS4gepqSTNgRezmrjnzNlSU2/Dcc9Ebzs+WZ0Z5vXKazuE+k+NksFLo07/AA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dev": true, "dependencies": { - "@smithy/property-provider": "^2.0.11", - "@smithy/shared-ini-file-loader": "^2.0.12", - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-http-handler": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.1.6.tgz", - "integrity": "sha512-NspvD3aCwiUNtoSTcVHz0RZz1tQ/SaRIe1KPF+r0mAdCZ9eWuhIeJT8ZNPYa1ITn7/Lgg64IyFjqPynZ8KnYQw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", "dev": true, "dependencies": { - "@smithy/abort-controller": "^2.0.10", - "@smithy/protocol-http": "^3.0.6", - "@smithy/querystring-builder": "^2.0.10", - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.11.tgz", - "integrity": "sha512-kzuOadu6XvrnlF1iXofpKXYmo4oe19st9/DE8f5gHNaFepb4eTkR8gD8BSdTnNnv7lxfv6uOwZPg4VS6hemX1w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/protocol-http": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.6.tgz", - "integrity": "sha512-F0jAZzwznMmHaggiZgc7YoS08eGpmLvhVktY/Taz6+OAOHfyIqWSDNgFqYR+WHW9z5fp2XvY4mEUrQgYMQ71jw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.10.tgz", - "integrity": "sha512-uujJGp8jzrrU1UHme8sUKEbawQTcTmUWsh8rbGXYD/lMwNLQ+9jQ9dMDWbbH9Hpoa9RER1BeL/38WzGrbpob2w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "@smithy/util-uri-escape": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.10.tgz", - "integrity": "sha512-WSD4EU60Q8scacT5PIpx4Bahn6nWpt+MiYLcBkFt6fOj7AssrNeaNIU2Z0g40ftVmrwLcEOIKGX92ynbVDb3ZA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.3.tgz", - "integrity": "sha512-b+m4QCHXb7oKAkM/jHwHrl5gpqhFoMTHF643L0/vAEkegrcUWyh1UjyoHttuHcP5FnHVVy4EtpPtLkEYD+xMFw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4" + "@smithy/types": "^3.3.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.12.tgz", - "integrity": "sha512-umi0wc4UBGYullAgYNUVfGLgVpxQyES47cnomTqzCKeKO5oudO4hyDNj+wzrOjqDFwK2nWYGVgS8Y0JgGietrw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/signature-v4": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.10.tgz", - "integrity": "sha512-S6gcP4IXfO/VMswovrhxPpqvQvMal7ZRjM4NvblHSPpE5aNBYx67UkHFF3kg0hR3tJKqNpBGbxwq0gzpdHKLRA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dev": true, "dependencies": { - "@smithy/eventstream-codec": "^2.0.10", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.3.4", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.3", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/smithy-client": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.9.tgz", - "integrity": "sha512-HTicQSn/lOcXKJT+DKJ4YMu51S6PzbWsO8Z6Pwueo30mSoFKXg5P0BDkg2VCDqCVR0mtddM/F6hKhjW6YAV/yg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz", + "integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==", "dev": true, "dependencies": { - "@smithy/middleware-stack": "^2.0.4", - "@smithy/types": "^2.3.4", - "@smithy/util-stream": "^2.0.14", - "tslib": "^2.5.0" + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/types": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.3.4.tgz", - "integrity": "sha512-D7xlM9FOMFyFw7YnMXn9dK2KuN6+JhnrZwVt1fWaIu8hCk5CigysweeIT/H/nCo4YV+s8/oqUdLfexbkPZtvqw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/url-parser": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.10.tgz", - "integrity": "sha512-4TXQFGjHcqru8aH5VRB4dSnOFKCYNX6SR1Do6fwxZ+ExT2onLsh2W77cHpks7ma26W5jv6rI1u7d0+KX9F0aOw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", "dev": true, "dependencies": { - "@smithy/querystring-parser": "^2.0.10", - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/util-base64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.0.tgz", - "integrity": "sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dev": true, "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", - "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@smithy/util-body-length-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", - "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-buffer-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", - "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dev": true, "dependencies": { - "@smithy/is-array-buffer": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-config-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", - "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.13.tgz", - "integrity": "sha512-UmmOdUzaQjqdsl1EjbpEaQxM0VDFqTj6zDuI26/hXN7L/a1k1koTwkYpogHMvunDX3fjrQusg5gv1Td4UsGyog==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz", + "integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==", "dev": true, "dependencies": { - "@smithy/property-provider": "^2.0.11", - "@smithy/smithy-client": "^2.1.9", - "@smithy/types": "^2.3.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.15.tgz", - "integrity": "sha512-g6J7MHAibVPMTlXyH3mL+Iet4lMJKFVhsOhJmn+IKG81uy9m42CkRSDlwdQSJAcprLQBIaOPdFxNXQvrg2w1Uw==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz", + "integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==", "dev": true, "dependencies": { - "@smithy/config-resolver": "^2.0.11", - "@smithy/credential-provider-imds": "^2.0.13", - "@smithy/node-config-provider": "^2.0.13", - "@smithy/property-provider": "^2.0.11", - "@smithy/smithy-client": "^2.1.9", - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, + "node_modules/@smithy/util-endpoints": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", + "dev": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", - "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.3.tgz", - "integrity": "sha512-+FOCFYOxd2HO7v/0hkFSETKf7FYQWa08wh/x/4KUeoVBnLR4juw8Qi+TTqZI6E2h5LkzD9uOaxC9lAjrpVzaaA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", "dev": true, "dependencies": { - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-retry": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.3.tgz", - "integrity": "sha512-gw+czMnj82i+EaH7NL7XKkfX/ZKrCS2DIWwJFPKs76bMgkhf0y1C94Lybn7f8GkBI9lfIOUdPYtzm19zQOC8sw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", "dev": true, "dependencies": { - "@smithy/service-error-classification": "^2.0.3", - "@smithy/types": "^2.3.4", - "tslib": "^2.5.0" + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-stream": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.14.tgz", - "integrity": "sha512-XjvlDYe+9DieXhLf7p+EgkXwFtl34kHZcWfHnc5KaILbhyVfDLWuqKTFx6WwCFqb01iFIig8trGwExRIqqkBYg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", "dev": true, "dependencies": { - "@smithy/fetch-http-handler": "^2.2.1", - "@smithy/node-http-handler": "^2.1.6", - "@smithy/types": "^2.3.4", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-uri-escape": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", - "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", - "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dev": true, "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@szmarczak/http-timer": { @@ -3317,6 +3406,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/eslint": { "version": "8.4.10", "dev": true, @@ -3378,6 +3476,15 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/history": { "version": "4.7.11", "dev": true, @@ -3459,6 +3566,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/mime": { "version": "3.0.1", "dev": true, @@ -3469,6 +3585,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, "node_modules/@types/node": { "version": "18.18.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz", @@ -3643,6 +3765,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true + }, "node_modules/@types/webpack-env": { "version": "1.18.0", "dev": true, @@ -4900,6 +5028,16 @@ "node": ">=10.13.0" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "license": "MIT" @@ -5346,6 +5484,16 @@ "node": ">=10" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "3.5.3", "dev": true, @@ -5635,6 +5783,16 @@ "node": ">= 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "7.2.0", "dev": true, @@ -6492,6 +6650,19 @@ "dev": true, "license": "MIT" }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "dev": true, @@ -6672,6 +6843,15 @@ "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "dev": true, @@ -6731,12 +6911,13 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/devtools/node_modules/uuid": { - "version": "9.0.0", + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">=0.3.1" } }, "node_modules/diff-sequences": { @@ -8263,18 +8444,18 @@ "license": "MIT" }, "node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", "dev": true, "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { @@ -9202,6 +9383,16 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/he": { "version": "1.2.0", "dev": true, @@ -9847,6 +10038,12 @@ "dev": true, "license": "ISC" }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -9987,6 +10184,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/is-builtin-module": { "version": "3.2.0", "dev": true, @@ -10147,9 +10367,21 @@ "node_modules/is-path-inside": { "version": "3.0.3", "dev": true, - "license": "MIT", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-plain-object": { @@ -12660,6 +12892,78 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdn-data": { "version": "2.0.14", "dev": true, @@ -12670,67 +12974,532 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "engines": { - "node": ">= 0.6" + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.12", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/memfs": { - "version": "3.4.12", + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", "dev": true, - "license": "Unlicense", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" + "micromark-util-types": "^1.0.0" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", "dev": true, - "engines": { - "node": ">= 0.10.0" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/merge-stream": { - "version": "2.0.0", + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/merge2": { - "version": "1.4.1", + "node_modules/micromark/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, - "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">= 8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/methods": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "node_modules/micromark/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/micromatch": { "version": "4.0.5", @@ -13006,6 +13775,15 @@ "node": "*" } }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.0.0", "dev": true, @@ -14861,6 +15639,16 @@ "react-is": "^16.13.1" } }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "dev": true, @@ -15134,6 +15922,43 @@ "react": ">=15.0.0" } }, + "node_modules/react-markdown": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", + "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/prop-types": "^15.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "prop-types": "^15.0.0", + "property-information": "^6.0.0", + "react-is": "^18.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/react-markdown/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, "node_modules/react-router": { "version": "5.3.4", "dev": true, @@ -15379,6 +16204,37 @@ "node": ">= 0.10" } }, + "node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -15749,6 +16605,18 @@ "tslib": "^2.1.0" } }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safe-array-concat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", @@ -15809,9 +16677,10 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.56.1", + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -15821,7 +16690,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/sass-loader": { @@ -16291,6 +17160,16 @@ "dev": true, "license": "MIT" }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/sparkles": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", @@ -16757,6 +17636,15 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dev": true, + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, "node_modules/stylehacks": { "version": "5.1.1", "dev": true, @@ -17658,6 +18546,26 @@ "dev": true, "license": "MIT" }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-jest": { "version": "28.0.8", "dev": true, @@ -18071,6 +18979,103 @@ "fastest-levenshtein": "^1.0.7" } }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.0", "dev": true, @@ -18176,6 +19181,37 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/v8-to-istanbul": { "version": "9.0.1", "dev": true, @@ -18229,6 +19265,36 @@ "node": ">= 0.8" } }, + "node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vinyl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", diff --git a/package.json b/package.json index 567b40e6a8..8bdfad56e0 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "prettier": "^3.2.5", "react": "^16.14.0", "react-dom": "^16.14.0", + "react-markdown": "^8.0.7", "react-router-dom": "^5.3.0", "react-test-renderer": "^16.14.0", "react-virtual": "^2.8.2", diff --git a/pages/steps/permutations-interactive.page.tsx b/pages/steps/permutations-interactive.page.tsx new file mode 100644 index 0000000000..22019eeea5 --- /dev/null +++ b/pages/steps/permutations-interactive.page.tsx @@ -0,0 +1,23 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; + +import Steps from '~components/steps'; + +import PermutationsView from '../utils/permutations-view'; +import ScreenshotArea from '../utils/screenshot-area'; +import { stepsPermutationsInteractive } from './permutationts-utils'; + +export default function StepsInteractivePermutations() { + return ( + +
+

Steps interactive permutations

+
{}
} + /> +
+
+ ); +} diff --git a/pages/steps/permutations-with-updates.page.tsx b/pages/steps/permutations-with-updates.page.tsx new file mode 100644 index 0000000000..6af3093686 --- /dev/null +++ b/pages/steps/permutations-with-updates.page.tsx @@ -0,0 +1,160 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React, { useRef, useState } from 'react'; + +import Box from '~components/box'; +import Button from '~components/button'; +import Steps from '~components/steps'; + +import ScreenshotArea from '../utils/screenshot-area'; +import { + blockedStepsInteractive, + failedStepsInteractive, + failedStepsWithRetryButtonInteractive, + initialStepsInteractive, + loadingSteps2Interactive, + loadingSteps3Interactive, + loadingStepsInteractive, + successfulStepsInteractive, +} from './permutationts-utils'; + +export default function StepsPermutationsWithUpdates() { + const [stepIndex1, setStepIndex1] = useState(0); + const timeoutRef1 = useRef>(); + const stepsExecution1 = [ + initialStepsInteractive, + loadingStepsInteractive, + loadingSteps2Interactive, + loadingSteps3Interactive, + successfulStepsInteractive, + ]; + + const [stepIndex2, setStepIndex2] = useState(0); + const timeoutRef2 = useRef>(); + const stepsExecution2 = [ + initialStepsInteractive, + loadingStepsInteractive, + loadingSteps2Interactive, + blockedStepsInteractive, + ]; + + const [stepIndex3, setStepIndex3] = useState(0); + const timeoutRef3 = useRef>(); + const stepsExecution3 = [initialStepsInteractive, loadingStepsInteractive, failedStepsInteractive]; + + const [stepIndex4, setStepIndex4] = useState(0); + const timeoutRef4 = useRef>(); + const stepsExecution4 = [initialStepsInteractive, loadingStepsInteractive, failedStepsWithRetryButtonInteractive]; + + const activateTimerStep1 = () => { + resetTimeoutStep1(); + function step(i: number) { + setStepIndex1(i + 1); + timeoutRef1.current = setTimeout(() => i < stepsExecution1.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep1 = () => { + setStepIndex1(0); + if (timeoutRef1.current !== undefined) { + clearTimeout(timeoutRef1.current); + timeoutRef1.current = undefined; + } + }; + + const activateTimerStep2 = () => { + resetTimeoutStep2(); + function step(i: number) { + setStepIndex2(i + 1); + timeoutRef2.current = setTimeout(() => i < stepsExecution2.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep2 = () => { + setStepIndex2(0); + if (timeoutRef2.current !== undefined) { + clearTimeout(timeoutRef2.current); + timeoutRef2.current = undefined; + } + }; + + const activateTimerStep3 = () => { + resetTimeoutStep3(); + function step(i: number) { + setStepIndex3(i + 1); + timeoutRef3.current = setTimeout(() => i < stepsExecution3.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep3 = () => { + setStepIndex3(0); + if (timeoutRef3.current !== undefined) { + clearTimeout(timeoutRef3.current); + timeoutRef3.current = undefined; + } + }; + + const activateTimerStep4 = () => { + resetTimeoutStep4(); + function step(i: number) { + setStepIndex4(i + 1); + timeoutRef4.current = setTimeout(() => i < stepsExecution4.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep4 = () => { + setStepIndex4(0); + if (timeoutRef4.current !== undefined) { + clearTimeout(timeoutRef1.current); + timeoutRef4.current = undefined; + } + }; + + return ( + +
+

Steps permutations with updates

+ + + Successful Execution + + +
+ + +
+
+ + + Blocked Execution + + +
+ + +
+
+ + + Failed Execution + + +
+ + +
+
+ + + Failed Execution with Retry + + +
+ + +
+
+
+
+ ); +} diff --git a/pages/steps/permutations.page.tsx b/pages/steps/permutations.page.tsx new file mode 100644 index 0000000000..81cd63da70 --- /dev/null +++ b/pages/steps/permutations.page.tsx @@ -0,0 +1,23 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; + +import Steps from '~components/steps'; + +import PermutationsView from '../utils/permutations-view'; +import ScreenshotArea from '../utils/screenshot-area'; +import { stepsPermutations } from './permutationts-utils'; + +export default function StepsPermutations() { + return ( + +
+

Steps permutations

+
{}
} + /> +
+
+ ); +} diff --git a/pages/steps/permutationts-utils.tsx b/pages/steps/permutationts-utils.tsx new file mode 100644 index 0000000000..645cc52c4b --- /dev/null +++ b/pages/steps/permutationts-utils.tsx @@ -0,0 +1,546 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; +import ReactMarkdown from 'react-markdown'; + +import Button from '~components/button'; +import Link from '~components/link'; +import Popover from '~components/popover'; +import { StepsProps } from '~components/steps'; + +import createPermutations from '../utils/permutations'; + +import styles from './styles.scss'; + +const initialSteps: ReadonlyArray = [ + { + status: 'loading', + header: 'Listing EC2 instances', + details: Using the ec2_DescribeInstances, + }, +]; + +const loadingSteps: ReadonlyArray = [ + { + status: 'success', + header:
Listed EC2 instances
, + details: ( + + {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + ), + }, + { + header: 'Gathering Security Group IDs', + details: ( + + {'Using the ec2_DescribeSecurityGroupsTool:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + ), + status: 'loading', + }, +]; + +export const loadingSteps2: ReadonlyArray = [ + { + header: 'Listed EC2 instances', + details: ( + + {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + ), + status: 'success', + }, + { + header: 'Gathered Security Group IDs', + details: ( + + {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + ), + status: 'success', + }, + { + header: 'Checking Cross Region Consent', + status: 'loading', + }, +]; + +export const loadingSteps3: ReadonlyArray = [ + { + header: 'Listed EC2 instances', + details: ( + + {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + ), + status: 'success', + }, + { + header: 'Gathered Security Group IDs', + details: ( + + {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + ), + status: 'success', + }, + { + header: 'Checked Cross Region Consent', + status: 'success', + }, + { + header: 'Analyzing security rules', + status: 'loading', + }, +]; + +export const successfulSteps: ReadonlyArray = [ + { + header: 'Listed EC2 instances', + details: ( + + {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + ), + status: 'success', + }, + { + header: 'Gathered Security Group IDs', + details: ( + + {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + ), + status: 'success', + }, + { + header: 'Checked Cross Region Consent', + status: 'success', + }, + { + header: 'Analyzing security rules', + status: 'success', + }, +]; + +export const blockedSteps: ReadonlyArray = [ + { + header: 'Listed EC2 instances', + details: ( + + {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + ), + status: 'success', + }, + { + header: 'Gathered Security Group IDs', + details: ( + + {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + ), + status: 'success', + }, + { + header: 'Need Cross Region Consent', + details: ( + + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS + account. + + ), + status: 'warning', + }, +]; + +export const failedSteps: ReadonlyArray = [ + { + header: 'Listed EC2 instances', + details: ( + + {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + ), + status: 'success', + }, + { + header: 'Could not fetch security groups', + status: 'error', + }, +]; + +export const stepsPermutations = createPermutations([ + { + steps: [initialSteps, loadingSteps, loadingSteps2, loadingSteps3, successfulSteps, blockedSteps, failedSteps], + }, +]); + +export const initialStepsInteractive: ReadonlyArray = [ + { + status: 'loading', + header:
Listing EC2 instances
, + details: Using the ec2_DescribeInstances, + }, +]; + +export const loadingStepsInteractive: ReadonlyArray = [ + { + status: 'success', + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + }, + { + header:
Gathering Security Group IDs
, + details: ( + + {'Using the ec2_DescribeSecurityGroupsTool:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + ), + status: 'loading', + }, +]; + +export const loadingSteps2Interactive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header: ( +
+ Gathered Security Group IDs:{' '} + + {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Checking Cross Region Consent
, + status: 'loading', + }, +]; + +export const loadingSteps3Interactive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header: ( +
+ Gathered Security Group IDs:{' '} + + {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Checked Cross Region Consent
, + status: 'success', + }, + { + header:
Analyzing security rules
, + status: 'loading', + }, +]; + +export const successfulStepsInteractive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header: ( +
+ Gathered Security Group IDs:{' '} + + {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Checked Cross Region Consent
, + status: 'success', + }, + { + header:
Analyzing security rules
, + status: 'success', + }, +]; + +export const blockedStepsInteractive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header: ( +
+ Gathered Security Group IDs:{' '} + + {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Need Cross Region Consent
, + details: ( + + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS + account. + + ), + status: 'warning', + }, +]; + +export const failedStepsInteractive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Could not fetch security groups
, + status: 'error', + }, +]; + +export const failedStepsWithRetryTextInteractive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Could not fetch security groups
, + details: ( +
+ The request expired due to a server issue. Retry +
+ ), + status: 'error', + }, +]; + +export const failedStepsWithRetryButtonInteractive: ReadonlyArray = [ + { + header: ( +
+ Listed EC2 instances:{' '} + + {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} + + } + position={'bottom'} + > + 4 items + +
+ ), + status: 'success', + }, + { + header:
Could not fetch security groups
, + details: ( + <> +
The request expired due to a server issue.
+ + + ), + status: 'error', + }, +]; + +const changesetStepsInteractive: ReadonlyArray = [ + { + status: 'success', + header: ( +
+ Create S3 bucket-12 +
+ ), + }, + { + status: 'success', + header: ( +
+ Create CloudWatch alarm +
+ ), + }, + { + status: 'loading', + header: ( +
+ Update Lambda-1 +
+ ), + }, +]; + +export const stepsPermutationsInteractive = createPermutations([ + { + steps: [ + initialStepsInteractive, + loadingStepsInteractive, + loadingSteps2Interactive, + loadingSteps3Interactive, + successfulStepsInteractive, + blockedStepsInteractive, + failedStepsInteractive, + failedStepsWithRetryTextInteractive, + failedStepsWithRetryButtonInteractive, + changesetStepsInteractive, + ], + }, +]); diff --git a/pages/steps/styles.scss b/pages/steps/styles.scss new file mode 100644 index 0000000000..a36c8e5939 --- /dev/null +++ b/pages/steps/styles.scss @@ -0,0 +1,10 @@ +/* + Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + SPDX-License-Identifier: Apache-2.0 +*/ + +/* stylelint-disable-next-line selector-max-type */ +.markdown > :where(p) { + margin-block: 0; + white-space: pre-wrap; +} diff --git a/src/steps/__tests__/steps.test.tsx b/src/steps/__tests__/steps.test.tsx new file mode 100644 index 0000000000..6d026f42a0 --- /dev/null +++ b/src/steps/__tests__/steps.test.tsx @@ -0,0 +1,66 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import * as React from 'react'; +import { render } from '@testing-library/react'; + +import Steps, { StepsProps } from '../../../lib/components/steps'; +import createWrapper from '../../../lib/components/test-utils/dom'; + +const defaultProps: StepsProps = { + steps: [], + ariaLabel: 'Steps Execution', + ariaDescribedby: 'steps-description', +}; + +const successfullSteps: ReadonlyArray = [ + { + header: 'Listed EC2 instances', + details: ( +
+ EC2 Instances IDs: +
    +
  • ec2InstanceID1
  • +
  • ec2InstanceID2
  • +
  • ec2InstanceID3
  • +
  • ec2InstanceID4
  • +
+
+ ), + status: 'success', + }, + { + header: 'Gathered Security Group IDs', + details: ( +
+ Security Groups IDs: +
    +
  • securityGroupID1
  • +
  • securityGroupID2
  • +
  • securityGroupID3
  • +
+
+ ), + status: 'success', + }, + { + header: 'Checked Cross Region Consent', + status: 'success', + }, + { + header: 'Analyzing security rules', + status: 'success', + }, +]; + +const renderSteps = (props: Partial) => { + const renderResult = render(); + return createWrapper(renderResult.container).findSteps()!; +}; + +describe('Steps', () => { + test('renders all steps', () => { + const wrapper = renderSteps({ steps: successfullSteps }); + + expect(wrapper.findItems()).toHaveLength(4); + }); +}); diff --git a/src/steps/index.tsx b/src/steps/index.tsx new file mode 100644 index 0000000000..7c101fe9fe --- /dev/null +++ b/src/steps/index.tsx @@ -0,0 +1,23 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; + +import { getBaseProps } from '../internal/base-component'; +import useBaseComponent from '../internal/hooks/use-base-component'; +import { applyDisplayName } from '../internal/utils/apply-display-name'; +import { getExternalProps } from '../internal/utils/external-props'; +import { StepsProps } from './interfaces'; +import InternalSteps from './internal'; + +export { StepsProps }; + +const Steps = ({ steps, ...props }: StepsProps) => { + const baseProps = getBaseProps(props); + const baseComponentProps = useBaseComponent('Steps'); + const externalProps = getExternalProps(props); + + return ; +}; + +applyDisplayName(Steps, 'Steps'); +export default Steps; diff --git a/src/steps/interfaces.ts b/src/steps/interfaces.ts new file mode 100644 index 0000000000..b3e204c590 --- /dev/null +++ b/src/steps/interfaces.ts @@ -0,0 +1,43 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import { BaseComponentProps } from '../internal/base-component'; +import { type StatusIndicatorProps } from '../status-indicator/internal'; + +export interface StepsProps extends BaseComponentProps { + /** + * An array of individual steps + * + * Each step definition has the following properties: + * * `status` (string) - Status of the step corresponding to a status indicator. + * * `statusIconAriaLabel` (string) - (Optional) Text alternative for the status icon. + * * `header` (react.ReactNode) - Area next to the status indicator of the step. + * * `details` (react.ReactNode) - (Optional) The corresponding details of the step. + */ + steps: ReadonlyArray; + /** + * Provides an `aria-label` to progress steps container. + * Don't use `ariaLabel` and `ariaLabelledby` at the same time. + */ + ariaLabel?: string; + /** + * Sets the `aria-labelledby` property on the progress steps container. + * If there's a visible label element that you can reference, use this instead of `ariaLabel`. + * Don't use `ariaLabel` and `ariaLabelledby` at the same time. + */ + ariaLabelledby?: string; + /** + * Sets the `aria-describedby` property on the progress steps container. + */ + ariaDescribedby?: string; +} + +export namespace StepsProps { + export type Status = StatusIndicatorProps.Type; + + export interface Step { + status: Status; + statusIconAriaLabel?: string; + header: React.ReactNode; + details?: React.ReactNode; + } +} diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx new file mode 100644 index 0000000000..7056bb8734 --- /dev/null +++ b/src/steps/internal.tsx @@ -0,0 +1,52 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React from 'react'; +import clsx from 'clsx'; + +import { InternalBaseComponentProps } from '../internal/hooks/use-base-component'; +import { SomeRequired } from '../internal/types'; +import StatusIndicator from '../status-indicator/internal'; +import { StepsProps } from './interfaces'; + +import styles from './styles.css.js'; +import testUtilStyles from './test-classes/styles.css.js'; + +type InternalStepsProps = SomeRequired & InternalBaseComponentProps; + +const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsProps.Step) => { + return ( +
  • +
    + +
    +
    {header}
    +
    + {details &&
    {details}
    } +
  • + ); +}; + +export const InternalSteps = ({ steps, ...props }: InternalStepsProps) => { + return ( +
    +
      + {steps.map((step, index) => ( + + ))} +
    +
    + ); +}; + +export default InternalSteps; diff --git a/src/steps/styles.scss b/src/steps/styles.scss new file mode 100644 index 0000000000..e9a6edf531 --- /dev/null +++ b/src/steps/styles.scss @@ -0,0 +1,60 @@ +/* + Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + SPDX-License-Identifier: Apache-2.0 +*/ + +@use '../internal/styles/tokens' as awsui; +@use '../internal/styles' as styles; + +.root { + @include styles.styles-reset; +} + +.steps-list { + list-style: none; + + > .step-container { + display: grid; + grid-template-columns: awsui.$space-static-l 1fr; + grid-template-rows: minmax(awsui.$space-static-l, auto); + row-gap: awsui.$space-static-xxxs; + margin-block-end: awsui.$space-static-xxxs; + + > .step-status { + grid-row: 1; + grid-column: 1; + text-align: center; + } + + > .step-header { + grid-row: 1; + grid-column: 2; + } + + > .step-details { + align-items: center; + font-size: awsui.$font-size-body-s; + color: awsui.$color-text-status-inactive; + grid-row: 2; + grid-column: 2; + } + + > .step-connector { + grid-row: 2; + grid-column: 1; + background-color: awsui.$color-border-divider-default; + margin-block: 0; + border-block: 0; + border-inline: 0; + inline-size: awsui.$space-static-xxxs; + block-size: auto; + min-block-size: awsui.$space-static-xs; + position: relative; + inset-inline-end: awsui.$space-static-xxxs; + } + } + + > :last-of-type > .step-connector { + display: none; + } +} diff --git a/src/steps/test-classes/styles.scss b/src/steps/test-classes/styles.scss new file mode 100644 index 0000000000..7511a97b98 --- /dev/null +++ b/src/steps/test-classes/styles.scss @@ -0,0 +1,12 @@ +/* + Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + SPDX-License-Identifier: Apache-2.0 +*/ + +.steps { + /* used in test-utils */ +} + +.step-container { + /* used in test-utils */ +} diff --git a/src/test-utils/dom/steps/index.ts b/src/test-utils/dom/steps/index.ts new file mode 100644 index 0000000000..0cb2465b5f --- /dev/null +++ b/src/test-utils/dom/steps/index.ts @@ -0,0 +1,16 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; + +import testUtilStyles from '../../../steps/test-classes/styles.selectors.js'; + +export default class StepsWrapper extends ComponentWrapper { + static rootSelector: string = testUtilStyles.steps; + + /** + * Finds all step items + */ + findItems(): Array { + return this.findAllByClassName(testUtilStyles['step-container']); + } +} From f97fc6a1b7d5e8c044504924cc7d33a9851e274b Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 3 Sep 2024 11:09:23 +0200 Subject: [PATCH 02/20] add unit tests for steps component --- src/steps/__tests__/steps.test.tsx | 56 ++++++++++++++++++++++++++++-- src/steps/internal.tsx | 6 ++-- src/steps/test-classes/styles.scss | 12 +++++++ src/test-utils/dom/steps/index.ts | 27 ++++++++++++-- 4 files changed, 94 insertions(+), 7 deletions(-) diff --git a/src/steps/__tests__/steps.test.tsx b/src/steps/__tests__/steps.test.tsx index 6d026f42a0..c640257f5b 100644 --- a/src/steps/__tests__/steps.test.tsx +++ b/src/steps/__tests__/steps.test.tsx @@ -48,7 +48,7 @@ const successfullSteps: ReadonlyArray = [ }, { header: 'Analyzing security rules', - status: 'success', + status: 'loading', }, ]; @@ -58,9 +58,61 @@ const renderSteps = (props: Partial) => { }; describe('Steps', () => { - test('renders all steps', () => { + test('renders no steps when none are provided', () => { + const wrapper = renderSteps({ steps: [] }); + + expect(wrapper.findItems()).toHaveLength(0); + }); + + test('renders correct count of steps', () => { const wrapper = renderSteps({ steps: successfullSteps }); expect(wrapper.findItems()).toHaveLength(4); }); + + test('renders correct steps headers', () => { + const wrapper = renderSteps({ steps: successfullSteps }); + + expect(wrapper.findItems()[0]!.findHeader()!.getElement()).toHaveTextContent('Listed EC2 instances'); + expect(wrapper.findItems()[1]!.findHeader()!.getElement()).toHaveTextContent('Gathered Security Group IDs'); + expect(wrapper.findItems()[2]!.findHeader()!.getElement()).toHaveTextContent('Checked Cross Region Consent'); + expect(wrapper.findItems()[3]!.findHeader()!.getElement()).toHaveTextContent('Analyzing security rules'); + }); + + test('renders correct steps details', () => { + const wrapper = renderSteps({ steps: successfullSteps }); + + expect(wrapper.findItems()[0]!.findDetails()!.getElement()).toHaveTextContent('EC2 Instances IDs:'); + expect(wrapper.findItems()[1]!.findDetails()!.getElement()).toHaveTextContent('Security Groups IDs:'); + expect(wrapper.findItems()[2]!.findDetails()).toBeNull(); + expect(wrapper.findItems()[3]!.findDetails()).toBeNull(); + }); + + test('renders correct status icons', () => { + const testStatus: StepsProps.Status[] = [ + 'error', + 'warning', + 'success', + 'info', + 'stopped', + 'pending', + 'in-progress', + 'loading', + ]; + const wrapper = renderSteps({ + steps: testStatus.map(status => ({ + header: 'test step header', + status, + })), + }); + + testStatus.forEach((_, index) => { + expect(wrapper.findItems()[index]!.findStatusIndicator()).not.toBeNull(); + expect(wrapper.findItems()[index]!.findStatusIndicator()?.getElement()).toHaveTextContent(''); + }); + }); + + // describe('Accessibility', () => { + + // }) }); diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index 7056bb8734..34852850c6 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -16,12 +16,12 @@ type InternalStepsProps = SomeRequired & InternalBaseCompon const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsProps.Step) => { return (
  • -
    +
    -
    {header}
    +
    {header}

    - {details &&
    {details}
    } + {details &&
    {details}
    }
  • ); }; diff --git a/src/steps/test-classes/styles.scss b/src/steps/test-classes/styles.scss index 7511a97b98..516cd01c27 100644 --- a/src/steps/test-classes/styles.scss +++ b/src/steps/test-classes/styles.scss @@ -10,3 +10,15 @@ .step-container { /* used in test-utils */ } + +.step-status { + /* used in test-utils */ +} + +.step-header { + /* used in test-utils */ +} + +.step-details { + /* used in test-utils */ +} diff --git a/src/test-utils/dom/steps/index.ts b/src/test-utils/dom/steps/index.ts index 0cb2465b5f..53e05c014f 100644 --- a/src/test-utils/dom/steps/index.ts +++ b/src/test-utils/dom/steps/index.ts @@ -2,15 +2,38 @@ // SPDX-License-Identifier: Apache-2.0 import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; +import statusIconStyles from '../../../status-indicator/styles.selectors.js'; import testUtilStyles from '../../../steps/test-classes/styles.selectors.js'; +export class StepWrapper extends ComponentWrapper { + /** + * Finds the status of a step + */ + findStatusIndicator(): ElementWrapper | null { + return this.findByClassName(statusIconStyles.icon); + } + + /** + * Finds the header of a step + */ + findHeader(): ElementWrapper | null { + return this.findByClassName(testUtilStyles['step-header']); + } + + /** + * Finds the details of a step + */ + findDetails(): ElementWrapper | null { + return this.findByClassName(testUtilStyles['step-details']); + } +} export default class StepsWrapper extends ComponentWrapper { static rootSelector: string = testUtilStyles.steps; /** * Finds all step items */ - findItems(): Array { - return this.findAllByClassName(testUtilStyles['step-container']); + findItems(): Array { + return this.findAllByClassName(testUtilStyles['step-container']).map(item => new StepWrapper(item.getElement())); } } From 643501e62af339155be176837223b9d95e6401e5 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 10 Sep 2024 11:00:04 +0200 Subject: [PATCH 03/20] add accessibility tests --- package-lock.json | 972 ---------------------------- package.json | 1 - pages/steps/permutationts-utils.tsx | 279 +++++--- pages/steps/styles.scss | 5 +- src/steps/__tests__/steps.test.tsx | 49 +- src/steps/interfaces.ts | 2 +- src/steps/internal.tsx | 12 +- src/steps/styles.scss | 2 - src/steps/test-classes/styles.scss | 24 - src/test-utils/dom/steps/index.ts | 10 +- 10 files changed, 261 insertions(+), 1095 deletions(-) delete mode 100644 src/steps/test-classes/styles.scss diff --git a/package-lock.json b/package-lock.json index 213665609c..79e376e77e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,7 +96,6 @@ "prettier": "^3.2.5", "react": "^16.14.0", "react-dom": "^16.14.0", - "react-markdown": "^8.0.7", "react-router-dom": "^5.3.0", "react-test-renderer": "^16.14.0", "react-virtual": "^2.8.2", @@ -3406,15 +3405,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/eslint": { "version": "8.4.10", "dev": true, @@ -3476,15 +3466,6 @@ "@types/node": "*" } }, - "node_modules/@types/hast": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", - "dev": true, - "dependencies": { - "@types/unist": "^2" - } - }, "node_modules/@types/history": { "version": "4.7.11", "dev": true, @@ -3566,15 +3547,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2" - } - }, "node_modules/@types/mime": { "version": "3.0.1", "dev": true, @@ -3585,12 +3557,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, "node_modules/@types/node": { "version": "18.18.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz", @@ -3765,12 +3731,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true - }, "node_modules/@types/webpack-env": { "version": "1.18.0", "dev": true, @@ -5028,16 +4988,6 @@ "node": ">=10.13.0" } }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "license": "MIT" @@ -5484,16 +5434,6 @@ "node": ">=10" } }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chokidar": { "version": "3.5.3", "dev": true, @@ -5783,16 +5723,6 @@ "node": ">= 0.8" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/commander": { "version": "7.2.0", "dev": true, @@ -6650,19 +6580,6 @@ "dev": true, "license": "MIT" }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dev": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/decompress-response": { "version": "6.0.0", "dev": true, @@ -6843,15 +6760,6 @@ "node": ">= 0.8" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/destroy": { "version": "1.2.0", "dev": true, @@ -6911,15 +6819,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff-sequences": { "version": "27.5.1", "dev": true, @@ -9383,16 +9282,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/he": { "version": "1.2.0", "dev": true, @@ -10038,12 +9927,6 @@ "dev": true, "license": "ISC" }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "dev": true - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -10184,29 +10067,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/is-builtin-module": { "version": "3.2.0", "dev": true, @@ -10372,18 +10232,6 @@ "node": ">=8" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-plain-object": { "version": "2.0.4", "dev": true, @@ -12892,78 +12740,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdn-data": { "version": "2.0.14", "dev": true, @@ -13036,471 +12812,6 @@ "node": ">= 0.6" } }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/micromark/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/micromatch": { "version": "4.0.5", "dev": true, @@ -13775,15 +13086,6 @@ "node": "*" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.0.0", "dev": true, @@ -15639,16 +14941,6 @@ "react-is": "^16.13.1" } }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "dev": true, @@ -15922,43 +15214,6 @@ "react": ">=15.0.0" } }, - "node_modules/react-markdown": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", - "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/prop-types": "^15.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "prop-types": "^15.0.0", - "property-information": "^6.0.0", - "react-is": "^18.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" - } - }, - "node_modules/react-markdown/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, "node_modules/react-router": { "version": "5.3.4", "dev": true, @@ -16204,37 +15459,6 @@ "node": ">= 0.10" } }, - "node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -16605,18 +15829,6 @@ "tslib": "^2.1.0" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/safe-array-concat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", @@ -17160,16 +16372,6 @@ "dev": true, "license": "MIT" }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/sparkles": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", @@ -17636,15 +16838,6 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, - "node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", - "dev": true, - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/stylehacks": { "version": "5.1.1", "dev": true, @@ -18546,26 +17739,6 @@ "dev": true, "license": "MIT" }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/ts-jest": { "version": "28.0.8", "dev": true, @@ -18979,103 +18152,6 @@ "fastest-levenshtein": "^1.0.7" } }, - "node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/universalify": { "version": "2.0.0", "dev": true, @@ -19194,24 +18270,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/v8-to-istanbul": { "version": "9.0.1", "dev": true, @@ -19265,36 +18323,6 @@ "node": ">= 0.8" } }, - "node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vinyl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", diff --git a/package.json b/package.json index 8bdfad56e0..567b40e6a8 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,6 @@ "prettier": "^3.2.5", "react": "^16.14.0", "react-dom": "^16.14.0", - "react-markdown": "^8.0.7", "react-router-dom": "^5.3.0", "react-test-renderer": "^16.14.0", "react-virtual": "^2.8.2", diff --git a/pages/steps/permutationts-utils.tsx b/pages/steps/permutationts-utils.tsx index 645cc52c4b..649d5cd7d1 100644 --- a/pages/steps/permutationts-utils.tsx +++ b/pages/steps/permutationts-utils.tsx @@ -1,7 +1,6 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import ReactMarkdown from 'react-markdown'; import Button from '~components/button'; import Link from '~components/link'; @@ -16,7 +15,7 @@ const initialSteps: ReadonlyArray = [ { status: 'loading', header: 'Listing EC2 instances', - details: Using the ec2_DescribeInstances, + details:
    Using the ec2_DescribeInstances
    , }, ]; @@ -25,17 +24,28 @@ const loadingSteps: ReadonlyArray = [ status: 'success', header:
    Listed EC2 instances
    , details: ( - - {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    + EC2 Instances IDs: +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    ), }, { header: 'Gathering Security Group IDs', details: ( - - {'Using the ec2_DescribeSecurityGroupsTool:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    + Using the ec2_DescribeSecurityGroupsTool:: +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    ), status: 'loading', }, @@ -45,18 +55,29 @@ export const loadingSteps2: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - - {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    + EC2 Instances IDs: +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    ), status: 'success', }, { header: 'Gathered Security Group IDs', details: ( - - {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    + Security Groups ID +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    ), status: 'success', }, @@ -70,18 +91,29 @@ export const loadingSteps3: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - - {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    + EC2 Instances IDs: +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    ), status: 'success', }, { header: 'Gathered Security Group IDs', details: ( - - {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    + Security Groups ID +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    ), status: 'success', }, @@ -99,18 +131,29 @@ export const successfulSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - - {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    + EC2 Instances IDs: +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    ), status: 'success', }, { header: 'Gathered Security Group IDs', details: ( - - {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    + Security Groups ID +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    ), status: 'success', }, @@ -128,28 +171,39 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - - {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    + EC2 Instances IDs: +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    ), status: 'success', }, { header: 'Gathered Security Group IDs', details: ( - - {'Security Groups IDs:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    + Security Groups ID +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    ), status: 'success', }, { header: 'Need Cross Region Consent', details: ( - +
    To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. - +
    ), status: 'warning', }, @@ -159,9 +213,15 @@ export const failedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - - {'EC2 Instances IDs:\n * ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    + EC2 Instances IDs: +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    ), status: 'success', }, @@ -181,7 +241,7 @@ export const initialStepsInteractive: ReadonlyArray = [ { status: 'loading', header:
    Listing EC2 instances
    , - details: Using the ec2_DescribeInstances, + details:
    Using the ec2_DescribeInstances
    , }, ]; @@ -194,9 +254,14 @@ export const loadingStepsInteractive: ReadonlyArray = [ - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} -
    +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -208,9 +273,14 @@ export const loadingStepsInteractive: ReadonlyArray = [ { header:
    Gathering Security Group IDs
    , details: ( - - {'Using the ec2_DescribeSecurityGroupsTool:\n* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    + Using the ec2_DescribeSecurityGroupsTool:: +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    ), status: 'loading', }, @@ -224,9 +294,14 @@ export const loadingSteps2Interactive: ReadonlyArray = [ - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -243,9 +318,13 @@ export const loadingSteps2Interactive: ReadonlyArray = [ - {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    } position={'bottom'} > @@ -269,9 +348,14 @@ export const loadingSteps3Interactive: ReadonlyArray = [ - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -288,9 +372,13 @@ export const loadingSteps3Interactive: ReadonlyArray = [ - {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    } position={'bottom'} > @@ -318,9 +406,14 @@ export const successfulStepsInteractive: ReadonlyArray = [ - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -337,9 +430,13 @@ export const successfulStepsInteractive: ReadonlyArray = [ - {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    } position={'bottom'} > @@ -367,9 +464,14 @@ export const blockedStepsInteractive: ReadonlyArray = [ - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -386,9 +488,13 @@ export const blockedStepsInteractive: ReadonlyArray = [ - {'* securityGroupID1\n * securityGroupID2\n * securityGroupID3\n'} - +
    +
      +
    • securityGroupID1
    • +
    • securityGroupID2
    • +
    • securityGroupID3
    • +
    +
    } position={'bottom'} > @@ -401,10 +507,10 @@ export const blockedStepsInteractive: ReadonlyArray = [ { header:
    Need Cross Region Consent
    , details: ( - +
    To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. - +
    ), status: 'warning', }, @@ -418,9 +524,14 @@ export const failedStepsInteractive: ReadonlyArray = [ - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} -
    +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -444,9 +555,14 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > @@ -475,9 +591,14 @@ export const failedStepsWithRetryButtonInteractive: ReadonlyArray - {'* ec2InstanceID1\n * ec2InstanceID2\n * ec2InstanceID3\n * ec2InstanceID4\n'} - +
    +
      +
    • ec2InstanceID1
    • +
    • ec2InstanceID2
    • +
    • ec2InstanceID3
    • +
    • ec2InstanceID4
    • +
    +
    } position={'bottom'} > diff --git a/pages/steps/styles.scss b/pages/steps/styles.scss index a36c8e5939..6b8ae3425d 100644 --- a/pages/steps/styles.scss +++ b/pages/steps/styles.scss @@ -4,7 +4,8 @@ */ /* stylelint-disable-next-line selector-max-type */ -.markdown > :where(p) { +.details { margin-block: 0; - white-space: pre-wrap; + font-size: 12px; + color: grey; } diff --git a/src/steps/__tests__/steps.test.tsx b/src/steps/__tests__/steps.test.tsx index c640257f5b..fc57d5037a 100644 --- a/src/steps/__tests__/steps.test.tsx +++ b/src/steps/__tests__/steps.test.tsx @@ -52,6 +52,19 @@ const successfullSteps: ReadonlyArray = [ }, ]; +const stepsWithIconAriaLabel: ReadonlyArray = [ + { + header: 'Checked Cross Region Consent', + status: 'success', + statusIconAriaLabel: 'test icon aria label 1', + }, + { + header: 'Analyzing security rules', + status: 'loading', + statusIconAriaLabel: 'test icon aria label 2', + }, +]; + const renderSteps = (props: Partial) => { const renderResult = render(); return createWrapper(renderResult.container).findSteps()!; @@ -112,7 +125,39 @@ describe('Steps', () => { }); }); - // describe('Accessibility', () => { + describe('Accessibility', () => { + test('applies ARIA label to steps', () => { + const testAriaLabel = 'Test aria label'; + const wrapper = renderSteps({ steps: successfullSteps, ariaLabel: testAriaLabel }); - // }) + const stepsComponent = wrapper.getElement(); + expect(stepsComponent).toHaveAccessibleName(testAriaLabel); + }); + + test('applies ARIA labelledby to steps', () => { + const testAriaLabelledBy = 'test-id'; + const wrapper = renderSteps({ steps: successfullSteps, ariaLabelledby: testAriaLabelledBy }); + + const stepsComponent = wrapper.getElement(); + expect(stepsComponent).toHaveAttribute('aria-labelledby', testAriaLabelledBy); + }); + + test('applies ARIA describedby to steps', () => { + const testAriaDescribedBy = 'test-id'; + const wrapper = renderSteps({ steps: successfullSteps, ariaDescribedby: testAriaDescribedBy }); + + const stepsComponent = wrapper.getElement(); + expect(stepsComponent).toHaveAttribute('aria-describedby', testAriaDescribedBy); + }); + + test('applies ARIA label to steps status indicators', () => { + const wrapper = renderSteps({ steps: stepsWithIconAriaLabel }); + + stepsWithIconAriaLabel.forEach((step, index) => { + expect(wrapper.findItems()[index]!.findStatusIndicator()?.getElement()).toHaveAccessibleName( + step.statusIconAriaLabel + ); + }); + }); + }); }); diff --git a/src/steps/interfaces.ts b/src/steps/interfaces.ts index b3e204c590..259905fbfe 100644 --- a/src/steps/interfaces.ts +++ b/src/steps/interfaces.ts @@ -9,7 +9,7 @@ export interface StepsProps extends BaseComponentProps { * * Each step definition has the following properties: * * `status` (string) - Status of the step corresponding to a status indicator. - * * `statusIconAriaLabel` (string) - (Optional) Text alternative for the status icon. + * * `statusIconAriaLabel` - (string) - (Optional) Text alternative for the status icon. * * `header` (react.ReactNode) - Area next to the status indicator of the step. * * `details` (react.ReactNode) - (Optional) The corresponding details of the step. */ diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index 34852850c6..049abb96dd 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -1,7 +1,6 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import clsx from 'clsx'; import { InternalBaseComponentProps } from '../internal/hooks/use-base-component'; import { SomeRequired } from '../internal/types'; @@ -9,19 +8,18 @@ import StatusIndicator from '../status-indicator/internal'; import { StepsProps } from './interfaces'; import styles from './styles.css.js'; -import testUtilStyles from './test-classes/styles.css.js'; type InternalStepsProps = SomeRequired & InternalBaseComponentProps; const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsProps.Step) => { return ( -
  • -
    +
  • +
    -
    {header}
    +
    {header}

    - {details &&
    {details}
    } + {details &&
    {details}
    }
  • ); }; @@ -29,7 +27,7 @@ const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsPro export const InternalSteps = ({ steps, ...props }: InternalStepsProps) => { return (
    .step-details { align-items: center; - font-size: awsui.$font-size-body-s; - color: awsui.$color-text-status-inactive; grid-row: 2; grid-column: 2; } diff --git a/src/steps/test-classes/styles.scss b/src/steps/test-classes/styles.scss deleted file mode 100644 index 516cd01c27..0000000000 --- a/src/steps/test-classes/styles.scss +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - SPDX-License-Identifier: Apache-2.0 -*/ - -.steps { - /* used in test-utils */ -} - -.step-container { - /* used in test-utils */ -} - -.step-status { - /* used in test-utils */ -} - -.step-header { - /* used in test-utils */ -} - -.step-details { - /* used in test-utils */ -} diff --git a/src/test-utils/dom/steps/index.ts b/src/test-utils/dom/steps/index.ts index 53e05c014f..712b0748ae 100644 --- a/src/test-utils/dom/steps/index.ts +++ b/src/test-utils/dom/steps/index.ts @@ -3,7 +3,7 @@ import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; import statusIconStyles from '../../../status-indicator/styles.selectors.js'; -import testUtilStyles from '../../../steps/test-classes/styles.selectors.js'; +import styles from '../../../steps/styles.selectors.js'; export class StepWrapper extends ComponentWrapper { /** @@ -17,23 +17,23 @@ export class StepWrapper extends ComponentWrapper { * Finds the header of a step */ findHeader(): ElementWrapper | null { - return this.findByClassName(testUtilStyles['step-header']); + return this.findByClassName(styles['step-header']); } /** * Finds the details of a step */ findDetails(): ElementWrapper | null { - return this.findByClassName(testUtilStyles['step-details']); + return this.findByClassName(styles['step-details']); } } export default class StepsWrapper extends ComponentWrapper { - static rootSelector: string = testUtilStyles.steps; + static rootSelector: string = styles.root; /** * Finds all step items */ findItems(): Array { - return this.findAllByClassName(testUtilStyles['step-container']).map(item => new StepWrapper(item.getElement())); + return this.findAllByClassName(styles['step-container']).map(item => new StepWrapper(item.getElement())); } } From 591be97cea613d5545f9802dd718046e4d5040da Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 10 Sep 2024 12:36:04 +0200 Subject: [PATCH 04/20] add steps component documentation --- .../__snapshots__/documenter.test.ts.snap | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/__tests__/__snapshots__/documenter.test.ts.snap b/src/__tests__/__snapshots__/documenter.test.ts.snap index 824d426828..af1e8a6bc6 100644 --- a/src/__tests__/__snapshots__/documenter.test.ts.snap +++ b/src/__tests__/__snapshots__/documenter.test.ts.snap @@ -14641,6 +14641,67 @@ and truncates it with an ellipsis.", } `; +exports[`Documenter definition for steps matches the snapshot: steps 1`] = ` +Object { + "events": Array [], + "functions": Array [], + "name": "Steps", + "properties": Array [ + Object { + "description": "Sets the \`aria-describedby\` property on the progress steps container.", + "name": "ariaDescribedby", + "optional": true, + "type": "string", + }, + Object { + "description": "Provides an \`aria-label\` to progress steps container. +Don't use \`ariaLabel\` and \`ariaLabelledby\` at the same time.", + "name": "ariaLabel", + "optional": true, + "type": "string", + }, + Object { + "description": "Sets the \`aria-labelledby\` property on the progress steps container. +If there's a visible label element that you can reference, use this instead of \`ariaLabel\`. +Don't use \`ariaLabel\` and \`ariaLabelledby\` at the same time.", + "name": "ariaLabelledby", + "optional": true, + "type": "string", + }, + Object { + "deprecatedTag": "Custom CSS is not supported. For testing and other use cases, use [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes).", + "description": "Adds the specified classes to the root element of the component.", + "name": "className", + "optional": true, + "type": "string", + }, + Object { + "deprecatedTag": "The usage of the \`id\` attribute is reserved for internal use cases. For testing and other use cases, +use [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes). If you must +use the \`id\` attribute, consider setting it on a parent element instead.", + "description": "Adds the specified ID to the root element of the component.", + "name": "id", + "optional": true, + "type": "string", + }, + Object { + "description": "An array of individual steps +Each step definition has the following properties: + * \`status\` (string) - Status of the step corresponding to a status indicator. + * \`statusIconAriaLabel\` - (string) - (Optional) Text alternative for the status icon. + * \`header\` (react.ReactNode) - Area next to the status indicator of the step. + * \`details\` (react.ReactNode) - (Optional) The corresponding details of the step. +", + "name": "steps", + "optional": false, + "type": "ReadonlyArray", + }, + ], + "regions": Array [], + "releaseStatus": "stable", +} +`; + exports[`Documenter definition for table matches the snapshot: table 1`] = ` Object { "events": Array [ From 5aded93450a8f428d406317b70c700bf98fae0a0 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 10 Sep 2024 15:05:48 +0200 Subject: [PATCH 05/20] fix tests --- pages/steps/styles.scss | 1 - src/__tests__/required-props-for-components.ts | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pages/steps/styles.scss b/pages/steps/styles.scss index 6b8ae3425d..cfa0e69ce7 100644 --- a/pages/steps/styles.scss +++ b/pages/steps/styles.scss @@ -7,5 +7,4 @@ .details { margin-block: 0; font-size: 12px; - color: grey; } diff --git a/src/__tests__/required-props-for-components.ts b/src/__tests__/required-props-for-components.ts index 2662576a9e..4c9251dc0a 100644 --- a/src/__tests__/required-props-for-components.ts +++ b/src/__tests__/required-props-for-components.ts @@ -147,6 +147,9 @@ const defaultProps: Record> = { 'key-value-pairs': { items: [], }, + steps: { + steps: [], + }, }; export function getRequiredPropsForComponent(componentName: string): Record { From 4bbf553a6fa907ec6b8463c7e7c11436c7d01254 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 10 Sep 2024 16:11:59 +0200 Subject: [PATCH 06/20] fix tests --- pages/steps/permutationts-utils.tsx | 46 +++++----- .../test-utils-selectors.test.tsx.snap | 7 ++ src/steps/internal.tsx | 17 ++-- src/steps/styles.scss | 84 ++++++++++--------- src/test-utils/dom/steps/index.ts | 6 +- 5 files changed, 86 insertions(+), 74 deletions(-) diff --git a/pages/steps/permutationts-utils.tsx b/pages/steps/permutationts-utils.tsx index 649d5cd7d1..65ef427cbe 100644 --- a/pages/steps/permutationts-utils.tsx +++ b/pages/steps/permutationts-utils.tsx @@ -240,7 +240,7 @@ export const stepsPermutations = createPermutations([ export const initialStepsInteractive: ReadonlyArray = [ { status: 'loading', - header:
    Listing EC2 instances
    , + header:
    Listing EC2 instances
    , details:
    Using the ec2_DescribeInstances
    , }, ]; @@ -249,7 +249,7 @@ export const loadingStepsInteractive: ReadonlyArray = [ { status: 'success', header: ( -
    +
    Listed EC2 instances:{' '} = [ ), }, { - header:
    Gathering Security Group IDs
    , + header:
    Gathering Security Group IDs
    , details: (
    Using the ec2_DescribeSecurityGroupsTool:: @@ -289,7 +289,7 @@ export const loadingStepsInteractive: ReadonlyArray = [ export const loadingSteps2Interactive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} = [ }, { header: ( -
    +
    Gathered Security Group IDs:{' '} = [ status: 'success', }, { - header:
    Checking Cross Region Consent
    , + header:
    Checking Cross Region Consent
    , status: 'loading', }, ]; @@ -343,7 +343,7 @@ export const loadingSteps2Interactive: ReadonlyArray = [ export const loadingSteps3Interactive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} = [ }, { header: ( -
    +
    Gathered Security Group IDs:{' '} = [ status: 'success', }, { - header:
    Checked Cross Region Consent
    , + header:
    Checked Cross Region Consent
    , status: 'success', }, { - header:
    Analyzing security rules
    , + header:
    Analyzing security rules
    , status: 'loading', }, ]; @@ -401,7 +401,7 @@ export const loadingSteps3Interactive: ReadonlyArray = [ export const successfulStepsInteractive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} = [ }, { header: ( -
    +
    Gathered Security Group IDs:{' '} = [ status: 'success', }, { - header:
    Checked Cross Region Consent
    , + header:
    Checked Cross Region Consent
    , status: 'success', }, { - header:
    Analyzing security rules
    , + header:
    Analyzing security rules
    , status: 'success', }, ]; @@ -459,7 +459,7 @@ export const successfulStepsInteractive: ReadonlyArray = [ export const blockedStepsInteractive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} = [ }, { header: ( -
    +
    Gathered Security Group IDs:{' '} = [ status: 'success', }, { - header:
    Need Cross Region Consent
    , + header:
    Need Cross Region Consent
    , details: (
    To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS @@ -519,7 +519,7 @@ export const blockedStepsInteractive: ReadonlyArray = [ export const failedStepsInteractive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} = [ status: 'success', }, { - header:
    Could not fetch security groups
    , + header:
    Could not fetch security groups
    , status: 'error', }, ]; @@ -550,7 +550,7 @@ export const failedStepsInteractive: ReadonlyArray = [ export const failedStepsWithRetryTextInteractive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} status: 'success', }, { - header:
    Could not fetch security groups
    , + header:
    Could not fetch security groups
    , details: (
    The request expired due to a server issue. Retry @@ -586,7 +586,7 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray export const failedStepsWithRetryButtonInteractive: ReadonlyArray = [ { header: ( -
    +
    Listed EC2 instances:{' '} Could not fetch security groups
    , + header:
    Could not fetch security groups
    , details: ( <>
    The request expired due to a server issue.
    diff --git a/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap b/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap index b82a00071b..4522270c83 100644 --- a/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap +++ b/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap @@ -517,8 +517,15 @@ Object { "awsui_slider_rjqu5", ], "status-indicator": Array [ + "awsui_icon_1cbgc", "awsui_root_1cbgc", ], + "steps": Array [ + "awsui_container_gxp9y", + "awsui_details_gxp9y", + "awsui_header_gxp9y", + "awsui_root_gxp9y", + ], "table": Array [ "awsui_body-cell-edit-active_c6tup", "awsui_body-cell-editor-controls_c6tup", diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index 049abb96dd..a8ef0c2745 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -1,6 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React from 'react'; +import clsx from 'clsx'; import { InternalBaseComponentProps } from '../internal/hooks/use-base-component'; import { SomeRequired } from '../internal/types'; @@ -13,13 +14,13 @@ type InternalStepsProps = SomeRequired & InternalBaseCompon const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsProps.Step) => { return ( -
  • -
    +
  • +
    -
    {header}
    -
    - {details &&
    {details}
    } +
    {header}
    +
    + {details &&
    {details}
    }
  • ); }; @@ -27,12 +28,14 @@ const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsPro export const InternalSteps = ({ steps, ...props }: InternalStepsProps) => { return (
    -
      +
        {steps.map((step, index) => ( .step-container { - display: grid; - grid-template-columns: awsui.$space-static-l 1fr; - grid-template-rows: minmax(awsui.$space-static-l, auto); - row-gap: awsui.$space-static-xxxs; - margin-block-end: awsui.$space-static-xxxs; - - > .step-status { - grid-row: 1; - grid-column: 1; - text-align: center; +.steps { + > .list { + list-style: none; + + > .container { + display: grid; + grid-template-columns: awsui.$space-static-l 1fr; + grid-template-rows: minmax(awsui.$space-static-l, auto); + row-gap: awsui.$space-static-xxxs; + margin-block-end: awsui.$space-static-xxxs; + + > .status { + grid-row: 1; + grid-column: 1; + text-align: center; + } + + > .header { + grid-row: 1; + grid-column: 2; + } + + > .details { + align-items: center; + grid-row: 2; + grid-column: 2; + } + + > .connector { + grid-row: 2; + grid-column: 1; + background-color: awsui.$color-border-divider-default; + margin-block: 0; + border-block: 0; + border-inline: 0; + inline-size: awsui.$space-static-xxxs; + block-size: auto; + min-block-size: awsui.$space-static-xs; + position: relative; + inset-inline-end: awsui.$space-static-xxxs; + } } - > .step-header { - grid-row: 1; - grid-column: 2; + > :last-of-type > .connector { + display: none; } - - > .step-details { - align-items: center; - grid-row: 2; - grid-column: 2; - } - - > .step-connector { - grid-row: 2; - grid-column: 1; - background-color: awsui.$color-border-divider-default; - margin-block: 0; - border-block: 0; - border-inline: 0; - inline-size: awsui.$space-static-xxxs; - block-size: auto; - min-block-size: awsui.$space-static-xs; - position: relative; - inset-inline-end: awsui.$space-static-xxxs; - } - } - - > :last-of-type > .step-connector { - display: none; } } diff --git a/src/test-utils/dom/steps/index.ts b/src/test-utils/dom/steps/index.ts index 712b0748ae..0488ce77c1 100644 --- a/src/test-utils/dom/steps/index.ts +++ b/src/test-utils/dom/steps/index.ts @@ -17,14 +17,14 @@ export class StepWrapper extends ComponentWrapper { * Finds the header of a step */ findHeader(): ElementWrapper | null { - return this.findByClassName(styles['step-header']); + return this.findByClassName(styles.header); } /** * Finds the details of a step */ findDetails(): ElementWrapper | null { - return this.findByClassName(styles['step-details']); + return this.findByClassName(styles.details); } } export default class StepsWrapper extends ComponentWrapper { @@ -34,6 +34,6 @@ export default class StepsWrapper extends ComponentWrapper { * Finds all step items */ findItems(): Array { - return this.findAllByClassName(styles['step-container']).map(item => new StepWrapper(item.getElement())); + return this.findAllByClassName(styles.container).map(item => new StepWrapper(item.getElement())); } } From b55998031448d63a8757b82c9140eb4cd77de868 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Thu, 12 Sep 2024 17:13:33 +0200 Subject: [PATCH 07/20] update component design --- .../steps/permutations-with-updates.page.tsx | 2 +- pages/steps/permutationts-utils.tsx | 247 +++++++++++------- .../test-utils-selectors.test.tsx.snap | 1 - src/steps/__tests__/steps.test.tsx | 16 +- src/steps/internal.tsx | 13 +- src/steps/styles.scss | 13 +- src/test-utils/dom/steps/index.ts | 8 - 7 files changed, 168 insertions(+), 132 deletions(-) diff --git a/pages/steps/permutations-with-updates.page.tsx b/pages/steps/permutations-with-updates.page.tsx index 6af3093686..2b455ceae3 100644 --- a/pages/steps/permutations-with-updates.page.tsx +++ b/pages/steps/permutations-with-updates.page.tsx @@ -112,7 +112,7 @@ export default function StepsPermutationsWithUpdates() { return ( -
        +

        Steps permutations with updates

        diff --git a/pages/steps/permutationts-utils.tsx b/pages/steps/permutationts-utils.tsx index 65ef427cbe..8db9982690 100644 --- a/pages/steps/permutationts-utils.tsx +++ b/pages/steps/permutationts-utils.tsx @@ -14,17 +14,19 @@ import styles from './styles.scss'; const initialSteps: ReadonlyArray = [ { status: 'loading', + statusIconAriaLabel: 'loading', header: 'Listing EC2 instances', - details:
        Using the ec2_DescribeInstances
        , + details: Using the ec2_DescribeInstances, }, ]; const loadingSteps: ReadonlyArray = [ { status: 'success', - header:
        Listed EC2 instances
        , + statusIconAriaLabel: 'success', + header: Listed EC2 instances, details: ( -
        + EC2 Instances IDs:
        • ec2InstanceID1
        • @@ -32,22 +34,23 @@ const loadingSteps: ReadonlyArray = [
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + ), }, { header: 'Gathering Security Group IDs', details: ( -
        - Using the ec2_DescribeSecurityGroupsTool:: + + Using the ec2_DescribeSecurityGroupsTool:
        • securityGroupID1
        • securityGroupID2
        • securityGroupID3
        -
        + ), status: 'loading', + statusIconAriaLabel: 'loading', }, ]; @@ -55,7 +58,7 @@ export const loadingSteps2: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( -
        + EC2 Instances IDs:
        • ec2InstanceID1
        • @@ -63,27 +66,30 @@ export const loadingSteps2: ReadonlyArray = [
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Gathered Security Group IDs', details: ( -
        + Security Groups ID
        • securityGroupID1
        • securityGroupID2
        • securityGroupID3
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Checking Cross Region Consent', status: 'loading', + statusIconAriaLabel: 'loading', }, ]; @@ -91,7 +97,7 @@ export const loadingSteps3: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( -
        + EC2 Instances IDs:
        • ec2InstanceID1
        • @@ -99,31 +105,35 @@ export const loadingSteps3: ReadonlyArray = [
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Gathered Security Group IDs', details: ( -
        + Security Groups ID
        • securityGroupID1
        • securityGroupID2
        • securityGroupID3
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Checked Cross Region Consent', status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Analyzing security rules', status: 'loading', + statusIconAriaLabel: 'loading', }, ]; @@ -131,7 +141,7 @@ export const successfulSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( -
        + EC2 Instances IDs:
        • ec2InstanceID1
        • @@ -139,31 +149,35 @@ export const successfulSteps: ReadonlyArray = [
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Gathered Security Group IDs', details: ( -
        + Security Groups ID
        • securityGroupID1
        • securityGroupID2
        • securityGroupID3
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Checked Cross Region Consent', status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Analyzing security rules', status: 'success', + statusIconAriaLabel: 'success', }, ]; @@ -171,7 +185,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( -
        + EC2 Instances IDs:
        • ec2InstanceID1
        • @@ -179,33 +193,36 @@ export const blockedSteps: ReadonlyArray = [
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Gathered Security Group IDs', details: ( -
        + Security Groups ID
        • securityGroupID1
        • securityGroupID2
        • securityGroupID3
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Need Cross Region Consent', details: ( -
        + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. -
        + ), status: 'warning', + statusIconAriaLabel: 'warning', }, ]; @@ -213,7 +230,7 @@ export const failedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( -
        + EC2 Instances IDs:
        • ec2InstanceID1
        • @@ -221,13 +238,15 @@ export const failedSteps: ReadonlyArray = [
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: 'Could not fetch security groups', status: 'error', + statusIconAriaLabel: 'error', }, ]; @@ -240,411 +259,437 @@ export const stepsPermutations = createPermutations([ export const initialStepsInteractive: ReadonlyArray = [ { status: 'loading', - header:
        Listing EC2 instances
        , - details:
        Using the ec2_DescribeInstances
        , + statusIconAriaLabel: 'loading', + header: Listing EC2 instances, + details: Using the ec2_DescribeInstances, }, ]; export const loadingStepsInteractive: ReadonlyArray = [ { status: 'success', + statusIconAriaLabel: 'success', header: ( -
        + Listed EC2 instances:{' '} +
        • ec2InstanceID1
        • ec2InstanceID2
        • ec2InstanceID3
        • ec2InstanceID4
        -
        + } position={'bottom'} > 4 items -
    + ), }, { - header:
    Gathering Security Group IDs
    , + header: Gathering Security Group IDs, details: ( -
    - Using the ec2_DescribeSecurityGroupsTool:: + + Using the ec2_DescribeSecurityGroupsTool:
    • securityGroupID1
    • securityGroupID2
    • securityGroupID3
    -
    + ), status: 'loading', + statusIconAriaLabel: 'loading', }, ]; export const loadingSteps2Interactive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: ( -
    + Gathered Security Group IDs:{' '} +
    • securityGroupID1
    • securityGroupID2
    • securityGroupID3
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Checking Cross Region Consent
    , + header: Checking Cross Region Consent, status: 'loading', + statusIconAriaLabel: 'loading', }, ]; export const loadingSteps3Interactive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items
    -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: ( -
    + Gathered Security Group IDs:{' '} +
    • securityGroupID1
    • securityGroupID2
    • securityGroupID3
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Checked Cross Region Consent
    , + header: Checked Cross Region Consent, status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Analyzing security rules
    , + header: Analyzing security rules, status: 'loading', + statusIconAriaLabel: 'loading', }, ]; export const successfulStepsInteractive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items
    -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: ( -
    + Gathered Security Group IDs:{' '} +
    • securityGroupID1
    • securityGroupID2
    • securityGroupID3
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Checked Cross Region Consent
    , + header: Checked Cross Region Consent, status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Analyzing security rules
    , + header: Analyzing security rules, status: 'success', + statusIconAriaLabel: 'success', }, ]; export const blockedStepsInteractive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { header: ( -
    + Gathered Security Group IDs:{' '} +
    • securityGroupID1
    • securityGroupID2
    • securityGroupID3
    -
    + } position={'bottom'} > 4 items
    -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Need Cross Region Consent
    , + header: Need Cross Region Consent, details: ( -
    + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. -
    + ), status: 'warning', + statusIconAriaLabel: 'warning', }, ]; export const failedStepsInteractive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Could not fetch security groups
    , + header: Could not fetch security groups, status: 'error', + statusIconAriaLabel: 'error', }, ]; export const failedStepsWithRetryTextInteractive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items
    -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Could not fetch security groups
    , + header: Could not fetch security groups, details: ( -
    + The request expired due to a server issue. Retry -
    + ), status: 'error', + statusIconAriaLabel: 'error', }, ]; export const failedStepsWithRetryButtonInteractive: ReadonlyArray = [ { header: ( -
    + Listed EC2 instances:{' '} +
    • ec2InstanceID1
    • ec2InstanceID2
    • ec2InstanceID3
    • ec2InstanceID4
    -
    + } position={'bottom'} > 4 items -
    + ), status: 'success', + statusIconAriaLabel: 'success', }, { - header:
    Could not fetch security groups
    , + header: Could not fetch security groups, details: ( <> -
    The request expired due to a server issue.
    + The request expired due to a server issue. ), status: 'error', + statusIconAriaLabel: 'error', }, ]; const changesetStepsInteractive: ReadonlyArray = [ { status: 'success', + statusIconAriaLabel: 'success', header: ( -
    + Create S3 bucket-12 -
    + ), }, { status: 'success', + statusIconAriaLabel: 'success', header: ( -
    + Create CloudWatch alarm -
    + ), }, { status: 'loading', + statusIconAriaLabel: 'loading', header: ( -
    + Update Lambda-1 -
    + ), }, ]; diff --git a/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap b/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap index 4522270c83..7db8fd40fd 100644 --- a/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap +++ b/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap @@ -517,7 +517,6 @@ Object { "awsui_slider_rjqu5", ], "status-indicator": Array [ - "awsui_icon_1cbgc", "awsui_root_1cbgc", ], "steps": Array [ diff --git a/src/steps/__tests__/steps.test.tsx b/src/steps/__tests__/steps.test.tsx index fc57d5037a..b6b3d1f916 100644 --- a/src/steps/__tests__/steps.test.tsx +++ b/src/steps/__tests__/steps.test.tsx @@ -6,6 +6,8 @@ import { render } from '@testing-library/react'; import Steps, { StepsProps } from '../../../lib/components/steps'; import createWrapper from '../../../lib/components/test-utils/dom'; +import statusIconStyles from '../../../lib/components/status-indicator/styles.selectors.js'; + const defaultProps: StepsProps = { steps: [], ariaLabel: 'Steps Execution', @@ -120,8 +122,12 @@ describe('Steps', () => { }); testStatus.forEach((_, index) => { - expect(wrapper.findItems()[index]!.findStatusIndicator()).not.toBeNull(); - expect(wrapper.findItems()[index]!.findStatusIndicator()?.getElement()).toHaveTextContent(''); + expect( + wrapper.findItems()[index]!.findHeader()!.findByClassName(statusIconStyles.icon)!.getElement() + ).not.toBeNull(); + expect( + wrapper.findItems()[index]!.findHeader()!.findByClassName(statusIconStyles.icon)!.getElement() + ).toHaveTextContent(''); }); }); @@ -154,9 +160,9 @@ describe('Steps', () => { const wrapper = renderSteps({ steps: stepsWithIconAriaLabel }); stepsWithIconAriaLabel.forEach((step, index) => { - expect(wrapper.findItems()[index]!.findStatusIndicator()?.getElement()).toHaveAccessibleName( - step.statusIconAriaLabel - ); + expect( + wrapper.findItems()[index]!.findHeader()!.findByClassName(statusIconStyles.icon)!.getElement() + ).toHaveAccessibleName(step.statusIconAriaLabel); }); }); }); diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index a8ef0c2745..e798e6c6e9 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -15,17 +15,18 @@ type InternalStepsProps = SomeRequired & InternalBaseCompon const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsProps.Step) => { return (
  • -
    - +
    + + {header} +
    -
    {header}
    -
    +
    {details &&
    {details}
    }
  • ); }; -export const InternalSteps = ({ steps, ...props }: InternalStepsProps) => { +export const InternalSteps = ({ steps, __internalRootRef, ...props }: InternalStepsProps) => { return (
    { aria-label={props.ariaLabel} aria-labelledby={props.ariaLabelledby} aria-describedby={props.ariaDescribedby} - ref={props.__internalRootRef} + ref={__internalRootRef} >
      {steps.map((step, index) => ( diff --git a/src/steps/styles.scss b/src/steps/styles.scss index baa229e5ec..ad3530e0dc 100644 --- a/src/steps/styles.scss +++ b/src/steps/styles.scss @@ -18,24 +18,17 @@ display: grid; grid-template-columns: awsui.$space-static-l 1fr; grid-template-rows: minmax(awsui.$space-static-l, auto); - row-gap: awsui.$space-static-xxxs; - margin-block-end: awsui.$space-static-xxxs; - - > .status { - grid-row: 1; - grid-column: 1; - text-align: center; - } > .header { grid-row: 1; - grid-column: 2; + grid-column: 1 / span 2; } > .details { align-items: center; grid-row: 2; grid-column: 2; + margin-block-end: awsui.$space-static-xs; } > .connector { @@ -45,7 +38,7 @@ margin-block: 0; border-block: 0; border-inline: 0; - inline-size: awsui.$space-static-xxxs; + inline-size: awsui.$border-divider-list-width; block-size: auto; min-block-size: awsui.$space-static-xs; position: relative; diff --git a/src/test-utils/dom/steps/index.ts b/src/test-utils/dom/steps/index.ts index 0488ce77c1..b859c747d6 100644 --- a/src/test-utils/dom/steps/index.ts +++ b/src/test-utils/dom/steps/index.ts @@ -2,17 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom'; -import statusIconStyles from '../../../status-indicator/styles.selectors.js'; import styles from '../../../steps/styles.selectors.js'; export class StepWrapper extends ComponentWrapper { - /** - * Finds the status of a step - */ - findStatusIndicator(): ElementWrapper | null { - return this.findByClassName(statusIconStyles.icon); - } - /** * Finds the header of a step */ From e5634e57d59c86f153370eed77c3337cecd954c2 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Fri, 13 Sep 2024 12:15:23 +0200 Subject: [PATCH 08/20] remove interactive permutations --- pages/steps/permutations-interactive.page.tsx | 23 --- .../steps/permutations-with-updates.page.tsx | 160 ------------------ src/steps/__tests__/steps.test.tsx | 28 --- src/steps/internal.tsx | 2 +- src/steps/styles.scss | 2 - 5 files changed, 1 insertion(+), 214 deletions(-) delete mode 100644 pages/steps/permutations-interactive.page.tsx delete mode 100644 pages/steps/permutations-with-updates.page.tsx diff --git a/pages/steps/permutations-interactive.page.tsx b/pages/steps/permutations-interactive.page.tsx deleted file mode 100644 index 22019eeea5..0000000000 --- a/pages/steps/permutations-interactive.page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import React from 'react'; - -import Steps from '~components/steps'; - -import PermutationsView from '../utils/permutations-view'; -import ScreenshotArea from '../utils/screenshot-area'; -import { stepsPermutationsInteractive } from './permutationts-utils'; - -export default function StepsInteractivePermutations() { - return ( - -
      -

      Steps interactive permutations

      -
      {}
      } - /> -
      -
      - ); -} diff --git a/pages/steps/permutations-with-updates.page.tsx b/pages/steps/permutations-with-updates.page.tsx deleted file mode 100644 index 2b455ceae3..0000000000 --- a/pages/steps/permutations-with-updates.page.tsx +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import React, { useRef, useState } from 'react'; - -import Box from '~components/box'; -import Button from '~components/button'; -import Steps from '~components/steps'; - -import ScreenshotArea from '../utils/screenshot-area'; -import { - blockedStepsInteractive, - failedStepsInteractive, - failedStepsWithRetryButtonInteractive, - initialStepsInteractive, - loadingSteps2Interactive, - loadingSteps3Interactive, - loadingStepsInteractive, - successfulStepsInteractive, -} from './permutationts-utils'; - -export default function StepsPermutationsWithUpdates() { - const [stepIndex1, setStepIndex1] = useState(0); - const timeoutRef1 = useRef>(); - const stepsExecution1 = [ - initialStepsInteractive, - loadingStepsInteractive, - loadingSteps2Interactive, - loadingSteps3Interactive, - successfulStepsInteractive, - ]; - - const [stepIndex2, setStepIndex2] = useState(0); - const timeoutRef2 = useRef>(); - const stepsExecution2 = [ - initialStepsInteractive, - loadingStepsInteractive, - loadingSteps2Interactive, - blockedStepsInteractive, - ]; - - const [stepIndex3, setStepIndex3] = useState(0); - const timeoutRef3 = useRef>(); - const stepsExecution3 = [initialStepsInteractive, loadingStepsInteractive, failedStepsInteractive]; - - const [stepIndex4, setStepIndex4] = useState(0); - const timeoutRef4 = useRef>(); - const stepsExecution4 = [initialStepsInteractive, loadingStepsInteractive, failedStepsWithRetryButtonInteractive]; - - const activateTimerStep1 = () => { - resetTimeoutStep1(); - function step(i: number) { - setStepIndex1(i + 1); - timeoutRef1.current = setTimeout(() => i < stepsExecution1.length - 2 && step(i + 1), 2000); - } - step(0); - }; - const resetTimeoutStep1 = () => { - setStepIndex1(0); - if (timeoutRef1.current !== undefined) { - clearTimeout(timeoutRef1.current); - timeoutRef1.current = undefined; - } - }; - - const activateTimerStep2 = () => { - resetTimeoutStep2(); - function step(i: number) { - setStepIndex2(i + 1); - timeoutRef2.current = setTimeout(() => i < stepsExecution2.length - 2 && step(i + 1), 2000); - } - step(0); - }; - const resetTimeoutStep2 = () => { - setStepIndex2(0); - if (timeoutRef2.current !== undefined) { - clearTimeout(timeoutRef2.current); - timeoutRef2.current = undefined; - } - }; - - const activateTimerStep3 = () => { - resetTimeoutStep3(); - function step(i: number) { - setStepIndex3(i + 1); - timeoutRef3.current = setTimeout(() => i < stepsExecution3.length - 2 && step(i + 1), 2000); - } - step(0); - }; - const resetTimeoutStep3 = () => { - setStepIndex3(0); - if (timeoutRef3.current !== undefined) { - clearTimeout(timeoutRef3.current); - timeoutRef3.current = undefined; - } - }; - - const activateTimerStep4 = () => { - resetTimeoutStep4(); - function step(i: number) { - setStepIndex4(i + 1); - timeoutRef4.current = setTimeout(() => i < stepsExecution4.length - 2 && step(i + 1), 2000); - } - step(0); - }; - const resetTimeoutStep4 = () => { - setStepIndex4(0); - if (timeoutRef4.current !== undefined) { - clearTimeout(timeoutRef1.current); - timeoutRef4.current = undefined; - } - }; - - return ( - -
      -

      Steps permutations with updates

      - - - Successful Execution - - -
      - - -
      -
      - - - Blocked Execution - - -
      - - -
      -
      - - - Failed Execution - - -
      - - -
      -
      - - - Failed Execution with Retry - - -
      - - -
      -
      -
      -
      - ); -} diff --git a/src/steps/__tests__/steps.test.tsx b/src/steps/__tests__/steps.test.tsx index b6b3d1f916..c4e5d83505 100644 --- a/src/steps/__tests__/steps.test.tsx +++ b/src/steps/__tests__/steps.test.tsx @@ -103,34 +103,6 @@ describe('Steps', () => { expect(wrapper.findItems()[3]!.findDetails()).toBeNull(); }); - test('renders correct status icons', () => { - const testStatus: StepsProps.Status[] = [ - 'error', - 'warning', - 'success', - 'info', - 'stopped', - 'pending', - 'in-progress', - 'loading', - ]; - const wrapper = renderSteps({ - steps: testStatus.map(status => ({ - header: 'test step header', - status, - })), - }); - - testStatus.forEach((_, index) => { - expect( - wrapper.findItems()[index]!.findHeader()!.findByClassName(statusIconStyles.icon)!.getElement() - ).not.toBeNull(); - expect( - wrapper.findItems()[index]!.findHeader()!.findByClassName(statusIconStyles.icon)!.getElement() - ).toHaveTextContent(''); - }); - }); - describe('Accessibility', () => { test('applies ARIA label to steps', () => { const testAriaLabel = 'Test aria label'; diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index e798e6c6e9..b491f486b0 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -30,7 +30,7 @@ export const InternalSteps = ({ steps, __internalRootRef, ...props }: InternalSt return (
      .list { list-style: none; From 8ba6259bdfb3b0cb82557cfea7134afdf536367e Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Fri, 13 Sep 2024 14:18:41 +0200 Subject: [PATCH 09/20] remove permutations stylesheet --- ...ionts-utils.tsx => permutations-utils.tsx} | 58 +++++++++---------- pages/steps/permutations.page.tsx | 2 +- pages/steps/styles.scss | 10 ---- 3 files changed, 29 insertions(+), 41 deletions(-) rename pages/steps/{permutationts-utils.tsx => permutations-utils.tsx} (90%) delete mode 100644 pages/steps/styles.scss diff --git a/pages/steps/permutationts-utils.tsx b/pages/steps/permutations-utils.tsx similarity index 90% rename from pages/steps/permutationts-utils.tsx rename to pages/steps/permutations-utils.tsx index 8db9982690..c73102887d 100644 --- a/pages/steps/permutationts-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -9,14 +9,12 @@ import { StepsProps } from '~components/steps'; import createPermutations from '../utils/permutations'; -import styles from './styles.scss'; - const initialSteps: ReadonlyArray = [ { status: 'loading', statusIconAriaLabel: 'loading', header: 'Listing EC2 instances', - details: Using the ec2_DescribeInstances, + details: Using the ec2_DescribeInstances, }, ]; @@ -26,7 +24,7 @@ const loadingSteps: ReadonlyArray = [ statusIconAriaLabel: 'success', header: Listed EC2 instances, details: ( - + EC2 Instances IDs:
      • ec2InstanceID1
      • @@ -40,7 +38,7 @@ const loadingSteps: ReadonlyArray = [ { header: 'Gathering Security Group IDs', details: ( - + Using the ec2_DescribeSecurityGroupsTool:
        • securityGroupID1
        • @@ -58,7 +56,7 @@ export const loadingSteps2: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
          • ec2InstanceID1
          • @@ -74,7 +72,7 @@ export const loadingSteps2: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
            • securityGroupID1
            • @@ -97,7 +95,7 @@ export const loadingSteps3: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
              • ec2InstanceID1
              • @@ -113,7 +111,7 @@ export const loadingSteps3: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                • securityGroupID1
                • @@ -141,7 +139,7 @@ export const successfulSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                  • ec2InstanceID1
                  • @@ -157,7 +155,7 @@ export const successfulSteps: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                    • securityGroupID1
                    • @@ -185,7 +183,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                      • ec2InstanceID1
                      • @@ -201,7 +199,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                        • securityGroupID1
                        • @@ -216,7 +214,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Need Cross Region Consent', details: ( - + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. @@ -230,7 +228,7 @@ export const failedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                          • ec2InstanceID1
                          • @@ -261,7 +259,7 @@ export const initialStepsInteractive: ReadonlyArray = [ status: 'loading', statusIconAriaLabel: 'loading', header: Listing EC2 instances, - details: Using the ec2_DescribeInstances, + details: Using the ec2_DescribeInstances, }, ]; @@ -275,7 +273,7 @@ export const loadingStepsInteractive: ReadonlyArray = [ +
                            • ec2InstanceID1
                            • ec2InstanceID2
                            • @@ -294,7 +292,7 @@ export const loadingStepsInteractive: ReadonlyArray = [ { header: Gathering Security Group IDs, details: ( - + Using the ec2_DescribeSecurityGroupsTool:
                              • securityGroupID1
                              • @@ -316,7 +314,7 @@ export const loadingSteps2Interactive: ReadonlyArray = [ +
                                • ec2InstanceID1
                                • ec2InstanceID2
                                • @@ -341,7 +339,7 @@ export const loadingSteps2Interactive: ReadonlyArray = [ +
                                  • securityGroupID1
                                  • securityGroupID2
                                  • @@ -373,7 +371,7 @@ export const loadingSteps3Interactive: ReadonlyArray = [ +
                                    • ec2InstanceID1
                                    • ec2InstanceID2
                                    • @@ -398,7 +396,7 @@ export const loadingSteps3Interactive: ReadonlyArray = [ +
                                      • securityGroupID1
                                      • securityGroupID2
                                      • @@ -435,7 +433,7 @@ export const successfulStepsInteractive: ReadonlyArray = [ +
                                        • ec2InstanceID1
                                        • ec2InstanceID2
                                        • @@ -460,7 +458,7 @@ export const successfulStepsInteractive: ReadonlyArray = [ +
                                          • securityGroupID1
                                          • securityGroupID2
                                          • @@ -497,7 +495,7 @@ export const blockedStepsInteractive: ReadonlyArray = [ +
                                            • ec2InstanceID1
                                            • ec2InstanceID2
                                            • @@ -522,7 +520,7 @@ export const blockedStepsInteractive: ReadonlyArray = [ +
                                              • securityGroupID1
                                              • securityGroupID2
                                              • @@ -542,7 +540,7 @@ export const blockedStepsInteractive: ReadonlyArray = [ { header: Need Cross Region Consent, details: ( - + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. @@ -560,7 +558,7 @@ export const failedStepsInteractive: ReadonlyArray = [ +
                                                • ec2InstanceID1
                                                • ec2InstanceID2
                                                • @@ -593,7 +591,7 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray +
                                                  • ec2InstanceID1
                                                  • ec2InstanceID2
                                                  • @@ -631,7 +629,7 @@ export const failedStepsWithRetryButtonInteractive: ReadonlyArray +
                                                    • ec2InstanceID1
                                                    • ec2InstanceID2
                                                    • diff --git a/pages/steps/permutations.page.tsx b/pages/steps/permutations.page.tsx index 81cd63da70..be96a74fab 100644 --- a/pages/steps/permutations.page.tsx +++ b/pages/steps/permutations.page.tsx @@ -6,7 +6,7 @@ import Steps from '~components/steps'; import PermutationsView from '../utils/permutations-view'; import ScreenshotArea from '../utils/screenshot-area'; -import { stepsPermutations } from './permutationts-utils'; +import { stepsPermutations } from './permutations-utils'; export default function StepsPermutations() { return ( diff --git a/pages/steps/styles.scss b/pages/steps/styles.scss deleted file mode 100644 index cfa0e69ce7..0000000000 --- a/pages/steps/styles.scss +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - SPDX-License-Identifier: Apache-2.0 -*/ - -/* stylelint-disable-next-line selector-max-type */ -.details { - margin-block: 0; - font-size: 12px; -} From b43c12098c6dc78eeb56bb3fbf11bbbecb6edfb9 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Mon, 23 Sep 2024 17:55:21 +0200 Subject: [PATCH 10/20] update steps interface description --- src/steps/interfaces.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/steps/interfaces.ts b/src/steps/interfaces.ts index 259905fbfe..261cd3a093 100644 --- a/src/steps/interfaces.ts +++ b/src/steps/interfaces.ts @@ -10,8 +10,8 @@ export interface StepsProps extends BaseComponentProps { * Each step definition has the following properties: * * `status` (string) - Status of the step corresponding to a status indicator. * * `statusIconAriaLabel` - (string) - (Optional) Text alternative for the status icon. - * * `header` (react.ReactNode) - Area next to the status indicator of the step. - * * `details` (react.ReactNode) - (Optional) The corresponding details of the step. + * * `header` (ReactNode) - Summary corresponding to the step. + * * `details` (ReactNode) - (Optional) Additional information corresponding to the step. */ steps: ReadonlyArray; /** From c0cb5c74e1bf8fd1ae2282131d7ac00fd6c2edc9 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Mon, 23 Sep 2024 18:10:42 +0200 Subject: [PATCH 11/20] move a11y props to semantic element --- pages/steps/permutations-utils.tsx | 1 + src/steps/__tests__/steps.test.tsx | 16 ++++++++++------ src/steps/internal.tsx | 25 +++++++++++++++---------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/pages/steps/permutations-utils.tsx b/pages/steps/permutations-utils.tsx index c73102887d..2a545b8534 100644 --- a/pages/steps/permutations-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -251,6 +251,7 @@ export const failedSteps: ReadonlyArray = [ export const stepsPermutations = createPermutations([ { steps: [initialSteps, loadingSteps, loadingSteps2, loadingSteps3, successfulSteps, blockedSteps, failedSteps], + ariaLabel: ['test label'], }, ]); diff --git a/src/steps/__tests__/steps.test.tsx b/src/steps/__tests__/steps.test.tsx index c4e5d83505..8cafeff0c2 100644 --- a/src/steps/__tests__/steps.test.tsx +++ b/src/steps/__tests__/steps.test.tsx @@ -7,6 +7,7 @@ import Steps, { StepsProps } from '../../../lib/components/steps'; import createWrapper from '../../../lib/components/test-utils/dom'; import statusIconStyles from '../../../lib/components/status-indicator/styles.selectors.js'; +import stepsStyles from '../../../lib/components/steps/styles.selectors.js'; const defaultProps: StepsProps = { steps: [], @@ -108,24 +109,27 @@ describe('Steps', () => { const testAriaLabel = 'Test aria label'; const wrapper = renderSteps({ steps: successfullSteps, ariaLabel: testAriaLabel }); - const stepsComponent = wrapper.getElement(); - expect(stepsComponent).toHaveAccessibleName(testAriaLabel); + expect(wrapper.findByClassName(stepsStyles.list)!.getElement()).toHaveAccessibleName(testAriaLabel); }); test('applies ARIA labelledby to steps', () => { const testAriaLabelledBy = 'test-id'; const wrapper = renderSteps({ steps: successfullSteps, ariaLabelledby: testAriaLabelledBy }); - const stepsComponent = wrapper.getElement(); - expect(stepsComponent).toHaveAttribute('aria-labelledby', testAriaLabelledBy); + expect(wrapper.findByClassName(stepsStyles.list)!.getElement()).toHaveAttribute( + 'aria-labelledby', + testAriaLabelledBy + ); }); test('applies ARIA describedby to steps', () => { const testAriaDescribedBy = 'test-id'; const wrapper = renderSteps({ steps: successfullSteps, ariaDescribedby: testAriaDescribedBy }); - const stepsComponent = wrapper.getElement(); - expect(stepsComponent).toHaveAttribute('aria-describedby', testAriaDescribedBy); + expect(wrapper.findByClassName(stepsStyles.list)!.getElement()).toHaveAttribute( + 'aria-describedby', + testAriaDescribedBy + ); }); test('applies ARIA label to steps status indicators', () => { diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index b491f486b0..bcd8f22385 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -26,17 +26,22 @@ const InternalStep = ({ status, statusIconAriaLabel, header, details }: StepsPro ); }; -export const InternalSteps = ({ steps, __internalRootRef, ...props }: InternalStepsProps) => { +export const InternalSteps = ({ + steps, + ariaLabel, + ariaLabelledby, + ariaDescribedby, + __internalRootRef, + ...props +}: InternalStepsProps) => { return ( -
                                                      -
                                                        +
                                                        +
                                                          {steps.map((step, index) => ( Date: Mon, 23 Sep 2024 18:17:18 +0200 Subject: [PATCH 12/20] add more steps permutations --- pages/steps/permutations-utils.tsx | 65 +++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/pages/steps/permutations-utils.tsx b/pages/steps/permutations-utils.tsx index 2a545b8534..ec3ced838a 100644 --- a/pages/steps/permutations-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -248,9 +248,72 @@ export const failedSteps: ReadonlyArray = [ }, ]; +const allStatusesSteps: ReadonlyArray = [ + { + status: 'error', + statusIconAriaLabel: 'error', + header: 'error step', + details: Test description, + }, + { + status: 'warning', + statusIconAriaLabel: 'warning', + header: 'warning step', + details: Test description, + }, + { + status: 'success', + statusIconAriaLabel: 'success', + header: 'success step', + details: Test description, + }, + { + status: 'info', + statusIconAriaLabel: 'info', + header: 'info step', + details: Test description, + }, + { + status: 'stopped', + statusIconAriaLabel: 'stopped', + header: 'stopped step', + details: Test description, + }, + { + status: 'pending', + statusIconAriaLabel: 'pending', + header: 'pending step', + details: Test description, + }, + { + status: 'in-progress', + statusIconAriaLabel: 'in-progress', + header: 'in-progress step', + details: Test description, + }, + { + status: 'loading', + statusIconAriaLabel: 'loading', + header: 'loading step', + details: Test description, + }, +]; + +const emptySteps: ReadonlyArray = []; + export const stepsPermutations = createPermutations([ { - steps: [initialSteps, loadingSteps, loadingSteps2, loadingSteps3, successfulSteps, blockedSteps, failedSteps], + steps: [ + initialSteps, + loadingSteps, + loadingSteps2, + loadingSteps3, + successfulSteps, + blockedSteps, + failedSteps, + emptySteps, + allStatusesSteps, + ], ariaLabel: ['test label'], }, ]); From 416813f39543af5b3cad0016c6740bf7108ae38e Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 24 Sep 2024 12:12:00 +0200 Subject: [PATCH 13/20] update documenter and test-util snapshots --- package-lock.json | 17 ------------ .../__snapshots__/documenter.test.ts.snap | 26 +++++++++---------- .../test-utils-selectors.test.tsx.snap | 4 +-- src/steps/interfaces.ts | 2 +- 4 files changed, 16 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6c693be4a..825d86c481 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6817,23 +6817,6 @@ "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", "dev": true }, - "node_modules/devtools/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", diff --git a/src/__tests__/__snapshots__/documenter.test.ts.snap b/src/__tests__/__snapshots__/documenter.test.ts.snap index d1ca240275..238f214ab1 100644 --- a/src/__tests__/__snapshots__/documenter.test.ts.snap +++ b/src/__tests__/__snapshots__/documenter.test.ts.snap @@ -14704,25 +14704,25 @@ and truncates it with an ellipsis.", `; exports[`Documenter definition for steps matches the snapshot: steps 1`] = ` -Object { - "events": Array [], - "functions": Array [], +{ + "events": [], + "functions": [], "name": "Steps", - "properties": Array [ - Object { + "properties": [ + { "description": "Sets the \`aria-describedby\` property on the progress steps container.", "name": "ariaDescribedby", "optional": true, "type": "string", }, - Object { + { "description": "Provides an \`aria-label\` to progress steps container. Don't use \`ariaLabel\` and \`ariaLabelledby\` at the same time.", "name": "ariaLabel", "optional": true, "type": "string", }, - Object { + { "description": "Sets the \`aria-labelledby\` property on the progress steps container. If there's a visible label element that you can reference, use this instead of \`ariaLabel\`. Don't use \`ariaLabel\` and \`ariaLabelledby\` at the same time.", @@ -14730,14 +14730,14 @@ Don't use \`ariaLabel\` and \`ariaLabelledby\` at the same time.", "optional": true, "type": "string", }, - Object { + { "deprecatedTag": "Custom CSS is not supported. For testing and other use cases, use [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes).", "description": "Adds the specified classes to the root element of the component.", "name": "className", "optional": true, "type": "string", }, - Object { + { "deprecatedTag": "The usage of the \`id\` attribute is reserved for internal use cases. For testing and other use cases, use [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes). If you must use the \`id\` attribute, consider setting it on a parent element instead.", @@ -14746,20 +14746,20 @@ use the \`id\` attribute, consider setting it on a parent element instead.", "optional": true, "type": "string", }, - Object { + { "description": "An array of individual steps Each step definition has the following properties: * \`status\` (string) - Status of the step corresponding to a status indicator. * \`statusIconAriaLabel\` - (string) - (Optional) Text alternative for the status icon. - * \`header\` (react.ReactNode) - Area next to the status indicator of the step. - * \`details\` (react.ReactNode) - (Optional) The corresponding details of the step. + * \`header\` (ReactNode) - Summary corresponding to the step. + * \`details\` (ReactNode) - (Optional) Additional information corresponding to the step. ", "name": "steps", "optional": false, "type": "ReadonlyArray", }, ], - "regions": Array [], + "regions": [], "releaseStatus": "stable", } `; diff --git a/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap b/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap index 7824bfa51a..9132c6715c 100644 --- a/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap +++ b/src/__tests__/__snapshots__/test-utils-selectors.test.tsx.snap @@ -520,13 +520,13 @@ exports[`test-utils selectors 1`] = ` "status-indicator": [ "awsui_root_1cbgc", ], - "steps": Array [ + "steps": [ "awsui_container_gxp9y", "awsui_details_gxp9y", "awsui_header_gxp9y", "awsui_root_gxp9y", ], - "table": Array [ + "table": [ "awsui_body-cell-edit-active_c6tup", "awsui_body-cell-editor-controls_c6tup", "awsui_body-cell-editor_c6tup", diff --git a/src/steps/interfaces.ts b/src/steps/interfaces.ts index 261cd3a093..76da2b9fd6 100644 --- a/src/steps/interfaces.ts +++ b/src/steps/interfaces.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { BaseComponentProps } from '../internal/base-component'; -import { type StatusIndicatorProps } from '../status-indicator/internal'; +import { StatusIndicatorProps } from '../status-indicator/internal'; export interface StepsProps extends BaseComponentProps { /** From cbde5e217bc64fc29e36fc4b277f003862caddfa Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Wed, 25 Sep 2024 17:16:33 +0200 Subject: [PATCH 14/20] remove list padding and add page with updates --- pages/steps/permutations-utils.tsx | 35 +++--- pages/steps/with-updates.page.tsx | 170 +++++++++++++++++++++++++++++ src/steps/internal.tsx | 2 +- src/steps/styles.scss | 1 + 4 files changed, 186 insertions(+), 22 deletions(-) create mode 100644 pages/steps/with-updates.page.tsx diff --git a/pages/steps/permutations-utils.tsx b/pages/steps/permutations-utils.tsx index ec3ced838a..869153a0cd 100644 --- a/pages/steps/permutations-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -301,23 +301,6 @@ const allStatusesSteps: ReadonlyArray = [ const emptySteps: ReadonlyArray = []; -export const stepsPermutations = createPermutations([ - { - steps: [ - initialSteps, - loadingSteps, - loadingSteps2, - loadingSteps3, - successfulSteps, - blockedSteps, - failedSteps, - emptySteps, - allStatusesSteps, - ], - ariaLabel: ['test label'], - }, -]); - export const initialStepsInteractive: ReadonlyArray = [ { status: 'loading', @@ -676,7 +659,7 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray { header: Could not fetch security groups, details: ( - + The request expired due to a server issue. Retry ), @@ -688,7 +671,7 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray export const failedStepsWithRetryButtonInteractive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} Could not fetch security groups, details: ( <> - The request expired due to a server issue. + The request expired due to a server issue. @@ -756,9 +739,18 @@ const changesetStepsInteractive: ReadonlyArray = [ }, ]; -export const stepsPermutationsInteractive = createPermutations([ +export const stepsPermutations = createPermutations([ { steps: [ + initialSteps, + loadingSteps, + loadingSteps2, + loadingSteps3, + successfulSteps, + blockedSteps, + failedSteps, + emptySteps, + allStatusesSteps, initialStepsInteractive, loadingStepsInteractive, loadingSteps2Interactive, @@ -770,5 +762,6 @@ export const stepsPermutationsInteractive = createPermutations([ failedStepsWithRetryButtonInteractive, changesetStepsInteractive, ], + ariaLabel: ['test label'], }, ]); diff --git a/pages/steps/with-updates.page.tsx b/pages/steps/with-updates.page.tsx new file mode 100644 index 0000000000..bc48277957 --- /dev/null +++ b/pages/steps/with-updates.page.tsx @@ -0,0 +1,170 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +import React, { useRef, useState } from 'react'; + +import Box from '~components/box'; +import Button from '~components/button'; +import Header from '~components/header'; +import Steps from '~components/steps'; + +import { + blockedStepsInteractive, + failedStepsInteractive, + failedStepsWithRetryButtonInteractive, + initialStepsInteractive, + loadingSteps2Interactive, + loadingSteps3Interactive, + loadingStepsInteractive, + successfulStepsInteractive, +} from './permutations-utils'; + +export default function StepsPermutationsWithUpdates() { + const [stepIndex1, setStepIndex1] = useState(0); + const timeoutRef1 = useRef>(); + const stepsExecution1 = [ + initialStepsInteractive, + loadingStepsInteractive, + loadingSteps2Interactive, + loadingSteps3Interactive, + successfulStepsInteractive, + ]; + + const [stepIndex2, setStepIndex2] = useState(0); + const timeoutRef2 = useRef>(); + const stepsExecution2 = [ + initialStepsInteractive, + loadingStepsInteractive, + loadingSteps2Interactive, + blockedStepsInteractive, + ]; + + const [stepIndex3, setStepIndex3] = useState(0); + const timeoutRef3 = useRef>(); + const stepsExecution3 = [initialStepsInteractive, loadingStepsInteractive, failedStepsInteractive]; + + const [stepIndex4, setStepIndex4] = useState(0); + const timeoutRef4 = useRef>(); + const stepsExecution4 = [initialStepsInteractive, loadingStepsInteractive, failedStepsWithRetryButtonInteractive]; + + const activateTimerStep1 = () => { + resetTimeoutStep1(); + function step(i: number) { + setStepIndex1(i + 1); + timeoutRef1.current = setTimeout(() => i < stepsExecution1.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep1 = () => { + setStepIndex1(0); + if (timeoutRef1.current !== undefined) { + clearTimeout(timeoutRef1.current); + timeoutRef1.current = undefined; + } + }; + + const activateTimerStep2 = () => { + resetTimeoutStep2(); + function step(i: number) { + setStepIndex2(i + 1); + timeoutRef2.current = setTimeout(() => i < stepsExecution2.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep2 = () => { + setStepIndex2(0); + if (timeoutRef2.current !== undefined) { + clearTimeout(timeoutRef2.current); + timeoutRef2.current = undefined; + } + }; + + const activateTimerStep3 = () => { + resetTimeoutStep3(); + function step(i: number) { + setStepIndex3(i + 1); + timeoutRef3.current = setTimeout(() => i < stepsExecution3.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep3 = () => { + setStepIndex3(0); + if (timeoutRef3.current !== undefined) { + clearTimeout(timeoutRef3.current); + timeoutRef3.current = undefined; + } + }; + + const activateTimerStep4 = () => { + resetTimeoutStep4(); + function step(i: number) { + setStepIndex4(i + 1); + timeoutRef4.current = setTimeout(() => i < stepsExecution4.length - 2 && step(i + 1), 2000); + } + step(0); + }; + const resetTimeoutStep4 = () => { + setStepIndex4(0); + if (timeoutRef4.current !== undefined) { + clearTimeout(timeoutRef1.current); + timeoutRef4.current = undefined; + } + }; + + return ( + +
                                                          +
                                                          Steps permutations with updates
                                                          + + + Successful Execution + + + Steps Component Label + + + Steps Component Description + + +
                                                          + + +
                                                          +
                                                          + + + Blocked Execution + + +
                                                          + + +
                                                          +
                                                          + + + Failed Execution + + +
                                                          + + +
                                                          +
                                                          + + + Failed Execution with Retry + + +
                                                          + + +
                                                          +
                                                          +
                                                          +
                                                          + ); +} diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index bcd8f22385..839a08c65b 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -35,7 +35,7 @@ export const InternalSteps = ({ ...props }: InternalStepsProps) => { return ( -
                                                          +
                                                            .list { list-style: none; + padding-inline-start: 0; > .container { display: grid; From cba580c11bfbda0ec33cbc6c5a2f3a84cbf684c8 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Wed, 25 Sep 2024 18:02:45 +0200 Subject: [PATCH 15/20] remove unnecessary styling on permutations --- pages/steps/permutations-utils.tsx | 185 +++++++++--------- .../__snapshots__/documenter.test.ts.snap | 2 +- src/steps/interfaces.ts | 2 +- src/steps/internal.tsx | 2 +- 4 files changed, 96 insertions(+), 95 deletions(-) diff --git a/pages/steps/permutations-utils.tsx b/pages/steps/permutations-utils.tsx index 869153a0cd..77e1e52133 100644 --- a/pages/steps/permutations-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import React from 'react'; +import Box from '~components/box'; import Button from '~components/button'; import Link from '~components/link'; import Popover from '~components/popover'; @@ -14,7 +15,7 @@ const initialSteps: ReadonlyArray = [ status: 'loading', statusIconAriaLabel: 'loading', header: 'Listing EC2 instances', - details: Using the ec2_DescribeInstances, + details: Using the ec2_DescribeInstances, }, ]; @@ -22,9 +23,9 @@ const loadingSteps: ReadonlyArray = [ { status: 'success', statusIconAriaLabel: 'success', - header: Listed EC2 instances, + header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                            • ec2InstanceID1
                                                            • @@ -32,20 +33,20 @@ const loadingSteps: ReadonlyArray = [
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + ), }, { header: 'Gathering Security Group IDs', details: ( - + Using the ec2_DescribeSecurityGroupsTool:
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + ), status: 'loading', statusIconAriaLabel: 'loading', @@ -56,7 +57,7 @@ export const loadingSteps2: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                            • ec2InstanceID1
                                                            • @@ -64,7 +65,7 @@ export const loadingSteps2: ReadonlyArray = [
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -72,14 +73,14 @@ export const loadingSteps2: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -95,7 +96,7 @@ export const loadingSteps3: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                            • ec2InstanceID1
                                                            • @@ -103,7 +104,7 @@ export const loadingSteps3: ReadonlyArray = [
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -111,14 +112,14 @@ export const loadingSteps3: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -139,7 +140,7 @@ export const successfulSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                            • ec2InstanceID1
                                                            • @@ -147,7 +148,7 @@ export const successfulSteps: ReadonlyArray = [
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -155,14 +156,14 @@ export const successfulSteps: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -183,7 +184,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                            • ec2InstanceID1
                                                            • @@ -191,7 +192,7 @@ export const blockedSteps: ReadonlyArray = [
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -199,14 +200,14 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -214,10 +215,10 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Need Cross Region Consent', details: ( - + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. - + ), status: 'warning', statusIconAriaLabel: 'warning', @@ -228,7 +229,7 @@ export const failedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                            • ec2InstanceID1
                                                            • @@ -236,7 +237,7 @@ export const failedSteps: ReadonlyArray = [
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + ), status: 'success', statusIconAriaLabel: 'success', @@ -253,49 +254,49 @@ const allStatusesSteps: ReadonlyArray = [ status: 'error', statusIconAriaLabel: 'error', header: 'error step', - details: Test description, + details: Test description, }, { status: 'warning', statusIconAriaLabel: 'warning', header: 'warning step', - details: Test description, + details: Test description, }, { status: 'success', statusIconAriaLabel: 'success', header: 'success step', - details: Test description, + details: Test description, }, { status: 'info', statusIconAriaLabel: 'info', header: 'info step', - details: Test description, + details: Test description, }, { status: 'stopped', statusIconAriaLabel: 'stopped', header: 'stopped step', - details: Test description, + details: Test description, }, { status: 'pending', statusIconAriaLabel: 'pending', header: 'pending step', - details: Test description, + details: Test description, }, { status: 'in-progress', statusIconAriaLabel: 'in-progress', header: 'in-progress step', - details: Test description, + details: Test description, }, { status: 'loading', statusIconAriaLabel: 'loading', header: 'loading step', - details: Test description, + details: Test description, }, ]; @@ -305,8 +306,8 @@ export const initialStepsInteractive: ReadonlyArray = [ { status: 'loading', statusIconAriaLabel: 'loading', - header: Listing EC2 instances, - details: Using the ec2_DescribeInstances, + header: Listing EC2 instances, + details: Using the ec2_DescribeInstances, }, ]; @@ -315,19 +316,19 @@ export const loadingStepsInteractive: ReadonlyArray = [ status: 'success', statusIconAriaLabel: 'success', header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -337,16 +338,16 @@ export const loadingStepsInteractive: ReadonlyArray = [ ), }, { - header: Gathering Security Group IDs, + header: Gathering Security Group IDs, details: ( - + Using the ec2_DescribeSecurityGroupsTool:
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + ), status: 'loading', statusIconAriaLabel: 'loading', @@ -356,19 +357,19 @@ export const loadingStepsInteractive: ReadonlyArray = [ export const loadingSteps2Interactive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -381,18 +382,18 @@ export const loadingSteps2Interactive: ReadonlyArray = [ }, { header: ( - + Gathered Security Group IDs:{' '} +
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + } position={'bottom'} > @@ -404,7 +405,7 @@ export const loadingSteps2Interactive: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: Checking Cross Region Consent, + header: Checking Cross Region Consent, status: 'loading', statusIconAriaLabel: 'loading', }, @@ -413,19 +414,19 @@ export const loadingSteps2Interactive: ReadonlyArray = [ export const loadingSteps3Interactive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -438,18 +439,18 @@ export const loadingSteps3Interactive: ReadonlyArray = [ }, { header: ( - + Gathered Security Group IDs:{' '} +
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + } position={'bottom'} > @@ -461,12 +462,12 @@ export const loadingSteps3Interactive: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: Checked Cross Region Consent, + header: Checked Cross Region Consent, status: 'success', statusIconAriaLabel: 'success', }, { - header: Analyzing security rules, + header: Analyzing security rules, status: 'loading', statusIconAriaLabel: 'loading', }, @@ -475,19 +476,19 @@ export const loadingSteps3Interactive: ReadonlyArray = [ export const successfulStepsInteractive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -500,18 +501,18 @@ export const successfulStepsInteractive: ReadonlyArray = [ }, { header: ( - + Gathered Security Group IDs:{' '} +
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + } position={'bottom'} > @@ -523,12 +524,12 @@ export const successfulStepsInteractive: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: Checked Cross Region Consent, + header: Checked Cross Region Consent, status: 'success', statusIconAriaLabel: 'success', }, { - header: Analyzing security rules, + header: Analyzing security rules, status: 'success', statusIconAriaLabel: 'success', }, @@ -537,19 +538,19 @@ export const successfulStepsInteractive: ReadonlyArray = [ export const blockedStepsInteractive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -562,18 +563,18 @@ export const blockedStepsInteractive: ReadonlyArray = [ }, { header: ( - + Gathered Security Group IDs:{' '} +
                                                            • securityGroupID1
                                                            • securityGroupID2
                                                            • securityGroupID3
                                                            -
                                                            + } position={'bottom'} > @@ -585,12 +586,12 @@ export const blockedStepsInteractive: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: Need Cross Region Consent, + header: Need Cross Region Consent, details: ( - + To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account. - + ), status: 'warning', statusIconAriaLabel: 'warning', @@ -600,19 +601,19 @@ export const blockedStepsInteractive: ReadonlyArray = [ export const failedStepsInteractive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -624,7 +625,7 @@ export const failedStepsInteractive: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: Could not fetch security groups, + header: Could not fetch security groups, status: 'error', statusIconAriaLabel: 'error', }, @@ -633,19 +634,19 @@ export const failedStepsInteractive: ReadonlyArray = [ export const failedStepsWithRetryTextInteractive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -657,11 +658,11 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray statusIconAriaLabel: 'success', }, { - header: Could not fetch security groups, + header: Could not fetch security groups, details: ( - + The request expired due to a server issue. Retry - + ), status: 'error', statusIconAriaLabel: 'error', @@ -671,19 +672,19 @@ export const failedStepsWithRetryTextInteractive: ReadonlyArray export const failedStepsWithRetryButtonInteractive: ReadonlyArray = [ { header: ( - + Listed EC2 instances:{' '} +
                                                            • ec2InstanceID1
                                                            • ec2InstanceID2
                                                            • ec2InstanceID3
                                                            • ec2InstanceID4
                                                            -
                                                            + } position={'bottom'} > @@ -695,10 +696,10 @@ export const failedStepsWithRetryButtonInteractive: ReadonlyArrayCould not fetch security groups
                                                            , + header: Could not fetch security groups, details: ( <> - The request expired due to a server issue. + The request expired due to a server issue. @@ -714,7 +715,7 @@ const changesetStepsInteractive: ReadonlyArray = [ status: 'success', statusIconAriaLabel: 'success', header: ( - + Create S3 bucket-12 ), @@ -723,7 +724,7 @@ const changesetStepsInteractive: ReadonlyArray = [ status: 'success', statusIconAriaLabel: 'success', header: ( - + Create CloudWatch alarm ), @@ -732,7 +733,7 @@ const changesetStepsInteractive: ReadonlyArray = [ status: 'loading', statusIconAriaLabel: 'loading', header: ( - + Update Lambda-1 ), diff --git a/src/__tests__/__snapshots__/documenter.test.ts.snap b/src/__tests__/__snapshots__/documenter.test.ts.snap index 238f214ab1..28e901e4bd 100644 --- a/src/__tests__/__snapshots__/documenter.test.ts.snap +++ b/src/__tests__/__snapshots__/documenter.test.ts.snap @@ -14716,7 +14716,7 @@ exports[`Documenter definition for steps matches the snapshot: steps 1`] = ` "type": "string", }, { - "description": "Provides an \`aria-label\` to progress steps container. + "description": "Provides an \`aria-label\` to the progress steps container. Don't use \`ariaLabel\` and \`ariaLabelledby\` at the same time.", "name": "ariaLabel", "optional": true, diff --git a/src/steps/interfaces.ts b/src/steps/interfaces.ts index 76da2b9fd6..c592ee1653 100644 --- a/src/steps/interfaces.ts +++ b/src/steps/interfaces.ts @@ -15,7 +15,7 @@ export interface StepsProps extends BaseComponentProps { */ steps: ReadonlyArray; /** - * Provides an `aria-label` to progress steps container. + * Provides an `aria-label` to the progress steps container. * Don't use `ariaLabel` and `ariaLabelledby` at the same time. */ ariaLabel?: string; diff --git a/src/steps/internal.tsx b/src/steps/internal.tsx index 839a08c65b..bcd8f22385 100644 --- a/src/steps/internal.tsx +++ b/src/steps/internal.tsx @@ -35,7 +35,7 @@ export const InternalSteps = ({ ...props }: InternalStepsProps) => { return ( -
                                                            +
                                                              Date: Wed, 25 Sep 2024 18:10:45 +0200 Subject: [PATCH 16/20] remove font-size from some permutations --- pages/steps/permutations-utils.tsx | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/pages/steps/permutations-utils.tsx b/pages/steps/permutations-utils.tsx index 77e1e52133..090450156b 100644 --- a/pages/steps/permutations-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -184,7 +184,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                              • ec2InstanceID1
                                                              • @@ -200,7 +200,7 @@ export const blockedSteps: ReadonlyArray = [ { header: 'Gathered Security Group IDs', details: ( - + Security Groups ID
                                                                • securityGroupID1
                                                                • @@ -214,12 +214,8 @@ export const blockedSteps: ReadonlyArray = [ }, { header: 'Need Cross Region Consent', - details: ( - - To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS - account. - - ), + details: + 'To answer questions about your account resources, Amazon Q might need to make Cross-Region calls within this AWS account.', status: 'warning', statusIconAriaLabel: 'warning', }, @@ -229,7 +225,7 @@ export const failedSteps: ReadonlyArray = [ { header: 'Listed EC2 instances', details: ( - + EC2 Instances IDs:
                                                                  • ec2InstanceID1
                                                                  • @@ -254,49 +250,49 @@ const allStatusesSteps: ReadonlyArray = [ status: 'error', statusIconAriaLabel: 'error', header: 'error step', - details: Test description, + details: 'Test description', }, { status: 'warning', statusIconAriaLabel: 'warning', header: 'warning step', - details: Test description, + details: 'Test description', }, { status: 'success', statusIconAriaLabel: 'success', header: 'success step', - details: Test description, + details: 'Test description', }, { status: 'info', statusIconAriaLabel: 'info', header: 'info step', - details: Test description, + details: 'Test description', }, { status: 'stopped', statusIconAriaLabel: 'stopped', header: 'stopped step', - details: Test description, + details: 'Test description', }, { status: 'pending', statusIconAriaLabel: 'pending', header: 'pending step', - details: Test description, + details: 'Test description', }, { status: 'in-progress', statusIconAriaLabel: 'in-progress', header: 'in-progress step', - details: Test description, + details: 'Test description', }, { status: 'loading', statusIconAriaLabel: 'loading', header: 'loading step', - details: Test description, + details: 'Test description', }, ]; From e3de7dbdc69226d42ad98a24348b906d438f09d4 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Thu, 26 Sep 2024 14:40:13 +0200 Subject: [PATCH 17/20] remove margin from ol --- src/steps/styles.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/steps/styles.scss b/src/steps/styles.scss index a0d803d4a1..9ddf1033f5 100644 --- a/src/steps/styles.scss +++ b/src/steps/styles.scss @@ -12,6 +12,7 @@ > .list { list-style: none; padding-inline-start: 0; + margin-block: 0; > .container { display: grid; From e4a905f8b732489f529965caf65356ee80f2c92e Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Fri, 27 Sep 2024 11:23:23 +0200 Subject: [PATCH 18/20] fix aria-live examples and add labels --- pages/steps/permutations-utils.tsx | 4 ++-- pages/steps/with-updates.page.tsx | 26 +++++++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/pages/steps/permutations-utils.tsx b/pages/steps/permutations-utils.tsx index 090450156b..be4bd33247 100644 --- a/pages/steps/permutations-utils.tsx +++ b/pages/steps/permutations-utils.tsx @@ -174,7 +174,7 @@ export const successfulSteps: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: 'Analyzing security rules', + header: 'Analyzed security rules', status: 'success', statusIconAriaLabel: 'success', }, @@ -525,7 +525,7 @@ export const successfulStepsInteractive: ReadonlyArray = [ statusIconAriaLabel: 'success', }, { - header: Analyzing security rules, + header: Analyzed security rules, status: 'success', statusIconAriaLabel: 'success', }, diff --git a/pages/steps/with-updates.page.tsx b/pages/steps/with-updates.page.tsx index bc48277957..fc75e8b063 100644 --- a/pages/steps/with-updates.page.tsx +++ b/pages/steps/with-updates.page.tsx @@ -112,7 +112,7 @@ export default function StepsPermutationsWithUpdates() { return ( -
                                                                    +
                                                                    Steps permutations with updates
                                                                    @@ -124,11 +124,13 @@ export default function StepsPermutationsWithUpdates() { Steps Component Description - + + +
                                                                    @@ -138,7 +140,9 @@ export default function StepsPermutationsWithUpdates() { Blocked Execution - + + +
                                                                    @@ -148,7 +152,9 @@ export default function StepsPermutationsWithUpdates() { Failed Execution - + + +
                                                                    @@ -158,7 +164,9 @@ export default function StepsPermutationsWithUpdates() { Failed Execution with Retry - + + +
                                                                    From 20ad325f2d81a3869df9d4f9aefa6738a08c2fac Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Mon, 30 Sep 2024 15:18:33 +0200 Subject: [PATCH 19/20] revert package-lock changes --- package-lock.json | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/package-lock.json b/package-lock.json index 825d86c481..f57e92ffdb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6817,6 +6817,108 @@ "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", "dev": true }, + "node_modules/devtools/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/devtools/node_modules/devtools-protocol": { + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", + "dev": true + }, + "node_modules/devtools/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/devtools/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/devtools/node_modules/puppeteer-core": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz", + "integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==", + "dev": true, + "dependencies": { + "debug": "4.3.2", + "devtools-protocol": "0.0.948846", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.7", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/devtools/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/devtools/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", From cf8ffcc9a6d34911b3d98d6f6e15a1ede84a8f69 Mon Sep 17 00:00:00 2001 From: Rafa Varela Date: Tue, 1 Oct 2024 09:17:04 +0200 Subject: [PATCH 20/20] update statusIconAriaLabel description --- src/__tests__/__snapshots__/documenter.test.ts.snap | 2 +- src/steps/interfaces.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/__tests__/__snapshots__/documenter.test.ts.snap b/src/__tests__/__snapshots__/documenter.test.ts.snap index b4fc5702cd..e91a03567d 100644 --- a/src/__tests__/__snapshots__/documenter.test.ts.snap +++ b/src/__tests__/__snapshots__/documenter.test.ts.snap @@ -14782,7 +14782,7 @@ use the \`id\` attribute, consider setting it on a parent element instead.", "description": "An array of individual steps Each step definition has the following properties: * \`status\` (string) - Status of the step corresponding to a status indicator. - * \`statusIconAriaLabel\` - (string) - (Optional) Text alternative for the status icon. + * \`statusIconAriaLabel\` - (string) - (Optional) Alternative text for the status icon. * \`header\` (ReactNode) - Summary corresponding to the step. * \`details\` (ReactNode) - (Optional) Additional information corresponding to the step. ", diff --git a/src/steps/interfaces.ts b/src/steps/interfaces.ts index c592ee1653..d328fee253 100644 --- a/src/steps/interfaces.ts +++ b/src/steps/interfaces.ts @@ -9,7 +9,7 @@ export interface StepsProps extends BaseComponentProps { * * Each step definition has the following properties: * * `status` (string) - Status of the step corresponding to a status indicator. - * * `statusIconAriaLabel` - (string) - (Optional) Text alternative for the status icon. + * * `statusIconAriaLabel` - (string) - (Optional) Alternative text for the status icon. * * `header` (ReactNode) - Summary corresponding to the step. * * `details` (ReactNode) - (Optional) Additional information corresponding to the step. */