From c76ee29a7c8c540a7036eaac95c29059dc22cfe5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:12:50 -0500 Subject: [PATCH 1/7] build(deps-dev): bump the dev group with 2 updates (#1522) Bumps the dev group with 2 updates: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) and [prettier](https://github.com/prettier/prettier). Updates `@babel/core` from 7.26.8 to 7.26.9 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.26.9/packages/babel-core) Updates `prettier` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.5.0...3.5.1) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 94 ++++++++++++++++++++++------------------------- package.json | 4 +- 2 files changed, 45 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index acac119a6..f71e7b208 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "victory-create-container": "37.2.0" }, "devDependencies": { - "@babel/core": "7.26.8", + "@babel/core": "7.26.9", "@babel/eslint-parser": "7.26.8", "@redhat-cloud-services/frontend-components-config": "6.3.3", "@redhat-cloud-services/tsc-transform-imports": "^1.0.23", @@ -79,7 +79,7 @@ "moxios": "^0.4.0", "npm-check-updates": "^17.1.14", "npm-run-all": "^4.1.5", - "prettier": "^3.5.0", + "prettier": "^3.5.1", "ts-patch": "^3.3.0", "typescript": "^5.7.3", "weldable": "^3.2.4", @@ -136,23 +136,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", - "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", + "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/traverse": "^7.26.8", - "@babel/types": "^7.26.8", - "@types/gensync": "^1.0.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -187,14 +186,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -493,27 +492,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -1953,32 +1952,32 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1987,9 +1986,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "license": "MIT", "dependencies": { @@ -5653,13 +5652,6 @@ "@types/send": "*" } }, - "node_modules/@types/gensync": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", - "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -18999,9 +18991,9 @@ } }, "node_modules/prettier": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", - "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 8ec6b7893..0774763cc 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "victory-create-container": "37.2.0" }, "devDependencies": { - "@babel/core": "7.26.8", + "@babel/core": "7.26.9", "@babel/eslint-parser": "7.26.8", "@redhat-cloud-services/frontend-components-config": "6.3.3", "@redhat-cloud-services/tsc-transform-imports": "^1.0.23", @@ -146,7 +146,7 @@ "moxios": "^0.4.0", "npm-check-updates": "^17.1.14", "npm-run-all": "^4.1.5", - "prettier": "^3.5.0", + "prettier": "^3.5.1", "ts-patch": "^3.3.0", "typescript": "^5.7.3", "weldable": "^3.2.4", From 45b782a9dc3266998c4b3feeeb927ae95f3e3501 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 09:58:48 -0500 Subject: [PATCH 2/7] build(deps): bump codecov/codecov-action from 4 to 5 (#1490) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4...v5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index d16d36be7..f8440f243 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -37,7 +37,7 @@ jobs: run: npm test - name: Code coverage if: ${{ success() && contains(matrix.node-version, env.COV_NODE_VERSION) }} - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 env: CODECOV_TOKEN: ${{ secrets.COV_TOKEN }} - name: Confirm integration From 0df6cf75b8a8f9dfc6bbe7b261eb0836a46b38ab Mon Sep 17 00:00:00 2001 From: CD Cabrera Date: Wed, 19 Feb 2025 11:04:30 -0500 Subject: [PATCH 3/7] test(serviceConfig): restructure for polling, and readability (#1520) --- .../__snapshots__/serviceConfig.test.js.snap | 358 +++++++------- .../common/__tests__/serviceConfig.test.js | 455 +++++++++++------- 2 files changed, 438 insertions(+), 375 deletions(-) diff --git a/src/services/common/__tests__/__snapshots__/serviceConfig.test.js.snap b/src/services/common/__tests__/__snapshots__/serviceConfig.test.js.snap index 7c495b798..db4448825 100644 --- a/src/services/common/__tests__/__snapshots__/serviceConfig.test.js.snap +++ b/src/services/common/__tests__/__snapshots__/serviceConfig.test.js.snap @@ -1,17 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`ServiceConfig should allow passing a function and emulating a service call: function responses 1`] = ` -[ - "lorem.ipsum", - "lorem.ipsum-function-schema-transform", - "lorem.ipsum-function-transform", - undefined, - "dolor.sit-error-transform", - "dolor.sit-error-transform", -] -`; - -exports[`ServiceConfig should handle caching service calls: cached responses, emulated 304 1`] = ` +exports[`Cache service calls should handle caching service calls: cached responses, emulated 304 1`] = ` [ "1. method=get, status=200, cacheId=c2127638620, desc=initial call", "2. method=get, status=304, cacheId=c2127638620, desc=repeat 1st call and config", @@ -22,9 +11,9 @@ exports[`ServiceConfig should handle caching service calls: cached responses, em ] `; -exports[`ServiceConfig should handle cancelling service calls: cancelled request, Promise.all 1`] = `"cancelled request"`; +exports[`Cancel service calls should handle cancelling service calls: cancelled request, Promise.all 1`] = `[CanceledError: cancelled request]`; -exports[`ServiceConfig should handle cancelling service calls: cancelled request, Promise.allSettled 1`] = ` +exports[`Cancel service calls should handle cancelling service calls: cancelled request, Promise.allSettled 1`] = ` [ { "reason": [CanceledError: cancelled request], @@ -319,61 +308,84 @@ exports[`ServiceConfig should handle cancelling service calls: cancelled request ] `; -exports[`ServiceConfig should handle polling service call errors: location error 1`] = ` +exports[`Emulate a service call with a function should allow schema transforming a function call response: transform 1`] = `"lorem.ipsum-function-schema-transform"`; + +exports[`Emulate a service call with a function should allow transforming a function call response: transform 1`] = `"lorem.ipsum-function-transform"`; + +exports[`Emulate a service call with a function should handle function call response error string with transformations: error transformation 1`] = ` [ - [ - [Error: location string error], - ], - [ - [Error: location string error], - ], + "dolor.sit-error-transform", ] `; -exports[`ServiceConfig should handle polling service call errors: status error 1`] = ` +exports[`Emulate a service call with a function should handle function call response error with transformations: error transformation 1`] = ` +[ + "dolor.sit-error-transform", +] +`; + +exports[`Emulate a service call with a function should handle function call response errors: error 1`] = ` +[ + "dolor.sit", +] +`; + +exports[`Poll service calls should handle basic polling error: callback error 1`] = ` [ [ - [Error: status error], - ], - [ - [Error: status error], - ], - [ - [Error: status error], - ], - [ - [Error: status error], - ], - [ - [Error: status error], + [Error: basic error], ], ] `; -exports[`ServiceConfig should handle polling service call errors: status error polling 1`] = ` +exports[`Poll service calls should handle basic polling: basic 1`] = ` { - "status": [ + "output": { + "data": "success", + "pollConfig": { + "__retryCount": 1, + "location": { + "config": undefined, + "url": "/test/", + }, + "pollInterval": 1, + "validate": [Function], + }, + }, + "validator": [ { "count": -1, - "response": { - "data": undefined, - "error": undefined, - "pollConfig": undefined, + "success": { + "data": "success", + "pollConfig": [Function], }, }, { "count": 0, - "response": { - "data": undefined, - "error": true, + "success": { + "data": "success", "pollConfig": { "__retryCount": 0, "location": { "config": undefined, - "url": "/pollError", + "url": "/test/", }, "pollInterval": 0, - "status": [Function], + "validate": [Function], + }, + }, + }, + { + "count": 1, + "success": { + "data": "success", + "pollConfig": { + "__retryCount": 1, + "location": { + "config": undefined, + "url": "/test/", + }, + "pollInterval": 1, "validate": [Function], }, }, @@ -382,7 +394,18 @@ exports[`ServiceConfig should handle polling service call errors: status error p } `; -exports[`ServiceConfig should handle polling service call errors: status of a status error 1`] = ` +exports[`Poll service calls should handle polling against a different service call path but with a callback error: callback error 1`] = ` +[ + [ + [Error: location error], + ], + [ + [Error: location error], + ], +] +`; + +exports[`Poll service calls should handle polling against a different service call path error and status callback error: status of a status error 1`] = ` [ [ [Error: status error], @@ -393,7 +416,7 @@ exports[`ServiceConfig should handle polling service call errors: status of a st ] `; -exports[`ServiceConfig should handle polling service call errors: status of a status error polling 1`] = ` +exports[`Poll service calls should handle polling against a different service call path error and status callback error: status of a status error polling 1`] = ` { "status": [ { @@ -425,62 +448,30 @@ exports[`ServiceConfig should handle polling service call errors: status of a st } `; -exports[`ServiceConfig should handle polling service call errors: validation error 1`] = ` -[ - [ - [Error: basic validation error], - ], -] -`; - -exports[`ServiceConfig should handle polling service calls: basic polling validator 1`] = ` +exports[`Poll service calls should handle polling against a different service call path error and status callback: different service call error with status callback 1`] = ` { - "output": { - "data": "success", - "pollConfig": { - "__retryCount": 1, - "location": { - "config": undefined, - "url": "/test/", - }, - "pollInterval": 1, - "validate": [Function], - }, - }, - "validator": [ + "status": [ { "count": -1, - "success": { - "data": "success", - "pollConfig": [Function], + "response": { + "data": undefined, + "error": undefined, + "pollConfig": undefined, }, }, { "count": 0, - "success": { - "data": "success", + "response": { + "data": undefined, + "error": true, "pollConfig": { "__retryCount": 0, "location": { "config": undefined, - "url": "/test/", + "url": "/pollError", }, "pollInterval": 0, - "validate": [Function], - }, - }, - }, - { - "count": 1, - "success": { - "data": "success", - "pollConfig": { - "__retryCount": 1, - "location": { - "config": undefined, - "url": "/test/", - }, - "pollInterval": 1, + "status": [Function], "validate": [Function], }, }, @@ -489,7 +480,7 @@ exports[`ServiceConfig should handle polling service calls: basic polling valida } `; -exports[`ServiceConfig should handle polling service calls: custom location 1`] = ` +exports[`Poll service calls should handle polling against a different service call path: different service call 1`] = ` { "output": { "data": "success", @@ -542,34 +533,49 @@ exports[`ServiceConfig should handle polling service calls: custom location 1`] } `; -exports[`ServiceConfig should handle polling service calls: specific polling validator 1`] = ` +exports[`Poll service calls should handle polling with a status callback error: callback error 1`] = ` +[ + [ + [Error: status error], + ], + [ + [Error: status error], + ], + [ + [Error: status error], + ], + [ + [Error: status error], + ], + [ + [Error: status error], + ], +] +`; + +exports[`Poll service calls should handle polling with a status callback: callback 1`] = ` { "output": { "data": "success", "pollConfig": { - "__retryCount": 1, - "location": { - "config": undefined, - "url": "/test/", - }, - "pollInterval": 1, + "status": [Function], "validate": [Function], }, }, - "validator": [ + "status": [ { "count": -1, - "success": { - "data": "success", - "pollConfig": { - "validate": [Function], - }, + "response": { + "data": undefined, + "error": undefined, + "pollConfig": undefined, }, }, { "count": 0, - "success": { + "response": { "data": "success", + "error": false, "pollConfig": { "__retryCount": 0, "location": { @@ -577,14 +583,16 @@ exports[`ServiceConfig should handle polling service calls: specific polling val "url": "/test/", }, "pollInterval": 0, + "status": [Function], "validate": [Function], }, }, }, { "count": 1, - "success": { + "response": { "data": "success", + "error": false, "pollConfig": { "__retryCount": 1, "location": { @@ -592,6 +600,7 @@ exports[`ServiceConfig should handle polling service calls: specific polling val "url": "/test/", }, "pollInterval": 1, + "status": [Function], "validate": [Function], }, }, @@ -600,29 +609,42 @@ exports[`ServiceConfig should handle polling service calls: specific polling val } `; -exports[`ServiceConfig should handle polling service calls: status polling 1`] = ` +exports[`Poll service calls should handle polling with a validate callback error: callback error 1`] = ` +[ + [ + [Error: validate error], + ], +] +`; + +exports[`Poll service calls should handle polling with a validate callback: callback 1`] = ` { "output": { "data": "success", "pollConfig": { - "status": [Function], + "__retryCount": 1, + "location": { + "config": undefined, + "url": "/test/", + }, + "pollInterval": 1, "validate": [Function], }, }, - "status": [ + "validator": [ { "count": -1, - "response": { - "data": undefined, - "error": undefined, - "pollConfig": undefined, + "success": { + "data": "success", + "pollConfig": { + "validate": [Function], + }, }, }, { "count": 0, - "response": { + "success": { "data": "success", - "error": false, "pollConfig": { "__retryCount": 0, "location": { @@ -630,16 +652,14 @@ exports[`ServiceConfig should handle polling service calls: status polling 1`] = "url": "/test/", }, "pollInterval": 0, - "status": [Function], "validate": [Function], }, }, }, { "count": 1, - "response": { + "success": { "data": "success", - "error": false, "pollConfig": { "__retryCount": 1, "location": { @@ -647,24 +667,6 @@ exports[`ServiceConfig should handle polling service calls: status polling 1`] = "url": "/test/", }, "pollInterval": 1, - "status": [Function], - "validate": [Function], - }, - }, - }, - { - "count": 2, - "response": { - "data": "success", - "error": false, - "pollConfig": { - "__retryCount": 2, - "location": { - "config": undefined, - "url": "/test/", - }, - "pollInterval": 1, - "status": [Function], "validate": [Function], }, }, @@ -673,73 +675,41 @@ exports[`ServiceConfig should handle polling service calls: status polling 1`] = } `; -exports[`ServiceConfig should handle producing a service call configuration: response configs 1`] = ` +exports[`ServiceConfig should handle producing a consistent service call configuration: response config hash 1`] = `"c1336321229"`; + +exports[`ServiceConfig should have specific properties and methods: specific props and methods 1`] = ` [ - "{ - transitional: { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false - }, - adapter: function mockAdapter(config) {\\n\\t return new Promise(function (resolve, reject) {\\n\\t var request = new Request(resolve, reject, config);\\n\\t moxios.requests.track(request);\\n\\t\\n\\t // Check for matching stub to auto respond with\\n\\t for (var i = 0, l = moxios.stubs.count(); i < l; i++) {\\n\\t var stub = moxios.stubs.at(i);\\n\\t var correctURL = stub.url instanceof RegExp ? stub.url.test(request.url) : stub.url === request.url;\\n\\t var correctMethod = true;\\n\\t\\n\\t if (stub.method !== undefined) {\\n\\t correctMethod = stub.method.toLowerCase() === request.config.method.toLowerCase();\\n\\t }\\n\\t\\n\\t if (correctURL && correctMethod) {\\n\\t if (stub.timeout) {\\n\\t throwTimeout(config);\\n\\t }\\n\\t request.respondWith(stub.response);\\n\\t stub.resolve();\\n\\t break;\\n\\t }\\n\\t }\\n\\t });\\n\\t}, - transformRequest: [ - function transformRequest(data, headers) {\\n const contentType = headers.getContentType() || '';\\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\\n const isObjectPayload = utils$1.isObject(data);\\n\\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\\n data = new FormData(data);\\n }\\n\\n const isFormData = utils$1.isFormData(data);\\n\\n if (isFormData) {\\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\\n }\\n\\n if (utils$1.isArrayBuffer(data) ||\\n utils$1.isBuffer(data) ||\\n utils$1.isStream(data) ||\\n utils$1.isFile(data) ||\\n utils$1.isBlob(data) ||\\n utils$1.isReadableStream(data)\\n ) {\\n return data;\\n }\\n if (utils$1.isArrayBufferView(data)) {\\n return data.buffer;\\n }\\n if (utils$1.isURLSearchParams(data)) {\\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\\n return data.toString();\\n }\\n\\n let isFileList;\\n\\n if (isObjectPayload) {\\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\\n return toURLEncodedForm(data, this.formSerializer).toString();\\n }\\n\\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\\n const _FormData = this.env && this.env.FormData;\\n\\n return toFormData(\\n isFileList ? {'files[]': data} : data,\\n _FormData && new _FormData(),\\n this.formSerializer\\n );\\n }\\n }\\n\\n if (isObjectPayload || hasJSONContentType ) {\\n headers.setContentType('application/json', false);\\n return stringifySafely(data);\\n }\\n\\n return data;\\n } - ], - transformResponse: [ - function transformResponse(data) {\\n const transitional = this.transitional || defaults.transitional;\\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\\n const JSONRequested = this.responseType === 'json';\\n\\n if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {\\n return data;\\n }\\n\\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\\n\\n try {\\n return JSON.parse(data);\\n } catch (e) {\\n if (strictJSONParsing) {\\n if (e.name === 'SyntaxError') {\\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\\n }\\n throw e;\\n }\\n }\\n }\\n\\n return data;\\n } - ], - timeout: 60000, - xsrfCookieName: XSRF-TOKEN, - xsrfHeaderName: X-XSRF-TOKEN, - maxContentLength: -1, - maxBodyLength: -1, - env: { - FormData: class FormData {\\n constructor() {\\n const args = [];\\n {\\n let curArg = arguments[0];\\n if (curArg !== undefined) {\\n curArg = HTMLFormElement.convert(globalObject, curArg, {\\n context: \\Failed to construct 'FormData': parameter 1\\\\n });\\n }\\n args.push(curArg);\\n }\\n return exports.setup(Object.create(new.target.prototype), globalObject, args);\\n }\\n\\n append(name, value) {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'append' called on an object that is not a valid instance of FormData.\\);\\n }\\n\\n if (arguments.length < 2) {\\n throw new globalObject.TypeError(\\n \`Failed to execute 'append' on 'FormData': 2 arguments required, but only \${arguments.length} present.\`\\n );\\n }\\n const args = [];\\n switch (arguments.length) {\\n case 2:\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'append' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[1];\\n if (Blob.is(curArg)) {\\n {\\n let curArg = arguments[1];\\n curArg = Blob.convert(globalObject, curArg, {\\n context: \\Failed to execute 'append' on 'FormData': parameter 2\\\\n });\\n args.push(curArg);\\n }\\n } else {\\n {\\n let curArg = arguments[1];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'append' on 'FormData': parameter 2\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n }\\n }\\n break;\\n default:\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'append' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[1];\\n curArg = Blob.convert(globalObject, curArg, {\\n context: \\Failed to execute 'append' on 'FormData': parameter 2\\\\n });\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[2];\\n if (curArg !== undefined) {\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'append' on 'FormData': parameter 3\\,\\n globals: globalObject\\n });\\n }\\n args.push(curArg);\\n }\\n }\\n return esValue[implSymbol].append(...args);\\n }\\n\\n delete(name) {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'delete' called on an object that is not a valid instance of FormData.\\);\\n }\\n\\n if (arguments.length < 1) {\\n throw new globalObject.TypeError(\\n \`Failed to execute 'delete' on 'FormData': 1 argument required, but only \${arguments.length} present.\`\\n );\\n }\\n const args = [];\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'delete' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n return esValue[implSymbol].delete(...args);\\n }\\n\\n get(name) {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'get' called on an object that is not a valid instance of FormData.\\);\\n }\\n\\n if (arguments.length < 1) {\\n throw new globalObject.TypeError(\\n \`Failed to execute 'get' on 'FormData': 1 argument required, but only \${arguments.length} present.\`\\n );\\n }\\n const args = [];\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'get' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n return utils.tryWrapperForImpl(esValue[implSymbol].get(...args));\\n }\\n\\n getAll(name) {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'getAll' called on an object that is not a valid instance of FormData.\\);\\n }\\n\\n if (arguments.length < 1) {\\n throw new globalObject.TypeError(\\n \`Failed to execute 'getAll' on 'FormData': 1 argument required, but only \${arguments.length} present.\`\\n );\\n }\\n const args = [];\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'getAll' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n return utils.tryWrapperForImpl(esValue[implSymbol].getAll(...args));\\n }\\n\\n has(name) {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'has' called on an object that is not a valid instance of FormData.\\);\\n }\\n\\n if (arguments.length < 1) {\\n throw new globalObject.TypeError(\\n \`Failed to execute 'has' on 'FormData': 1 argument required, but only \${arguments.length} present.\`\\n );\\n }\\n const args = [];\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'has' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n return esValue[implSymbol].has(...args);\\n }\\n\\n set(name, value) {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'set' called on an object that is not a valid instance of FormData.\\);\\n }\\n\\n if (arguments.length < 2) {\\n throw new globalObject.TypeError(\\n \`Failed to execute 'set' on 'FormData': 2 arguments required, but only \${arguments.length} present.\`\\n );\\n }\\n const args = [];\\n switch (arguments.length) {\\n case 2:\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'set' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[1];\\n if (Blob.is(curArg)) {\\n {\\n let curArg = arguments[1];\\n curArg = Blob.convert(globalObject, curArg, {\\n context: \\Failed to execute 'set' on 'FormData': parameter 2\\\\n });\\n args.push(curArg);\\n }\\n } else {\\n {\\n let curArg = arguments[1];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'set' on 'FormData': parameter 2\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n }\\n }\\n break;\\n default:\\n {\\n let curArg = arguments[0];\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'set' on 'FormData': parameter 1\\,\\n globals: globalObject\\n });\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[1];\\n curArg = Blob.convert(globalObject, curArg, {\\n context: \\Failed to execute 'set' on 'FormData': parameter 2\\\\n });\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[2];\\n if (curArg !== undefined) {\\n curArg = conversions[\\USVString\\](curArg, {\\n context: \\Failed to execute 'set' on 'FormData': parameter 3\\,\\n globals: globalObject\\n });\\n }\\n args.push(curArg);\\n }\\n }\\n return esValue[implSymbol].set(...args);\\n }\\n\\n keys() {\\n if (!exports.is(this)) {\\n throw new globalObject.TypeError(\\'keys' called on an object that is not a valid instance of FormData.\\);\\n }\\n return exports.createDefaultIterator(globalObject, this, \\key\\);\\n }\\n\\n values() {\\n if (!exports.is(this)) {\\n throw new globalObject.TypeError(\\'values' called on an object that is not a valid instance of FormData.\\);\\n }\\n return exports.createDefaultIterator(globalObject, this, \\value\\);\\n }\\n\\n entries() {\\n if (!exports.is(this)) {\\n throw new globalObject.TypeError(\\'entries' called on an object that is not a valid instance of FormData.\\);\\n }\\n return exports.createDefaultIterator(globalObject, this, \\key+value\\);\\n }\\n\\n forEach(callback) {\\n if (!exports.is(this)) {\\n throw new globalObject.TypeError(\\'forEach' called on an object that is not a valid instance of FormData.\\);\\n }\\n if (arguments.length < 1) {\\n throw new globalObject.TypeError(\\n \\Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present.\\\\n );\\n }\\n callback = Function.convert(globalObject, callback, {\\n context: \\Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1\\\\n });\\n const thisArg = arguments[1];\\n let pairs = Array.from(this[implSymbol]);\\n let i = 0;\\n while (i < pairs.length) {\\n const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\\n callback.call(thisArg, value, key, this);\\n pairs = Array.from(this[implSymbol]);\\n i++;\\n }\\n }\\n }, - Blob: class Blob {\\n constructor() {\\n const args = [];\\n {\\n let curArg = arguments[0];\\n if (curArg !== undefined) {\\n if (!utils.isObject(curArg)) {\\n throw new globalObject.TypeError(\\Failed to construct 'Blob': parameter 1\\ + \\ is not an iterable object.\\);\\n } else {\\n const V = [];\\n const tmp = curArg;\\n for (let nextItem of tmp) {\\n if (exports.is(nextItem)) {\\n nextItem = utils.implForWrapper(nextItem);\\n } else if (utils.isArrayBuffer(nextItem)) {\\n } else if (ArrayBuffer.isView(nextItem)) {\\n } else {\\n nextItem = conversions[\\USVString\\](nextItem, {\\n context: \\Failed to construct 'Blob': parameter 1\\ + \\'s element\\,\\n globals: globalObject\\n });\\n }\\n V.push(nextItem);\\n }\\n curArg = V;\\n }\\n }\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[1];\\n curArg = BlobPropertyBag.convert(globalObject, curArg, { context: \\Failed to construct 'Blob': parameter 2\\ });\\n args.push(curArg);\\n }\\n return exports.setup(Object.create(new.target.prototype), globalObject, args);\\n }\\n\\n slice() {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'slice' called on an object that is not a valid instance of Blob.\\);\\n }\\n const args = [];\\n {\\n let curArg = arguments[0];\\n if (curArg !== undefined) {\\n curArg = conversions[\\long long\\](curArg, {\\n context: \\Failed to execute 'slice' on 'Blob': parameter 1\\,\\n globals: globalObject,\\n clamp: true\\n });\\n }\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[1];\\n if (curArg !== undefined) {\\n curArg = conversions[\\long long\\](curArg, {\\n context: \\Failed to execute 'slice' on 'Blob': parameter 2\\,\\n globals: globalObject,\\n clamp: true\\n });\\n }\\n args.push(curArg);\\n }\\n {\\n let curArg = arguments[2];\\n if (curArg !== undefined) {\\n curArg = conversions[\\DOMString\\](curArg, {\\n context: \\Failed to execute 'slice' on 'Blob': parameter 3\\,\\n globals: globalObject\\n });\\n }\\n args.push(curArg);\\n }\\n return utils.tryWrapperForImpl(esValue[implSymbol].slice(...args));\\n }\\n\\n get size() {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'get size' called on an object that is not a valid instance of Blob.\\);\\n }\\n\\n return esValue[implSymbol][\\size\\];\\n }\\n\\n get type() {\\n const esValue = this !== null && this !== undefined ? this : globalObject;\\n\\n if (!exports.is(esValue)) {\\n throw new globalObject.TypeError(\\'get type' called on an object that is not a valid instance of Blob.\\);\\n }\\n\\n return esValue[implSymbol][\\type\\];\\n }\\n } - }, - validateStatus: function validateStatus(status) {\\n return status >= 200 && status < 300;\\n }, - headers: { - Accept: application/json, text/plain, */* - }, - exposeCacheId: true, - url: /test/, - params: { - lorem: ipsum, - dolor: sit - }, - schema: [ - successResponse => \`\${successResponse}-schema-transform\` - ], - transform: [ - successResponse => \`\${successResponse}-transform\` - ], - cacheResponse: false, - method: get, - cacheId: null -}", + "axiosServiceCall", + "globalXhrTimeout", + "globalPollInterval", + "globalCancelTokens", + "globalResponseCache", ] `; -exports[`ServiceConfig should handle transforming service call responses: transformed responses 1`] = ` +exports[`Transform service call responses should handle transforming error responses and errors: transformed error 1`] = ` [ - "success-schema-transform", - "success-transform", - "success", "error-error-transform", "error", - [ - "cancelled request", - undefined, - ], ] `; -exports[`ServiceConfig should have specific properties and methods: specific props and methods 1`] = ` +exports[`Transform service call responses should handle transforming responses with a cancel: transformed cancel 1`] = ` [ - "axiosServiceCall", - "globalXhrTimeout", - "globalPollInterval", - "globalCancelTokens", - "globalResponseCache", + "cancelled request", + "error-cancel-transform", +] +`; + +exports[`Transform service call responses should handle transforming responses with schema transform: schema 1`] = ` +[ + "success-schema-transform", +] +`; + +exports[`Transform service call responses should handle transforming success responses and errors: transformed success 1`] = ` +[ + "success-transform", + "success", ] `; diff --git a/src/services/common/__tests__/serviceConfig.test.js b/src/services/common/__tests__/serviceConfig.test.js index 237796d46..fbcc714ee 100644 --- a/src/services/common/__tests__/serviceConfig.test.js +++ b/src/services/common/__tests__/serviceConfig.test.js @@ -1,50 +1,18 @@ import moxios from 'moxios'; import { serviceConfig } from '../serviceConfig'; +import { generateHash } from '../helpers'; describe('ServiceConfig', () => { - // Return a promise, or promise like, response for errors - const returnPromiseAsync = async promiseAsyncCall => { - let response; - - try { - response = await promiseAsyncCall(); - } catch (e) { - response = e.response || e.message || e; - } - - return response; - }; - - // JSON stringify, and replace functions as strings - const stringifyConfig = config => - JSON.stringify( - config, - (key, value) => { - if (typeof value === 'function') { - return value.toString(); - } - return value; - }, - 2 - ).replace(new RegExp('\\"', 'g'), ''); - - beforeAll(() => { + beforeEach(() => { moxios.install(); - - moxios.stubRequest(/\/(test|pollSuccess).*?/, { + moxios.stubRequest(/\/(test).*?/, { status: 200, responseText: 'success', timeout: 0 }); - - moxios.stubRequest(/\/(error|pollError).*?/, { - status: 404, - responseText: 'error', - timeout: 0 - }); }); - afterAll(() => { + afterEach(() => { moxios.uninstall(); jest.clearAllMocks(); }); @@ -53,10 +21,8 @@ describe('ServiceConfig', () => { expect(Object.keys(serviceConfig)).toMatchSnapshot('specific props and methods'); }); - it('should handle producing a service call configuration', async () => { - const config = []; - - const responseOne = await serviceConfig.axiosServiceCall({ + it('should handle producing a consistent service call configuration', async () => { + const response = await serviceConfig.axiosServiceCall({ cache: false, exposeCacheId: true, url: '/test/', @@ -64,14 +30,29 @@ describe('ServiceConfig', () => { schema: [successResponse => `${successResponse}-schema-transform`], transform: [successResponse => `${successResponse}-transform`] }); - config.push(stringifyConfig(responseOne.request.config)); - expect(config).toMatchSnapshot('response configs'); + expect(generateHash(response.request.config)).toMatchSnapshot('response config hash'); + }); +}); + +describe('Cancel service calls', () => { + beforeEach(() => { + moxios.install(); + moxios.stubRequest(/\/(test).*?/, { + status: 200, + responseText: 'success', + timeout: 0 + }); + }); + + afterEach(() => { + moxios.uninstall(); + jest.clearAllMocks(); }); it('should handle cancelling service calls', async () => { // Highlight cancel takes into account url and method - const responseAll = await returnPromiseAsync(() => + await expect( Promise.all([ serviceConfig.axiosServiceCall({ url: '/test/all', cancel: true }), serviceConfig.axiosServiceCall({ url: '/test/all', method: 'post', cancel: true }), @@ -79,12 +60,10 @@ describe('ServiceConfig', () => { serviceConfig.axiosServiceCall({ url: '/test/all', cancel: true }), serviceConfig.axiosServiceCall({ url: '/test/all', cancel: true }) ]) - ); - - expect(responseAll).toMatchSnapshot('cancelled request, Promise.all'); + ).rejects.toMatchSnapshot('cancelled request, Promise.all'); // Highlight cancel takes into account url and method - const responseAllSettled = await returnPromiseAsync(() => + await expect( Promise.allSettled([ serviceConfig.axiosServiceCall({ url: '/test/allsettled', cancel: true }), serviceConfig.axiosServiceCall({ url: '/test/allsettled', method: 'post', cancel: true }), @@ -92,9 +71,23 @@ describe('ServiceConfig', () => { serviceConfig.axiosServiceCall({ url: '/test/allsettled', cancel: true }), serviceConfig.axiosServiceCall({ url: '/test/allsettled', cancel: true }) ]) - ); + ).resolves.toMatchSnapshot('cancelled request, Promise.allSettled'); + }); +}); + +describe('Cache service calls', () => { + beforeEach(() => { + moxios.install(); + moxios.stubRequest(/\/(test).*?/, { + status: 200, + responseText: 'success', + timeout: 0 + }); + }); - expect(responseAllSettled).toMatchSnapshot('cancelled request, Promise.allSettled'); + afterEach(() => { + moxios.uninstall(); + jest.clearAllMocks(); }); it('should handle caching service calls', async () => { @@ -169,40 +162,67 @@ describe('ServiceConfig', () => { expect(responses).toMatchSnapshot('cached responses, emulated 304'); }); +}); - it('should handle transforming service call responses', async () => { - const responses = []; - - // First, since it happens before other transformations, use the schema transform - const responseOne = await serviceConfig.axiosServiceCall({ - cache: true, - url: '/test/', - schema: [successResponse => `${successResponse}-schema-transform`] +describe('Transform service call responses', () => { + beforeEach(() => { + moxios.install(); + moxios.stubRequest(/\/(test).*?/, { + status: 200, + responseText: 'success', + timeout: 0 }); - responses.push(responseOne.data); - - // Second, use a transform - const responseTwo = await serviceConfig.axiosServiceCall({ - cache: true, - url: '/test/', - transform: [successResponse => `${successResponse}-transform`] + moxios.stubRequest(/\/(error).*?/, { + status: 404, + responseText: 'error', + timeout: 0 }); - responses.push(responseTwo.data); + }); - // Second-Error, use a transform but expect an error - const responseTwoError = await serviceConfig.axiosServiceCall({ - cache: true, - url: '/test/', - transform: [ - () => { - throw new Error('success response transform error'); - } - ] - }); - responses.push(responseTwoError.data); + afterEach(() => { + moxios.uninstall(); + jest.clearAllMocks(); + }); + + it('should handle transforming responses with schema transform', async () => { + const responses = await Promise.allSettled([ + serviceConfig.axiosServiceCall({ + cache: true, + url: '/test/', + schema: [successResponse => `${successResponse}-schema-transform`] + }) + ]); + + expect(responses.map(response => response.value.data)).toMatchSnapshot('schema'); + }); - // Third, use error transform - const responseThree = await returnPromiseAsync(async () => + it('should handle transforming success responses and errors', async () => { + const responses = await Promise.allSettled([ + // success response and transform + serviceConfig.axiosServiceCall({ + cache: true, + url: '/test/', + transform: [successResponse => `${successResponse}-transform`] + }), + + // throw an error pass original API response + serviceConfig.axiosServiceCall({ + cache: true, + url: '/test/', + transform: [ + () => { + throw new Error('success response transform error'); + } + ] + }) + ]); + + expect(responses.map(response => response.value.data)).toMatchSnapshot('transformed success'); + }); + + it('should handle transforming error responses and errors', async () => { + const responses = await Promise.allSettled([ + // error response and transform serviceConfig.axiosServiceCall({ cache: true, url: '/error/', @@ -210,12 +230,9 @@ describe('ServiceConfig', () => { successResponse => `${successResponse}-transform`, errorResponse => `${errorResponse}-error-transform` ] - }) - ); - responses.push(responseThree.data); + }), - // Third-Error, use error transform - const responseThreeError = await returnPromiseAsync(async () => + // throw an error pass original API response serviceConfig.axiosServiceCall({ cache: true, url: '/error/', @@ -226,11 +243,13 @@ describe('ServiceConfig', () => { } ] }) - ); - responses.push(responseThreeError.data); + ]); - // Fourth, use error transform with cancel - const responseFourConfig = { + expect(responses.map(({ reason }) => reason?.response?.data || reason.data)).toMatchSnapshot('transformed error'); + }); + + it('should handle transforming responses with a cancel', async () => { + const config = { cache: true, cancel: true, url: '/error/', @@ -240,21 +259,42 @@ describe('ServiceConfig', () => { ] }; - const responseFour = await Promise.allSettled([ + const responses = await Promise.allSettled([ serviceConfig.axiosServiceCall({ - ...responseFourConfig + ...config }), serviceConfig.axiosServiceCall({ - ...responseFourConfig + ...config }) ]); - responses.push(responseFour.map(({ reason }) => reason.message)); + expect(responses.map(({ reason }) => reason?.response?.data || reason.message)).toMatchSnapshot( + 'transformed cancel' + ); + }); +}); + +describe('Poll service calls', () => { + beforeEach(() => { + moxios.install(); + moxios.stubRequest(/\/(test|pollSuccess).*?/, { + status: 200, + responseText: 'success', + timeout: 0 + }); + moxios.stubRequest(/\/(error|pollError).*?/, { + status: 404, + responseText: 'error', + timeout: 0 + }); + }); - expect(responses).toMatchSnapshot('transformed responses'); + afterEach(() => { + moxios.uninstall(); + jest.clearAllMocks(); }); - it('should handle polling service calls', async () => { + it('should handle basic polling', async () => { const basicPollValidator = jest.fn(); const basicOutput = await serviceConfig.axiosServiceCall( { @@ -281,8 +321,28 @@ describe('ServiceConfig', () => { pollConfig: basicOutput.config.poll, data: basicOutput.data } - }).toMatchSnapshot('basic polling validator'); + }).toMatchSnapshot('basic'); + }); + + it('should handle basic polling error', async () => { + const consoleSpyError = jest.spyOn(console, 'error'); + await serviceConfig.axiosServiceCall( + { + cache: false, + url: '/test/', + poll: () => { + throw new Error('basic error'); + } + }, + { pollInterval: 0 } + ); + + expect(consoleSpyError.mock.calls).toMatchSnapshot('callback error'); + consoleSpyError.mockClear(); + }); + + it('should handle polling with a validate callback', async () => { const specificPollValidator = jest.fn(); const specificOutput = await serviceConfig.axiosServiceCall( { @@ -311,28 +371,49 @@ describe('ServiceConfig', () => { pollConfig: specificOutput.config.poll, data: specificOutput.data } - }).toMatchSnapshot('specific polling validator'); + }).toMatchSnapshot('callback'); + }); + + it('should handle polling with a validate callback error', async () => { + const consoleSpyError = jest.spyOn(console, 'error'); + await serviceConfig.axiosServiceCall( + { + cache: false, + url: '/test/', + poll: { + validate: () => { + throw new Error('validate error'); + } + } + }, + { pollInterval: 0 } + ); + + expect(consoleSpyError.mock.calls).toMatchSnapshot('callback error'); + consoleSpyError.mockClear(); + }); + + it('should handle polling with a status callback', async () => { const statusPoll = jest.fn(); const statusOutput = await serviceConfig.axiosServiceCall( { cache: true, url: '/test/', poll: { - validate: (response, count) => count === 2, + validate: (response, count) => count === 1, status: (...args) => statusPoll(...args) } }, { pollInterval: 0 } ); - // delay to give the internal status promise time to unwrap + // Note: The status callback is an independent async func fired out of sequence, we wait for it to resolve. await new Promise(resolve => { - setTimeout(() => resolve(), 25); + setTimeout(() => resolve(), 100); }); - expect(statusPoll).toHaveBeenCalledTimes(4); - + expect(statusPoll).toHaveBeenCalledTimes(3); expect({ status: statusPoll.mock.calls.map(([response, count]) => ({ response: { @@ -346,8 +427,36 @@ describe('ServiceConfig', () => { data: statusOutput.data, pollConfig: statusOutput.config.poll } - }).toMatchSnapshot('status polling'); + }).toMatchSnapshot('callback'); + }); + it('should handle polling with a status callback error', async () => { + const consoleSpyError = jest.spyOn(console, 'error'); + + await serviceConfig.axiosServiceCall( + { + cache: false, + url: '/test/', + poll: { + validate: (response, count) => count === 3, + status: () => { + throw new Error('status error'); + } + } + }, + { pollInterval: 0 } + ); + + // Note: The status callback is an independent async func fired out of sequence, we wait for it to resolve. + await new Promise(resolve => { + setTimeout(() => resolve(), 100); + }); + + expect(consoleSpyError.mock.calls).toMatchSnapshot('callback error'); + consoleSpyError.mockClear(); + }); + + it('should handle polling against a different service call path', async () => { const mockLocation = jest.fn().mockImplementation(() => '/pollSuccess/'); const locationOutput = await serviceConfig.axiosServiceCall( { @@ -375,47 +484,10 @@ describe('ServiceConfig', () => { pollConfig: { ...locationOutput.config.poll, location: Function.prototype }, data: locationOutput.data } - }).toMatchSnapshot('custom location'); + }).toMatchSnapshot('different service call'); }); - it('should handle polling service call errors', async () => { - const consoleSpyError = jest.spyOn(console, 'error'); - - await serviceConfig.axiosServiceCall( - { - cache: false, - url: '/test/', - poll: () => { - throw new Error('basic validation error'); - } - }, - { pollInterval: 0 } - ); - expect(consoleSpyError.mock.calls).toMatchSnapshot('validation error'); - consoleSpyError.mockClear(); - - await serviceConfig.axiosServiceCall( - { - cache: false, - url: '/test/', - poll: { - validate: (response, count) => count === 1, - location: () => { - throw new Error('location string error'); - } - } - }, - { pollInterval: 0 } - ); - - // delay to give the internal status promise time to unwrap - await new Promise(resolve => { - setTimeout(() => resolve(), 25); - }); - - expect(consoleSpyError.mock.calls).toMatchSnapshot('location error'); - consoleSpyError.mockClear(); - + it('should handle polling against a different service call path error and status callback', async () => { const statusErrorPoll = jest.fn(); await serviceConfig.axiosServiceCall( { @@ -430,9 +502,9 @@ describe('ServiceConfig', () => { { pollInterval: 0 } ); - // delay to give the internal status promise time to unwrap + // Note: The status callback is an independent async func fired out of sequence, we wait for it to resolve. await new Promise(resolve => { - setTimeout(() => resolve(), 50); + setTimeout(() => resolve(), 100); }); expect(statusErrorPoll).toHaveBeenCalledTimes(2); @@ -445,29 +517,37 @@ describe('ServiceConfig', () => { }, count })) - }).toMatchSnapshot('status error polling'); + }).toMatchSnapshot('different service call error with status callback'); + }); + + it('should handle polling against a different service call path but with a callback error', async () => { + const consoleSpyError = jest.spyOn(console, 'error'); await serviceConfig.axiosServiceCall( { cache: false, url: '/test/', poll: { - validate: (response, count) => count === 3, - status: () => { - throw new Error('status error'); + validate: (response, count) => count === 1, + location: () => { + throw new Error('location error'); } } }, { pollInterval: 0 } ); - // delay to give the internal status promise time to unwrap + // Note: The location callback is an independent async func fired out of sequence, we wait for it to resolve. await new Promise(resolve => { - setTimeout(() => resolve(), 25); + setTimeout(() => resolve(), 100); }); - expect(consoleSpyError.mock.calls).toMatchSnapshot('status error'); + expect(consoleSpyError.mock.calls).toMatchSnapshot('callback error'); consoleSpyError.mockClear(); + }); + + it('should handle polling against a different service call path error and status callback error', async () => { + const consoleSpyError = jest.spyOn(console, 'error'); const statusStatusErrorPoll = jest.fn(); await serviceConfig.axiosServiceCall( @@ -486,9 +566,9 @@ describe('ServiceConfig', () => { { pollInterval: 0 } ); - // delay to give the internal status promise time to unwrap + // Note: The status callback is an independent async func fired out of sequence, we wait for it to resolve. await new Promise(resolve => { - setTimeout(() => resolve(), 25); + setTimeout(() => resolve(), 100); }); expect(statusStatusErrorPoll).toHaveBeenCalledTimes(2); @@ -505,71 +585,84 @@ describe('ServiceConfig', () => { expect(consoleSpyError.mock.calls).toMatchSnapshot('status of a status error'); consoleSpyError.mockClear(); }); +}); - it('should allow passing a function and emulating a service call', async () => { - const responses = []; +describe('Emulate a service call with a function', () => { + it('should allow emulating a service call by passing a function', async () => { + const output = 'lorem.ipsum'; + const response = await serviceConfig.axiosServiceCall({ + cache: true, + url: () => output + }); - // First, pass a regular function similar to any service call - const responseOne = await serviceConfig.axiosServiceCall({ + expect(response.data).toBe(output); + }); + + it('should allow emulating a service call by passing a promise-like function', async () => { + const output = 'lorem.ipsum'; + const response = await serviceConfig.axiosServiceCall({ cache: true, - url: () => 'lorem.ipsum' + url: async () => output }); - responses.push(responseOne.data); - // Second, pass a function similar to any service call, schema transform - const responseTwo = await serviceConfig.axiosServiceCall({ + expect(response.data).toBe(output); + }); + + it('should allow schema transforming a function call response', async () => { + const response = await serviceConfig.axiosServiceCall({ cache: true, - url: () => Promise.resolve('lorem.ipsum'), + url: () => 'lorem.ipsum', schema: [successResponse => `${successResponse}-function-schema-transform`] }); - responses.push(responseTwo.data); - // Third, pass a function similar to any service call, transform - const responseThree = await serviceConfig.axiosServiceCall({ + expect(response.data).toMatchSnapshot('transform'); + }); + + it('should allow transforming a function call response', async () => { + const response = await serviceConfig.axiosServiceCall({ cache: true, url: () => Promise.resolve('lorem.ipsum'), transform: [successResponse => `${successResponse}-function-transform`] }); - responses.push(responseThree.data); - // Fourth, use error then return cached response - const responseFour = await returnPromiseAsync(async () => + expect(response.data).toMatchSnapshot('transform'); + }); + + it('should handle function call response errors', async () => { + const responses = await Promise.allSettled([ serviceConfig.axiosServiceCall({ - cache: true, url: () => Promise.reject(new Error('dolor.sit')) }) - ); + ]); - responses.push(responseFour.data); + expect(responses.map(({ reason }) => reason.message)).toMatchSnapshot('error'); + }); - // Fifth, use reject error with transform - const responseFive = await returnPromiseAsync(async () => + it('should handle function call response error with transformations', async () => { + const responses = await Promise.allSettled([ serviceConfig.axiosServiceCall({ - cache: true, url: () => Promise.reject(new Error('dolor.sit')), transform: [ successResponse => `${successResponse}-transform`, errorResponse => `${errorResponse}-error-transform` ] }) - ); + ]); - responses.push(responseFive.data); + expect(responses.map(({ reason }) => reason.response.data)).toMatchSnapshot('error transformation'); + }); - // Sixth, use reject string with transform - const responseSix = await returnPromiseAsync(async () => + it('should handle function call response error string with transformations', async () => { + const responses = await Promise.allSettled([ serviceConfig.axiosServiceCall({ - cache: true, url: () => Promise.reject('dolor.sit'), // eslint-disable-line transform: [ successResponse => `${successResponse}-transform`, errorResponse => `${errorResponse}-error-transform` ] }) - ); - - responses.push(responseSix.data); + ]); - expect(responses).toMatchSnapshot('function responses'); + expect(responses.map(({ reason }) => reason.response.data)).toMatchSnapshot('error transformation'); }); }); From e959b0ec918301d975e17b823315e81324ff43cb Mon Sep 17 00:00:00 2001 From: CD Cabrera Date: Thu, 20 Feb 2025 10:42:55 -0500 Subject: [PATCH 4/7] build(deps): bump core group with 8 updates (#1527) * @patternfly/react-charts from 7.4.5 to 7.4.9 * @patternfly/react-core from 5.4.2 to 5.4.13 * @patternfly/react-icons from 5.4.0 to 5.4.2 * @patternfly/react-table from 5.4.8 to 5.4.15 * @redhat-cloud-services/frontend-components from 4.2.22 to 5.2.9 * @redhat-cloud-services/frontend-components-notifications from 4.1.1 to 4.1.20 * @redhat-cloud-services/frontend-components-utilities from 4.0.19 to 5.0.11 * @redhat-cloud-services/frontend-components-config from 6.3.3 to 6.4.5 --- package-lock.json | 794 ++++++++++-------- package.json | 16 +- .../__snapshots__/table.test.js.snap | 42 +- src/components/table/__tests__/table.test.js | 1 + tests/__snapshots__/dist.test.js.snap | 49 +- 5 files changed, 503 insertions(+), 399 deletions(-) diff --git a/package-lock.json b/package-lock.json index f71e7b208..199778947 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,15 +12,15 @@ "dependencies": { "@joi/date": "^2.1.1", "@patternfly/patternfly": "5.4.2", - "@patternfly/react-charts": "7.4.5", - "@patternfly/react-core": "5.4.2", - "@patternfly/react-icons": "5.4.0", + "@patternfly/react-charts": "7.4.9", + "@patternfly/react-core": "5.4.13", + "@patternfly/react-icons": "5.4.2", "@patternfly/react-styles": "5.4.1", - "@patternfly/react-table": "5.4.8", + "@patternfly/react-table": "5.4.15", "@patternfly/react-tokens": "5.4.1", - "@redhat-cloud-services/frontend-components": "4.2.22", - "@redhat-cloud-services/frontend-components-notifications": "4.1.1", - "@redhat-cloud-services/frontend-components-utilities": "4.0.19", + "@redhat-cloud-services/frontend-components": "5.2.9", + "@redhat-cloud-services/frontend-components-notifications": "4.1.20", + "@redhat-cloud-services/frontend-components-utilities": "5.0.11", "axios": "^1.7.9", "classnames": "^2.5.1", "fastest-levenshtein": "^1.0.16", @@ -48,7 +48,7 @@ "devDependencies": { "@babel/core": "7.26.9", "@babel/eslint-parser": "7.26.8", - "@redhat-cloud-services/frontend-components-config": "6.3.3", + "@redhat-cloud-services/frontend-components-config": "6.4.5", "@redhat-cloud-services/tsc-transform-imports": "^1.0.23", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", @@ -3945,9 +3945,9 @@ } }, "node_modules/@openshift/dynamic-plugin-sdk-webpack/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -4286,9 +4286,9 @@ "license": "MIT" }, "node_modules/@patternfly/react-charts": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.4.5.tgz", - "integrity": "sha512-m6+y4FDCQm+Ql55KJQK1Yor799aaYgpVbIcqShtZ7Lidx9MFCfoCJxSrJTbfJHb46H+zv/LKxLtJ6dUx54qnjA==", + "version": "7.4.9", + "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.4.9.tgz", + "integrity": "sha512-kFnl4al8A5rRyvp13xpPhP4fnIhpAr3KQzAJEfznk2JdrYMnKmNdxF3HH8KHplwH5gG4nmUWzX60lpNaFKn1/A==", "license": "MIT", "dependencies": { "@patternfly/react-styles": "^5.4.1", @@ -4296,29 +4296,83 @@ "hoist-non-react-statics": "^3.3.2", "lodash": "^4.17.21", "tslib": "^2.7.0", - "victory-area": "^37.1.1", - "victory-axis": "^37.1.1", - "victory-bar": "^37.1.1", - "victory-box-plot": "^37.1.1", - "victory-chart": "^37.1.1", - "victory-core": "^37.1.1", - "victory-create-container": "^37.1.1", - "victory-cursor-container": "^37.1.1", - "victory-group": "^37.1.1", - "victory-legend": "^37.1.1", - "victory-line": "^37.1.1", - "victory-pie": "^37.1.1", - "victory-scatter": "^37.1.1", - "victory-stack": "^37.1.1", - "victory-tooltip": "^37.1.1", - "victory-voronoi-container": "^37.1.1", - "victory-zoom-container": "^37.1.1" + "victory-area": "^37.3.6", + "victory-axis": "^37.3.6", + "victory-bar": "^37.3.6", + "victory-box-plot": "^37.3.6", + "victory-chart": "^37.3.6", + "victory-core": "^37.3.6", + "victory-create-container": "^37.3.6", + "victory-cursor-container": "^37.3.6", + "victory-group": "^37.3.6", + "victory-legend": "^37.3.6", + "victory-line": "^37.3.6", + "victory-pie": "^37.3.6", + "victory-scatter": "^37.3.6", + "victory-stack": "^37.3.6", + "victory-tooltip": "^37.3.6", + "victory-voronoi-container": "^37.3.6", + "victory-zoom-container": "^37.3.6" }, "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, + "node_modules/@patternfly/react-charts/node_modules/victory-brush-container": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-37.3.6.tgz", + "integrity": "sha512-LfZ2CgX1cYAqCtYxcSB68OfZS2v0T2VLXoEArd0lCXfRBY1Gya7GacCUcuo7GoK9XOXeslx7S/U95aVutt1VLg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/@patternfly/react-charts/node_modules/victory-create-container": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-37.3.6.tgz", + "integrity": "sha512-Uf5bFQvqUsXCjqpvBW4LhrdrHkM6dBqxYgub6FCsBb86f84xZQ3vY7jFkg/JfvF0oGKMoWXYYrYLC1sk+fcWVA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-brush-container": "37.3.6", + "victory-core": "37.3.6", + "victory-cursor-container": "37.3.6", + "victory-selection-container": "37.3.6", + "victory-voronoi-container": "37.3.6", + "victory-zoom-container": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/@patternfly/react-charts/node_modules/victory-selection-container": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-37.3.6.tgz", + "integrity": "sha512-gd3qODDlBtLEJM7+2jCXk2YcLBUmIpYEEHswytMhwc6zihxXipGBUHRulhLj/I05mKay2gaOAg5ewiJHd4Awgw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, "node_modules/@patternfly/react-component-groups": { "version": "5.5.5", "resolved": "https://registry.npmjs.org/@patternfly/react-component-groups/-/react-component-groups-5.5.5.tgz", @@ -4337,17 +4391,17 @@ } }, "node_modules/@patternfly/react-core": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.2.tgz", - "integrity": "sha512-YpynAUvka9atgrggEporp0S1oxtoAkdtFM5guM3T2zYqs8ww2TKfpn4ThxVgomwyt57zt5KOUKIAwcWWQrYTVQ==", + "version": "5.4.13", + "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.13.tgz", + "integrity": "sha512-H5xw/mLBUZVnruuhV7+w8FybOICInxKaYQNqF55NbiyWesh8d4woEdmID0luFe8RADWgN6zI1BvqQYArl3AcSw==", "license": "MIT", "dependencies": { - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-styles": "^5.4.0", - "@patternfly/react-tokens": "^5.4.0", - "focus-trap": "7.5.4", + "@patternfly/react-icons": "^5.4.2", + "@patternfly/react-styles": "^5.4.1", + "@patternfly/react-tokens": "^5.4.1", + "focus-trap": "7.6.2", "react-dropzone": "^14.2.3", - "tslib": "^2.6.3" + "tslib": "^2.7.0" }, "peerDependencies": { "react": "^17 || ^18", @@ -4355,9 +4409,9 @@ } }, "node_modules/@patternfly/react-icons": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.0.tgz", - "integrity": "sha512-2M3qN/naultvRHeG2laJMmoIroFCGAyfwTVrnCjSkG6/KnRoXV0+dqd+Xrh7xzpzvIJB1klvifC0oX42cEkDrA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.2.tgz", + "integrity": "sha512-CMQ5oHYzW6TPVTs2jpNJmP2vGCAKR/YeTPwHGO9dLkAUej1IcIxtCCWK2Fdo2UJsnBjuZihasyw2b6ehvbUm9Q==", "license": "MIT", "peerDependencies": { "react": "^17 || ^18", @@ -4371,12 +4425,12 @@ "license": "MIT" }, "node_modules/@patternfly/react-table": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.8.tgz", - "integrity": "sha512-YVRSP6luBHsDqWeblPLfg8tXasB409SbysDECsGPMR+y87vYTa6CHwpVhImhXOlIJW7KCRCgx4T1/siAxb3XkA==", + "version": "5.4.15", + "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.15.tgz", + "integrity": "sha512-+6fmOHzd1xZpABnHIFofQeHfjs6tvWtC7m8PsLMU8dhrQrZHmpVzjpdmzKhCP2pAyC9cHCRj33Uti+6tCbZMlA==", "license": "MIT", "dependencies": { - "@patternfly/react-core": "^5.4.8", + "@patternfly/react-core": "^5.4.13", "@patternfly/react-icons": "^5.4.2", "@patternfly/react-styles": "^5.4.1", "@patternfly/react-tokens": "^5.4.1", @@ -4388,43 +4442,6 @@ "react-dom": "^17 || ^18" } }, - "node_modules/@patternfly/react-table/node_modules/@patternfly/react-core": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.10.tgz", - "integrity": "sha512-lThdXKqHc9sN5AqPskZa1YmUmSwbjdkaT8neTCdMjfnBaBanYCmSCNUMYUsoB0L/2siu2Vlcp12RRaG5hZeN2g==", - "license": "MIT", - "dependencies": { - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-styles": "^5.4.1", - "@patternfly/react-tokens": "^5.4.1", - "focus-trap": "7.6.2", - "react-dropzone": "^14.2.3", - "tslib": "^2.7.0" - }, - "peerDependencies": { - "react": "^17 || ^18", - "react-dom": "^17 || ^18" - } - }, - "node_modules/@patternfly/react-table/node_modules/@patternfly/react-icons": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.2.tgz", - "integrity": "sha512-CMQ5oHYzW6TPVTs2jpNJmP2vGCAKR/YeTPwHGO9dLkAUej1IcIxtCCWK2Fdo2UJsnBjuZihasyw2b6ehvbUm9Q==", - "license": "MIT", - "peerDependencies": { - "react": "^17 || ^18", - "react-dom": "^17 || ^18" - } - }, - "node_modules/@patternfly/react-table/node_modules/focus-trap": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.2.tgz", - "integrity": "sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==", - "license": "MIT", - "dependencies": { - "tabbable": "^6.2.0" - } - }, "node_modules/@patternfly/react-tokens": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.4.1.tgz", @@ -4512,42 +4529,42 @@ "license": "MIT" }, "node_modules/@redhat-cloud-services/frontend-components": { - "version": "4.2.22", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-4.2.22.tgz", - "integrity": "sha512-FEDxxNHF0Jg6thM1IIFxHZSVbsS5Eq4QxOuPvbhlXA7ijvxzkgh5hDwBZyRSYhL2za+sZPqZzYTgwwu1Mb3MNw==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-5.2.9.tgz", + "integrity": "sha512-JCeVX8ApPDsTBrvwiFrIdm4Z4ZqKU3ULav2La6cK/lhFLu+CEC2H0AdNjCSmMwY6GburerFpEZKBwZJ4kp5v4w==", "license": "Apache-2.0", "dependencies": { - "@patternfly/react-component-groups": "^5.0.0", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.0", - "@redhat-cloud-services/types": "^1.0.9", + "@patternfly/react-component-groups": "^5.5.5", + "@redhat-cloud-services/frontend-components-utilities": "^5.0.4", + "@redhat-cloud-services/types": "^1.0.19", "@scalprum/core": "^0.8.1", "@scalprum/react-core": "^0.9.1", "classnames": "^2.2.5", "sanitize-html": "^2.13.1" }, "peerDependencies": { - "@patternfly/react-core": "^5.0.0", - "@patternfly/react-icons": "^5.0.0", - "@patternfly/react-table": "^5.0.0", + "@patternfly/react-core": "^5.4.11", + "@patternfly/react-icons": "^5.4.2", + "@patternfly/react-table": "^5.4.12", "lodash": "^4.17.15", "prop-types": "^15.6.2", "react": "^18.2.0", "react-content-loader": "^6.2.0", "react-dom": "^18.2.0", - "react-redux": ">=7.0.0", + "react-redux": "^7.0.0 || ^8.0.0 || ^9.0.0", "react-router-dom": "^5.0.0 || ^6.0.0" } }, "node_modules/@redhat-cloud-services/frontend-components-config": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.3.3.tgz", - "integrity": "sha512-+vprQN6SYW8gTbv9mdwbFzfZbBziVhdpUpDstDq2rBv42Qb96WEY1titfVypCZC4iGsbRu6uYJfnWYKvpZXekQ==", + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.4.5.tgz", + "integrity": "sha512-soNkbbCij8J9Vw44S3vREt2Gt6PFQ4nHE9iLI+BzaCt7Psab1zSq/G7iDgXntVhLr6X2JtfPRZl8xZjuYJs5tA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", - "@redhat-cloud-services/frontend-components-config-utilities": "^3.2.3", - "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", + "@redhat-cloud-services/frontend-components-config-utilities": "^4.1.3", + "@redhat-cloud-services/tsc-transform-imports": "^1.0.21", "@swc/core": "^1.3.76", "assert": "^2.0.0", "axios": "^0.28.1 || ^1.7.0", @@ -4569,12 +4586,12 @@ "js-yaml": "^4.1.0", "jws": "^4.0.0", "lodash": "^4.17.21", - "mini-css-extract-plugin": "^2.7.3", + "mini-css-extract-plugin": "^2.9.1", "path-browserify": "^1.0.1", "process": "^0.11.10", "react-refresh": "^0.14.0", - "sass": "^1.55.0", - "sass-loader": "^11.1.1", + "sass": "^1.79.4", + "sass-loader": "^16.0.2", "source-map-loader": "^3.0.1", "stream-browserify": "^3.0.0", "swc-loader": "^0.2.3", @@ -4593,20 +4610,77 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config-utilities": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.2.7.tgz", - "integrity": "sha512-D+KzH0hTfJN2ykiiMDErazoeWpUHo57R4f5Y3g5of8hj1fC/trZPry0ul7kkQkwKY3NrV6DJf04htqyEM5+9lg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-4.1.4.tgz", + "integrity": "sha512-J0/4xPzEXtCxwvRQ5P20v/dGUjD7/I1ORr33gTSp/kK8bMHHz9rbzgUdJvNvWCZCA6KmgtV9g4yWISlSopbAcg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@openshift/dynamic-plugin-sdk-webpack": "^4.0.1", + "ajv": "^8.17.1", "chalk": "^4.1.2", + "chokidar": "^4.0.3", + "js-yaml": "^4.1.0", "node-fetch": "2.6.7" }, "peerDependencies": { "webpack": "^5.0.0" } }, + "node_modules/@redhat-cloud-services/frontend-components-config-utilities/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@redhat-cloud-services/frontend-components-config-utilities/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@redhat-cloud-services/frontend-components-config-utilities/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@redhat-cloud-services/frontend-components-config-utilities/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@redhat-cloud-services/frontend-components-config/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4630,13 +4704,13 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-notifications": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-4.1.1.tgz", - "integrity": "sha512-AR/5x48MgTcZdpnwbEyHyt5KkOD56dwZ55xzLh3CI2KO3FmQzTZBjIs0hng1uPcYtKu982vYgl78MFRsuZzSeA==", + "version": "4.1.20", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-4.1.20.tgz", + "integrity": "sha512-9GGDb7pwhTyzgLpM6xfBetrKDRwLTEu8/Ifn8/8xu/wfm4Ch5TXiib04QV5+W5EcRuWxMZevVhytTNFUqXSBvw==", "license": "Apache-2.0", "dependencies": { - "@redhat-cloud-services/frontend-components": "^4.0.9", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.2", + "@redhat-cloud-services/frontend-components": "^5.0.5", + "@redhat-cloud-services/frontend-components-utilities": "^5.0.4", "redux-promise-middleware": "6.1.3" }, "peerDependencies": { @@ -4645,7 +4719,7 @@ "prop-types": "^15.6.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-redux": ">=7.2.9", + "react-redux": "^7.2.9 || ^8.0.0 || ^9.0.0", "redux": ">=4.2.0" } }, @@ -4659,19 +4733,19 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-utilities": { - "version": "4.0.19", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.19.tgz", - "integrity": "sha512-CD3tp/fHWK/qiHfxsbiKW+odlUrQM8hQ+XxhkMzLcIJFBGbH3CTSpP9ALXdO+3UsaE5h3Hk3LRoFCYWp0Aajxg==", + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-5.0.11.tgz", + "integrity": "sha512-wCR5DMzYTVJ1HjYJI5Lnn16GVtp5HEQNxSBmBsRZLGAWIiuz8Bt/y6x4ixgV9EQ2UrWDLgAw/gOmy7obMR9bvg==", "license": "Apache-2.0", "dependencies": { "@redhat-cloud-services/rbac-client": "^1.0.111 || 2.x", - "@redhat-cloud-services/types": "^1.0.9", + "@redhat-cloud-services/types": "^1.0.19", "@sentry/browser": "^7.119.1", "awesome-debounce-promise": "^2.1.0", "axios": "^0.28.1 || ^1.7.0", "commander": "^2.20.3", "mkdirp": "^1.0.4", - "p-all": "^5.0.0", + "p-map": "^7.0.2", "react-content-loader": "^6.2.0" }, "peerDependencies": { @@ -4679,14 +4753,26 @@ "@patternfly/react-table": "^5.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-redux": ">=7.0.0", + "react-redux": "^7.0.0 || ^8.0.0 || ^9.0.0", "react-router-dom": "^5.0.0 || ^6.0.0" } }, + "node_modules/@redhat-cloud-services/frontend-components-utilities/node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@redhat-cloud-services/javascript-clients-shared": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/javascript-clients-shared/-/javascript-clients-shared-1.2.6.tgz", - "integrity": "sha512-GESm6Rxo/G+rX4Ui7+JTDneAKWk1HkYKeA/BZIvPZb1TCEFvR9YJUDH8yVuiJ0S0rfHvXpyPqRjB52cq4fQq+g==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/javascript-clients-shared/-/javascript-clients-shared-1.2.7.tgz", + "integrity": "sha512-DfH1Sdjwc9YYVM2wLznnNfC3+DFpdH8Ak59LW93KQWaPAn8ZHDoEXi/TZ8MisEgWTQv7jpsDVtlVQwOWkzKhUA==", "license": "Apache-2.0", "dependencies": { "axios": "^1.7.2", @@ -4809,9 +4895,9 @@ } }, "node_modules/@redhat-cloud-services/types": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/types/-/types-1.0.16.tgz", - "integrity": "sha512-M4cmGWoJroaklZgX/EQjwlUZZLsABuKMuknaocdhcrJ4Yn+sijPDyBYC3cv2AMNvKZRA6NYx7aC1TDhFgI6Q0Q==", + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/types/-/types-1.0.21.tgz", + "integrity": "sha512-zl5NbZzseFKvORZkHeK+TbpT8WSTAzM4dx6we8E/C6zPijmu1+9QJ2zq3nVT3xqjP40nsIG/mDHO3p2/0uSI1g==", "license": "Apache-2.0" }, "node_modules/@remix-run/router": { @@ -4857,89 +4943,89 @@ } }, "node_modules/@sentry-internal/feedback": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.120.0.tgz", - "integrity": "sha512-+nU2PXMAyrYyK64PlfxXyRZ+LIl6IWAcdnBeX916WqOJy2WWmtdOrAX8muVwLVIXHzp1EMG1nEZgtpL/Vr2XKQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.120.3.tgz", + "integrity": "sha512-ewJJIQ0mbsOX6jfiVFvqMjokxNtgP3dNwUv+4nenN+iJJPQsM6a0ocro3iscxwVdbkjw5hY3BUV2ICI5Q0UWoA==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.0", - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.120.0.tgz", - "integrity": "sha512-ZEFZBP+Jxmy/8IY7IZDZVPqAJ6pPxAFo1lNTd8xfpbno3WAtHw0FLewLfjrFt0zfIgCk8EXj4PW355zRP3C2NQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.120.3.tgz", + "integrity": "sha512-s5xy+bVL1eDZchM6gmaOiXvTqpAsUfO7122DxVdEDMtwVq3e22bS2aiGa8CUgOiJkulZ+09q73nufM77kOmT/A==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.0", - "@sentry/replay": "7.120.0", - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0" + "@sentry/core": "7.120.3", + "@sentry/replay": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.0.tgz", - "integrity": "sha512-VymJoIGMV0PcTJyshka9uJ1sKpR7bHooqW5jTEr6g0dYAwB723fPXHjVW+7SETF7i5+yr2KMprYKreqRidKyKA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz", + "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.0", - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.0.tgz", - "integrity": "sha512-2hRE3QPLBBX+qqZEHY2IbJv4YvfXY7m/bWmNjN15phyNK3oBcm2Pa8ZiKUYrk8u/4DCEGzNUlhOmFgaxwSfpNw==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.3.tgz", + "integrity": "sha512-i9vGcK9N8zZ/JQo1TCEfHHYZ2miidOvgOABRUc9zQKhYdcYQB2/LU1kqlj77Pxdxf4wOa9137d6rPrSn9iiBxg==", "license": "MIT", "dependencies": { - "@sentry-internal/feedback": "7.120.0", - "@sentry-internal/replay-canvas": "7.120.0", - "@sentry-internal/tracing": "7.120.0", - "@sentry/core": "7.120.0", - "@sentry/integrations": "7.120.0", - "@sentry/replay": "7.120.0", - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0" + "@sentry-internal/feedback": "7.120.3", + "@sentry-internal/replay-canvas": "7.120.3", + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/integrations": "7.120.3", + "@sentry/replay": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.0.tgz", - "integrity": "sha512-uTc2sUQ0heZrMI31oFOHGxjKgw16MbV3C2mcT7qcrb6UmSGR9WqPOXZhnVVuzPWCnQ8B5IPPVdynK//J+9/m6g==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.0.tgz", - "integrity": "sha512-/Hs9MgSmG4JFNyeQkJ+MWh/fxO/U38Pz0VSH3hDrfyCjI8vH9Vz9inGEQXgB9Ke4eH8XnhsQ7xPnM27lWJts6g==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz", + "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.0", - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3", "localforage": "^1.8.1" }, "engines": { @@ -4947,36 +5033,36 @@ } }, "node_modules/@sentry/replay": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.120.0.tgz", - "integrity": "sha512-wV9fIYwNtMvFOHQB5eSm+kCorRXsX5+v1DxyTC8Lee1hfzcUQ2Wvqh75VktpXuM9TeZE8h7aQ4Wo4qCgTUdtvA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.120.3.tgz", + "integrity": "sha512-CjVq1fP6bpDiX8VQxudD5MPWwatfXk8EJ2jQhJTcWu/4bCSOQmHxnnmBM+GVn5acKUBCodWHBN+IUZgnJheZSg==", "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.120.0", - "@sentry/core": "7.120.0", - "@sentry/types": "7.120.0", - "@sentry/utils": "7.120.0" + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.0.tgz", - "integrity": "sha512-3mvELhBQBo6EljcRrJzfpGJYHKIZuBXmqh0y8prh03SWE62pwRL614GIYtd4YOC6OP1gfPn8S8h9w3dD5bF5HA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.120.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.0.tgz", - "integrity": "sha512-XZsPcBHoYu4+HYn14IOnhabUZgCF99Xn4IdWn8Hjs/c+VPtuAVDhRTsfPyPrpY3OcN8DgO5fZX4qcv/6kNbX1A==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.0" + "@sentry/types": "7.120.3" }, "engines": { "node": ">=8" @@ -12223,9 +12309,9 @@ "license": "MIT" }, "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.2.tgz", + "integrity": "sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==", "license": "MIT", "dependencies": { "tabbable": "^6.2.0" @@ -16204,16 +16290,6 @@ "node": ">=6" } }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -17856,33 +17932,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-all": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-all/-/p-all-5.0.0.tgz", - "integrity": "sha512-pofqu/1FhCVa+78xNAptCGc9V45exFz2pvBRyIvgXkNM0Rh18Py7j8pQuSjA+zpabI46v9hRjNWmL9EAFcEbpw==", - "license": "MIT", - "dependencies": { - "p-map": "^6.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-all/node_modules/p-map": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-6.0.0.tgz", - "integrity": "sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -20254,30 +20303,30 @@ } }, "node_modules/sass-loader": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.1.1.tgz", - "integrity": "sha512-fOCp/zLmj1V1WHDZbUbPgrZhA7HKXHEqkslzB+05U5K9SbSbcmH91C7QLW31AsXikxUMaxXRhhcqWZAxUMLDyA==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", "dev": true, "license": "MIT", "dependencies": { - "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", + "sass-embedded": "*", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "fibers": { + "@rspack/core": { "optional": true }, "node-sass": { @@ -20285,6 +20334,12 @@ }, "sass": { "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true } } }, @@ -22860,55 +22915,67 @@ } }, "node_modules/victory-area": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.3.2.tgz", - "integrity": "sha512-djqvyMv6asEkdS/84ZpJWM6PvNvPsW6DsA507ylo+R1SB+JSLgPeroLSKkPfMq3NH8Aej16aDm8J+LrEH51pqg==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.3.6.tgz", + "integrity": "sha512-wVC8LKrZJLiSySNuJLRCB449qZTsPiRyzLlNoJwe21y+XA/a2HJbmJSeywmo8P153aX8viKe1H8ygDsTFXQhHw==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2", - "victory-vendor": "37.3.2" + "victory-core": "37.3.6", + "victory-vendor": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-axis": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.3.2.tgz", - "integrity": "sha512-Wv3k3pfY///lIcfcGga/7x9HvyaJ+oybKo1QDeOPEKU6n8i4ri1KAWCNko4fLNXu+9McJoOMAaWDvSdQy8My/g==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.3.6.tgz", + "integrity": "sha512-Vi0dZvgmXmnCdoqc49WckeG5cMXnl7FTtqVhXu9JweA9cgCnkZabBd5mRvAjblb3Lo4j0HZCSPKHYWUPW70qZg==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-bar": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.3.2.tgz", - "integrity": "sha512-inqb9HLgxheidOAJw7jTMBBR18I7rCgtfH4WuCSMPPtZtUBAEDYFIJzAKzL/LrpC/sWi91fQC2tzmphTD3DS+Q==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.3.6.tgz", + "integrity": "sha512-jdATFRWL1LUW/yEpKWx/aId2BiU2o1pPF9+Kh1TFISBduJoI4ZqvZD90H1QK4f/z50PikqiqiDECaKoKM1jfOQ==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2", - "victory-vendor": "37.3.2" + "victory-core": "37.3.6", + "victory-vendor": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-box-plot": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.3.2.tgz", - "integrity": "sha512-voHSHhijQbqjD0Gqv8B/WmhtumXGNQWvqm18W5NZ752jZ5tzhX1mPdOAUFN7FGpPuMNKaYFm/By7YIntlYCGeQ==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.3.6.tgz", + "integrity": "sha512-GOucnD63h14ScBuISC/nd1GBTEx6gIZfLE+0P0gyeH1poBKq0trTTvpQDvAMuGR8zICfEETG3ltmUMCwRrFyUg==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2", - "victory-vendor": "37.3.2" + "victory-core": "37.3.6", + "victory-vendor": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23128,59 +23195,71 @@ } }, "node_modules/victory-chart": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.3.2.tgz", - "integrity": "sha512-ksb3hEytkSVfR654rA/Uo9CeuWNVpH49F3BiUash69nwD+TkAr7lelRo9WLF7oQOVRHHwGCsiGiGrsjT4ObhmA==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.3.6.tgz", + "integrity": "sha512-IkPo/W4AJ7bPu902TGER09OseR9ODm+FQAKfOBw4JsdEhZZ7BiG9zgd/25+x0r5EsTLu81CYGQVkBa+ZazcOlA==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-axis": "37.3.2", - "victory-core": "37.3.2", - "victory-polar-axis": "37.3.2", - "victory-shared-events": "37.3.2" + "victory-axis": "37.3.6", + "victory-core": "37.3.6", + "victory-polar-axis": "37.3.6", + "victory-shared-events": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-chart/node_modules/victory-polar-axis": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.3.2.tgz", - "integrity": "sha512-qxH4ev+0IOy8P1xQJc8OQ+GtnQtahJOJzmIy1cNherPHg3H9AY+GIlK7ApgKW8/+ZNt5u0XZvRhvjulZG2Gwgw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.3.6.tgz", + "integrity": "sha512-RpFsCkzHezJq5P+C/wtVdjEHX25JIFsSgs6qYSnfr/hayaFbWgK5HhRFpriQm5hg61cx47WxAOLyHvzf0nasvw==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-chart/node_modules/victory-shared-events": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.2.tgz", - "integrity": "sha512-L/p/JzbP7O0x/DrWZicVByyiq0YMsDsvc2uinUCoI+XMAXbp7flxC2lbd7YBq41Sg13BHoPBiEoCXH4nKmo8hw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.6.tgz", + "integrity": "sha512-ygrbOtzLUTbtKebacZKyQRekhSAROnAvMkVI/PKsAGsz0ClY9P7qDEJG7eTUUygjO6ax0tI6WNE6JogQzeD1gw==", "license": "MIT", "dependencies": { "json-stringify-safe": "^5.0.1", "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-core": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.3.2.tgz", - "integrity": "sha512-ez/QW9OGltj0uo9EzsRrGEu/hS49dXoraQKblQJO4PEUkDZclV3Gy3CJ2cRW2qBM3ljTsVITiQvKt3urVj+RDw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.3.6.tgz", + "integrity": "sha512-aFgO6KokxPbUCPznZP5UPhOdI22pMuwDXKDt6eoQOnkVim66Ia+K95TQar2nwVKGYV5j26aKVf/n9blwphGJRw==", "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "37.3.2" + "victory-vendor": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23296,13 +23375,16 @@ } }, "node_modules/victory-cursor-container": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.3.2.tgz", - "integrity": "sha512-PpBIexoxV/D9S0JTwgI/AmGC5PEjVFbBg+dxbr0iBskXtIckIdXYg11Tejk4iatvUIuvXrJALMjH+y4Jhl+bGw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.3.6.tgz", + "integrity": "sha512-+Oiw57d5nE+iq8As8RvepknzmNtKq1Gsc50u1X3IRd4jXtX8zqZrgXGlVZ+BP/tkLsWnGYVjKulwKBf2oaEUuw==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23358,30 +23440,36 @@ } }, "node_modules/victory-group": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.3.2.tgz", - "integrity": "sha512-TB0ClboJsCR+ATIwUMgSdkdmau4XUiVaZtc5vehZYB7j50lv3SUtltc4qpztOrilsp1osoKHgUHpj7J8yhRtMw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.3.6.tgz", + "integrity": "sha512-kgy/Azl5BxwlJAV0KDPGypv35TMrOD1J2ZxnJW2Wyyq+e8i0GGBIv5MoBzou64BRsDlS9V0CYRIjnkHgrBpB5w==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "37.3.2", - "victory-shared-events": "37.3.2" + "victory-core": "37.3.6", + "victory-shared-events": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-group/node_modules/victory-shared-events": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.2.tgz", - "integrity": "sha512-L/p/JzbP7O0x/DrWZicVByyiq0YMsDsvc2uinUCoI+XMAXbp7flxC2lbd7YBq41Sg13BHoPBiEoCXH4nKmo8hw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.6.tgz", + "integrity": "sha512-ygrbOtzLUTbtKebacZKyQRekhSAROnAvMkVI/PKsAGsz0ClY9P7qDEJG7eTUUygjO6ax0tI6WNE6JogQzeD1gw==", "license": "MIT", "dependencies": { "json-stringify-safe": "^5.0.1", "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23454,41 +23542,50 @@ } }, "node_modules/victory-legend": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.3.2.tgz", - "integrity": "sha512-NrXnStmdqWtfA2AkwOVVWGwXswN9C9TNnmUKzXY52BMWR4OQfIaeO0etRV3vSrv8yUD/rt+rm0UOAAI7pSb1Tw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.3.6.tgz", + "integrity": "sha512-vRRrhj3/ENqKVLdaBMzEmR83N6BOjox1bthYT1eJjN2H5SIK35bxn30IkiV/Pz3y627EqZe4TAWaxc0jiJlCiA==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-line": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.3.2.tgz", - "integrity": "sha512-ZA6A3te2A+egmSPG7jTRu/ZetRE66ggUix11yPaf+7DMZSnRw9f6KXduiUV+fz1otwefJ9pL6vMpXo2SIt9jFQ==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.3.6.tgz", + "integrity": "sha512-Ke817uf/qFbN9jU7Dba7CrcHXYO5wAZuKKnyeHJmLDeQeFST0773xejnIuC+dBgZipjFr4KIbSd+VcUafFNE1g==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2", - "victory-vendor": "37.3.2" + "victory-core": "37.3.6", + "victory-vendor": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-pie": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.3.2.tgz", - "integrity": "sha512-et7Z9d1paoqXdSL8yNpdTadhhhpPgQTrqO5n7vISNJsjOmt0FTLe4/VeKIyugIhERirVkU5Va0CMlMInbNIysw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.3.6.tgz", + "integrity": "sha512-tvdgAZ/HQWlo3KDDe0XAVbizHuaNMbgkkiF7zfA7Ww+3bHSs+0P9dsDtK2xP365D8gBCOv8pWmuzvKRhzNbqeA==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2", - "victory-vendor": "37.3.2" + "victory-core": "37.3.6", + "victory-vendor": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23544,13 +23641,16 @@ } }, "node_modules/victory-scatter": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.3.2.tgz", - "integrity": "sha512-mFFIvFC5U+AX1uAgl19HI21L4Mf1rt2YlnjjzPFkJcgy0a2Fv6otjUd4qeqA6pAkVU4e/Dqj8ZZPV2PtfXNeyQ==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.3.6.tgz", + "integrity": "sha512-fp95zMTPXgW1cmTowzDXhn+KxePMVDrzU0lotsHQMdBV7eB+ioXdu9hORlx4VHmMYg2ihsGwRTF+VAZ7rGxphA==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23657,52 +23757,61 @@ } }, "node_modules/victory-stack": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.3.2.tgz", - "integrity": "sha512-lD8EyzYKTPyWam7h++6VfPxOw4Soj5kYjHqPlbjFjdxoGWYquHrcbHhJ4ra1p+Il9k6iDhy0lIU2DbLa2Ff0wA==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.3.6.tgz", + "integrity": "sha512-ldod04RdqGJGH5p5eWXCofdTkbhZqIp3iwW7NpxSbMDLs8zPQIVvDFVtuJgMwQiC5vnIpbhMmxVeFbr8m64ZKA==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "37.3.2", - "victory-shared-events": "37.3.2" + "victory-core": "37.3.6", + "victory-shared-events": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-stack/node_modules/victory-shared-events": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.2.tgz", - "integrity": "sha512-L/p/JzbP7O0x/DrWZicVByyiq0YMsDsvc2uinUCoI+XMAXbp7flxC2lbd7YBq41Sg13BHoPBiEoCXH4nKmo8hw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.6.tgz", + "integrity": "sha512-ygrbOtzLUTbtKebacZKyQRekhSAROnAvMkVI/PKsAGsz0ClY9P7qDEJG7eTUUygjO6ax0tI6WNE6JogQzeD1gw==", "license": "MIT", "dependencies": { "json-stringify-safe": "^5.0.1", "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-tooltip": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.3.2.tgz", - "integrity": "sha512-UsEIGY5lqf3pOGr3ikB7oHw+QZtS+Qui/vqLPhoAL1YJ2bQ0WkIhVx2jLTlyCLIrj6aCvyvdePppApFF43E7Zg==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.3.6.tgz", + "integrity": "sha512-vqaJS9noauOqDDBBAV9Ln9duOY/i17h1DCfCPAqhwPFyvFbwKvAub9zPTeYWAm/14VvWX5O/0yekFCVbcC7hjg==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-vendor": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.2.tgz", - "integrity": "sha512-2N8j0DIHocffTo2UeZbcd8fcB5+CrQq2KMOSbyTIzYuCVHP10XoS0R/ln7YOU5WoNS6/6L3GEdFWBaGYAAMErQ==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", "license": "MIT AND ISC", "dependencies": { "@types/d3-array": "^3.0.3", @@ -23736,16 +23845,19 @@ } }, "node_modules/victory-voronoi-container": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.3.2.tgz", - "integrity": "sha512-Y5NiUcVa6SlAMl5yAI5pRRBRCUCDHJHYeUMCiccTOjA+G2B2pUJkJ5NKeFzMLt7hW1LQv0nnRs9ywpMdViF8nQ==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.3.6.tgz", + "integrity": "sha512-qAAG0rMuK7A4EoJ4cyUk5wNdOW+HuCXNKPOko+hYK6wWOYXJvFhiglYyA85a695YyAXECc6JyJS/crm4IOEFag==", "license": "MIT", "dependencies": { "delaunay-find": "0.0.6", "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "37.3.2", - "victory-tooltip": "37.3.2" + "victory-core": "37.3.6", + "victory-tooltip": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -23788,13 +23900,16 @@ } }, "node_modules/victory-zoom-container": { - "version": "37.3.2", - "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.3.2.tgz", - "integrity": "sha512-znF3L6+LpQ8hN+7aW8RO+dsHPl1XsMAvf52IKc0OAXZzukIwx1+yW2/OLtHU7G0DzAl3Cxzt5BNd7jFLVXWQJw==", + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.3.6.tgz", + "integrity": "sha512-AGL+k20mI44OL5b0VgIxlmnNSefIoFmbbim5NraPmIxbtns9qQW/56ivIncJcYomBungIx99gUpsEpcQaMNHgQ==", "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "37.3.2" + "victory-core": "37.3.6" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -24809,47 +24924,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/weldable/node_modules/sass-loader": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.4.tgz", - "integrity": "sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, "node_modules/weldable/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", diff --git a/package.json b/package.json index 0774763cc..80f3c4a27 100644 --- a/package.json +++ b/package.json @@ -79,15 +79,15 @@ "dependencies": { "@joi/date": "^2.1.1", "@patternfly/patternfly": "5.4.2", - "@patternfly/react-charts": "7.4.5", - "@patternfly/react-core": "5.4.2", - "@patternfly/react-icons": "5.4.0", + "@patternfly/react-charts": "7.4.9", + "@patternfly/react-core": "5.4.13", + "@patternfly/react-icons": "5.4.2", "@patternfly/react-styles": "5.4.1", - "@patternfly/react-table": "5.4.8", + "@patternfly/react-table": "5.4.15", "@patternfly/react-tokens": "5.4.1", - "@redhat-cloud-services/frontend-components": "4.2.22", - "@redhat-cloud-services/frontend-components-notifications": "4.1.1", - "@redhat-cloud-services/frontend-components-utilities": "4.0.19", + "@redhat-cloud-services/frontend-components": "5.2.9", + "@redhat-cloud-services/frontend-components-notifications": "4.1.20", + "@redhat-cloud-services/frontend-components-utilities": "5.0.11", "axios": "^1.7.9", "classnames": "^2.5.1", "fastest-levenshtein": "^1.0.16", @@ -115,7 +115,7 @@ "devDependencies": { "@babel/core": "7.26.9", "@babel/eslint-parser": "7.26.8", - "@redhat-cloud-services/frontend-components-config": "6.3.3", + "@redhat-cloud-services/frontend-components-config": "6.4.5", "@redhat-cloud-services/tsc-transform-imports": "^1.0.23", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", diff --git a/src/components/table/__tests__/__snapshots__/table.test.js.snap b/src/components/table/__tests__/__snapshots__/table.test.js.snap index fc05d8a7f..37b1f5c58 100644 --- a/src/components/table/__tests__/__snapshots__/table.test.js.snap +++ b/src/components/table/__tests__/__snapshots__/table.test.js.snap @@ -267,7 +267,6 @@ exports[`Table Component should allow sortable content: sortable content 1`] = ` data-ouia-safe="true" > `; +exports[`Table Component should allow sortable content: sorted 1`] = ` + + + +`; + exports[`Table Component should allow variations in table layout: ariaLabel and summary 1`] = ` { component.fireEvent.click(input); expect(mockSort).toHaveBeenCalledTimes(1); + expect(component.find('table th')).toMatchSnapshot('sorted'); }); it('should allow selectable row content', () => { diff --git a/tests/__snapshots__/dist.test.js.snap b/tests/__snapshots__/dist.test.js.snap index e1f85a973..a549bb8ce 100644 --- a/tests/__snapshots__/dist.test.js.snap +++ b/tests/__snapshots__/dist.test.js.snap @@ -777,21 +777,14 @@ exports[`Build distribution should have a predictable ephemeral navigation based exports[`Build distribution should match a specific file output 1`] = ` [ "", + "./dist/css/2476*css", "./dist/css/4532*css", - "./dist/css/5204*css", "./dist/fed-mods.json", "./dist/fonts/graph2x.png", "./dist/fonts/graph4x.png", "./dist/js/1003*js", "./dist/js/1117*js", "./dist/js/1132*js", - "./dist/js/1187*js", - "./dist/js/122*js", - "./dist/js/122*txt", - "./dist/js/1251*js", - "./dist/js/1251*txt", - "./dist/js/1276*js", - "./dist/js/1276*txt", "./dist/js/1295*js", "./dist/js/1309*js", "./dist/js/1398*js", @@ -801,22 +794,21 @@ exports[`Build distribution should match a specific file output 1`] = ` "./dist/js/1509*js", "./dist/js/1586*js", "./dist/js/167*js", - "./dist/js/1888*js", "./dist/js/2007*js", "./dist/js/2047*js", - "./dist/js/2403*js", + "./dist/js/238*js", + "./dist/js/238*txt", "./dist/js/2471*js", + "./dist/js/2476*js", "./dist/js/2531*js", - "./dist/js/2548*js", - "./dist/js/2871*js", + "./dist/js/2843*js", "./dist/js/2913*js", - "./dist/js/3048*js", "./dist/js/3055*js", "./dist/js/3090*js", - "./dist/js/3091*js", + "./dist/js/310*js", "./dist/js/3114*js", "./dist/js/3219*js", - "./dist/js/3568*js", + "./dist/js/3294*js", "./dist/js/3676*js", "./dist/js/3690*js", "./dist/js/3693*js", @@ -826,9 +818,10 @@ exports[`Build distribution should match a specific file output 1`] = ` "./dist/js/389*js", "./dist/js/3941*js", "./dist/js/4133*js", + "./dist/js/4144*js", + "./dist/js/4305*js", "./dist/js/4371*js", "./dist/js/4388*js", - "./dist/js/4421*js", "./dist/js/4428*js", "./dist/js/4434*js", "./dist/js/4447*js", @@ -836,12 +829,11 @@ exports[`Build distribution should match a specific file output 1`] = ` "./dist/js/4532*js", "./dist/js/4869*js", "./dist/js/4912*js", - "./dist/js/4914*js", + "./dist/js/4915*js", "./dist/js/5093*js", - "./dist/js/5204*js", - "./dist/js/5252*js", "./dist/js/5294*js", "./dist/js/5436*js", + "./dist/js/5523*js", "./dist/js/5600*js", "./dist/js/5606*js", "./dist/js/5995*js", @@ -853,34 +845,31 @@ exports[`Build distribution should match a specific file output 1`] = ` "./dist/js/6468*js", "./dist/js/6497*js", "./dist/js/6514*js", - "./dist/js/6719*js", + "./dist/js/6686*js", "./dist/js/6752*js", - "./dist/js/6755*js", - "./dist/js/6802*js", + "./dist/js/7014*js", "./dist/js/7019*js", "./dist/js/709*js", - "./dist/js/7128*js", "./dist/js/72*js", + "./dist/js/7224*js", "./dist/js/7250*js", + "./dist/js/744*js", "./dist/js/7454*js", "./dist/js/7474*js", - "./dist/js/7686*js", + "./dist/js/7675*js", "./dist/js/7691*js", - "./dist/js/7807*js", - "./dist/js/7838*js", "./dist/js/7964*js", "./dist/js/8005*js", "./dist/js/8376*js", + "./dist/js/8479*js", "./dist/js/8518*js", "./dist/js/8542*js", "./dist/js/8716*js", - "./dist/js/8775*js", "./dist/js/8923*js", - "./dist/js/9026*js", + "./dist/js/8965*js", + "./dist/js/8965*txt", "./dist/js/9067*js", "./dist/js/9205*js", - "./dist/js/924*js", - "./dist/js/9295*js", "./dist/js/9400*js", "./dist/js/App*js", "./dist/js/exposed-./RootApp*js", From 1ec1a71c589a5506e5210c2d8468d340b95f0f88 Mon Sep 17 00:00:00 2001 From: CD Cabrera Date: Thu, 20 Feb 2025 12:56:55 -0500 Subject: [PATCH 5/7] build(deps): dependabot groups, ignored dep (#1529) --- .github/dependabot.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 278763b02..4dbb445e3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,6 +13,7 @@ updates: ignore: - dependency-name: "@patternfly/*" - dependency-name: "@redhat-cloud-services/frontend*" + - dependency-name: "*i18next*" - dependency-name: "victory*" labels: - "build" @@ -25,14 +26,10 @@ updates: update-types: - "minor" - "patch" - patch: + prod: dependency-type: "production" update-types: - "patch" - minor: - dependency-type: "production" - update-types: - - "minor" - package-ecosystem: github-actions directory: / From 40630224d168109a92c24fa08e49027f14e4cec1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 15:49:43 -0500 Subject: [PATCH 6/7] build(deps-dev): bump the dev group with 3 updates (#1530) Bumps the dev group with 3 updates: [apidoc-mock](https://github.com/cdcabrera/apidoc-mock), [changelog-light](https://github.com/cdcabrera/changelog-light) and [cspell](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell). Updates `apidoc-mock` from 5.0.6 to 5.0.7 - [Release notes](https://github.com/cdcabrera/apidoc-mock/releases) - [Changelog](https://github.com/cdcabrera/apidoc-mock/blob/main/CHANGELOG.md) - [Commits](https://github.com/cdcabrera/apidoc-mock/compare/v5.0.6...v5.0.7) Updates `changelog-light` from 2.0.4 to 2.0.5 - [Release notes](https://github.com/cdcabrera/changelog-light/releases) - [Changelog](https://github.com/cdcabrera/changelog-light/blob/main/CHANGELOG.md) - [Commits](https://github.com/cdcabrera/changelog-light/compare/v2.0.4...v2.0.5) Updates `cspell` from 8.17.3 to 8.17.4 - [Release notes](https://github.com/streetsidesoftware/cspell/releases) - [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/packages/cspell/CHANGELOG.md) - [Commits](https://github.com/streetsidesoftware/cspell/commits/v8.17.4/packages/cspell) --- updated-dependencies: - dependency-name: apidoc-mock dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev - dependency-name: changelog-light dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev - dependency-name: cspell dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 277 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 143 insertions(+), 140 deletions(-) diff --git a/package-lock.json b/package-lock.json index 199778947..977b8a2d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,10 +53,10 @@ "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", - "apidoc-mock": "^5.0.6", + "apidoc-mock": "^5.0.7", "babel-jest": "^29.7.0", - "changelog-light": "^2.0.4", - "cspell": "^8.17.3", + "changelog-light": "^2.0.5", + "cspell": "^8.17.4", "eslint": "8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^9.1.0", @@ -2017,9 +2017,9 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.17.3.tgz", - "integrity": "sha512-6uOF726o3JnExAUKM20OJJXZo+Qf9Jt64nkVwnVXx7Upqr5I9Pb1npYPEAIpUA03SnWYmKwUIqhAmkwrN+bLPA==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.17.4.tgz", + "integrity": "sha512-oPNQU3Uwc0OnvAmC8Vs7DSCRBhGRbZvO8J57JEnJ6YMNyCJZpKq050OzbAWmNdjjZ7yRLJ+LOcxhzdFg2Qn4Yw==", "dev": true, "license": "MIT", "dependencies": { @@ -2027,7 +2027,7 @@ "@cspell/dict-al": "^1.1.0", "@cspell/dict-aws": "^4.0.9", "@cspell/dict-bash": "^4.2.0", - "@cspell/dict-companies": "^3.1.13", + "@cspell/dict-companies": "^3.1.14", "@cspell/dict-cpp": "^6.0.3", "@cspell/dict-cryptocurrencies": "^5.0.4", "@cspell/dict-csharp": "^4.0.6", @@ -2038,14 +2038,14 @@ "@cspell/dict-docker": "^1.1.12", "@cspell/dict-dotnet": "^5.0.9", "@cspell/dict-elixir": "^4.0.7", - "@cspell/dict-en_us": "^4.3.30", + "@cspell/dict-en_us": "^4.3.31", "@cspell/dict-en-common-misspellings": "^2.0.9", "@cspell/dict-en-gb": "1.1.33", - "@cspell/dict-filetypes": "^3.0.10", + "@cspell/dict-filetypes": "^3.0.11", "@cspell/dict-flutter": "^1.1.0", "@cspell/dict-fonts": "^4.0.4", "@cspell/dict-fsharp": "^1.1.0", - "@cspell/dict-fullstack": "^3.2.3", + "@cspell/dict-fullstack": "^3.2.4", "@cspell/dict-gaming-terms": "^1.1.0", "@cspell/dict-git": "^3.0.4", "@cspell/dict-golang": "^6.0.18", @@ -2064,7 +2064,7 @@ "@cspell/dict-markdown": "^2.0.9", "@cspell/dict-monkeyc": "^1.0.10", "@cspell/dict-node": "^5.0.6", - "@cspell/dict-npm": "^5.1.24", + "@cspell/dict-npm": "^5.1.26", "@cspell/dict-php": "^4.0.14", "@cspell/dict-powershell": "^5.0.14", "@cspell/dict-public-licenses": "^2.0.13", @@ -2074,7 +2074,7 @@ "@cspell/dict-rust": "^4.0.11", "@cspell/dict-scala": "^5.0.7", "@cspell/dict-shell": "^1.1.0", - "@cspell/dict-software-terms": "^4.2.4", + "@cspell/dict-software-terms": "^4.2.5", "@cspell/dict-sql": "^2.2.0", "@cspell/dict-svelte": "^1.0.6", "@cspell/dict-swift": "^2.0.5", @@ -2087,22 +2087,22 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.17.3.tgz", - "integrity": "sha512-RWSfyHOin/d9CqLjz00JMvPkag3yUSsQZr6G9BnCT5cMEO/ws8wQZzA54CNj/LAOccbknTX65SSroPPAtxs56w==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.17.4.tgz", + "integrity": "sha512-O7V2hMt6zPt2Eu5LSxFyD/dcZRUOASeY+8oE1O2xanfJUMOG1EldCt8LERSmU829RQ4VF4H2Z9TbeQzx+4G21w==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "8.17.3" + "@cspell/cspell-types": "8.17.4" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.17.3.tgz", - "integrity": "sha512-DqqSWKt9NLWPGloYxZTpzUhgdW8ObMkZmOOF6TyqpJ4IbckEct8ULgskNorTNRlmmjLniaNgvg6JSHuYO3Urxw==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.17.4.tgz", + "integrity": "sha512-0KzqYetKMT9c3Pt77yRla2/zLDitpztEQ/VPYAbW5DCW+btRe5pAb6VQ7U6HKA2HoM2rhlLTWOBh4jauRFtgxA==", "dev": true, "license": "MIT", "engines": { @@ -2110,9 +2110,9 @@ } }, "node_modules/@cspell/cspell-resolver": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.17.3.tgz", - "integrity": "sha512-yQlVaIsWiax6RRuuacZs++kl6Y9rwH9ZkVlsG9fhdeCJ5Xf3WCW+vmX1chzhhKDzRr8CF9fsvb1uagd/5/bBYA==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.17.4.tgz", + "integrity": "sha512-1Z3yZRuhnyGCheD2nt/ZswV+ulXBOfnKCoyfkUKNAR5ALkrqv6bjXXwZrpEi2cIK1km4/59ybT72+r2Ry9dGUw==", "dev": true, "license": "MIT", "dependencies": { @@ -2123,9 +2123,9 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.17.3.tgz", - "integrity": "sha512-CC3nob/Kbuesz5WTW+LjAHnDFXJrA49pW5ckmbufJxNnoAk7EJez/qr7/ELMTf6Fl3A5xZ776Lhq7738Hy/fmQ==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.17.4.tgz", + "integrity": "sha512-S8fENifriBW8KdDIvOnsP9gdEyCp1zrs4GT15vmDvm6uoevj2mfmdCj4/EbM1KbmmNAh1tlidAgn2OWdtyW7Lg==", "dev": true, "license": "MIT", "engines": { @@ -2133,9 +2133,9 @@ } }, "node_modules/@cspell/cspell-types": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.17.3.tgz", - "integrity": "sha512-ozgeuSioX9z2wtlargfgdw3LKwDFAfm8gxu+xwNREvXiLsevb+lb7ZlY5/ay+MahqR5Hfs7XzYzBLTKL/ldn9g==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.17.4.tgz", + "integrity": "sha512-1K6tXEMXSaoUXhH3TiaCyh3Nh8ZE0wPej0+wa5HAMtdcY1B3FGvHZ9DltkgZxbzs3bGNXIySFE5ITqULbhweBA==", "dev": true, "license": "MIT", "engines": { @@ -2561,13 +2561,13 @@ "license": "MIT" }, "node_modules/@cspell/dynamic-import": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.17.3.tgz", - "integrity": "sha512-Kg6IJhGHPv+9OxpxaXUpcqgnHEOhMLRWHLyx7FADZ+CJyO4AVeWQfhpTRM6KXhzIl7dPlLG1g8JAQxaoy88KTw==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.17.4.tgz", + "integrity": "sha512-rUwFOVPnfEGzhzCRnE4esTTMgWtTORXfa5FJJR8653KwcvD6HJQfPTYepBG6n6Bmu3TssMa4ktq+ZJk4o1BF9A==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.17.3", + "@cspell/url": "8.17.4", "import-meta-resolve": "^4.1.0" }, "engines": { @@ -2575,9 +2575,9 @@ } }, "node_modules/@cspell/filetypes": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.17.3.tgz", - "integrity": "sha512-UFqRmJPccOSo+RYP/jZ4cr0s7ni37GrvnNAg1H/qIIxfmBYsexTAmsNzMqxp1M31NeI1Cx3LL7PspPMT0ms+7w==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.17.4.tgz", + "integrity": "sha512-zzYm0hr+lvctsy/65hjI0vsQJj2CAwSOTnVk+5ubJCkCaWH/rayI/SaVZA0Xynf08B/x0r/36nPH0lO2iMJ4aw==", "dev": true, "license": "MIT", "engines": { @@ -2585,9 +2585,9 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.17.3.tgz", - "integrity": "sha512-l/CaFc3CITI/dC+whEBZ05Om0KXR3V2whhVOWOBPIqA5lCjWAyvWWvmFD+CxWd0Hs6Qcb/YDnMyJW14aioXN4g==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.17.4.tgz", + "integrity": "sha512-Io4ffbMI9hQz+9CLe/oU1Om0H3SqAlvFTaS7ZQOg7joyJSXuGBsCcCg03uTRKWD+NoaxPNUlZOkucUBGil6djw==", "dev": true, "license": "MIT", "engines": { @@ -2595,9 +2595,9 @@ } }, "node_modules/@cspell/url": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.17.3.tgz", - "integrity": "sha512-gcsCz8g0qY94C8RXiAlUH/89n84Q9RSptP91XrvnLOT+Xva9Aibd7ywd5k9ameuf8Nagyl0ezB1MInZ30S9SRw==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.17.4.tgz", + "integrity": "sha512-vWLySh0ARsI0+TdvA8W6btdeeQbSjBhDE8kwGlzIrOCLIfkeO9Bu++mkc1To1/uogkS2T5icmA24D0rL8ZqjNw==", "dev": true, "license": "MIT", "engines": { @@ -6708,14 +6708,14 @@ } }, "node_modules/apidoc-mock": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/apidoc-mock/-/apidoc-mock-5.0.6.tgz", - "integrity": "sha512-/vZ4KmQ3noKCP7RmdYIeg+eYyJJLmEd+16cKYM8lQQEKMI787fVU6OlyjnIcFE+Xqy4M+n9rxhUzY+wBV89Tkg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/apidoc-mock/-/apidoc-mock-5.0.7.tgz", + "integrity": "sha512-ogzeGmQuw1PLBD5TwziRsJHgtqEho9UAdh/O9QFzVb+QBnHAIJswNg29scfqHnFQRomPPmyHTJLvVK9myX+Ttg==", "dev": true, "license": "MIT", "dependencies": { "apidoc": "1.2.0", - "express": "^4.21.1", + "express": "^4.21.2", "http-terminator": "^3.2.0", "node-watch": "^0.7.4", "winston": "^3.17.0", @@ -7969,14 +7969,14 @@ } }, "node_modules/changelog-light": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/changelog-light/-/changelog-light-2.0.4.tgz", - "integrity": "sha512-SomUarreEcEiYyo9RPCF7O6KjnHQc7KU3QNpuoSlhdFLCn+V7wEAyAe0p6q/Hu/4I7BonD6pLBtD6tkHN5VNMA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/changelog-light/-/changelog-light-2.0.5.tgz", + "integrity": "sha512-DZnC7Q54xzi3Kn5gPwI9ru2wVSp/p6Qmpjp3oR4HnoaZgeo5LdIN+ivOT1vJJ81Z8Ldb8BQec7RYFtCrciAtYw==", "dev": true, "license": "MIT", "dependencies": { "conventional-commit-types": "^3.0.0", - "semver": "^7.6.3", + "semver": "^7.7.1", "yargs": "^17.7.2" }, "bin": { @@ -7987,9 +7987,9 @@ } }, "node_modules/changelog-light/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -8939,30 +8939,30 @@ } }, "node_modules/cspell": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.17.3.tgz", - "integrity": "sha512-fBZg674Dir9y/FWMwm2JyixM/1eB2vnqHJjRxOgGS/ZiZ3QdQ3LkK02Aqvlni8ffWYDZnYnYY9rfWmql9bb42w==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.17.4.tgz", + "integrity": "sha512-cQ6KyYB7itXxc+roxvozIKksbOyBO1NY5Dt5RWHl1Uh4OO++RJAKxmVWrY0g1ubBxKWGXk8TvuunK1+L/jvjIQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-json-reporter": "8.17.3", - "@cspell/cspell-pipe": "8.17.3", - "@cspell/cspell-types": "8.17.3", - "@cspell/dynamic-import": "8.17.3", - "@cspell/url": "8.17.3", + "@cspell/cspell-json-reporter": "8.17.4", + "@cspell/cspell-pipe": "8.17.4", + "@cspell/cspell-types": "8.17.4", + "@cspell/dynamic-import": "8.17.4", + "@cspell/url": "8.17.4", "chalk": "^5.4.1", "chalk-template": "^1.1.0", "commander": "^13.1.0", - "cspell-dictionary": "8.17.3", - "cspell-gitignore": "8.17.3", - "cspell-glob": "8.17.3", - "cspell-io": "8.17.3", - "cspell-lib": "8.17.3", + "cspell-dictionary": "8.17.4", + "cspell-gitignore": "8.17.4", + "cspell-glob": "8.17.4", + "cspell-io": "8.17.4", + "cspell-lib": "8.17.4", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^9.1.0", "get-stdin": "^9.0.0", - "semver": "^7.6.3", - "tinyglobby": "^0.2.10" + "semver": "^7.7.1", + "tinyglobby": "^0.2.11" }, "bin": { "cspell": "bin.mjs", @@ -8976,13 +8976,13 @@ } }, "node_modules/cspell-config-lib": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.17.3.tgz", - "integrity": "sha512-+N32Q6xck3D2RqZIFwq8s0TnzHYMpyh4bgNtYqW5DIP3TLDiA4/MJGjwmLKAg/s9dkre6n8/++vVli3MZAOhIg==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.17.4.tgz", + "integrity": "sha512-vOi3B5gnngGeI1HMVDosHTBCRROx7XQXpD6rcKFxxehrs3hw1/EGGEKPKWX5R1UKhOiUNVmvicpqTXU+4/tbZA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "8.17.3", + "@cspell/cspell-types": "8.17.4", "comment-json": "^4.2.5", "yaml": "^2.7.0" }, @@ -8991,15 +8991,15 @@ } }, "node_modules/cspell-dictionary": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.17.3.tgz", - "integrity": "sha512-89I/lpQKdkX17RCFrUIJnc70Rjfpup/o+ynHZen0hUxGTfLsEJPrK6H2oGvic3Yrv5q8IOtwM1p8vqPqBkBheA==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.17.4.tgz", + "integrity": "sha512-nzFc/+r6Q0wP5KpvKnjtnI+C2HMaLfrzMaY4VtoCzyqEF8inYQz430e6sSReBDzjshoU9YUxhShXl18aA3eAqA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.17.3", - "@cspell/cspell-types": "8.17.3", - "cspell-trie-lib": "8.17.3", + "@cspell/cspell-pipe": "8.17.4", + "@cspell/cspell-types": "8.17.4", + "cspell-trie-lib": "8.17.4", "fast-equals": "^5.2.2" }, "engines": { @@ -9007,15 +9007,15 @@ } }, "node_modules/cspell-gitignore": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.17.3.tgz", - "integrity": "sha512-rQamjb8R+Nwib/Bpcgf+xv5IdsOHgbP+fe4hCgv0jjgUPkeOR2c4dGwc0WS+2UkJbc+wQohpzBGDLRYGSB/hQw==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.17.4.tgz", + "integrity": "sha512-9KwnXwNwE1eXYRyqHAMFPowJd3yFh2pQnnrfdQRvdculqFY39G4g/d4OQV9W/iMpcednL9K01IhxuUvbF7ZrIA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.17.3", - "cspell-glob": "8.17.3", - "cspell-io": "8.17.3", + "@cspell/url": "8.17.4", + "cspell-glob": "8.17.4", + "cspell-io": "8.17.4", "find-up-simple": "^1.0.0" }, "bin": { @@ -9026,13 +9026,13 @@ } }, "node_modules/cspell-glob": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.17.3.tgz", - "integrity": "sha512-0ov9A0E6OuOO7KOxlGCxJ09LR/ubZ6xcGwWc5bu+jp/8onUowQfe+9vZdznj/o8/vcf5JkDzyhRSBsdhWKqoAg==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.17.4.tgz", + "integrity": "sha512-HbAyg/t6l2Um0kgeTZeTEyXgVkIQX/ir2uLW/W3T9foOkSZ016Os6GRYDRJX7ebfREk8cCZ0uFtOi1Yn56INEQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.17.3", + "@cspell/url": "8.17.4", "micromatch": "^4.0.8" }, "engines": { @@ -9040,14 +9040,14 @@ } }, "node_modules/cspell-grammar": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.17.3.tgz", - "integrity": "sha512-wfjkkvHthnKJtEaTgx3cPUPquGRXfgXSCwvMJaDyUi36KBlopXX38PejBTdmuqrvp7bINLSuHErml9wAfL5Fxw==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.17.4.tgz", + "integrity": "sha512-RgnpQPVSOdWxq7fLHUkjGJCkMNay4p2cZXRYwhTBJf2kWNsDC39tjRhugFweyxxZPamEbLERgkCaFzE54enuMw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.17.3", - "@cspell/cspell-types": "8.17.3" + "@cspell/cspell-pipe": "8.17.4", + "@cspell/cspell-types": "8.17.4" }, "bin": { "cspell-grammar": "bin.mjs" @@ -9057,49 +9057,49 @@ } }, "node_modules/cspell-io": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.17.3.tgz", - "integrity": "sha512-NwEVb3Kr8loV1C8Stz9QSMgUrBkxqf2s7A9H2/RBnfvQBt9CWZS6NgoNxTPwHj3h1sUNl9reDkMQQzkKtgWGBQ==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.17.4.tgz", + "integrity": "sha512-lHvkxquov5XfIXSenzXrWcOWPiW79+uySoExb20UXHvPSMz0Bk7ZIqDf6lMwTquXbM4BvGGsKQbQE/D4SLD9jw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-service-bus": "8.17.3", - "@cspell/url": "8.17.3" + "@cspell/cspell-service-bus": "8.17.4", + "@cspell/url": "8.17.4" }, "engines": { "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.17.3.tgz", - "integrity": "sha512-KpwYIj8HwFyTzCCQcyezlmomvyNfPwZQmqTh4V126sFvf9HLoMdfyq8KYDZmZ//4HzwrF/ufJOF3CpuVUiJHfA==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.17.4.tgz", + "integrity": "sha512-BxQy4MDFSjMQ74SYptWJOLLPsNC8XDtKyey0IfMQaqeFmuxrz727GWcONQ2KROrPPs9dnmccDs6Kn8Tx7Wug4A==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-bundled-dicts": "8.17.3", - "@cspell/cspell-pipe": "8.17.3", - "@cspell/cspell-resolver": "8.17.3", - "@cspell/cspell-types": "8.17.3", - "@cspell/dynamic-import": "8.17.3", - "@cspell/filetypes": "8.17.3", - "@cspell/strong-weak-map": "8.17.3", - "@cspell/url": "8.17.3", + "@cspell/cspell-bundled-dicts": "8.17.4", + "@cspell/cspell-pipe": "8.17.4", + "@cspell/cspell-resolver": "8.17.4", + "@cspell/cspell-types": "8.17.4", + "@cspell/dynamic-import": "8.17.4", + "@cspell/filetypes": "8.17.4", + "@cspell/strong-weak-map": "8.17.4", + "@cspell/url": "8.17.4", "clear-module": "^4.1.2", "comment-json": "^4.2.5", - "cspell-config-lib": "8.17.3", - "cspell-dictionary": "8.17.3", - "cspell-glob": "8.17.3", - "cspell-grammar": "8.17.3", - "cspell-io": "8.17.3", - "cspell-trie-lib": "8.17.3", + "cspell-config-lib": "8.17.4", + "cspell-dictionary": "8.17.4", + "cspell-glob": "8.17.4", + "cspell-grammar": "8.17.4", + "cspell-io": "8.17.4", + "cspell-trie-lib": "8.17.4", "env-paths": "^3.0.0", "fast-equals": "^5.2.2", "gensequence": "^7.0.0", - "import-fresh": "^3.3.0", + "import-fresh": "^3.3.1", "resolve-from": "^5.0.0", "vscode-languageserver-textdocument": "^1.0.12", - "vscode-uri": "^3.0.8", + "vscode-uri": "^3.1.0", "xdg-basedir": "^5.1.0" }, "engines": { @@ -9107,14 +9107,14 @@ } }, "node_modules/cspell-trie-lib": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.17.3.tgz", - "integrity": "sha512-6LE5BeT2Rwv0bkQckpxX0K1fnFCWfeJ8zVPFtYOaix0trtqj0VNuwWzYDnxyW+OwMioCH29yRAMODa+JDFfUrA==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.17.4.tgz", + "integrity": "sha512-Ou2MGBnZyC+Hti57m4T4D/Tq1P3G570rFPkxgi32f325xsLz1AVEvqrM5oVHDilFH2guUYFaelmL0UcGeP3L6w==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.17.3", - "@cspell/cspell-types": "8.17.3", + "@cspell/cspell-pipe": "8.17.4", + "@cspell/cspell-types": "8.17.4", "gensequence": "^7.0.0" }, "engines": { @@ -9145,9 +9145,9 @@ } }, "node_modules/cspell/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -13593,9 +13593,9 @@ "license": "MIT" }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22037,23 +22037,26 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.2", + "fdir": "^6.4.3", "picomatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -24207,9 +24210,9 @@ "license": "MIT" }, "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 80f3c4a27..d32209cda 100644 --- a/package.json +++ b/package.json @@ -120,10 +120,10 @@ "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", - "apidoc-mock": "^5.0.6", + "apidoc-mock": "^5.0.7", "babel-jest": "^29.7.0", - "changelog-light": "^2.0.4", - "cspell": "^8.17.3", + "changelog-light": "^2.0.5", + "cspell": "^8.17.4", "eslint": "8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^9.1.0", From 1d0faaed3ace49c2f1d3fa20b8684ca7c11c05cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 08:01:06 +0000 Subject: [PATCH 7/7] build(deps): bump actions/github-script from 7 to 8 Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/commit_lint.yml | 2 +- .github/workflows/documentation_lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/commit_lint.yml b/.github/workflows/commit_lint.yml index 7be61ce36..f4d3fb708 100644 --- a/.github/workflows/commit_lint.yml +++ b/.github/workflows/commit_lint.yml @@ -26,7 +26,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Lint - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const actionCommit = require(`${process.env.GITHUB_WORKSPACE}/scripts/actions.commit.js`) diff --git a/.github/workflows/documentation_lint.yml b/.github/workflows/documentation_lint.yml index 795271705..d1caa432d 100644 --- a/.github/workflows/documentation_lint.yml +++ b/.github/workflows/documentation_lint.yml @@ -37,7 +37,7 @@ jobs: echo 'EOF' >> $GITHUB_ENV - name: Lint if: ${{ success() }} - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const actionCommit = require(`${process.env.GITHUB_WORKSPACE}/scripts/actions.documentation.js`)