From dd863efce1c6bff8019896e6d9f854cd828b1097 Mon Sep 17 00:00:00 2001 From: Marcelo Salloum dos Santos Date: Mon, 2 Dec 2024 09:22:42 -0800 Subject: [PATCH 01/11] Update the Disbursements table by adding the status column (#194) ### What Update the Disbursements table by adding the status column. Fix: also add the option to filter payments in the CANCELED state. ### Why User feedback. --- src/components/DisbursementsTable.tsx | 26 +++++++++++++++----------- src/pages/Payments.tsx | 1 + 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/components/DisbursementsTable.tsx b/src/components/DisbursementsTable.tsx index 6f6423e..2608614 100644 --- a/src/components/DisbursementsTable.tsx +++ b/src/components/DisbursementsTable.tsx @@ -106,12 +106,13 @@ export const DisbursementsTable: React.FC = ({ */} handleSort("name")} > Disbursement name - Total payments + Total payments Successful Failed Canceled @@ -124,10 +125,11 @@ export const DisbursementsTable: React.FC = ({ > Created at - + Status + Total amount - + Amount disbursed @@ -146,35 +148,37 @@ export const DisbursementsTable: React.FC = ({ {d.name} - + {renderNumberOrDash(d.stats?.paymentsTotalCount)} - + {renderNumberOrDash(d.stats?.paymentsSuccessfulCount)} - + {renderNumberOrDash(d.stats?.paymentsFailedCount)} - + {renderNumberOrDash(d.stats?.paymentsCanceledCount)} - + {renderNumberOrDash(d.stats?.paymentsRemainingCount)} - + {formatDateTime(d.createdAt)} - + {d.status} + + - + { + From 9143c2aed89231f7f15b4b5df5b4527b44ff4652 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 17:26:10 +0000 Subject: [PATCH 02/11] chore(deps): bump docker/build-push-action in the all-actions group (#195) --- .github/workflows/docker_image_public_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker_image_public_release.yml b/.github/workflows/docker_image_public_release.yml index adbd59e..7a56a7f 100644 --- a/.github/workflows/docker_image_public_release.yml +++ b/.github/workflows/docker_image_public_release.yml @@ -47,7 +47,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push to DockerHub (release prd) - uses: docker/build-push-action@v6.9.0 + uses: docker/build-push-action@v6.10.0 with: push: true build-args: | @@ -82,7 +82,7 @@ jobs: $GITHUB_OUTPUT - name: Build and push to DockerHub (develop branch) - uses: docker/build-push-action@v6.9.0 + uses: docker/build-push-action@v6.10.0 with: push: true build-args: | From b6c78132167ac955a172d9f006adec39ea11dec0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 18:44:01 +0000 Subject: [PATCH 03/11] chore(deps): bump react-router-dom from 6.28.0 to 7.0.1 in the major group (#197) --- .github/workflows/test-build.yml | 2 +- Dockerfile | 2 +- package.json | 4 +-- yarn.lock | 49 +++++++++++++++++++++----------- 4 files changed, 37 insertions(+), 20 deletions(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 3ae97af..c68e995 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - run: yarn install - run: yarn build diff --git a/Dockerfile b/Dockerfile index 1a6906d..571a28d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /app ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install --no-install-recommends -y gpg curl git make g++ ca-certificates apt-transport-https && \ curl -sSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key|gpg --dearmor >/etc/apt/trusted.gpg.d/nodesource-key.gpg && \ - echo "deb https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ + echo "deb https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg |gpg --dearmor >/etc/apt/trusted.gpg.d/yarnpkg.gpg && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update && apt-get install -y nodejs yarn && apt-get clean diff --git a/package.json b/package.json index 746c80a..f3f721e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "3.0.0", "license": "Apache-2.0", "engines": { - "node": ">=18.x" + "node": ">=20.x" }, "lint-staged": { "src/**/*.ts?(x)": [ @@ -63,7 +63,7 @@ "react-dom": "^18.3.1", "react-google-recaptcha": "^3.1.0", "react-redux": "^9.1.2", - "react-router-dom": "^6.28.0", + "react-router-dom": "^7.0.1", "redux": "^5.0.1", "sass": "^1.81.0", "sass-loader": "^16.0.3", diff --git a/yarn.lock b/yarn.lock index 08f5759..60fd15e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2329,11 +2329,6 @@ redux-thunk "^3.1.0" reselect "^5.1.0" -"@remix-run/router@1.21.0": - version "1.21.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.21.0.tgz#c65ae4262bdcfe415dbd4f64ec87676e4a56e2b5" - integrity sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA== - "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -2572,6 +2567,11 @@ dependencies: "@types/node" "*" +"@types/cookie@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" + integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== + "@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" @@ -4035,6 +4035,11 @@ cookie@0.7.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== +cookie@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" + integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -7321,20 +7326,22 @@ react-redux@^9.1.2: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-router-dom@^6.28.0: - version "6.28.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.28.0.tgz#f73ebb3490e59ac9f299377062ad1d10a9f579e6" - integrity sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg== +react-router-dom@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.0.1.tgz#b1438100800313e1b4c48da0c5fdb498f81c7f96" + integrity sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng== dependencies: - "@remix-run/router" "1.21.0" - react-router "6.28.0" + react-router "7.0.1" -react-router@6.28.0: - version "6.28.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.28.0.tgz#29247c86d7ba901d7e5a13aa79a96723c3e59d0d" - integrity sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg== +react-router@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.0.1.tgz#a171e35a5c6463f76b23353c4ce57b53c8b7b1b9" + integrity sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw== dependencies: - "@remix-run/router" "1.21.0" + "@types/cookie" "^0.6.0" + cookie "^1.0.1" + set-cookie-parser "^2.6.0" + turbo-stream "2.4.0" react@^18.3.1: version "18.3.1" @@ -7753,6 +7760,11 @@ serve-static@1.16.2: parseurl "~1.3.3" send "0.19.0" +set-cookie-parser@^2.6.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943" + integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -8300,6 +8312,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +turbo-stream@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/turbo-stream/-/turbo-stream-2.4.0.tgz#1e4fca6725e90fa14ac4adb782f2d3759a5695f0" + integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" From 08ec66bc8f21acb520b084bf1a04f735a4dd16f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 20:11:35 +0000 Subject: [PATCH 04/11] chore(deps): bump the minor-and-patch group with 19 updates (#198) --- package.json | 38 ++-- yarn.lock | 504 +++++++++++++++++++++++++-------------------------- 2 files changed, 271 insertions(+), 271 deletions(-) diff --git a/package.json b/package.json index f3f721e..834307e 100644 --- a/package.json +++ b/package.json @@ -12,34 +12,34 @@ }, "private": true, "dependencies": { - "@reduxjs/toolkit": "^2.3.0", + "@reduxjs/toolkit": "^2.4.0", "@stellar/design-system": "^1.1.3", "@stellar/tsconfig": "^1.0.2", "@svgr/webpack": "8.1.0", - "@tanstack/react-query": "^5.60.5", - "@tanstack/react-query-devtools": "^5.60.5", + "@tanstack/react-query": "^5.62.3", + "@tanstack/react-query-devtools": "^5.62.3", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.0.1", + "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.14", "@types/lodash": "^4.17.13", - "@types/node": "^22.9.0", + "@types/node": "^22.10.1", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-google-recaptcha": "^2.1.9", "@types/react-redux": "^7.1.34", "@types/react-router-dom": "^5.3.3", "@types/uuid": "^10.0.0", - "@typescript-eslint/eslint-plugin": "^8.15.0", - "@typescript-eslint/parser": "^8.15.0", + "@typescript-eslint/eslint-plugin": "^8.17.0", + "@typescript-eslint/parser": "^8.17.0", "assert": "^2.1.0", "bignumber.js": "^9.1.2", "buffer": "^6.0.3", "concurrently": "^9.1.0", "crypto-browserify": "^3.12.1", "date-fns": "^4.1.0", - "dotenv": "^16.4.5", - "eslint": "^9.15.0", + "dotenv": "^16.4.7", + "eslint": "^9.16.0", "eslint-config-prettier": "^9.1.0", "eslint-config-react": "^1.1.7", "eslint-config-react-app": "^7.0.1", @@ -47,7 +47,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-hooks": "^5.1.0", "https-browserify": "^1.0.0", "husky": "^9.1.7", "lint-staged": "^15.2.10", @@ -56,20 +56,20 @@ "os-browserify": "^0.3.0", "papaparse": "^5.4.1", "path-browserify": "^1.0.1", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "pretty-quick": "^4.0.0", "process": "^0.11.10", "react": "^18.3.1", "react-dom": "^18.3.1", "react-google-recaptcha": "^3.1.0", "react-redux": "^9.1.2", - "react-router-dom": "^7.0.1", + "react-router-dom": "^7.0.2", "redux": "^5.0.1", - "sass": "^1.81.0", - "sass-loader": "^16.0.3", + "sass": "^1.82.0", + "sass-loader": "^16.0.4", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", - "typescript": "^5.6.3", + "typescript": "^5.7.2", "url": "^0.11.4" }, "resolutions": { @@ -107,7 +107,7 @@ ] }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.60.1", + "@tanstack/eslint-plugin-query": "^5.62.1", "@types/papaparse": "^5.3.15", "clean-webpack-plugin": "^4.0.0", "copy-webpack-plugin": "^12.0.2", @@ -115,15 +115,15 @@ "eslint-webpack-plugin": "^4.2.0", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^9.0.2", - "globals": "^15.12.0", + "globals": "^15.13.0", "html-webpack-plugin": "^5.6.3", "mini-css-extract-plugin": "^2.9.2", "react-hot-loader": "^4.13.1", "style-loader": "^4.0.0", "ts-loader": "^9.5.1", "tsconfig-paths-webpack-plugin": "^4.2.0", - "typescript-eslint": "^8.15.0", - "webpack": "^5.96.1", + "typescript-eslint": "^8.17.0", + "webpack": "^5.97.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.1.0" } diff --git a/yarn.lock b/yarn.lock index 60fd15e..5e55a1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1988,10 +1988,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.15.0": - version "9.15.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5" - integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg== +"@eslint/js@9.16.0": + version "9.16.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4" + integrity sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg== "@eslint/object-schema@^2.1.4": version "2.1.4" @@ -2319,10 +2319,10 @@ "@parcel/watcher-win32-ia32" "2.4.1" "@parcel/watcher-win32-x64" "2.4.1" -"@reduxjs/toolkit@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.3.0.tgz#d00134634d6c1678e8563ac50026e429e3b64420" - integrity sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA== +"@reduxjs/toolkit@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.4.0.tgz#29fd3a19530fc50d648a9b1e0132da0cd5618f19" + integrity sha512-wJZEuSKj14tvNfxiIiJws0tQN77/rDqucBq528ApebMIRHyWpCanJVQRxQ8WWZC19iCDKxDsGlbAir3F1layxA== dependencies: immer "^10.0.3" redux "^5.0.1" @@ -2476,36 +2476,36 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@tanstack/eslint-plugin-query@^5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.60.1.tgz#ce4d1307d5801834949607d8f60b2ff835ccf1fe" - integrity sha512-oCaWtFKa6WwX14fm/Sp486eTFXXgadiDzEYxhM/tiAlM+xzvPwp6ZHgR6sndmvYK+s/jbksDCTLIPS0PCH8L2g== +"@tanstack/eslint-plugin-query@^5.62.1": + version "5.62.1" + resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.62.1.tgz#5a5a504f3ba0d999468d404fc4d6e9fb58c4cdff" + integrity sha512-1886D5U+re1TW0wSH4/kUGG36yIoW5Wkz4twVEzlk3ZWmjF3XkRSWgB+Sc7n+Lyzt8usNV8ZqkZE6DA7IC47fQ== dependencies: - "@typescript-eslint/utils" "^8.3.0" + "@typescript-eslint/utils" "^8.15.0" -"@tanstack/query-core@5.60.5": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.60.5.tgz#37b7c5ab7e6894cea9ef341299a7a3febc2ea361" - integrity sha512-jiS1aC3XI3BJp83ZiTuDLerTmn9P3U95r6p+6/SNauLJaYxfIC4dMuWygwnBHIZxjn2zJqEpj3nysmPieoxfPQ== +"@tanstack/query-core@5.62.3": + version "5.62.3" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.62.3.tgz#7cfde68f7d78807faebee2a2bb1e31b81067f46b" + integrity sha512-Jp/nYoz8cnO7kqhOlSv8ke/0MJRJVGuZ0P/JO9KQ+f45mpN90hrerzavyTKeSoT/pOzeoOUkv1Xd0wPsxAWXfg== -"@tanstack/query-devtools@5.59.20": - version "5.59.20" - resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.59.20.tgz#a827ac682ec1268fc9c99e7b6eb739f35b5606aa" - integrity sha512-vxhuQ+8VV4YWQSFxQLsuM+dnEKRY7VeRzpNabFXdhEwsBYLrjXlF1pM38A8WyKNLqZy8JjyRO8oP4Wd/oKHwuQ== +"@tanstack/query-devtools@5.61.4": + version "5.61.4" + resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.61.4.tgz#86a3be0ffb97d810525600e3787b5b69808cf9db" + integrity sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ== -"@tanstack/react-query-devtools@^5.60.5": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.60.5.tgz#fe398b4896a292fbe835d3fd4799e929de94c25a" - integrity sha512-lzANl0ih3CNKBGUoXhhkAAHI1Y4Yqs9Jf3iuTUsGiPpmF0RWXTeYFaQxc+h1PhJz3VwYrIYCwmPoNts0mSjSuA== +"@tanstack/react-query-devtools@^5.62.3": + version "5.62.3" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.62.3.tgz#661cbe41838f42cc57a0c145f3a48f45b1062821" + integrity sha512-4iaQap/iP5ErS094u1WehFntHtjRo6g5HJMvyHovBVbsxnvgPc6AtKAw7qxPPoKy6Wj5Bew0045eYP5phiiBmw== dependencies: - "@tanstack/query-devtools" "5.59.20" + "@tanstack/query-devtools" "5.61.4" -"@tanstack/react-query@^5.60.5": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.60.5.tgz#3194c390f7eff20542b321c3042880dc3f1a81e2" - integrity sha512-M77bOsPwj1wYE56gk7iJvxGAr4IC12NWdIDhT+Eo8ldkWRHMvIR8I/rufIvT1OXoV/bl7EECwuRuMlxxWtvW2Q== +"@tanstack/react-query@^5.62.3": + version "5.62.3" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.62.3.tgz#c6766b1764dcf924f6ed5fd88daf8d246e2f5c14" + integrity sha512-y2zDNKuhgiuMgsKkqd4AcsLIBiCfEO8U11AdrtAUihmLbRNztPrlcZqx2lH1GacZsx+y1qRRbCcJLYTtF1vKsw== dependencies: - "@tanstack/query-core" "5.60.5" + "@tanstack/query-core" "5.62.3" "@testing-library/jest-dom@^6.6.3": version "6.6.3" @@ -2520,10 +2520,10 @@ lodash "^4.17.21" redent "^3.0.0" -"@testing-library/react@^16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875" - integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg== +"@testing-library/react@^16.1.0": + version "16.1.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.1.0.tgz#aa0c61398bac82eaf89776967e97de41ac742d71" + integrity sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg== dependencies: "@babel/runtime" "^7.12.5" @@ -2717,12 +2717,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^22.9.0": - version "22.9.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" - integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== +"@types/node@*", "@types/node@^22.10.1": + version "22.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.1.tgz#41ffeee127b8975a05f8c4f83fb89bcb2987d766" + integrity sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ== dependencies: - undici-types "~6.19.8" + undici-types "~6.20.0" "@types/papaparse@^5.3.15": version "5.3.15" @@ -2875,16 +2875,16 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@8.15.0", "@typescript-eslint/eslint-plugin@^8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz#c95c6521e70c8b095a684d884d96c0c1c63747d2" - integrity sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg== +"@typescript-eslint/eslint-plugin@8.17.0", "@typescript-eslint/eslint-plugin@^8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz#2ee073c421f4e81e02d10e731241664b6253b23c" + integrity sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.15.0" - "@typescript-eslint/type-utils" "8.15.0" - "@typescript-eslint/utils" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" + "@typescript-eslint/scope-manager" "8.17.0" + "@typescript-eslint/type-utils" "8.17.0" + "@typescript-eslint/utils" "8.17.0" + "@typescript-eslint/visitor-keys" "8.17.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -2913,15 +2913,15 @@ dependencies: "@typescript-eslint/utils" "5.59.0" -"@typescript-eslint/parser@8.15.0", "@typescript-eslint/parser@^8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.15.0.tgz#92610da2b3af702cfbc02a46e2a2daa6260a9045" - integrity sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A== +"@typescript-eslint/parser@8.17.0", "@typescript-eslint/parser@^8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.17.0.tgz#2ee972bb12fa69ac625b85813dc8d9a5a053ff52" + integrity sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg== dependencies: - "@typescript-eslint/scope-manager" "8.15.0" - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/typescript-estree" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" + "@typescript-eslint/scope-manager" "8.17.0" + "@typescript-eslint/types" "8.17.0" + "@typescript-eslint/typescript-estree" "8.17.0" + "@typescript-eslint/visitor-keys" "8.17.0" debug "^4.3.4" "@typescript-eslint/parser@^5.5.0": @@ -2942,13 +2942,13 @@ "@typescript-eslint/types" "5.59.0" "@typescript-eslint/visitor-keys" "5.59.0" -"@typescript-eslint/scope-manager@8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz#28a1a0f13038f382424f45a988961acaca38f7c6" - integrity sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA== +"@typescript-eslint/scope-manager@8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz#a3f49bf3d4d27ff8d6b2ea099ba465ef4dbcaa3a" + integrity sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg== dependencies: - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" + "@typescript-eslint/types" "8.17.0" + "@typescript-eslint/visitor-keys" "8.17.0" "@typescript-eslint/type-utils@5.59.0": version "5.59.0" @@ -2960,13 +2960,13 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz#a6da0f93aef879a68cc66c73fe42256cb7426c72" - integrity sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw== +"@typescript-eslint/type-utils@8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz#d326569f498cdd0edf58d5bb6030b4ad914e63d3" + integrity sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw== dependencies: - "@typescript-eslint/typescript-estree" "8.15.0" - "@typescript-eslint/utils" "8.15.0" + "@typescript-eslint/typescript-estree" "8.17.0" + "@typescript-eslint/utils" "8.17.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2975,10 +2975,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.0.tgz#3fcdac7dbf923ec5251545acdd9f1d42d7c4fe32" integrity sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA== -"@typescript-eslint/types@8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.15.0.tgz#4958edf3d83e97f77005f794452e595aaf6430fc" - integrity sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ== +"@typescript-eslint/types@8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.17.0.tgz#ef84c709ef8324e766878834970bea9a7e3b72cf" + integrity sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA== "@typescript-eslint/typescript-estree@5.59.0": version "5.59.0" @@ -2993,13 +2993,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz#915c94e387892b114a2a2cc0df2d7f19412c8ba7" - integrity sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg== +"@typescript-eslint/typescript-estree@8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz#40b5903bc929b1e8dd9c77db3cb52cfb199a2a34" + integrity sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw== dependencies: - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/visitor-keys" "8.15.0" + "@typescript-eslint/types" "8.17.0" + "@typescript-eslint/visitor-keys" "8.17.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -3021,15 +3021,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@8.15.0", "@typescript-eslint/utils@^8.3.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.15.0.tgz#ac04679ad19252776b38b81954b8e5a65567cef6" - integrity sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ== +"@typescript-eslint/utils@8.17.0", "@typescript-eslint/utils@^8.15.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.17.0.tgz#41c05105a2b6ab7592f513d2eeb2c2c0236d8908" + integrity sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.15.0" - "@typescript-eslint/types" "8.15.0" - "@typescript-eslint/typescript-estree" "8.15.0" + "@typescript-eslint/scope-manager" "8.17.0" + "@typescript-eslint/types" "8.17.0" + "@typescript-eslint/typescript-estree" "8.17.0" "@typescript-eslint/visitor-keys@5.59.0": version "5.59.0" @@ -3039,133 +3039,133 @@ "@typescript-eslint/types" "5.59.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz#9ea5a85eb25401d2aa74ec8a478af4e97899ea12" - integrity sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q== +"@typescript-eslint/visitor-keys@8.17.0": + version "8.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz#4dbcd0e28b9bf951f4293805bf34f98df45e1aa8" + integrity sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg== dependencies: - "@typescript-eslint/types" "8.15.0" + "@typescript-eslint/types" "8.17.0" eslint-visitor-keys "^4.2.0" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" "@xtuc/long" "4.2.2" "@webpack-cli/configtest@^2.1.1": @@ -4501,10 +4501,10 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== +dotenv@^16.4.7: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== ee-first@1.1.1: version "1.1.1" @@ -4862,10 +4862,10 @@ eslint-plugin-react-hooks@^4.3.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react-hooks@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz#72e2eefbac4b694f5324154619fee44f5f60f101" - integrity sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw== +eslint-plugin-react-hooks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz#3d34e37d5770866c34b87d5b499f5f0b53bf0854" + integrity sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw== eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.37.2: version "7.37.2" @@ -4940,17 +4940,17 @@ eslint-webpack-plugin@^4.2.0: normalize-path "^3.0.0" schema-utils "^4.2.0" -eslint@^9.15.0: - version "9.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.15.0.tgz#77c684a4e980e82135ebff8ee8f0a9106ce6b8a6" - integrity sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw== +eslint@^9.16.0: + version "9.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.16.0.tgz#66832e66258922ac0a626f803a9273e37747f2a6" + integrity sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.19.0" "@eslint/core" "^0.9.0" "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.15.0" + "@eslint/js" "9.16.0" "@eslint/plugin-kit" "^0.2.3" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" @@ -5411,10 +5411,10 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globals@^15.12.0: - version "15.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.12.0.tgz#1811872883ad8f41055b61457a130221297de5b5" - integrity sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ== +globals@^15.13.0: + version "15.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.13.0.tgz#bbec719d69aafef188ecd67954aae76a696010fc" + integrity sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g== globalthis@^1.0.3, globalthis@^1.0.4: version "1.0.4" @@ -7131,10 +7131,10 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +prettier@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== pretty-error@^4.0.0: version "4.0.0" @@ -7326,17 +7326,17 @@ react-redux@^9.1.2: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-router-dom@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.0.1.tgz#b1438100800313e1b4c48da0c5fdb498f81c7f96" - integrity sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng== +react-router-dom@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.0.2.tgz#cbd7ce2db7112f1bc3e9eee3657ad32d7515a913" + integrity sha512-VJOQ+CDWFDGaWdrG12Nl+d7yHtLaurNgAQZVgaIy7/Xd+DojgmYLosFfZdGz1wpxmjJIAkAMVTKWcvkx1oggAw== dependencies: - react-router "7.0.1" + react-router "7.0.2" -react-router@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.0.1.tgz#a171e35a5c6463f76b23353c4ce57b53c8b7b1b9" - integrity sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw== +react-router@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.0.2.tgz#2820e107cb8cec8acc5db15a17470c056ea86022" + integrity sha512-m5AcPfTRUcjwmhBzOJGEl6Y7+Crqyju0+TgTQxoS4SO+BkWbhOrcfZNq6wSWdl2BBbJbsAoBUb8ZacOFT+/JlA== dependencies: "@types/cookie" "^0.6.0" cookie "^1.0.1" @@ -7644,17 +7644,17 @@ safe-regex-test@^1.0.3: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.3.tgz#17b944fab6702dc7a52c5d2a88cbfa38c39cdc75" - integrity sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA== +sass-loader@^16.0.4: + version "16.0.4" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.4.tgz#5c2afb755fbc0a45a004369efa11579518a39a45" + integrity sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg== dependencies: neo-async "^2.6.2" -sass@^1.81.0: - version "1.81.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.81.0.tgz#a9010c0599867909dfdbad057e4a6fbdd5eec941" - integrity sha512-Q4fOxRfhmv3sqCLoGfvrC9pRV8btc0UtqL9mN6Yrv6Qi9ScL55CVH1vlPP863ISLEEMNLLuu9P+enCeGHlnzhA== +sass@^1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.82.0.tgz#30da277af3d0fa6042e9ceabd0d984ed6d07df70" + integrity sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q== dependencies: chokidar "^4.0.0" immutable "^5.0.2" @@ -8376,19 +8376,19 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript-eslint@^8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.15.0.tgz#c8a2a0d183c3eb48ae176aa078c1b9daa584cf9d" - integrity sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w== +typescript-eslint@^8.17.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.17.0.tgz#fa4033c26b3b40f778287bc12918d985481b220b" + integrity sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA== dependencies: - "@typescript-eslint/eslint-plugin" "8.15.0" - "@typescript-eslint/parser" "8.15.0" - "@typescript-eslint/utils" "8.15.0" + "@typescript-eslint/eslint-plugin" "8.17.0" + "@typescript-eslint/parser" "8.17.0" + "@typescript-eslint/utils" "8.17.0" -typescript@^5.6.3: - version "5.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" - integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== +typescript@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== unbox-primitive@^1.0.2: version "1.0.2" @@ -8400,10 +8400,10 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici-types@~6.19.8: - version "6.19.8" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -8600,16 +8600,16 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.96.1: - version "5.96.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.96.1.tgz#3676d1626d8312b6b10d0c18cc049fba7ac01f0c" - integrity sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA== +webpack@^5.97.1: + version "5.97.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.97.1.tgz#972a8320a438b56ff0f1d94ade9e82eac155fa58" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.6" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" acorn "^8.14.0" browserslist "^4.24.0" chrome-trace-event "^1.0.2" From 68131105d8e1d5d9410f3228713aa867d86da4c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 20:17:49 +0000 Subject: [PATCH 05/11] chore(deps): bump nanoid from 3.3.7 to 3.3.8 in the npm_and_yarn group (#200) --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5e55a1d..8f49ca1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6621,9 +6621,9 @@ multicast-dns@^7.2.5: thunky "^1.0.2" nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== natural-compare-lite@^1.4.0: version "1.4.0" From d54e6e88de0e95fb537fcbd5ce43b38de27d3a90 Mon Sep 17 00:00:00 2001 From: Marwen Abid Date: Thu, 19 Dec 2024 10:05:26 -0800 Subject: [PATCH 06/11] SDP-1451 Export Disbursements (#202) --- src/api/getDisbursementsExport.ts | 39 +++++++++++++++++++++++++++++++ src/pages/Disbursements.tsx | 10 ++++++-- src/store/ducks/disbursements.ts | 26 +++++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/api/getDisbursementsExport.ts diff --git a/src/api/getDisbursementsExport.ts b/src/api/getDisbursementsExport.ts new file mode 100644 index 0000000..9c9ee17 --- /dev/null +++ b/src/api/getDisbursementsExport.ts @@ -0,0 +1,39 @@ +import { API_URL } from "constants/envVariables"; +import { getSdpTenantName } from "helpers/getSdpTenantName"; +import { DisbursementsSearchParams } from "types"; +import { handleSearchParams } from "api/handleSearchParams"; + +export const getDisbursementsExport = async ( + token: string, + searchParams?: DisbursementsSearchParams, +): Promise => { + const params = handleSearchParams(searchParams); + + const response = await fetch(`${API_URL}/exports/disbursements${params}`, { + method: "GET", + headers: { + Authorization: `Bearer ${token}`, + "SDP-Tenant-Name": getSdpTenantName(), + }, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const contentDisposition = response.headers.get("content-disposition"); + const filename = contentDisposition + ? contentDisposition.split("filename=")[1] + : `disbursements_${new Date().toISOString().split("T")[0]}.csv`; + + // Create a download from the response + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.setAttribute("download", filename); + document.body.appendChild(link); + link.click(); + link.remove(); + window.URL.revokeObjectURL(url); +}; diff --git a/src/pages/Disbursements.tsx b/src/pages/Disbursements.tsx index db35afc..81fb41c 100644 --- a/src/pages/Disbursements.tsx +++ b/src/pages/Disbursements.tsx @@ -22,6 +22,7 @@ import { AppDispatch } from "store"; import { getDisbursementsAction, getDisbursementsWithParamsAction, + exportDisbursementsAction, } from "store/ducks/disbursements"; import { resetDisbursementDetailsAction } from "store/ducks/disbursementDetails"; import { setDraftIdAction } from "store/ducks/disbursementDrafts"; @@ -145,7 +146,12 @@ export const Disbursements = () => { event: React.MouseEvent, ) => { event.preventDefault(); - alert("TODO: handle export"); + + if (disbursements.status === "PENDING") { + return; + } + + dispatch(exportDisbursementsAction()); }; const handlePageLimitChange = ( @@ -257,7 +263,7 @@ export const Disbursements = () => { size="sm" icon={} onClick={handleExport} - disabled={true} + isLoading={disbursements.status === "PENDING"} > Export diff --git a/src/store/ducks/disbursements.ts b/src/store/ducks/disbursements.ts index 4b395ba..ff2a28b 100644 --- a/src/store/ducks/disbursements.ts +++ b/src/store/ducks/disbursements.ts @@ -1,6 +1,7 @@ import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; import { RootState } from "store"; import { getDisbursements } from "api/getDisbursements"; +import { getDisbursementsExport } from "api/getDisbursementsExport"; import { formatDisbursements } from "helpers/formatDisbursements"; import { endSessionIfTokenInvalid } from "helpers/endSessionIfTokenInvalid"; import { refreshSessionToken } from "helpers/refreshSessionToken"; @@ -74,6 +75,31 @@ export const getDisbursementsWithParamsAction = createAsyncThunk< }, ); +export const exportDisbursementsAction = createAsyncThunk< + undefined, + undefined, + { rejectValue: RejectMessage; state: RootState } +>( + "disbursements/exportDisbursementsAction", + async (_, { rejectWithValue, getState, dispatch }) => { + const { token } = getState().userAccount; + const { searchParams } = getState().disbursements; + try { + await getDisbursementsExport(token, searchParams); + refreshSessionToken(dispatch); + return; + } catch (error: unknown) { + const apiError = normalizeApiError(error as ApiError); + const errorString = apiError.message; + endSessionIfTokenInvalid(errorString, dispatch); + + return rejectWithValue({ + errorString: `Error exporting disbursements: ${errorString}`, + }); + } + }, +); + const initialState: DisbursementsInitialState = { items: [], status: undefined, From 24cc13906fd9580ca429f867a42099b3db5dcec7 Mon Sep 17 00:00:00 2001 From: Marwen Abid Date: Thu, 2 Jan 2025 10:35:12 -0800 Subject: [PATCH 07/11] [SDP-1451] Export Receivers and Payments (#203) --- ...getDisbursementsExport.ts => getExport.ts} | 11 +++--- src/pages/Disbursements.tsx | 9 ++++- src/pages/Payments.tsx | 19 ++++++++- src/pages/Receivers.tsx | 19 ++++++++- src/store/ducks/dataExport.ts | 39 +++++++++++++++++++ src/store/ducks/disbursements.ts | 26 ------------- src/types/index.ts | 2 + 7 files changed, 88 insertions(+), 37 deletions(-) rename src/api/{getDisbursementsExport.ts => getExport.ts} (77%) create mode 100644 src/store/ducks/dataExport.ts diff --git a/src/api/getDisbursementsExport.ts b/src/api/getExport.ts similarity index 77% rename from src/api/getDisbursementsExport.ts rename to src/api/getExport.ts index 9c9ee17..650e4da 100644 --- a/src/api/getDisbursementsExport.ts +++ b/src/api/getExport.ts @@ -1,15 +1,16 @@ import { API_URL } from "constants/envVariables"; import { getSdpTenantName } from "helpers/getSdpTenantName"; -import { DisbursementsSearchParams } from "types"; import { handleSearchParams } from "api/handleSearchParams"; +import { Export } from "types"; -export const getDisbursementsExport = async ( +export const getExport = async ( token: string, - searchParams?: DisbursementsSearchParams, + type: Export, + searchParams?: T, ): Promise => { const params = handleSearchParams(searchParams); - const response = await fetch(`${API_URL}/exports/disbursements${params}`, { + const response = await fetch(`${API_URL}/exports/${type}${params}`, { method: "GET", headers: { Authorization: `Bearer ${token}`, @@ -24,7 +25,7 @@ export const getDisbursementsExport = async ( const contentDisposition = response.headers.get("content-disposition"); const filename = contentDisposition ? contentDisposition.split("filename=")[1] - : `disbursements_${new Date().toISOString().split("T")[0]}.csv`; + : `${type}_${new Date().toISOString().split("T")[0]}.csv`; // Create a download from the response const blob = await response.blob(); diff --git a/src/pages/Disbursements.tsx b/src/pages/Disbursements.tsx index 81fb41c..5e7524a 100644 --- a/src/pages/Disbursements.tsx +++ b/src/pages/Disbursements.tsx @@ -22,8 +22,8 @@ import { AppDispatch } from "store"; import { getDisbursementsAction, getDisbursementsWithParamsAction, - exportDisbursementsAction, } from "store/ducks/disbursements"; +import { exportDataAction } from "store/ducks/dataExport"; import { resetDisbursementDetailsAction } from "store/ducks/disbursementDetails"; import { setDraftIdAction } from "store/ducks/disbursementDrafts"; import { CommonFilters, SortByDisbursements, SortDirection } from "types"; @@ -151,7 +151,12 @@ export const Disbursements = () => { return; } - dispatch(exportDisbursementsAction()); + dispatch( + exportDataAction({ + exportType: "disbursements", + searchParams: disbursements.searchParams, + }), + ); }; const handlePageLimitChange = ( diff --git a/src/pages/Payments.tsx b/src/pages/Payments.tsx index 6c7cf15..d734691 100644 --- a/src/pages/Payments.tsx +++ b/src/pages/Payments.tsx @@ -1,5 +1,9 @@ import { useState } from "react"; import { Button, Heading, Icon, Input, Select } from "@stellar/design-system"; +import { useDispatch } from "react-redux"; + +import { AppDispatch } from "store"; +import { exportDataAction } from "store/ducks/dataExport"; import { FilterMenu } from "components/FilterMenu"; import { Pagination } from "components/Pagination"; @@ -72,11 +76,22 @@ export const Payments = () => { setQueryFilters(initFilters); }; + const dispatch: AppDispatch = useDispatch(); + const handleExport = ( event: React.MouseEvent, ) => { event.preventDefault(); - alert("TODO: handle export"); + if (isLoading || isFetching) { + return; + } + + dispatch( + exportDataAction({ + exportType: "payments", + searchParams: filters, + }), + ); }; const handlePageLimitChange = ( @@ -168,7 +183,7 @@ export const Payments = () => { size="sm" icon={} onClick={handleExport} - disabled={true} + disabled={isLoading || isFetching} > Export diff --git a/src/pages/Receivers.tsx b/src/pages/Receivers.tsx index 7e027d1..38e1203 100644 --- a/src/pages/Receivers.tsx +++ b/src/pages/Receivers.tsx @@ -1,6 +1,10 @@ import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { Button, Heading, Icon, Input, Select } from "@stellar/design-system"; +import { useDispatch } from "react-redux"; + +import { AppDispatch } from "store"; +import { exportDataAction } from "store/ducks/dataExport"; import { FilterMenu } from "components/FilterMenu"; import { SearchInput } from "components/SearchInput"; @@ -88,11 +92,22 @@ export const Receivers = () => { setQueryFilters(isDefaultSort ? filters : { ...filters, sort, direction }); }; + const dispatch: AppDispatch = useDispatch(); + const handleExport = ( event: React.MouseEvent, ) => { event.preventDefault(); - alert("TODO: handle export"); + if (isLoading || isFetching) { + return; + } + + dispatch( + exportDataAction({ + exportType: "receivers", + searchParams: filters, + }), + ); }; const handlePageLimitChange = ( @@ -191,7 +206,7 @@ export const Receivers = () => { size="sm" icon={} onClick={handleExport} - disabled={true} + disabled={isLoading || isFetching} > Export diff --git a/src/store/ducks/dataExport.ts b/src/store/ducks/dataExport.ts new file mode 100644 index 0000000..9514bda --- /dev/null +++ b/src/store/ducks/dataExport.ts @@ -0,0 +1,39 @@ +import { createAsyncThunk } from "@reduxjs/toolkit"; +import { getExport } from "api/getExport"; +import { normalizeApiError } from "helpers/normalizeApiError"; +import { endSessionIfTokenInvalid } from "helpers/endSessionIfTokenInvalid"; +import { refreshSessionToken } from "helpers/refreshSessionToken"; +import { RootState } from "store"; +import { ApiError, Export, RejectMessage } from "types"; +type ExportParams = { + exportType: Export; + searchParams?: T; +}; + +export const exportDataAction = createAsyncThunk< + undefined, + ExportParams, + { rejectValue: RejectMessage; state: RootState } +>( + "common/exportDataAction", + async ( + { exportType, searchParams }, + { rejectWithValue, getState, dispatch }, + ) => { + const { token } = getState().userAccount; + + try { + await getExport(token, exportType, searchParams); + refreshSessionToken(dispatch); + return; + } catch (error: unknown) { + const apiError = normalizeApiError(error as ApiError); + const errorString = apiError.message; + endSessionIfTokenInvalid(errorString, dispatch); + + return rejectWithValue({ + errorString: `Error exporting ${exportType}: ${errorString}`, + }); + } + }, +); diff --git a/src/store/ducks/disbursements.ts b/src/store/ducks/disbursements.ts index ff2a28b..4b395ba 100644 --- a/src/store/ducks/disbursements.ts +++ b/src/store/ducks/disbursements.ts @@ -1,7 +1,6 @@ import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; import { RootState } from "store"; import { getDisbursements } from "api/getDisbursements"; -import { getDisbursementsExport } from "api/getDisbursementsExport"; import { formatDisbursements } from "helpers/formatDisbursements"; import { endSessionIfTokenInvalid } from "helpers/endSessionIfTokenInvalid"; import { refreshSessionToken } from "helpers/refreshSessionToken"; @@ -75,31 +74,6 @@ export const getDisbursementsWithParamsAction = createAsyncThunk< }, ); -export const exportDisbursementsAction = createAsyncThunk< - undefined, - undefined, - { rejectValue: RejectMessage; state: RootState } ->( - "disbursements/exportDisbursementsAction", - async (_, { rejectWithValue, getState, dispatch }) => { - const { token } = getState().userAccount; - const { searchParams } = getState().disbursements; - try { - await getDisbursementsExport(token, searchParams); - refreshSessionToken(dispatch); - return; - } catch (error: unknown) { - const apiError = normalizeApiError(error as ApiError); - const errorString = apiError.message; - endSessionIfTokenInvalid(errorString, dispatch); - - return rejectWithValue({ - errorString: `Error exporting disbursements: ${errorString}`, - }); - } - }, -); - const initialState: DisbursementsInitialState = { items: [], status: undefined, diff --git a/src/types/index.ts b/src/types/index.ts index 58f7984..b888e60 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -160,6 +160,8 @@ export type StellarAccountInfo = { balances: AccountBalanceItem[]; }; +export type Export = "disbursements" | "receivers" | "payments"; + // ============================================================================= // User // ============================================================================= From c19400f2f02712fffe0b64a5fc19148324c89bc3 Mon Sep 17 00:00:00 2001 From: Marwen Abid Date: Fri, 10 Jan 2025 15:15:07 -0500 Subject: [PATCH 08/11] SDP-1453 Delete Draft Disbursement (#205) --- src/api/deleteDisbursementDraft.ts | 20 +++++++ src/pages/DisbursementDraftDetails.tsx | 75 +++++++++++++++++++++++++- src/store/ducks/disbursementDrafts.ts | 40 ++++++++++++++ src/types/index.ts | 2 +- 4 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 src/api/deleteDisbursementDraft.ts diff --git a/src/api/deleteDisbursementDraft.ts b/src/api/deleteDisbursementDraft.ts new file mode 100644 index 0000000..c076a25 --- /dev/null +++ b/src/api/deleteDisbursementDraft.ts @@ -0,0 +1,20 @@ +import { handleApiResponse } from "api/handleApiResponse"; +import { API_URL } from "constants/envVariables"; +import { getSdpTenantName } from "helpers/getSdpTenantName"; +import { ApiDisbursement } from "types"; + +export const deleteDisbursementDraft = async ( + token: string, + draftId: string, +): Promise => { + const response = await fetch(`${API_URL}/disbursements/${draftId}`, { + method: "DELETE", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + "SDP-Tenant-Name": getSdpTenantName(), + }, + }); + + return handleApiResponse(response); +}; diff --git a/src/pages/DisbursementDraftDetails.tsx b/src/pages/DisbursementDraftDetails.tsx index 78bb1fb..b38eed0 100644 --- a/src/pages/DisbursementDraftDetails.tsx +++ b/src/pages/DisbursementDraftDetails.tsx @@ -1,6 +1,14 @@ import { useCallback, useEffect, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; -import { Badge, Heading, Link, Notification } from "@stellar/design-system"; +import { + Badge, + Heading, + Link, + Notification, + Button, + Icon, + Modal, +} from "@stellar/design-system"; import { useDispatch } from "react-redux"; import { useRedux } from "hooks/useRedux"; import { useDownloadCsvFile } from "hooks/useDownloadCsvFile"; @@ -15,6 +23,7 @@ import { import { clearCsvUpdatedAction, clearDisbursementDraftsErrorAction, + deleteDisbursementDraftAction, resetDisbursementDraftsAction, saveNewCsvFileAction, setDraftIdAction, @@ -61,6 +70,8 @@ export const DisbursementDraftDetails = () => { const [isResponseSuccess, setIsResponseSuccess] = useState(false); const [futureBalance, setFutureBalance] = useState(0); + const [isDeleteModalVisible, setIsDeleteModalVisible] = useState(false); + const dispatch: AppDispatch = useDispatch(); const navigate = useNavigate(); const { isLoading: csvDownloadIsLoading } = useDownloadCsvFile( @@ -259,6 +270,31 @@ export const DisbursementDraftDetails = () => { ); }; + const handleDeleteDraft = ( + event: React.MouseEvent, + ) => { + event.preventDefault(); + if (draftId) { + dispatch(deleteDisbursementDraftAction(draftId)); + setIsDeleteModalVisible(false); + navigate(Routes.DISBURSEMENT_DRAFTS); + } + }; + + const showDeleteModal = ( + event: React.MouseEvent, + ) => { + event.preventDefault(); + setIsDeleteModalVisible(true); + }; + + const hideDeleteModal = ( + event?: React.MouseEvent, + ) => { + event?.preventDefault(); + setIsDeleteModalVisible(false); + }; + const renderButtons = (variant: DisbursementStep) => { const canUserSubmit = organization.data.isApprovalRequired ? // If approval is required, a different user must submit the draft @@ -437,6 +473,15 @@ export const DisbursementDraftDetails = () => { > Changes saved + @@ -460,6 +505,34 @@ export const DisbursementDraftDetails = () => { ) : null} {renderContent()} + + + Delete draft permanently? + +
+ Clicking 'Delete draft' will permanently remove this draft and + cannot be undone. +
+
+ + + + +
); }; diff --git a/src/store/ducks/disbursementDrafts.ts b/src/store/ducks/disbursementDrafts.ts index dc90b4a..c6e9434 100644 --- a/src/store/ducks/disbursementDrafts.ts +++ b/src/store/ducks/disbursementDrafts.ts @@ -1,5 +1,6 @@ import { PayloadAction, createAsyncThunk, createSlice } from "@reduxjs/toolkit"; import { RootState } from "store"; +import { deleteDisbursementDraft } from "api/deleteDisbursementDraft"; import { getDisbursementDrafts } from "api/getDisbursementDrafts"; import { postDisbursement } from "api/postDisbursement"; import { postDisbursementFile } from "api/postDisbursementFile"; @@ -223,6 +224,31 @@ export const submitDisbursementSavedDraftAction = createAsyncThunk< }, ); +export const deleteDisbursementDraftAction = createAsyncThunk< + void, + string, + { rejectValue: RejectMessage; state: RootState } +>( + "disbursementDrafts/deleteDisbursementDraftAction", + async (draftId, { rejectWithValue, getState, dispatch }) => { + const { token } = getState().userAccount; + + try { + await deleteDisbursementDraft(token, draftId); + refreshSessionToken(dispatch); + return; + } catch (error: unknown) { + const apiError = normalizeApiError(error as ApiError); + const errorString = apiError.message; + endSessionIfTokenInvalid(errorString, dispatch); + + return rejectWithValue({ + errorString: `Error deleting draft: ${errorString}`, + }); + } + }, +); + const initialState: DisbursementDraftsInitialState = { items: [], status: undefined, @@ -357,6 +383,20 @@ const disbursementDraftsSlice = createSlice({ state.newDraftId = action.payload?.newDraftId; }, ); + // Delete disbursement draft + builder.addCase(deleteDisbursementDraftAction.pending, (state) => { + state.status = "PENDING"; + state.actionType = "delete"; + }); + builder.addCase(deleteDisbursementDraftAction.fulfilled, (state) => { + state.status = "SUCCESS"; + state.actionType = "delete"; + }); + builder.addCase(deleteDisbursementDraftAction.rejected, (state, action) => { + state.status = "ERROR"; + state.actionType = "delete"; + state.errorString = action.payload?.errorString; + }); }, }); diff --git a/src/types/index.ts b/src/types/index.ts index b888e60..4fad2d7 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -219,7 +219,7 @@ export const VerificationFieldMap: Record< NATIONAL_ID_NUMBER: "National ID Number", }; -export type DisbursementDraftAction = "save" | "submit"; +export type DisbursementDraftAction = "save" | "submit" | "delete"; export interface DisbursementInstructions { csvName?: string; From 3da50c94a3e539a994be1b0f815428f8378c27b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:56:32 +0000 Subject: [PATCH 09/11] chore(deps): bump docker/build-push-action in the all-actions group (#207) --- .github/workflows/docker_image_public_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker_image_public_release.yml b/.github/workflows/docker_image_public_release.yml index 7a56a7f..059edaa 100644 --- a/.github/workflows/docker_image_public_release.yml +++ b/.github/workflows/docker_image_public_release.yml @@ -47,7 +47,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push to DockerHub (release prd) - uses: docker/build-push-action@v6.10.0 + uses: docker/build-push-action@v6.11.0 with: push: true build-args: | @@ -82,7 +82,7 @@ jobs: $GITHUB_OUTPUT - name: Build and push to DockerHub (develop branch) - uses: docker/build-push-action@v6.10.0 + uses: docker/build-push-action@v6.11.0 with: push: true build-args: | From 0dc86593763114ea4c71e71ec41e2987be9da98d Mon Sep 17 00:00:00 2001 From: Marcelo Salloum Date: Mon, 13 Jan 2025 17:57:19 -0800 Subject: [PATCH 10/11] Bump version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 834307e..c3991f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stellar-disbursement-platform-frontend", - "version": "3.0.0", + "version": "3.1.0", "license": "Apache-2.0", "engines": { "node": ">=20.x" From 7df5c4a55edc9cb2bc2b8ba1b6063e5b47117aea Mon Sep 17 00:00:00 2001 From: Marcelo Salloum Date: Mon, 13 Jan 2025 18:03:57 -0800 Subject: [PATCH 11/11] Update changelog for 3.1.0 --- CHANGELOG.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a663ad..e5eed06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,46 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). > Place unreleased changes here. +## [3.1.0](https://github.com/stellar/stellar-disbursement-platform-frontend/releases/tag/3.1.0) ([diff](https://github.com/stellar/stellar-disbursement-platform-frontend/compare/3.0.0...3.1.0)) + +Release of the Stellar Disbursement Platform `v3.1.0`. This release introduces +key updates, including the migration to Circle's Payouts API, aligning with +Circle's latest recommendations. It also enhances platform functionality by +enabling data export through dedicated endpoints, allowing users to export +disbursements, payments, and receivers with filters. Additionally, users now +have the ability to delete disbursements in `DRAFT` or `READY` status, +streamlining data management workflows. + +> [!WARNING] +> This version is only compatible with the +> [stellar/stellar-disbursement-platform-backend] version `3.1.0`. + +### Added + +- Export functionality, allowing users to export: + - Disbursements with filters. + [#202](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/202) + - Payments and Receivers with filters. + [#203](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/203) +- Option to delete a disbursement in `DRAFT` or `READY` status. + [#205](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/205) + +### Changed + +- Update the Disbursements table by adding the status column. + [#194](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/194) + +### Security and Dependencies + +- Bump `react-router-dom` from 6.28.0 to 7.0.1. + [#197](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/197) +- Bump the minor-and-patch. + [#198](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/198), + [#200](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/200) +- Bump docker/build-push-action from 6.9.0 to 6.11.0 in the all-actions group. + [#195](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/195), + [#207](https://github.com/stellar/stellar-disbursement-platform-frontend/pull/207) + ## [3.0.0](https://github.com/stellar/stellar-disbursement-platform-frontend/releases/tag/3.0.0) ([diff](https://github.com/stellar/stellar-disbursement-platform-frontend/compare/2.1.0...3.0.0)) Release of the Stellar Disbursement Platform `v3.0.0`. In this release, receiver @@ -17,7 +57,8 @@ and `PHONE_NUMBER_AND_WALLET_ADDRESS`. If a receiver is registered with a wallet address, they can receive the payment right away without having to go through the SEP-24 registration flow. -> [!Warning] This version is only compatible with the +> [!WARNING] +> This version is only compatible with the > [stellar/stellar-disbursement-platform-backend] version `3.0.0`. ### Added @@ -90,7 +131,8 @@ option to set different distribution account signers per tenant, as well as Circle support, so the tenant can choose to run their payments through the Circle API rather than directly on the Stellar network. -> [!Warning] This version is only compatible with the +> [!WARNING] +> This version is only compatible with the > [stellar/stellar-disbursement-platform-backend] version `2.1.0`. ### Added @@ -131,7 +173,8 @@ platform simultaneously. Each organization has its own set of users, receivers, disbursements, etc. -> [!Warning] This version is only compatible with the +> [!WARNING] +> This version is only compatible with the > [stellar/stellar-disbursement-platform-backend] version 2.x.x. In order to > migrate from 1.x.x to 2.x.x, please consult the > [SDP Migration Guide](https://developers.stellar.org/network/stellar-disbursement-platform/admin-guide/single-tenant-to-multi-tenant-migration).