diff --git a/.env.acceptance b/.env.acceptance index 3a373f2a9..f0bb06a96 100644 --- a/.env.acceptance +++ b/.env.acceptance @@ -1,18 +1,15 @@ REACT_APP_ENVIRONMENT=acceptance -REACT_APP_API_HOST=https://acc.api.wonen.zaken.amsterdam.nl/ -REACT_APP_AUTH_URL="https://auth.grip-on-it.com/v2/rjsfm52t/oidc/idp/authorize?response_type=code&scope=openid&client_id=d3d664c7-bb33-4bf0-b7c9-b8bdf1199b76&redirect_uri=https%3A%2F%2Facc.wonen.zaken.amsterdam.nl%2Fauthentication%2Fcallback" +REACT_APP_API_HOST=https://api.wonen.zaken.woon-a.azure.amsterdam.nl/ # AZA -REACT_APP_AZA_FE=https://acc.wonen.zaken.amsterdam.nl/ +REACT_APP_AZA_FE=https://wonen.zaken.woon-a.azure.amsterdam.nl/ # TON -REACT_APP_API_HOST_TON=https://acc.api.ton.amsterdam.nl/ -REACT_APP_HOST_TON=https://acc.ton.amsterdam.nl/ +REACT_APP_API_HOST_TON=https://api.ton.woon-a.azure.amsterdam.nl/ +REACT_APP_HOST_TON=https://ton.woon-a.azure.amsterdam.nl/ # Keycloak +REACT_APP_AUTH_URL=https://acc.iam.amsterdam.nl/auth/ REACT_APP_KEYCLOAK_REALM=datapunt-ad-acc - -# Sentry -REACT_APP_SENTRY_PROJECT_NAME=zaken-frontend -REACT_APP_SENTRY_DSN=https://f667fd1828ec8f0c074f59f8bb3dd595@sentry.data.amsterdam.nl/10 +REACT_APP_KEYCLOAK_CLIENT_ID=wonen-zaaksysteem-frontend diff --git a/.env.development b/.env.development index 24c24891b..e801499d8 100644 --- a/.env.development +++ b/.env.development @@ -8,8 +8,13 @@ REACT_APP_API_HOST=http://localhost:8080/ REACT_APP_API_PATH=api/v1/ +# Keycloak +REACT_APP_AUTH_URL=https://acc.iam.amsterdam.nl/auth/ # wonen-zaaksysteem-frontend client only exist for iam.amsterdam (prod) +REACT_APP_KEYCLOAK_CLIENT_ID=wonen-zaaksysteem-frontend +REACT_APP_KEYCLOAK_REALM=datapunt-ad-acc + # AZA -REACT_APP_AZA_FE=https://acc.wonen.zaken.amsterdam.nl/ +REACT_APP_AZA_FE=http://localhost:2999/ # TON REACT_APP_API_HOST_TON=https://acc.api.ton.amsterdam.nl/ diff --git a/.env.production b/.env.production index 79910d78a..00864e4ed 100644 --- a/.env.production +++ b/.env.production @@ -7,7 +7,8 @@ REACT_APP_ENVIRONMENT=production REACT_APP_API_HOST=https://api.wonen.zaken.amsterdam.nl/ REACT_APP_API_PATH=api/v1/ -REACT_APP_AUTH_URL="https://auth.grip-on-it.com/v2/rjsfm52t/oidc/idp/authorize?response_type=code&scope=openid&client_id=65ba2077-9c90-4fcd-be2a-f7549e783bdc&redirect_uri=https%3A%2F%2Fwonen.zaken.amsterdam.nl%2Fauthentication%2Fcallback" +REACT_APP_AUTH_URL=https://iam.amsterdam.nl/auth/ + # AZA REACT_APP_AZA_FE=https://wonen.zaken.amsterdam.nl/ @@ -16,10 +17,6 @@ REACT_APP_AZA_FE=https://wonen.zaken.amsterdam.nl/ REACT_APP_API_HOST_TON=https://api.ton.amsterdam.nl/ REACT_APP_HOST_TON=https://ton.amsterdam.nl/ -# Sentry -REACT_APP_SENTRY_PROJECT_NAME=zaken-frontend -REACT_APP_SENTRY_DSN=https://f667fd1828ec8f0c074f59f8bb3dd595@sentry.data.amsterdam.nl/10 - # Keycloak REACT_APP_KEYCLOAK_REALM=datapunt-ad diff --git a/.env.test b/.env.test deleted file mode 100644 index c0d776ad9..000000000 --- a/.env.test +++ /dev/null @@ -1,3 +0,0 @@ -REACT_APP_API_HOST=http://localhost:8080/ -REACT_APP_API_PATH=api/v1/ -REACT_APP_AUTH_URL=/authentication/callback?code=1234567890abcdefghijkl diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0b6edc5d5..72a2cd53a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,10 +10,11 @@ jobs: main: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 + cache: 'npm' - name: Install run: npm install @@ -24,20 +25,20 @@ jobs: - name: Test run: npm test - - name: Cypress run - if: ${{ github.actor != 'dependabot[bot]' }} - uses: cypress-io/github-action@v4 - with: - record: false - # Run test against acc, otherwise a local backend is needed. - start: npm run acc - wait-on: "http://localhost:2999/" - env: - # pass GitHub token to allow accurately detecting a build vs a re-run build for Cypress Dashboard - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # pass the Dashboard record key as an environment variable for Cypress Dashboard - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - CYPRESS_TEST_USER_PASSWORD: ${{ secrets.CYPRESS_TEST_USER_PASSWORD }} + # - name: Cypress run + # if: ${{ github.actor != 'dependabot[bot]' }} + # uses: cypress-io/github-action@v4 + # with: + # record: false + # # Run test against acc, otherwise a local backend is needed. + # start: npm run acc + # wait-on: "http://localhost:2999/" + # env: + # # pass GitHub token to allow accurately detecting a build vs a re-run build for Cypress Dashboard + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # # pass the Dashboard record key as an environment variable for Cypress Dashboard + # CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + # CYPRESS_TEST_USER_PASSWORD: ${{ secrets.CYPRESS_TEST_USER_PASSWORD }} - name: Build run: docker build . diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 000000000..c4c7eba73 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npm run lint:fix diff --git a/Dockerfile b/Dockerfile index e049f0c18..151240d25 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,35 +8,35 @@ ARG COMMIT_HASH ENV DIR /var/www COPY . $DIR/ +RUN ls -la $DIR # build dirs -RUN mkdir -p $DIR/builds/acceptance -RUN mkdir -p $DIR/builds/production +RUN mkdir -p $DIR/builds/application WORKDIR $DIR - -# install dependencies +COPY package*.json $DIR/ RUN npm ci --production --unsafe-perm --ignore-scripts . # global variables -RUN echo "REACT_APP_GIT_COMMIT_HASH=$COMMIT_HASH" > .env.local +# RUN echo "REACT_APP_GIT_COMMIT_HASH=$COMMIT_HASH" > .env.local + +# remove storybook files +RUN find src -type f -name "*.stories.tsx" -delete -# build production RUN npm run build -RUN mv $DIR/build/* $DIR/builds/production/ -# build acceptance -RUN npm run build:acc -RUN mv $DIR/build/* $DIR/builds/acceptance/ +RUN mv $DIR/build/* $DIR/builds/application/ -# Use the official Nginx image as the final stage FROM nginx:stable-alpine -# Copy the nginx configuration ADD nginx.conf /etc/nginx/nginx.conf - -# Copy the build artifacts from the builder stage COPY --from=builder /var/www/builds /var/www +COPY --from=builder /var/www/env.* /var/www +COPY --from=builder /var/www/package.json /var/www/package.json + +COPY entrypoint.sh /entrypoint.sh + +RUN chmod +x /entrypoint.sh -# Start nginx +ENTRYPOINT [ "/entrypoint.sh" ] CMD nginx -g 'daemon off;' diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..deafa35ab --- /dev/null +++ b/Makefile @@ -0,0 +1,47 @@ +.PHONY: manifests deploy + +dc = docker compose + +ENVIRONMENT ?= local +HELM_ARGS = manifests/chart \ + -f manifests/values.yaml \ + -f manifests/env/${ENVIRONMENT}.yaml \ + --set image.tag=${VERSION} + +REGISTRY ?= 127.0.0.1:5001 +REPOSITORY ?= salmagundi/zaken-frontend +VERSION ?= latest + +build: + $(dc) build + +test: + echo "No tests available" + +migrate: + +push: + $(dc) push + + +manifests: + @helm template wonen-frontend $(HELM_ARGS) $(ARGS) + +deploy: manifests + helm upgrade --install wonen-frontend $(HELM_ARGS) $(ARGS) + +update-chart: + rm -rf manifests/chart + git clone --branch 1.5.2 --depth 1 git@github.com:Amsterdam/helm-application.git manifests/chart + rm -rf manifests/chart/.git + +clean: + $(dc) down -v --remove-orphans + +reset: + helm uninstall wonen-frontend + +refresh: reset build push deploy + +dev: + nohup kubycat kubycat-config.yaml > /dev/null 2>&1& diff --git a/README.md b/README.md index f058181ad..5c386431a 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,6 @@ - GitHub repository (https://github.com/Amsterdam/zaken-frontend) OIS Basis - GitHub repository dependency (https://github.com/Amsterdam/wonen-ui) OIS Basis - GitHub repository dependency (https://github.com/Amsterdam/amsterdam-react-final-form) OIS Basis -- Jenkins (https://ci.secure.amsterdam.nl/job/fixxx/job/zaken-frontend/) (over VPN) OIS Basis -- Sentry (https://sentry.data.amsterdam.nl/sentry/zaken-frontend/) OIS Basis - NPM (https://www.npmjs.com/settings/amsterdam/packages) OIS Slack #frontend-amsterdam ### Connecting to Acceptance API diff --git a/cypress.config.ts b/cypress.config.ts index 66cd17539..5eaa9e5ed 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -3,14 +3,14 @@ import { defineConfig } from "cypress" export default defineConfig({ projectId: "tbpt8b", chromeWebSecurity: false, - screenshotOnRunFailure: false, - video: false, + screenshotOnRunFailure: true, + video: true, viewportWidth: 1280, viewportHeight: 1024, defaultCommandTimeout: 10000, + pageLoadTimeout: 30000, requestTimeout: 10000, env: { - baseUrlAcc: "https://acc.api.wonen.zaken.amsterdam.nl/api/v1/", baseUrlData: "https://api.data.amsterdam.nl/", userHh: "handhaver-noreply@amsterdam.nl", userHhj: "handhavingsjurist-noreply@amsterdam.nl", @@ -36,8 +36,8 @@ export default defineConfig({ }, component: { devServer: { - framework: "create-react-app", - bundler: "webpack" + framework: "react", + bundler: "vite" } } }) diff --git a/cypress/README.md b/cypress/README.md index 300ad037a..2ac066771 100644 --- a/cypress/README.md +++ b/cypress/README.md @@ -1,16 +1,25 @@ # Zaken frontend - Cypress integration ## Local testing + +Start your local env: + +```JavaScript +npm run acc +``` + To open the Cypress UI, enter the following command after installing dependencies: - `npx cypress open` or `npm run cy` ## Run specific tests -- `npm run cy:run -- --spec "cypress/integration/my-spec.js"` +```JavaScript +npm run cy:run -- --spec "cypress/integration/my-spec.js" +``` ## Global variables -Global Cypress variables can be found in `cypress.json` in the root of the project. You can acces them by using: `Cypress.env("emailPm")`. +Global Cypress variables can be found in `cypress.config.ts` in the root of the project. You can acces them by using: `Cypress.env("emailPm")`. ## Credentials or secrets diff --git a/cypress/e2e/020_visit/visit.plan.authorization.spec.js b/cypress/e2e/020_visit/visit.plan.authorization.spec.js index 0577a0684..c3c980151 100644 --- a/cypress/e2e/020_visit/visit.plan.authorization.spec.js +++ b/cypress/e2e/020_visit/visit.plan.authorization.spec.js @@ -4,7 +4,7 @@ import visit from "../../fixtures/visit.json" describe('Plan "huisbezoek"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { @@ -29,7 +29,7 @@ describe('Plan "huisbezoek"', () => { describe('Go to "Bezoek inplannen" form', () => { it("Click on task Bezoek inplannen", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as("getTasks") cy.wait("@getTasks").then(() => { cy.get("tbody>tr") @@ -39,7 +39,7 @@ describe('Plan "huisbezoek"', () => { }) it("Bezoek inplannen page is visible", () => { - const url = `${Cypress.env("baseUrlAcc")}themes/*/schedule-types/` + const url = `**/themes/*/schedule-types/` cy.intercept(url).as("getScheduleTypes") cy.wait("@getScheduleTypes").then(() => { cy.get("h1") diff --git a/cypress/e2e/020_visit/visit.plan.spec.js b/cypress/e2e/020_visit/visit.plan.spec.js index b64bd439f..0d332926f 100644 --- a/cypress/e2e/020_visit/visit.plan.spec.js +++ b/cypress/e2e/020_visit/visit.plan.spec.js @@ -10,7 +10,7 @@ beforeEach(() => { describe('Test visit.plan.spec', () => { it("Go to Adresoverzicht and select address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/`; + const url = `**/addresses/*/cases/`; cy.intercept(url).as("getCases"); cy.visit(`/adres/${address.bagId}`); cy.wait("@getCases").then(() => { @@ -40,7 +40,7 @@ describe('Test visit.plan.spec', () => { cy.get(`[data-testid="submit"]`).click(); - const urlCases = `${Cypress.env("baseUrlAcc")}cases/*/`; + const urlCases = `**/cases/*/`; cy.intercept(urlCases).as("getCase"); cy.wait("@getCase").then(() => { cy.get("tbody>tr").contains("td", "Bezoek inplannen"); @@ -50,9 +50,7 @@ describe('Test visit.plan.spec', () => { it("Schedule `Huisbezoek`", () => { cy.goToCaseDetailPage(); - const urlScheduleTypes = `${Cypress.env( - "baseUrlAcc" - )}themes/*/schedule-types/`; + const urlScheduleTypes = "**/themes/*/schedule-types/"; cy.intercept(urlScheduleTypes).as("getScheduleTypes"); cy.get("tbody>tr").contains("td", "Bezoek inplannen").click(); @@ -88,7 +86,7 @@ describe('Test visit.plan.spec', () => { .contains("Bezoek inplannen") .click(); - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/`; + const url = `**/cases/*/events/`; cy.intercept(url).as("getEvents"); cy.wait("@getEvents").then(() => { cy.history("Bezoek ingepland", "Datum"); diff --git a/cypress/e2e/020_visit/visit.result.access.granted.spec.js b/cypress/e2e/020_visit/visit.result.access.granted.spec.js index fb91a96ae..ce2a016bf 100644 --- a/cypress/e2e/020_visit/visit.result.access.granted.spec.js +++ b/cypress/e2e/020_visit/visit.result.access.granted.spec.js @@ -12,14 +12,14 @@ beforeEach(() => { describe("Test visit.result.access.granted.spec", () => { it("Mock TOP result for visit", () => { - const urlCases = `${Cypress.env("baseUrlAcc")}addresses/*/cases/`; + const urlCases = `**/addresses/*/cases/`; cy.intercept(urlCases).as("getCases"); cy.visit(`/adres/${address.bagId}`); cy.wait("@getCases").then(() => { cy.get("h1").contains(`${address.street}, ${address.zipCode}`); }); - const urlCase = `${Cypress.env("baseUrlAcc")}cases/*/`; + const urlCase = `**/cases/*/`; cy.intercept(urlCase).as("getCase"); cy.scrollTo(0, 400); @@ -42,7 +42,7 @@ describe("Test visit.result.access.granted.spec", () => { cy.testDueDate("tbody>tr>td", 0); - const url = `${Cypress.env("baseUrlAcc")}users/`; + const url = `**/users/`; cy.intercept(url).as("getUsers"); cy.visit(`/zaken/${caseId}/huisbezoek/${taskId}`); @@ -73,7 +73,7 @@ describe("Test visit.result.access.granted.spec", () => { cy.get('[data-testid="notes"').type(visit.notes); - const url = `${Cypress.env("baseUrlAcc")}cases/*/`; + const url = `**/cases/*/`; cy.intercept(url).as("getDebriefTask"); cy.get('button[data-testid="submit"]').contains("Toevoegen").click(); diff --git a/cypress/e2e/020_visit/visit.result.nobody.present.hold.spec.js b/cypress/e2e/020_visit/visit.result.nobody.present.hold.spec.js index 3f3f5cf01..be1ed6c93 100644 --- a/cypress/e2e/020_visit/visit.result.nobody.present.hold.spec.js +++ b/cypress/e2e/020_visit/visit.result.nobody.present.hold.spec.js @@ -13,7 +13,7 @@ describe('Result "huisbezoek" with nobody present and hold', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -33,7 +33,7 @@ describe('Result "huisbezoek" with nobody present and hold', () => { it('Intercept TOP URL and load page', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getTasks') cy.wait('@getTasks').then(({ response }) => { @@ -49,7 +49,7 @@ describe('Result "huisbezoek" with nobody present and hold', () => { // check dueDate cy.testDueDate("tbody>tr>td", 0) - const url = `${Cypress.env("baseUrlAcc")}users/` + const url = `**/users/` cy.intercept(url).as('getUsers') cy.visit(`/zaken/${caseId}/huisbezoek/${taskId}`) @@ -105,7 +105,7 @@ describe('Result "huisbezoek" with nobody present and hold', () => { }) it('Submit form and check for plan new visit', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as('getEvents') cy.get('button[data-testid="submit"]') diff --git a/cypress/e2e/020_visit/visit.result.nobody.present.spec.js b/cypress/e2e/020_visit/visit.result.nobody.present.spec.js index 0b4c53b9c..431b29cc1 100644 --- a/cypress/e2e/020_visit/visit.result.nobody.present.spec.js +++ b/cypress/e2e/020_visit/visit.result.nobody.present.spec.js @@ -13,7 +13,7 @@ describe('Result "huisbezoek" with nobody present', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -33,7 +33,7 @@ describe('Result "huisbezoek" with nobody present', () => { it('Intercept TOP URL and load page', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getTasks') cy.wait('@getTasks').then(({ response }) => { @@ -50,7 +50,7 @@ describe('Result "huisbezoek" with nobody present', () => { cy.testDueDate("tbody>tr>td", 0) - const url = `${Cypress.env("baseUrlAcc")}users/` + const url = `**/users/` cy.intercept(url).as('getUsers') cy.visit(`/zaken/${caseId}/huisbezoek/${taskId}`) @@ -121,7 +121,7 @@ describe('Result "huisbezoek" with nobody present', () => { }) it('Submit form and check for plan new visit', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as('getEvents') cy.get('button[data-testid="submit"]') diff --git a/cypress/e2e/025_taskOverview/01-select.task.spec.js b/cypress/e2e/025_taskOverview/01-select.task.spec.js index 0efe76453..64651f1bf 100644 --- a/cypress/e2e/025_taskOverview/01-select.task.spec.js +++ b/cypress/e2e/025_taskOverview/01-select.task.spec.js @@ -10,14 +10,14 @@ beforeEach(() => { describe("Test select.task.spec", () => { it("Pick up task and put away in Takenoverzicht", () => { - const urlTasks = `${Cypress.env("baseUrlAcc")}tasks/*`; + const urlTasks = `**/tasks/*`; cy.intercept(urlTasks).as("getTasks"); cy.visit("/taken"); cy.wait("@getTasks").then(() => { cy.get("h1").contains("Takenoverzicht"); }); - const urlTasksUpdate = `${Cypress.env("baseUrlAcc")}tasks/*/`; + const urlTasksUpdate = `**/tasks/*/`; cy.intercept(urlTasksUpdate).as("updateTask"); const checkBox = cy.get('[type="checkbox"][title="Beschikbaar"]').first(); checkBox.check(); diff --git a/cypress/e2e/030_debrief/01-debrief.no.violation.spec.js b/cypress/e2e/030_debrief/01-debrief.no.violation.spec.js index 5e508188f..53ca085b8 100644 --- a/cypress/e2e/030_debrief/01-debrief.no.violation.spec.js +++ b/cypress/e2e/030_debrief/01-debrief.no.violation.spec.js @@ -20,7 +20,7 @@ describe("Test debrief.no.violation.spec", () => { cy.get('[data-testid="feedback"]').type(debrief.descriptionNoViolation); - const url = `${Cypress.env("baseUrlAcc")}cases/*/`; + const url = `**/cases/*/`; cy.intercept(url).as("getNextTask"); cy.get('button[data-testid="submit"]') @@ -58,7 +58,7 @@ describe("Test debrief.no.violation.spec", () => { .contains("Taak afronden") .click(); - const urlEvents = `${Cypress.env("baseUrlAcc")}cases/*/events/`; + const urlEvents = `**/cases/*/events/`; cy.intercept(urlEvents).as("getEvents"); cy.wait("@getEvents").then(() => { cy.history(debrief.noViolationNextTask, roles.PM); diff --git a/cypress/e2e/030_debrief/01a-debrief.other.theme.spec.js b/cypress/e2e/030_debrief/01a-debrief.other.theme.spec.js index cdcf41829..2b0c7a75b 100644 --- a/cypress/e2e/030_debrief/01a-debrief.other.theme.spec.js +++ b/cypress/e2e/030_debrief/01a-debrief.other.theme.spec.js @@ -11,7 +11,7 @@ describe('Process Debrief - Other Theme"', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -33,7 +33,7 @@ describe('Process Debrief - Other Theme"', () => { it('Intercept Debrief URL and load page', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getTasks') cy.wait('@getTasks').then(({ response }) => { @@ -72,7 +72,7 @@ describe('Process Debrief - Other Theme"', () => { }) it('Submit form and check debrief status', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.get('button[data-testid="submit"]') diff --git a/cypress/e2e/030_debrief/01b-debrief.violation.spec.js b/cypress/e2e/030_debrief/01b-debrief.violation.spec.js index c25936162..b9622c28c 100644 --- a/cypress/e2e/030_debrief/01b-debrief.violation.spec.js +++ b/cypress/e2e/030_debrief/01b-debrief.violation.spec.js @@ -11,7 +11,7 @@ describe('Process Debrief - Violation"', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -31,7 +31,7 @@ describe('Process Debrief - Violation"', () => { it('Intercept Debrief URL and load page', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getTasks') cy.wait('@getTasks').then(({ response }) => { @@ -68,7 +68,7 @@ describe('Process Debrief - Violation"', () => { }) it('Submit form and check debrief status', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.get('button[data-testid="submit"]') diff --git a/cypress/e2e/030_debrief/01c-debrief.authorization.spec.js b/cypress/e2e/030_debrief/01c-debrief.authorization.spec.js index 9da57f4c7..e4ed106f1 100644 --- a/cypress/e2e/030_debrief/01c-debrief.authorization.spec.js +++ b/cypress/e2e/030_debrief/01c-debrief.authorization.spec.js @@ -11,7 +11,7 @@ describe('Process Debrief - Authorization required"', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -33,7 +33,7 @@ describe('Process Debrief - Authorization required"', () => { it('Intercept Debrief URL and load page', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getTasks') cy.wait('@getTasks').then(({ response }) => { diff --git a/cypress/e2e/030_debrief/02-feedback.reporter.spec.js b/cypress/e2e/030_debrief/02-feedback.reporter.spec.js index 907635c4e..a478cd71a 100644 --- a/cypress/e2e/030_debrief/02-feedback.reporter.spec.js +++ b/cypress/e2e/030_debrief/02-feedback.reporter.spec.js @@ -5,7 +5,7 @@ import address from "../../fixtures/address.json" describe('Process Feedback reporter"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -48,7 +48,7 @@ describe('Process Feedback reporter"', () => { }) it("Check Terugkoppeling melder event in history", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.wait('@getNextTask').then(() => { diff --git a/cypress/e2e/030_debrief/03-report.short.spec.js b/cypress/e2e/030_debrief/03-report.short.spec.js index c9d4e7455..dda440614 100644 --- a/cypress/e2e/030_debrief/03-report.short.spec.js +++ b/cypress/e2e/030_debrief/03-report.short.spec.js @@ -33,7 +33,7 @@ describe("Test report.short.spec", () => { cy.get(`[role="dialog"]`).find("button").contains("Taak afronden").click(); - const url = `${Cypress.env("baseUrlAcc")}cases/*/`; + const url = `**/cases/*/`; cy.intercept(url).as("getNextTask"); cy.wait("@getNextTask").then(() => { diff --git a/cypress/e2e/030_debrief/03-report.spec.js b/cypress/e2e/030_debrief/03-report.spec.js index 20f1d1d6f..c017b67e3 100644 --- a/cypress/e2e/030_debrief/03-report.spec.js +++ b/cypress/e2e/030_debrief/03-report.spec.js @@ -5,7 +5,7 @@ import address from "../../fixtures/address.json" describe('Process Report Visit"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -132,7 +132,7 @@ describe('Process Report Visit"', () => { cy.testDueDate("tbody>tr>td", 2) }) it("Check next task is 'Nakijken aanschrijving(en)'", () => { - // const url = `${Cypress.env("baseUrlAcc")}cases/*/` + // const url = `**/cases/*/` // cy.intercept(url).as('getNextTask') // cy.wait('@getNextTask').then(() => { diff --git a/cypress/e2e/030_debrief/debrief.additional.research.spec.js b/cypress/e2e/030_debrief/debrief.additional.research.spec.js index 24c2e5e63..57670d8d3 100644 --- a/cypress/e2e/030_debrief/debrief.additional.research.spec.js +++ b/cypress/e2e/030_debrief/debrief.additional.research.spec.js @@ -11,7 +11,7 @@ describe('Process Debrief - No violation"', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -33,7 +33,7 @@ describe('Process Debrief - No violation"', () => { it('Intercept Debrief URL and load page', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getTasks') cy.wait('@getTasks').then(({ response }) => { @@ -70,7 +70,7 @@ describe('Process Debrief - No violation"', () => { }) it('Submit form and check debrief status', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.get('button[data-testid="submit"]') diff --git a/cypress/e2e/040_summon/01.summon.warning.vv.spec.js b/cypress/e2e/040_summon/01.summon.warning.vv.spec.js index e4e73d66b..34d11a67d 100644 --- a/cypress/e2e/040_summon/01.summon.warning.vv.spec.js +++ b/cypress/e2e/040_summon/01.summon.warning.vv.spec.js @@ -6,7 +6,7 @@ import summon from "../../fixtures/summon.json" describe('Process Summon"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -85,7 +85,7 @@ describe('Process Summon"', () => { }) it('Submit form and check debrief status', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.get('button[data-testid="submit"]') @@ -111,7 +111,7 @@ describe('Process Summon"', () => { }) it("Check next task is 'Uitzetten vervolgstap'", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.wait('@getNextTask').then(() => { diff --git a/cypress/e2e/040_summon/02.summon.closing.spec.js b/cypress/e2e/040_summon/02.summon.closing.spec.js index bdcfc80f0..6f86c2179 100644 --- a/cypress/e2e/040_summon/02.summon.closing.spec.js +++ b/cypress/e2e/040_summon/02.summon.closing.spec.js @@ -6,7 +6,7 @@ import summon from "../../fixtures/summon.json" describe('Process Summon"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -76,7 +76,7 @@ describe('Process Summon"', () => { }) it('Submit form and check debrief status', () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.get('button[data-testid="submit"]') @@ -99,7 +99,7 @@ describe('Process Summon"', () => { }) it("Check next task is 'Uitzetten vervolgstap'", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.wait('@getNextTask').then(() => { diff --git a/cypress/e2e/050_nextStep/next.step.close.case.spec.js b/cypress/e2e/050_nextStep/next.step.close.case.spec.js index 5d2e92b78..adab1ca73 100644 --- a/cypress/e2e/050_nextStep/next.step.close.case.spec.js +++ b/cypress/e2e/050_nextStep/next.step.close.case.spec.js @@ -4,7 +4,7 @@ import address from "../../fixtures/address.json" describe('Select Next Step - closing case"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -23,7 +23,7 @@ describe('Select Next Step - closing case"', () => { }) it("Select to close this case", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.wait('@getNextTask').then(() => { @@ -48,7 +48,7 @@ describe('Select Next Step - closing case"', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as('getEvents') cy.wait('@getEvents').then(() => { cy.get("h1").contains("Zaakdetails") diff --git a/cypress/e2e/050_nextStep/next.step.recheck.spec.js b/cypress/e2e/050_nextStep/next.step.recheck.spec.js index d4f7a9904..e5336aa75 100644 --- a/cypress/e2e/050_nextStep/next.step.recheck.spec.js +++ b/cypress/e2e/050_nextStep/next.step.recheck.spec.js @@ -4,7 +4,7 @@ import address from "../../fixtures/address.json" describe('Select Next Step - closing case"', () => { it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -23,7 +23,7 @@ describe('Select Next Step - closing case"', () => { }) it("Select to close this case", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as('getNextTask') cy.wait('@getNextTask').then(() => { @@ -48,7 +48,7 @@ describe('Select Next Step - closing case"', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as('getEvents') cy.wait('@getEvents').then(() => { cy.get("h1").contains("Zaakdetails") diff --git a/cypress/e2e/060_closeCase/1.close.case.handhaver.spec.js b/cypress/e2e/060_closeCase/1.close.case.handhaver.spec.js index 30e5d8271..ea0b63927 100644 --- a/cypress/e2e/060_closeCase/1.close.case.handhaver.spec.js +++ b/cypress/e2e/060_closeCase/1.close.case.handhaver.spec.js @@ -10,7 +10,7 @@ beforeEach(() => { describe("Select Next Step - closing case as handhaver", () => { it('Go to Adresoverzicht and case has task "Afsluiten zaak"', () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/`; + const url = `**/addresses/*/cases/`; cy.intercept(url).as("getCases"); cy.visit(`/adres/${address.bagId}`); cy.wait("@getCases").then(() => { @@ -28,7 +28,7 @@ describe("Select Next Step - closing case as handhaver", () => { cy.get("tbody>tr>td").eq(2).should("contain", roles.PM); - const url = `${Cypress.env("baseUrlAcc")}themes/*/case-close-reasons/`; + const url = `**/themes/*/case-close-reasons/`; cy.intercept(url).as("getCloseReasons"); cy.get("tbody>tr").contains("td", "Zaak afsluiten").click(); diff --git a/cypress/e2e/060_closeCase/2.close.case.handhavingsjurist.spec.js b/cypress/e2e/060_closeCase/2.close.case.handhavingsjurist.spec.js index 189729216..7168e8c2d 100644 --- a/cypress/e2e/060_closeCase/2.close.case.handhavingsjurist.spec.js +++ b/cypress/e2e/060_closeCase/2.close.case.handhavingsjurist.spec.js @@ -10,7 +10,7 @@ beforeEach(() => { describe("Select Next Step - closing case as handhavingsjurist", () => { it('Go to Adresoverzicht and case has task "Afsluiten zaak"', () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/`; + const url = `**/addresses/*/cases/`; cy.intercept(url).as("getCases"); cy.visit(`/adres/${address.bagId}`); cy.wait("@getCases").then(() => { @@ -28,7 +28,7 @@ describe("Select Next Step - closing case as handhavingsjurist", () => { cy.get("tbody>tr>td").eq(2).should("contain", roles.PM); - const url = `${Cypress.env("baseUrlAcc")}themes/*/case-close-reasons/`; + const url = `**/themes/*/case-close-reasons/`; cy.intercept(url).as("getCloseReasons"); cy.get("tbody>tr").contains("td", "Zaak afsluiten").click(); diff --git a/cypress/e2e/060_closeCase/3.close.case.toezichthouder.spec.js b/cypress/e2e/060_closeCase/3.close.case.toezichthouder.spec.js index ee25057c1..aa6236130 100644 --- a/cypress/e2e/060_closeCase/3.close.case.toezichthouder.spec.js +++ b/cypress/e2e/060_closeCase/3.close.case.toezichthouder.spec.js @@ -10,7 +10,7 @@ beforeEach(() => { describe("Select Next Step - closing case as toezichthouder", () => { it('Go to Adresoverzicht and case has task "Afsluiten zaak"', () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/`; + const url = `**/addresses/*/cases/`; cy.intercept(url).as("getCases"); cy.visit(`/adres/${address.bagId}`); cy.wait("@getCases").then(() => { @@ -28,7 +28,7 @@ describe("Select Next Step - closing case as toezichthouder", () => { cy.get("tbody>tr>td").eq(2).should("contain", roles.PM); - const url = `${Cypress.env("baseUrlAcc")}themes/*/case-close-reasons/`; + const url = `**/themes/*/case-close-reasons/`; cy.intercept(url).as("getCloseReasons"); cy.get("tbody>tr").contains("td", "Zaak afsluiten").click(); diff --git a/cypress/e2e/060_closeCase/4.close.case.no.violation.spec.js b/cypress/e2e/060_closeCase/4.close.case.no.violation.spec.js index f1e0e8ece..f3e04bc88 100644 --- a/cypress/e2e/060_closeCase/4.close.case.no.violation.spec.js +++ b/cypress/e2e/060_closeCase/4.close.case.no.violation.spec.js @@ -11,7 +11,7 @@ beforeEach(() => { describe('Close case as projectmedwerker"', () => { it('Go to Adresoverzicht and case has task "Afsluiten zaak"', () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/`; + const url = `**/addresses/*/cases/`; cy.intercept(url).as("getCases"); cy.visit(`/adres/${address.bagId}`); cy.wait("@getCases").then(() => { @@ -26,7 +26,7 @@ describe('Close case as projectmedwerker"', () => { it("Intercept Afronding URL and load page", () => { cy.goToCaseDetailPage(); - const url = `${Cypress.env("baseUrlAcc")}cases/*/`; + const url = `**/cases/*/`; cy.intercept(url).as("getTasks"); //force intercept @@ -42,7 +42,7 @@ describe('Close case as projectmedwerker"', () => { const caseId = closingTask?.case; const taskId = closingTask.case_user_task_id; - const url = `${Cypress.env("baseUrlAcc")}themes/*/case-close-reasons`; + const url = `**/themes/*/case-close-reasons`; cy.intercept(url).as("getCloseReasons"); cy.get("h4").contains(debrief.closingTask2); cy.get("tbody>tr") @@ -79,7 +79,7 @@ describe('Close case as projectmedwerker"', () => { .contains("Verwerken") .click(); - const urlEvents = `${Cypress.env("baseUrlAcc")}cases/*/events/`; + const urlEvents = `**/cases/*/events/`; cy.intercept(urlEvents).as("getEvents"); cy.wait("@getEvents").then(() => { cy.history("Zaak afgerond", "Projectmedewerker"); diff --git a/cypress/e2e/070_extra_tasks/01.correspondence.spec.js b/cypress/e2e/070_extra_tasks/01.correspondence.spec.js index 4ee2a74e1..10d634206 100644 --- a/cypress/e2e/070_extra_tasks/01.correspondence.spec.js +++ b/cypress/e2e/070_extra_tasks/01.correspondence.spec.js @@ -11,7 +11,7 @@ describe('Add extra task "Correspondentie', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { @@ -40,7 +40,7 @@ describe('Add extra task "Correspondentie', () => { describe("Submit in form 'Taak opvoeren'", () => { it("Select Task Correspondence", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/processes/` + const url = `**/cases/*/processes/` cy.intercept(url).as("getProcesses") cy.wait("@getProcesses").then(() => { cy.get('[data-testid="workflowProcess"]') @@ -59,7 +59,7 @@ describe('Add extra task "Correspondentie', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as("getEvents") cy.wait("@getEvents").then(() => { cy.get("h4") @@ -77,7 +77,7 @@ describe('Add extra task "Correspondentie', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -129,7 +129,7 @@ describe('Add extra task "Correspondentie', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { diff --git a/cypress/e2e/070_extra_tasks/02.callback.request.spec.js b/cypress/e2e/070_extra_tasks/02.callback.request.spec.js index ce0518c09..8b0618ac6 100644 --- a/cypress/e2e/070_extra_tasks/02.callback.request.spec.js +++ b/cypress/e2e/070_extra_tasks/02.callback.request.spec.js @@ -11,7 +11,7 @@ describe('Add extra task "Callback request', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { @@ -40,7 +40,7 @@ describe('Add extra task "Callback request', () => { describe("Submit in form 'Taak opvoeren'", () => { it("Select Task Terugbelverzoek", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/processes/` + const url = `**/cases/*/processes/` cy.intercept(url).as("getProcesses") cy.wait("@getProcesses").then(() => { cy.get('[data-testid="workflowProcess"]') @@ -59,7 +59,7 @@ describe('Add extra task "Callback request', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as("getEvents") cy.wait("@getEvents").then(() => { cy.get("h4") @@ -77,7 +77,7 @@ describe('Add extra task "Callback request', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -129,7 +129,7 @@ describe('Add extra task "Callback request', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { diff --git a/cypress/e2e/070_extra_tasks/03.objection.file.spec.js b/cypress/e2e/070_extra_tasks/03.objection.file.spec.js index 57147b1ad..65972f55c 100644 --- a/cypress/e2e/070_extra_tasks/03.objection.file.spec.js +++ b/cypress/e2e/070_extra_tasks/03.objection.file.spec.js @@ -11,7 +11,7 @@ describe('Add extra task "Objection File', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { @@ -40,7 +40,7 @@ describe('Add extra task "Objection File', () => { describe("Submit in form 'Taak opvoeren'", () => { it("Select Task Aanleveren bezwaardossier", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/processes/` + const url = `**/cases/*/processes/` cy.intercept(url).as("getProcesses") cy.wait("@getProcesses").then(() => { cy.get('[data-testid="workflowProcess"]') @@ -59,7 +59,7 @@ describe('Add extra task "Objection File', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as("getEvents") cy.wait("@getEvents").then(() => { cy.get("h4") @@ -77,7 +77,7 @@ describe('Add extra task "Objection File', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as('getCases') cy.visit(`/adres/${address.bagId}`) cy.wait('@getCases').then(() => { @@ -130,7 +130,7 @@ describe('Add extra task "Objection File', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { diff --git a/cypress/e2e/070_extra_tasks/04.new.signal.spec.js b/cypress/e2e/070_extra_tasks/04.new.signal.spec.js index eefd60494..c345ff2bd 100644 --- a/cypress/e2e/070_extra_tasks/04.new.signal.spec.js +++ b/cypress/e2e/070_extra_tasks/04.new.signal.spec.js @@ -11,7 +11,7 @@ describe('Add extra task "New signal', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { @@ -40,7 +40,7 @@ describe('Add extra task "New signal', () => { describe("Submit in form 'Taak opvoeren'", () => { it("Select Task Verwerken nieuwe melding", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/processes/` + const url = `**/cases/*/processes/` cy.intercept(url).as("getProcesses") cy.wait("@getProcesses").then(() => { cy.get('[data-testid="workflowProcess"]') @@ -59,7 +59,7 @@ describe('Add extra task "New signal', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as("getEvents") cy.wait("@getEvents").then(() => { cy.get("h4") diff --git a/cypress/e2e/070_extra_tasks/05.extra.information.spec.js b/cypress/e2e/070_extra_tasks/05.extra.information.spec.js index e4e4da59f..66a2b60db 100644 --- a/cypress/e2e/070_extra_tasks/05.extra.information.spec.js +++ b/cypress/e2e/070_extra_tasks/05.extra.information.spec.js @@ -11,7 +11,7 @@ describe('Add extra task "Extra Information', () => { }) it("Go to Adresoverzicht and check address", () => { - const url = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const url = `**/addresses/*/cases/` cy.intercept(url).as("getCases") cy.visit(`/adres/${address.bagId}`) cy.wait("@getCases").then(() => { @@ -40,7 +40,7 @@ describe('Add extra task "Extra Information', () => { describe("Submit in form 'Taak opvoeren'", () => { it("Select Task Extra informatie", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/processes/` + const url = `**/cases/*/processes/` cy.intercept(url).as("getProcesses") cy.wait("@getProcesses").then(() => { cy.get('[data-testid="workflowProcess"]') @@ -59,7 +59,7 @@ describe('Add extra task "Extra Information', () => { }) it("Request is successfully processed", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/events/` + const url = `**/cases/*/events/` cy.intercept(url).as("getEvents") cy.wait("@getEvents").then(() => { cy.get("h4") diff --git a/cypress/support/address.js b/cypress/support/address.js index 4a5bb2ebd..9e20434a9 100644 --- a/cypress/support/address.js +++ b/cypress/support/address.js @@ -11,7 +11,7 @@ Cypress.Commands.add("selectAddress", (queryString, addressString) => { const urlAddress = `${Cypress.env("baseUrlData")}atlas/search/postcode/*` cy.intercept(urlAddress).as("getAddress") - const urlCases = `${Cypress.env("baseUrlAcc")}addresses/*/cases/` + const urlCases = `**/addresses/*/cases/` cy.intercept(urlCases).as("getCases") cy.visit(`/?query=${queryString}`) diff --git a/cypress/support/case.js b/cypress/support/case.js index 61c983dae..2e93a2aee 100644 --- a/cypress/support/case.js +++ b/cypress/support/case.js @@ -7,7 +7,7 @@ const PATH = "cypress/fixtures/case.json" Cypress.Commands.add("setCaseId", () => { - const url = `${Cypress.env("baseUrlAcc")}cases/*/` + const url = `**/cases/*/` cy.intercept(url).as("getCase") cy.wait("@getCase", { timeout: 20000 }) diff --git a/cypress/support/kcLogin.js b/cypress/support/kcLogin.js index e319ec977..47ed6b01a 100644 --- a/cypress/support/kcLogin.js +++ b/cypress/support/kcLogin.js @@ -1,6 +1,6 @@ Cypress.Commands.add("kcLogin", (username, password) => { - const kcRoot = "https://iam.amsterdam.nl"; + const kcRoot = "https://acc.iam.amsterdam.nl"; const kcRealm = "datapunt-ad-acc"; const kcClient = "wonen-zaaksysteem-frontend"; const kcRedirectUri = "http://localhost:2999/"; @@ -58,7 +58,7 @@ Cypress.Commands.add("kcLogin", (username, password) => { }); Cypress.Commands.add("kcLogout", () => { - const kcRoot = "https://iam.amsterdam.nl"; + const kcRoot = "https://acc.iam.amsterdam.nl"; const kcRealm = "datapunt-ad-acc"; const kcRedirectUri = "http://localhost:2999/"; return cy.request({ diff --git a/cypress/support/login.js b/cypress/support/login.js index 7f25966a6..81d5dd673 100644 --- a/cypress/support/login.js +++ b/cypress/support/login.js @@ -32,7 +32,7 @@ Cypress.Commands.add("login", (email, password) => { cy.get("#password").should("be.visible").type(password, { log: false }); - const url = `${Cypress.env("baseUrlAcc")}is-authorized/`; + const url = `**/is-authorized/`; cy.intercept(url).as("isAuthorized"); cy.get("#kc-login").click(); diff --git a/cypress_testflow_complete.json b/cypress_testflow_complete.json deleted file mode 100644 index 88dd341a1..000000000 --- a/cypress_testflow_complete.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "projectId": "tbpt8b", - "chromeWebSecurity": false, - "baseUrl": "http://localhost:2999/", - "screenshotOnRunFailure": false, - "video": false, - "viewportWidth": 1280, - "viewportHeight": 1024, - "env": { - "baseUrlAcc": "https://acc.api.wonen.zaken.amsterdam.nl/api/v1/", - "baseUrlData": "https://api.data.amsterdam.nl/", - "userHh": "handhaver-noreply@amsterdam.nl", - "userHhj": "handhavingsjurist-noreply@amsterdam.nl", - "userPm": "projectmedewerker-noreply@amsterdam.nl", - "userTh": "toezichthouder-noreply@amsterdam.nl" - }, - "testFiles": [ - "010_addCase/themes/vakantieverhuur/add.case.anonymous.no.ad.spec.js", - "020_visit/visit.plan.spec.js", - "020_visit/visit.result.nobody.present.spec.js", - "020_visit/visit.plan.spec.js", - "020_visit/visit.result.access.granted.spec.js", - "030_debrief/01-debrief.no.violation.spec.js", - "030_debrief/03-report.short.spec.js", - "050_nextStep/*.js", - "060_closeCase/*.js", - "010_addCase/themes/vakantieverhuur/add.case.not.anonymous.ad.spec.js", - "020_visit/visit.plan.spec.js", - "020_visit/visit.result.access.granted.spec.js", - "030_debrief/01a-debrief.other.theme.spec.js", - "030_debrief/03-report.short.spec.js", - "050_nextStep/*.js", - "060_closeCase/*.js", - "010_addCase/themes/vakantieverhuur/add.case.not.anonymous.ad.spec.js", - "020_visit/visit.plan.spec.js", - "020_visit/visit.result.access.granted.spec.js", - "030_debrief/01b-debrief.violation.spec.js", - "030_debrief/03-report.spec.js", - "040_summon/summon.spec.js", - "050_nextStep/next.step.recheck.spec.js", - "020_visit/visit.plan.spec.js", - "010_addCase/themes/vakantieverhuur/add.case.anonymous.no.ad.spec.js", - "020_visit/visit.plan.spec.js", - "020_visit/visit.result.access.granted.spec.js", - "030_debrief/01c-debrief.authorization.spec.js", - "020_visit/visit.plan.authorization.spec.js", - "010_addCase/themes/vakantieverhuur/add.case.errors.spec.js", - "010_addCase/roles/handhaver/add.case.disabled.spec.js", - "010_addCase/roles/handhavingsjurist/add.case.disabled.spec.js", - "010_addCase/roles/toezichthouder/add.case.disabled.spec.js", - "010_addCase/themes/vakantieverhuur/add.case.anonymous.no.ad.spec.js", - "070_extra_tasks/*" - ] - } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..8f6b0dccc --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3" +services: + zaken-frontend: + build: + context: . + dockerfile: Dockerfile + container_name: zaken-frontend + image: ${REGISTRY:-127.0.0.1:5001}/${REPOSITORY:-salmagundi/zaken-frontend}:${VERSION:-latest} + ports: + - "8081:8000" diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 000000000..e8ce34dd2 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -x + +# This script will read all the env variables prefixed with REACT_APP on start of the container and write them to the env.js file +# The code uses this file as the env variables instead of the .env files +# This makes it possible to use a single build artifact/image for multiple environment + +echo "window.env = {" >> /var/www/application/config/env.js + +for var in $(printenv); do + if [[ $var == REACT_APP* ]]; then + key=$(echo $var | cut -f1 -d=) + value=$(echo $var | cut -f2 -d=) + echo " \"$key\": \"$value\"," >> /var/www/application/config/env.js + fi +done + +echo "}" >> /var/www/application/config/env.js + +exec "$@" \ No newline at end of file diff --git a/index.html b/index.html index a6582963b..f907a7237 100644 --- a/index.html +++ b/index.html @@ -7,14 +7,13 @@ - + %REACT_APP_PAGE_TITLE% - + + +
@@ -26,7 +25,6 @@ if (elem != null) elem.style.display = "block"; }, 4000); - + + diff --git a/nginx.conf b/nginx.conf index 3865c43e8..28f994849 100644 --- a/nginx.conf +++ b/nginx.conf @@ -5,38 +5,7 @@ events { http { include mime.types; - # Acceptance - - server { - server_name acc.wonen.zaken.amsterdam.nl; - - listen 8000; - - gzip on; - gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; - - location / { - - if ($request_method != GET) { - return 405; - } - - gzip_static on; - - root /var/www/acceptance; - - try_files $uri /index.html; - - location /static/ { - expires max; - } - } - } - - # Production - server { - server_name wonen.zaken.amsterdam.nl; listen 8000; @@ -51,7 +20,7 @@ http { gzip_static on; - root /var/www/production; + root /var/www/application; try_files $uri /index.html; diff --git a/package-lock.json b/package-lock.json index 610f8ce96..44fdfbe45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,61 +10,59 @@ "dependencies": { "@amsterdam/amsterdam-react-final-form": "^0.1.140", "@amsterdam/asc-assets": "^0.38.0", - "@amsterdam/asc-ui": "^0.37.0", - "@amsterdam/wonen-ui": "^1.0.49", + "@amsterdam/asc-ui": "^0.38.0", + "@amsterdam/wonen-ui": "^1.0.53", "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", - "@sentry/react": "^7.106.0", - "@testing-library/jest-dom": "^5.16.5", + "@testing-library/jest-dom": "^ 6.4.5", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.4.3", "@types/lodash.debounce": "^4.0.7", "@types/lodash.isempty": "^4.4.7", "@types/lodash.merge": "^4.6.7", - "@types/node": "^20.11.25", - "@types/qs": "^6.9.7", + "@types/qs": "^6.9.15", "@types/react": "^17.0.43", "@types/react-dom": "^18.0.3", "@types/resize-observer-browser": "^0.1.7", "@types/styled-components": "^5.1.26", - "@vitejs/plugin-react": "^4.2.1", - "axios": "^1.6.7", - "dayjs": "^1.11.9", + "@vitejs/plugin-react": "^4.3.1", + "axios": "^1.7.3", + "dayjs": "^1.11.11", "env-cmd": "^10.1.0", "eslint-config-react-app": "^7.0.1", "final-form": "^4.20.10", "final-form-arrays": "^3.0.2", - "immer": "^9.0.16", - "keycloak-js": "^24.0.1", + "immer": "^10.1.1", + "keycloak-js": "^24.0.5", "lodash.debounce": "^4.0.8", "lodash.isempty": "^4.4.0", "lodash.merge": "^4.6.2", "moment": "^2.29.4", - "qs": "^6.11.2", + "qs": "^6.12.1", "react": "^17.0.2", - "react-app-polyfill": "^3.0.0", "react-dom": "^17.0.2", "react-final-form": "^6.5.9", "react-final-form-arrays": "^3.1.4", - "react-router-dom": "^6.22.3", + "react-router-dom": "^6.23.1", "resize-observer-polyfill": "^1.5.1", "styled-components": "^5.3.11", - "typescript": "^5.4.2", - "vite": "^5.1.6", + "typescript": "5.1.6", + "vite": "^5.4.0", "vite-plugin-eslint": "^1.8.1", - "vite-tsconfig-paths": "^4.3.1" + "vite-tsconfig-paths": "^4.3.2" }, "devDependencies": { - "@babel/preset-env": "^7.24.0", - "@babel/preset-react": "^7.23.3", - "@babel/preset-typescript": "^7.23.3", + "@babel/preset-env": "^7.24.7", + "@babel/preset-react": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", "@types/dotenv-flow": "^3.2.0", "@types/jest": "^29.5.3", - "@types/node": "^20.11.25", - "cypress": "^13.6.6", + "@types/node": "^22.5.4", + "cypress": "^13.11.0", "dotenv-flow": "^3.2.0", "dtsgenerator": "^3.18.0", + "husky": "^9.0.11", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "nock": "^13.5.4", @@ -86,9 +84,10 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", - "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "license": "MIT" }, "node_modules/@ampproject/remapping": { "version": "2.2.1", @@ -126,15 +125,6 @@ "styled-components": ">= 5" } }, - "node_modules/@amsterdam/amsterdam-react-final-form/node_modules/immer": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", - "integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/@amsterdam/asc-assets": { "version": "0.38.0", "resolved": "https://registry.npmjs.org/@amsterdam/asc-assets/-/asc-assets-0.38.0.tgz", @@ -145,11 +135,12 @@ } }, "node_modules/@amsterdam/asc-ui": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/@amsterdam/asc-ui/-/asc-ui-0.37.0.tgz", - "integrity": "sha512-3lvT8ZA8lpzzI9GTLktXjU5Z1AtnJ4GCXe6Hqa8LRDl3Fm+9460BTI96ResBxsWwjRMoBiiSc+Pg6lqnRsZ1yQ==", + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@amsterdam/asc-ui/-/asc-ui-0.38.0.tgz", + "integrity": "sha512-mBzkcCoJycBBc1/7l1Ud2EUDHUQx3djYVEKxvo+bA7RF74q2pYITplvLhaVbREguxWyp2QX9r1xRgCiZmufckQ==", + "license": "MPL-2.0", "dependencies": { - "@amsterdam/asc-assets": "^0.37.0", + "@amsterdam/asc-assets": "^0.38.0", "classnames": "^2.3.1", "deepmerge": "^4.2.2", "polished": "^4.2.2", @@ -164,19 +155,11 @@ "styled-components": "^5.3.0" } }, - "node_modules/@amsterdam/asc-ui/node_modules/@amsterdam/asc-assets": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/@amsterdam/asc-assets/-/asc-assets-0.37.0.tgz", - "integrity": "sha512-CTZEthoB5PLzhc34RaRakDd6XJ/EweEgHVlT/7rkTjDtcGNDlHRLqE6kotQEhW1mgYAPhFEvpOgK+Kc380gGvw==", - "peerDependencies": { - "react": "^17.0.2 || ^18.1.0", - "react-dom": "^17.0.2 || ^18.1.0" - } - }, "node_modules/@amsterdam/wonen-ui": { - "version": "1.0.50", - "resolved": "https://registry.npmjs.org/@amsterdam/wonen-ui/-/wonen-ui-1.0.50.tgz", - "integrity": "sha512-/KR2MfsCh9EE4Jb1a9nFy5xyTx3ld/r6whs3dMcAhAPpOmY9k3hQviz2G6GuE4GdJdRwI3sSQmi514xIEbH2Ew==", + "version": "1.0.53", + "resolved": "https://registry.npmjs.org/@amsterdam/wonen-ui/-/wonen-ui-1.0.53.tgz", + "integrity": "sha512-/9O0JfhBac7WGehzDX35IhKvXF3gQLQc6f1FbYpJeCo40YNkPCVM606Kl8V6MW4E4lqz4/nsIona3xgE+va9sg==", + "license": "MIT", "dependencies": { "dompurify": "^3.0.1", "lodash.get": "^4.4.2", @@ -185,50 +168,50 @@ "resize-observer-polyfill": "^1.5.1" }, "peerDependencies": { - "@amsterdam/asc-assets": ">= 0.29", - "@amsterdam/asc-ui": ">= 0.29", + "@amsterdam/asc-assets": ">= 0.38", + "@amsterdam/asc-ui": ">= 0.38", "@material-ui/core": "^4.11.3", "@material-ui/icons": "^4.11.2", - "react": ">= 16", - "react-dom": ">= 16", + "react": ">= 17", + "react-dom": ">= 17", "styled-components": ">= 5" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -269,13 +252,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -283,34 +266,35 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -320,18 +304,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", - "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { @@ -342,11 +326,11 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -373,68 +357,73 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -444,32 +433,33 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -479,13 +469,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -495,105 +485,109 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -601,12 +595,27 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -616,13 +625,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -632,12 +641,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", - "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -853,11 +862,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -867,11 +876,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -903,11 +912,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1011,11 +1020,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1040,11 +1049,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1054,13 +1063,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1071,13 +1080,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1087,11 +1096,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1101,11 +1110,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1115,12 +1124,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1130,12 +1139,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1146,17 +1155,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", - "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" }, "engines": { @@ -1167,12 +1176,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1182,11 +1191,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1196,12 +1205,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1211,11 +1220,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1225,11 +1234,11 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1240,12 +1249,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1255,11 +1264,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1285,12 +1294,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1300,13 +1309,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1316,11 +1325,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1331,11 +1340,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1345,11 +1354,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1360,11 +1369,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1374,12 +1383,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1389,13 +1398,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1405,14 +1414,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", - "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1422,12 +1431,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1437,12 +1446,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1452,11 +1461,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1466,11 +1475,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1481,11 +1490,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1496,15 +1505,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", - "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1514,12 +1522,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1529,11 +1537,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1544,12 +1552,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", + "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1560,11 +1568,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1574,12 +1582,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1589,13 +1597,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1606,11 +1614,11 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1620,11 +1628,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", - "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1634,15 +1643,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -1652,11 +1662,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1666,11 +1677,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1680,11 +1691,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1694,12 +1705,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", - "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1709,11 +1721,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1724,11 +1736,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1757,11 +1769,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1771,12 +1783,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1786,11 +1798,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1800,11 +1812,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1814,11 +1826,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1828,14 +1840,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", - "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", + "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1845,11 +1857,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1859,12 +1871,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1874,12 +1886,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1889,12 +1901,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1904,25 +1916,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1934,58 +1947,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1996,6 +2009,44 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", @@ -2010,16 +2061,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", - "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2029,15 +2081,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2063,31 +2115,31 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2096,12 +2148,13 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2252,12 +2305,13 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "aix" @@ -2267,12 +2321,13 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "android" @@ -2282,12 +2337,13 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "android" @@ -2297,12 +2353,13 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "android" @@ -2312,12 +2369,13 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2327,12 +2385,13 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2342,12 +2401,13 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2357,12 +2417,13 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2372,12 +2433,13 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2387,12 +2449,13 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2402,12 +2465,13 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2417,12 +2481,13 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2432,12 +2497,13 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2447,12 +2513,13 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2462,12 +2529,13 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2477,12 +2545,13 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2492,12 +2561,13 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2507,12 +2577,13 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2522,12 +2593,13 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2537,12 +2609,13 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2552,12 +2625,13 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2567,12 +2641,13 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2582,12 +2657,13 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -3095,6 +3171,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, "dependencies": { "jest-get-type": "^29.6.3" }, @@ -3271,6 +3348,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -3422,6 +3500,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3438,6 +3517,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3452,6 +3532,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3467,6 +3548,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3477,12 +3559,14 @@ "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3491,6 +3575,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3499,13 +3584,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -3520,9 +3605,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -3533,9 +3618,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3780,9 +3865,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", - "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", "engines": { "node": ">=14.0.0" } @@ -3800,9 +3885,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", + "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==", "cpu": [ "arm" ], @@ -3812,9 +3897,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz", + "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==", "cpu": [ "arm64" ], @@ -3824,9 +3909,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz", + "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==", "cpu": [ "arm64" ], @@ -3836,9 +3921,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz", + "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==", "cpu": [ "x64" ], @@ -3848,9 +3933,21 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz", + "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz", + "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==", "cpu": [ "arm" ], @@ -3860,9 +3957,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz", + "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==", "cpu": [ "arm64" ], @@ -3872,9 +3969,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", + "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", "cpu": [ "arm64" ], @@ -3883,10 +3980,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz", + "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz", + "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==", "cpu": [ "riscv64" ], @@ -3895,10 +4004,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz", + "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz", + "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==", "cpu": [ "x64" ], @@ -3908,9 +4029,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz", + "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==", "cpu": [ "x64" ], @@ -3920,9 +4041,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz", + "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==", "cpu": [ "arm64" ], @@ -3932,9 +4053,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz", + "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==", "cpu": [ "ia32" ], @@ -3944,9 +4065,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz", + "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", "cpu": [ "x64" ], @@ -3960,130 +4081,11 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz", "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==" }, - "node_modules/@sentry-internal/feedback": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.106.0.tgz", - "integrity": "sha512-Uz6pv3SN8XORTMme5xPxP/kuho7CAA6E/pMlpMjsojjBbnwLIICu10JaEZNsF/AtEya1RcNVTyPCrtF1F3sBYA==", - "dependencies": { - "@sentry/core": "7.106.0", - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.106.0.tgz", - "integrity": "sha512-59qmT6XqbwpQuK1nVmv+XFxgd80gpYNH3aqgF5BEKux23kRB02/ARR5MwYyIHgVO0JhwdGIuiTfiLVNDu+nwTQ==", - "dependencies": { - "@sentry/core": "7.106.0", - "@sentry/replay": "7.106.0", - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sentry-internal/tracing": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.106.0.tgz", - "integrity": "sha512-O8Es6Sa/tP80nfl+8soNfWzeRNFcT484SvjLR8BS3pHM9KDAlwNXyoQhFr2BKNYL1irbq6UF6eku4xCnUKVmqA==", - "dependencies": { - "@sentry/core": "7.106.0", - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/browser": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.106.0.tgz", - "integrity": "sha512-OrHdw44giTtMa1DmlIUMBN4ypj1xTES9DLjq16ufK+bLqW3rWzwCuTy0sb9ZmSxc7fL2pdBlsL+sECiS+U2TEw==", - "dependencies": { - "@sentry-internal/feedback": "7.106.0", - "@sentry-internal/replay-canvas": "7.106.0", - "@sentry-internal/tracing": "7.106.0", - "@sentry/core": "7.106.0", - "@sentry/replay": "7.106.0", - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/core": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.106.0.tgz", - "integrity": "sha512-Dc13XtnyFaXup2E4vCbzuG0QKAVjrJBk4qfGwvSJaTuopEaEWBs2MpK6hRzFhsz9S3T0La7c1F/62NptvTUWsQ==", - "dependencies": { - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/react": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.106.0.tgz", - "integrity": "sha512-5KMfvkBYqK990o8Ju9vsRRRR0F8TnPpZynC9YqsJYpCViKjIt8W/ysDLrU1Dj5XZyeVElZjdRlXB0aQYrwEUWg==", - "dependencies": { - "@sentry/browser": "7.106.0", - "@sentry/core": "7.106.0", - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0", - "hoist-non-react-statics": "^3.3.2" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "react": "15.x || 16.x || 17.x || 18.x" - } - }, - "node_modules/@sentry/replay": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.106.0.tgz", - "integrity": "sha512-buaAOvOI+3pFm+76vwtxSxciBATHyR78aDjStghJZcIpFDNF31K8ZV0uP9+EUPbXHohtkTwZ86cn/P9cyY6NgA==", - "dependencies": { - "@sentry-internal/tracing": "7.106.0", - "@sentry/core": "7.106.0", - "@sentry/types": "7.106.0", - "@sentry/utils": "7.106.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sentry/types": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.106.0.tgz", - "integrity": "sha512-oKTkDaL6P9xJC5/zHLRemHTWboUqRYjkJNaZCN63j4kJqGy56wee4vDtDese/NWWn4U4C1QV1h+Mifm2HmDcQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/utils": { - "version": "7.106.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.106.0.tgz", - "integrity": "sha512-bVsePsXLpFu/1sH4rpJrPcnVxW2fXXfGfGxKs6Bm+dkOMbuVTlk/KAzIbdjCDIpVlrMDJmMNEv5xgTFjgWDkjw==", - "dependencies": { - "@sentry/types": "7.106.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true }, "node_modules/@sinonjs/commons": { "version": "3.0.1", @@ -4193,22 +4195,22 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "version": "6.4.8", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.8.tgz", + "integrity": "sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==", + "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.0.1", + "@adobe/css-tools": "^4.4.0", "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", "redent": "^3.0.0" }, "engines": { - "node": ">=8", + "node": ">=14", "npm": ">=6", "yarn": ">=1" } @@ -4255,6 +4257,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "license": "MIT" + }, "node_modules/@testing-library/jest-dom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4538,12 +4546,14 @@ "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -4552,6 +4562,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -4560,6 +4571,7 @@ "version": "29.5.12", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -4569,6 +4581,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "engines": { "node": ">=10" }, @@ -4580,6 +4593,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -4640,11 +4654,12 @@ } }, "node_modules/@types/node": { - "version": "20.11.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", - "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "devOptional": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/parse-json": { @@ -4658,9 +4673,9 @@ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/qs": { - "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/react": { "version": "17.0.75", @@ -4723,7 +4738,8 @@ "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true }, "node_modules/@types/styled-components": { "version": "5.1.34", @@ -4740,14 +4756,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", - "dependencies": { - "@types/jest": "*" - } - }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -4758,6 +4766,7 @@ "version": "17.0.32", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4765,7 +4774,8 @@ "node_modules/@types/yargs-parser": { "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@types/yauzl": { "version": "2.10.3", @@ -4910,24 +4920,10 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -4935,11 +4931,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/parser/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", @@ -5008,24 +4999,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -5033,11 +5010,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", @@ -5174,15 +5146,15 @@ "peer": true }, "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" + "react-refresh": "^0.14.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -5517,11 +5489,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -5617,11 +5584,12 @@ } }, "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", + "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -5787,18 +5755,33 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", @@ -5960,11 +5943,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -6102,9 +6086,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001587", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", - "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "funding": [ { "type": "opencollective", @@ -6118,7 +6102,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", @@ -6161,6 +6146,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -6385,22 +6371,12 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, - "node_modules/core-js": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", - "integrity": "sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dependencies": { - "browserslist": "^4.22.3" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -6609,9 +6585,9 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, "node_modules/cypress": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.6.tgz", - "integrity": "sha512-S+2S9S94611hXimH9a3EAYt81QM913ZVA03pUmGDfLTFa5gyp85NJ8dJGSlEAEmyRsYkioS1TtnWtbv/Fzt11A==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.11.0.tgz", + "integrity": "sha512-NXXogbAxVlVje4XHX+Cx5eMFZv4Dho/2rIcdBHg9CNPFUGZdM4cRdgIgM7USmNYsC12XY0bZENEQ+KBk72fl+A==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -6821,9 +6797,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debug": { "version": "4.3.4", @@ -6976,6 +6952,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -7357,10 +7334,11 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -7368,29 +7346,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -8077,6 +8055,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -8220,9 +8199,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8655,7 +8635,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -8816,6 +8797,21 @@ "node": ">=8.12.0" } }, + "node_modules/husky": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "dev": true, + "bin": { + "husky": "bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", @@ -8862,9 +8858,10 @@ } }, "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -9185,6 +9182,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -9999,6 +9997,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -10013,6 +10012,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10027,6 +10027,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10042,6 +10043,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10052,12 +10054,14 @@ "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -10066,6 +10070,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10079,6 +10084,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "engines": { "node": ">=10" }, @@ -10090,6 +10096,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10269,6 +10276,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10341,6 +10349,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -10355,6 +10364,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10369,6 +10379,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10384,6 +10395,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10394,12 +10406,14 @@ "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -10408,6 +10422,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10421,6 +10436,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "engines": { "node": ">=10" }, @@ -10432,6 +10448,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10443,6 +10460,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -10462,6 +10480,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10476,6 +10495,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10491,6 +10511,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10501,12 +10522,14 @@ "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -10515,6 +10538,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10528,6 +10552,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "engines": { "node": ">=10" }, @@ -10539,6 +10564,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11078,6 +11104,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -11094,6 +11121,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11108,6 +11136,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11123,6 +11152,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11133,12 +11163,14 @@ "node_modules/jest-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -11147,6 +11179,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11712,9 +11745,9 @@ } }, "node_modules/keycloak-js": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-24.0.1.tgz", - "integrity": "sha512-leV4mlpa0dqYUXTAuq1ufUfk8DOSBCembjQwMwzYrM6xfHSKpcZMxviTWXqro52LMSsYAnivSKVNEvBkLzi7Eg==", + "version": "24.0.5", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-24.0.5.tgz", + "integrity": "sha512-VQOSn3j13DPB6OuavKAq+sRjDERhIKrXgBzekoHRstifPuyULILguugX6yxRUYFSpn3OMYUXmSX++tkdCupOjA==", "dependencies": { "js-sha256": "^0.11.0", "jwt-decode": "^4.0.0" @@ -12301,6 +12334,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -12765,12 +12799,14 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -12830,9 +12866,9 @@ "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "funding": [ { "type": "opencollective", @@ -12847,10 +12883,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -12920,14 +12957,6 @@ "node": ">= 0.6.0" } }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dependencies": { - "asap": "~2.0.6" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -13011,11 +13040,11 @@ ] }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -13049,14 +13078,6 @@ } ] }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dependencies": { - "performance-now": "^2.1.0" - } - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -13069,27 +13090,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", - "dependencies": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, "node_modules/react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", @@ -13154,19 +13154,19 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", - "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", "dependencies": { - "@remix-run/router": "1.15.3" + "@remix-run/router": "1.16.1" }, "engines": { "node": ">=14.0.0" @@ -13176,12 +13176,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", - "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", "dependencies": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" }, "engines": { "node": ">=14.0.0" @@ -13518,9 +13518,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", + "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", "dependencies": { "@types/estree": "1.0.5" }, @@ -13532,19 +13532,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.14.3", + "@rollup/rollup-android-arm64": "4.14.3", + "@rollup/rollup-darwin-arm64": "4.14.3", + "@rollup/rollup-darwin-x64": "4.14.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", + "@rollup/rollup-linux-arm-musleabihf": "4.14.3", + "@rollup/rollup-linux-arm64-gnu": "4.14.3", + "@rollup/rollup-linux-arm64-musl": "4.14.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", + "@rollup/rollup-linux-riscv64-gnu": "4.14.3", + "@rollup/rollup-linux-s390x-gnu": "4.14.3", + "@rollup/rollup-linux-x64-gnu": "4.14.3", + "@rollup/rollup-linux-x64-musl": "4.14.3", + "@rollup/rollup-win32-arm64-msvc": "4.14.3", + "@rollup/rollup-win32-ia32-msvc": "4.14.3", + "@rollup/rollup-win32-x64-msvc": "4.14.3", "fsevents": "~2.3.2" } }, @@ -13721,11 +13724,11 @@ } }, "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" @@ -13814,9 +13817,10 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -13866,6 +13870,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -13877,6 +13882,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "engines": { "node": ">=8" } @@ -14211,6 +14217,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -14297,6 +14304,25 @@ } } }, + "node_modules/tsconfck": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.0.3.tgz", + "integrity": "sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -14464,9 +14490,10 @@ } }, "node_modules/typescript": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", - "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14490,9 +14517,10 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "devOptional": true }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -14640,13 +14668,14 @@ } }, "node_modules/vite": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", - "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", + "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", + "license": "MIT", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.40", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -14665,6 +14694,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -14682,6 +14712,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -14722,13 +14755,13 @@ } }, "node_modules/vite-tsconfig-paths": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.1.tgz", - "integrity": "sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", - "tsconfck": "^3.0.1" + "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" @@ -14739,25 +14772,6 @@ } } }, - "node_modules/vite-tsconfig-paths/node_modules/tsconfck": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.0.2.tgz", - "integrity": "sha512-6lWtFjwuhS3XI4HsX4Zg0izOI3FU/AI9EGVlPEUMDIhvLPMD4wkiof0WCoDgW7qY+Dy198g4d9miAqUHWHFH6Q==", - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -14800,11 +14814,6 @@ "node": ">=12" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, "node_modules/whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", @@ -15062,10 +15071,11 @@ } }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index 0883d8beb..ce9c1287e 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,12 @@ "npm": ">=8" }, "scripts": { + "start": "PORT=2999 vite", + "acc": "PORT=2999 env-cmd -f .env.acceptance vite", + "build": "vite build", + "build:acc": "env-cmd -f .env.acceptance vite build", + "deploy:prod": "npm version patch && git push origin HEAD --follow-tags", + "swagger:generate-schema": "TS_NODE_PROJECT='./scripts/tsconfig.json' NODE_ENV='development' ts-node scripts/src/generateSwaggerSchema.ts", "lint": "eslint --max-warnings 0 --cache --ext .ts,.tsx src", "lint:fix": "eslint --fix --ext .ts,.tsx src", "test": "env-cmd -f .env.development jest --watchAll=false", @@ -14,73 +20,66 @@ "test:coverage": "jest --coverage --watchAll=false", "cy": "npx cypress open", "cy:run": "cypress run", - "start": "PORT=2999 vite", - "acc": "PORT=2999 env-cmd -f .env.acceptance vite", - "swagger:generate-schema": "TS_NODE_PROJECT='./scripts/tsconfig.json' NODE_ENV='development' ts-node scripts/src/generateSwaggerSchema.ts", - "build": "vite build", - "build:acc": "env-cmd -f .env.acceptance vite build", - "deploy:prod": "npm version patch && git push origin HEAD --follow-tags", "dev": "vite", - "preview": "vite preview" + "preview": "vite preview", + "prepare": "husky" }, "dependencies": { "@amsterdam/amsterdam-react-final-form": "^0.1.140", "@amsterdam/asc-assets": "^0.38.0", - "@amsterdam/asc-ui": "^0.37.0", - "@amsterdam/wonen-ui": "^1.0.49", + "@amsterdam/asc-ui": "^0.38.0", + "@amsterdam/wonen-ui": "^1.0.53", "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", - "@sentry/react": "^7.106.0", - "@testing-library/jest-dom": "^5.16.5", + "@testing-library/jest-dom": "^ 6.4.5", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.4.3", "@types/lodash.debounce": "^4.0.7", "@types/lodash.isempty": "^4.4.7", "@types/lodash.merge": "^4.6.7", - "@types/node": "^20.11.25", - "@types/qs": "^6.9.7", + "@types/qs": "^6.9.15", "@types/react": "^17.0.43", "@types/react-dom": "^18.0.3", "@types/resize-observer-browser": "^0.1.7", "@types/styled-components": "^5.1.26", - "@vitejs/plugin-react": "^4.2.1", - "axios": "^1.6.7", - "dayjs": "^1.11.9", + "@vitejs/plugin-react": "^4.3.1", + "axios": "^1.7.3", + "dayjs": "^1.11.11", "env-cmd": "^10.1.0", "eslint-config-react-app": "^7.0.1", "final-form": "^4.20.10", "final-form-arrays": "^3.0.2", - "immer": "^9.0.16", - "keycloak-js": "^24.0.1", + "immer": "^10.1.1", + "keycloak-js": "^24.0.5", "lodash.debounce": "^4.0.8", "lodash.isempty": "^4.4.0", "lodash.merge": "^4.6.2", "moment": "^2.29.4", - "qs": "^6.11.2", + "qs": "^6.12.1", "react": "^17.0.2", - "react-app-polyfill": "^3.0.0", "react-dom": "^17.0.2", "react-final-form": "^6.5.9", "react-final-form-arrays": "^3.1.4", - "react-router-dom": "^6.22.3", + "react-router-dom": "^6.23.1", "resize-observer-polyfill": "^1.5.1", "styled-components": "^5.3.11", - "typescript": "^5.4.2", - "vite": "^5.1.6", + "typescript": "5.1.6", + "vite": "^5.4.0", "vite-plugin-eslint": "^1.8.1", - "vite-tsconfig-paths": "^4.3.1" + "vite-tsconfig-paths": "^4.3.2" }, "devDependencies": { - "@babel/preset-env": "^7.24.0", - "@babel/preset-react": "^7.23.3", - "@babel/preset-typescript": "^7.23.3", + "@babel/preset-env": "^7.24.7", + "@babel/preset-react": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", "@types/dotenv-flow": "^3.2.0", "@types/jest": "^29.5.3", - "@types/node": "^20.11.25", - "cypress": "^13.6.6", + "@types/node": "^22.5.4", + "cypress": "^13.11.0", "dotenv-flow": "^3.2.0", "dtsgenerator": "^3.18.0", + "husky": "^9.0.11", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "nock": "^13.5.4", @@ -119,7 +118,7 @@ "./src" ], "setupFilesAfterEnv": [ - "@testing-library/jest-dom/extend-expect" + "@testing-library/jest-dom" ] } } diff --git a/scripts/src/generateSwaggerSchema.ts b/scripts/src/generateSwaggerSchema.ts index 6973c4ec1..6bb8cb58d 100644 --- a/scripts/src/generateSwaggerSchema.ts +++ b/scripts/src/generateSwaggerSchema.ts @@ -1,12 +1,8 @@ #!/usr/bin/env ts-node-script import { exec } from "child_process" -import { config } from "dotenv-flow" - -// Loads .env.development or .env.production based on NODE_ENV -config() - -const url = `${ process.env.REACT_APP_API_HOST }${ process.env.REACT_APP_API_PATH }schema/` +import { env } from "app/config/env" +const url = `${ env.REACT_APP_API_HOST }${ env.REACT_APP_API_PATH }schema/` exec(`dtsgen -o ./src/__generated__/apiSchema.d.ts --url ${ url }`, (error, stdout, stderr) => { if (error) { diff --git a/src/App.tsx b/src/App.tsx index e7bcfbe0f..b17402d08 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,6 @@ -import { Fragment } from "react" +import React from "react" import { ThemeProvider, GlobalStyle } from "@amsterdam/asc-ui" import { BrowserRouter } from "react-router-dom" - import KeycloakProvider from "app/state/auth/keycloak/KeycloakProvider" import initializedCallback from "app/state/auth/keycloak/initializedCallback" import Router from "app/routing/components/Router" @@ -9,13 +8,11 @@ import FlashMessageProvider from "app/state/flashMessages/FlashMessageProvider" import ApiProvider from "app/state/rest/provider/ApiProvider" import ValueProvider from "app/state/context/ValueProvider" import isLocalDevelopment from "app/state/auth/keycloak/isLocalDevelopment" -import { ErrorBoundary } from "@sentry/react" import PageTitle from "app/routing/components/PageTitle" -const SentryErrorBoundary = process.env.REACT_APP_ENVIRONMENT !== undefined ? ErrorBoundary : Fragment const App = () => ( - + @@ -34,7 +31,7 @@ const App = () => ( - + ) export default App diff --git a/src/app/components/addresses/AddressSuffixSwitcher/ShowOtherAddressesButton.tsx b/src/app/components/addresses/AddressSuffixSwitcher/ShowOtherAddressesButton.tsx index a6f9ed7db..897275d42 100644 --- a/src/app/components/addresses/AddressSuffixSwitcher/ShowOtherAddressesButton.tsx +++ b/src/app/components/addresses/AddressSuffixSwitcher/ShowOtherAddressesButton.tsx @@ -5,6 +5,7 @@ import { Button, Icon } from "@amsterdam/asc-ui" import { useModal } from "app/components/shared/Modal/hooks/useModal" import OtherAddressesModal from "./OtherAddressesModal" +import { env } from "app/config/env" export type Index = "first" | "last" | undefined type Props = { @@ -27,7 +28,7 @@ const renderIcon = (index: Index) => { default: return } diff --git a/src/app/components/case/CaseDetails/ChangeableItem/ChangeableItem.tsx b/src/app/components/case/CaseDetails/ChangeableItem/ChangeableItem.tsx index 54713909a..7a5102d5c 100644 --- a/src/app/components/case/CaseDetails/ChangeableItem/ChangeableItem.tsx +++ b/src/app/components/case/CaseDetails/ChangeableItem/ChangeableItem.tsx @@ -1,6 +1,7 @@ import styled from "styled-components" import { Icon, themeSpacing } from "@amsterdam/asc-ui" import { Edit } from "app/components/shared/Icons" +import useHasPermission, { CAN_PERFORM_TASK } from "app/state/rest/custom/usePermissions/useHasPermission" type Props = { name?: string @@ -27,16 +28,19 @@ const StyledIcon = styled(Icon)` margin-left: ${ themeSpacing(1) }; ` -const ChangeableItem = ({ name = "-", titleAccess = "", onClick }: Props) => ( - - { name } - - - - -) +const ChangeableItem = ({ name = "-", titleAccess = "", onClick }: Props) => { + const [hasPermission] = useHasPermission([CAN_PERFORM_TASK]) + return hasPermission ? ( + + { name } + + + + + ) : <>{ name } +} export default ChangeableItem diff --git a/src/app/components/case/CaseDetails/EditableTag/CaseTags.tsx b/src/app/components/case/CaseDetails/EditableTag/CaseTags.tsx index d42783c18..ca4b4aa02 100644 --- a/src/app/components/case/CaseDetails/EditableTag/CaseTags.tsx +++ b/src/app/components/case/CaseDetails/EditableTag/CaseTags.tsx @@ -1,7 +1,8 @@ import styled, { keyframes } from "styled-components" -import { Icon, Tag, themeSpacing } from "@amsterdam/asc-ui" +import { Icon, themeSpacing } from "@amsterdam/asc-ui" import { Edit } from "app/components/shared/Icons" +import useHasPermission, { CAN_PERFORM_TASK } from "app/state/rest/custom/usePermissions/useHasPermission" type Props = { @@ -26,7 +27,12 @@ const ClickableSpan = styled.span` cursor: pointer; ` -const StyledTag = styled(Tag)` +const Tag = styled.span` + background-color: #f9f9f9; + padding: 0 0.5em; + font-family: "Nimbus Mono PS", "Courier New", monospace; + border: 1px solid #eee; + border-radius: 2px; margin-right: ${ themeSpacing(2) }; animation: 0.5s ${ fadeIn } cubic-bezier(0.250, 0.460, 0.450, 0.940) both; ` @@ -38,16 +44,19 @@ const StyledIcon = styled(Icon)` cursor: pointer; ` -const CaseTags: React.FC = ({ tags = [], titleAccess = "Wijzig tag", onClick }) => ( - - { tags.map(tag => { tag.name })} - - - - -) +const CaseTags: React.FC = ({ tags = [], titleAccess = "Wijzig tag", onClick }) => { + const [hasPermission] = useHasPermission([CAN_PERFORM_TASK]) + return hasPermission ? ( + + { tags.map(tag => { tag.name })} + + + + + ) : <>{ tags.length > 0 ? tags.map(tag => { tag.name }) : "-"} +} export default CaseTags diff --git a/src/app/components/case/CaseStatus/CaseStatus.tsx b/src/app/components/case/CaseStatus/CaseStatus.tsx index 39f81a9be..dbd63dd81 100644 --- a/src/app/components/case/CaseStatus/CaseStatus.tsx +++ b/src/app/components/case/CaseStatus/CaseStatus.tsx @@ -1,15 +1,15 @@ import styled from "styled-components" -import { Button, Divider, Heading, themeSpacing } from "@amsterdam/asc-ui" +import { Divider, Heading, themeSpacing } from "@amsterdam/asc-ui" import Workflow from "../Workflow/Workflow" import { Row, Column, RowWithColumn } from "app/components/layouts/Grid" -import ButtonLink from "app/components/shared/ButtonLink/ButtonLink" import to from "app/routing/utils/to" +import IsAuthorizedButtonLink from "app/components/shared/ButtonLink/IsAuthorizedButtonLink" +import { CAN_PERFORM_TASK } from "app/state/rest/custom/usePermissions/useHasPermission" type Props = { id: Components.Schemas.CaseDetail["id"] - workflows: Components.Schemas.CaseDetail["workflows"] } const ButtonWrap = styled.div` @@ -22,7 +22,7 @@ const StyledDivider = styled(Divider)` margin-bottom: ${ themeSpacing(8) }; ` -const CaseStatus: React.FC = ({ id, workflows }) => ( +const CaseStatus: React.FC = ({ id }) => ( <> @@ -30,15 +30,19 @@ const CaseStatus: React.FC = ({ id, workflows }) => ( - - - + - + ) diff --git a/src/app/components/case/CaseTimeline/TimelineContainer.tsx b/src/app/components/case/CaseTimeline/TimelineContainer.tsx index b07d004da..ed71be0e3 100644 --- a/src/app/components/case/CaseTimeline/TimelineContainer.tsx +++ b/src/app/components/case/CaseTimeline/TimelineContainer.tsx @@ -1,6 +1,7 @@ import { Spinner, ErrorMessage } from "@amsterdam/asc-ui" import { EventsTimeline } from "@amsterdam/wonen-ui" import { useCaseEvents } from "app/state/rest" +import { env } from "app/config/env" type Props = { caseId: Components.Schemas.CaseEvent["id"] @@ -20,7 +21,7 @@ const TimelineContainer: React.FC = ({ caseId }) => { ) } diff --git a/src/app/components/case/Workflow/Workflow.tsx b/src/app/components/case/Workflow/Workflow.tsx index 645eb6643..832b2b064 100644 --- a/src/app/components/case/Workflow/Workflow.tsx +++ b/src/app/components/case/Workflow/Workflow.tsx @@ -1,11 +1,12 @@ import { Heading, themeSpacing } from "@amsterdam/asc-ui" -import { useTaskComplete } from "app/state/rest" +import { useTaskComplete, useCaseWorkflows } from "app/state/rest" import StyledTable from "./components/StyledTable" import styled from "styled-components" import getColumns from "./columns" +import { LoadingRows } from "@amsterdam/wonen-ui" type Props = { - workflows: Components.Schemas.CaseDetail["workflows"] + id: Components.Schemas.CaseDetail["id"] } const Wrap = styled.div` @@ -19,37 +20,40 @@ const Div = styled.div` margin-bottom: ${ themeSpacing(4) }; ` -const Workflow: React.FC = ({ workflows }) => { +const Workflow: React.FC = ({ id }) => { const [, { execPost }] = useTaskComplete({ lazy: true }) + const [data, { isBusy }] = useCaseWorkflows(id) + const workflows = data?.results ?? [] const columns = getColumns(execPost) - if (workflows !== undefined) { - return ( - <> - { workflows.length > 0 ? ( - workflows.map(({ state, tasks, information }, index) => ( - -
- { state.name } - { information &&

{ information }

} -
- -
- )) - ) : ( - <>Geen taken beschikbaar. Herlaad - ) - } - - ) + if (isBusy) { + return } - return null + + return ( + <> + { workflows.length > 0 ? ( + workflows.map(({ state, tasks, information }, index) => ( + +
+ { state.name } + { information &&

{ information }

} +
+ +
+ )) + ) : ( + <>Geen taken beschikbaar. Herlaad + ) + } + + ) } -export default Workflow \ No newline at end of file +export default Workflow diff --git a/src/app/components/case/Workflow/columns.tsx b/src/app/components/case/Workflow/columns.tsx index ea2136f68..401108b84 100644 --- a/src/app/components/case/Workflow/columns.tsx +++ b/src/app/components/case/Workflow/columns.tsx @@ -6,7 +6,7 @@ import TaskButton from "app/components/case/tasks/TaskButton/TaskButton" import taskActionMap from "./utils/taskActionMap" import LockIcon from "./components/LockIcon" import TableAction from "app/components/shared/TableAction/TableAction" -import UserInitials from "./components/UserInitials" +import SelectTaskWorkflow from "./components/SelectTaskWorkflow" // This width value (113px) is the width of a date + edit icon including the spacing between them const Span = styled.span` @@ -31,7 +31,7 @@ export default (execPost: (payload?: any) => Promise) => ( }, { header: "Opgepakt door", dataIndex: "owner", - render: (owner: any) => + render: (owner: any, task: any) => }, { header: "Slotdatum", dataIndex: "due_date", diff --git a/src/app/components/case/Workflow/components/SelectTaskWorkflow.tsx b/src/app/components/case/Workflow/components/SelectTaskWorkflow.tsx new file mode 100644 index 000000000..72eb65cf0 --- /dev/null +++ b/src/app/components/case/Workflow/components/SelectTaskWorkflow.tsx @@ -0,0 +1,101 @@ +import { useState, useEffect } from "react" +import styled from "styled-components" +import { Spinner, Checkbox, Label } from "@amsterdam/asc-ui" +import { useTask, useUsersMe } from "app/state/rest" +import useContextCache from "app/state/rest/provider/useContextCache" +import { createNameAbbreviation } from "app/components/shared/Helpers/helpers" +import CustomTooltip from "app/components/help/HelpContent/CustomTooltip" +import { makeApiUrl } from "app/state/rest/hooks/utils/apiUrl" +import UserIcon from "./UserInitials" +import useHasPermission, { CAN_PERFORM_TASK } from "app/state/rest/custom/usePermissions/useHasPermission" + + +type Props = { + task: Components.Schemas.CaseUserTaskWorkdflow +} + +const StyledSpinner = styled(Spinner)` + margin: 2px 0px; +` + +const StyledLabel = styled(Label)` + font-weight: 400; + height: 24px; // Hacky solution to prevent the row from shifting in height every time it loads or is't getting checked. +` + +const StyledCheckbox = styled(Checkbox)` + margin-left: -8px; +` + +const SelectTaskWorkflow: React.FC = ({ task }) => { + const { case_user_task_id: taskId, owner: taskOwner, case: caseId } = task + const [isChecked, setIsChecked] = useState(false) + const [loading, setLoading] = useState(false) + const [me, { isBusy }] = useUsersMe() + const [, { execPatch }] = useTask(taskId) + const apiUrl = makeApiUrl("cases", caseId, "workflows") + const { getContextItem, updateContextItem } = useContextCache("cases", apiUrl) + const [hasPermission] = useHasPermission([CAN_PERFORM_TASK]) + + useEffect(() => { + // Check if userId is matching with the taskOwner. + const isSelected = me?.id === taskOwner + setIsChecked(isSelected) + }, [me?.id, taskOwner]) + + const onChange = () => { + setLoading((prevLoading) => !prevLoading) + const owner = isChecked ? null : me?.id + + execPatch({ owner }) + .then((resp: any) => { + if (resp.status === 200) { + // Owner is siuccesfully changed so update context tp prevent a hard page reload for just a checkbox. + const response = getContextItem() + const workflows = response?.results + // Find the index of the workflow containing the task to be updated + const workflowIndex = workflows.findIndex((workflow: any) => + workflow.tasks.some((task: any) => task.case_user_task_id === taskId) + ) + // If the workflow containing the task is found + if (workflowIndex !== -1) { + // Find the index of the task within the workflow + const taskIndex = workflows[workflowIndex].tasks.findIndex((task: any) => + task.case_user_task_id === taskId + ) + // If the task is found within the workflow + if (taskIndex !== -1) { + // Make a deep copy of the original case object (Optional: to maintain immutability) + const updatedResponse = structuredClone(response) + // Update the task as needed + updatedResponse.results[workflowIndex].tasks[taskIndex].owner = resp.data.owner + // Update context of the case + updateContextItem(updatedResponse) + } else { + console.error("Task not found within the workflow.") + } + } else { + console.error("Workflow containing the task not found.") + } + } + }) + .finally(() => setLoading((prevLoading) => !prevLoading)) + } + + if (isBusy || loading) { + return + } + // If taskOwner is known but the the taskOwner is not the active user, show a user icon. + if (taskOwner && taskOwner !== me?.id ) { + return + } + return hasPermission ? ( + + + + + + ) : <>- +} + +export default SelectTaskWorkflow diff --git a/src/app/components/case/forms/SummonForm/SummonForm.tsx b/src/app/components/case/forms/SummonForm/SummonForm.tsx index c257df8e1..87c132e35 100644 --- a/src/app/components/case/forms/SummonForm/SummonForm.tsx +++ b/src/app/components/case/forms/SummonForm/SummonForm.tsx @@ -5,6 +5,7 @@ import { useSummons, useSummonTypesByTaskId } from "app/state/rest" import WorkflowForm from "app/components/case/WorkflowForm/WorkflowForm" import scaffold from "app/components/case/forms/SummonForm/scaffold" import useScaffoldedFields from "app/components/shared/ConfirmScaffoldForm/hooks/useScaffoldedFields" +import useNavigation from "app/routing/useNavigation" type Props = { id: Components.Schemas.CaseDetail["id"] @@ -54,7 +55,8 @@ const mapData = (data: SummonData) => { const SummonForm: React.FC = ({ id, caseUserTaskId }) => { const [data] = useSummonTypesByTaskId(caseUserTaskId) const summonTypes = data?.results - const fields = useScaffoldedFields(scaffold, id, summonTypes) + const { navigateTo } = useNavigation() + const fields = useScaffoldedFields(scaffold, id, navigateTo, summonTypes) const [, { execPost }] = useSummons({ lazy: true }) return ( diff --git a/src/app/components/case/forms/SummonForm/scaffold.tsx b/src/app/components/case/forms/SummonForm/scaffold.tsx index 99353d714..bd6b15fdc 100644 --- a/src/app/components/case/forms/SummonForm/scaffold.tsx +++ b/src/app/components/case/forms/SummonForm/scaffold.tsx @@ -2,9 +2,9 @@ import { FormPositioner } from "@amsterdam/amsterdam-react-final-form" import { Fields } from "app/components/shared/Form/ScaffoldFields" import InfoButton from "app/components/shared/InfoHeading/InfoButton" import { personRoleMap } from "@amsterdam/wonen-ui/helpers/dictionaries" -import { redirect } from "react-router-dom" +import type { NavigateToFunction } from "app/routing/useNavigation" -export default (caseId: Components.Schemas.CaseDetail["id"], summonTypes?: Components.Schemas.SummonType[]) => { +export default (caseId: Components.Schemas.CaseDetail["id"], navigateTo: NavigateToFunction, summonTypes?: Components.Schemas.SummonType[]) => { const roleEntries = Object.entries(personRoleMap) const personRoles = roleEntries.filter(([key]) => key !== "PERSON_ROLE_PLATFORM").map(([key, label]) => ({ key, label })) const legalEntityRoles = roleEntries.filter(([key]) => !["PERSON_ROLE_HEIR", "PERSON_ROLE_RESIDENT"].includes(key)).map(([key, label]) => ({ key, label })) @@ -221,7 +221,7 @@ export default (caseId: Components.Schemas.CaseDetail["id"], summonTypes?: Compo props: { label: "Annuleren", variant: "primaryInverted", - onClick: () => redirect(`/zaken/${ caseId }`) + onClick: () => navigateTo("/zaken/:id", { id: caseId }) } }, submit: { diff --git a/src/app/components/case/tasks/ChangeDueDate/ChangebleDueDate.tsx b/src/app/components/case/tasks/ChangeDueDate/ChangebleDueDate.tsx index ad7394e72..90fac55c7 100644 --- a/src/app/components/case/tasks/ChangeDueDate/ChangebleDueDate.tsx +++ b/src/app/components/case/tasks/ChangeDueDate/ChangebleDueDate.tsx @@ -6,6 +6,7 @@ import { appendTimeToDate } from "app/components/shared/Helpers/helpers" import DueDate from "app/components/shared/DueDate/DueDate" import ChangeDueDateModal from "./ChangeDueDateModal" import { useTaskUpdate } from "app/state/rest" +import useHasPermission, { CAN_PERFORM_TASK } from "app/state/rest/custom/usePermissions/useHasPermission" type Props = { caseId: Components.Schemas.CaseDetail["id"] @@ -30,9 +31,9 @@ const StyledIcon = styled(Icon)` ` const ChangeableDueDate: React.FC = ({ dueDate, caseId, caseUserTaskId }) => { - const { isModalOpen, openModal, closeModal } = useModal() const [, { execPatch }] = useTaskUpdate(caseUserTaskId) + const [hasPermission] = useHasPermission([CAN_PERFORM_TASK]) const onSubmit = (data: { date: string, id: string }) => { appendTimeToDate(data.date) !== dueDate @@ -40,7 +41,7 @@ const ChangeableDueDate: React.FC = ({ dueDate, caseId, caseUserTaskId }) : closeModal() } - return ( + return hasPermission ? ( <> = ({ dueDate, caseId, caseUserTaskId }) taskId={ caseUserTaskId } /> - ) + ) : } export default ChangeableDueDate diff --git a/src/app/components/cases/Cases/Cases.tsx b/src/app/components/cases/Cases/Cases.tsx index e8a5b4839..58b005668 100644 --- a/src/app/components/cases/Cases/Cases.tsx +++ b/src/app/components/cases/Cases/Cases.tsx @@ -4,7 +4,7 @@ import { Heading } from "@amsterdam/asc-ui" import TableCases from "app/components/cases/TableCases/TableCases" import CasesFilter from "app/components/cases/CasesFilter/CasesFilter" import { useCases, useCaseThemes, useTasksReasons, useDistricts, - useCorporations, useSubjects, useProjects + useCorporations, useSubjects, useProjects, useTags } from "app/state/rest" import useHasPermission, { SENSITIVE_CASE_PERMISSION } from "app/state/rest/custom/usePermissions/useHasPermission" import { ContextValues } from "app/state/context/ValueProvider" @@ -34,7 +34,7 @@ const UNDERMINING = "Ondermijning" const Cases: React.FC = () => { const { count, districtNames, fromStartDate, housingCorporations, pagination, projects, - reason, results, sorting, subjects, theme, updateContextCases + reason, results, sorting, subjects, tags, theme, updateContextCases } = useContext(ContextValues)["cases"] const [hasPermission] = useHasPermission([SENSITIVE_CASE_PERMISSION]) const [caseThemes] = useCaseThemes() @@ -42,6 +42,7 @@ const Cases: React.FC = () => { const themeId = getThemeId(caseThemes?.results, theme) const [projectsTheme] = useProjects(themeId) const [subjectsTheme] = useSubjects(themeId) + const [tagsTheme] = useTags(themeId) const [caseDistricts] = useDistricts() const [corporationData] = useCorporations() const [dataSource, { isBusy }] = useCases( @@ -53,6 +54,7 @@ const Cases: React.FC = () => { projects, reason, subjects, + tags, districtNames, housingCorporations ) @@ -85,6 +87,7 @@ const Cases: React.FC = () => { casesContextItem.reason = "" casesContextItem.projects = [] casesContextItem.subjects = [] + casesContextItem.tags = [] } updateContextCases(casesContextItem) } @@ -140,6 +143,7 @@ const Cases: React.FC = () => { selectedCorporations={ housingCorporations } selectedProjects={ projects } selectedSubjects={ subjects } + selectedTags={ tags } setDate={ (value: string) => onChangeFilter("fromStartDate", value) } setDistrictNames={ (value: Components.Schemas.District["name"][]) => onChangeFilter("districtNames", value) } setPageSize={ onChangePageSize } @@ -147,8 +151,10 @@ const Cases: React.FC = () => { setSelectedCorporations={ (value: string[]) => onChangeFilter("housingCorporations", value) } setSelectedProjects={ (value: string[]) => onChangeFilter("projects", value) } setSelectedSubjects={ (value: string[]) => onChangeFilter("subjects", value) } + setSelectedTags={ (value: string[]) => onChangeFilter("tags", value) } setTheme={ (value: string) => onChangeFilter("theme", value) } subjects={ subjectsTheme?.results } + tags={ tagsTheme?.results } theme={ theme } themes={ themes } /> diff --git a/src/app/components/cases/CasesFilter/CasesFilter.tsx b/src/app/components/cases/CasesFilter/CasesFilter.tsx index b33701d02..2ce1c0342 100644 --- a/src/app/components/cases/CasesFilter/CasesFilter.tsx +++ b/src/app/components/cases/CasesFilter/CasesFilter.tsx @@ -21,6 +21,7 @@ type Props = { selectedCorporations: string[] selectedProjects: string[] selectedSubjects: string[] + selectedTags: string[] setDate: (value: string) => void setDistrictNames: (value: Components.Schemas.District["name"][]) => void setPageSize: (value: string) => void @@ -28,8 +29,10 @@ type Props = { setSelectedCorporations: (value: Components.Schemas.HousingCorporation["name"][]) => void setSelectedProjects: (value: string[]) => void setSelectedSubjects: (value: string[]) => void + setSelectedTags: (value: string[]) => void setTheme: (value: string) => void subjects?: Components.Schemas.Subject[] + tags?: Components.Schemas.Tag[] theme: string themes: Components.Schemas.CaseTheme[] } @@ -38,7 +41,8 @@ const CasesFilter: React.FC = ({ date, setDate, theme, themes, setTheme, pageSize, setPageSize, reasons, reason, setReason, districts, districtNames, setDistrictNames, corporations, selectedCorporations, setSelectedCorporations, subjects, - setSelectedSubjects, selectedSubjects, projects, selectedProjects, setSelectedProjects + setSelectedSubjects, selectedSubjects, tags, selectedTags, setSelectedTags, + projects, selectedProjects, setSelectedProjects }) => ( @@ -77,6 +81,15 @@ const CasesFilter: React.FC = ({ byId /> )} + { subjects !== undefined && ( + + )} = ({ bagId }) => { const [data, { isBusy }] = usePermitsPowerBrowser(bagId) - const [isChecked, setIsChecked] = useState(false) + const [isChecked, setIsChecked] = useState(true) const permits: any = data || [] return ( <> @@ -39,8 +39,8 @@ const PermitsPowerBrowser: React.FC = ({ bagId }) => { data-testid="checkBox_display_all_permts" onChange={ (e: React.ChangeEvent) => { setIsChecked(e.target.checked) - } } - + }} + defaultChecked={true} /> )} diff --git a/src/app/components/search/SearchResults/columns.tsx b/src/app/components/search/SearchResults/columns.tsx index 157f362aa..7a4d42efa 100644 --- a/src/app/components/search/SearchResults/columns.tsx +++ b/src/app/components/search/SearchResults/columns.tsx @@ -2,7 +2,14 @@ import TableAction from "app/components/shared/TableAction/TableAction" import to from "app/routing/utils/to" const columns = [ - { header: "Adres", dataIndex: "adres", minWidth: 100 }, + { + header: "Adres", + dataIndex: "adres", + minWidth: 100, + render: (adres: any, obj: any) => ( + `${ adres } ${ obj.type_adres === "Nevenadres" ? "(Nevenadres)" : "" }` + ) + }, { header: "Postcode", dataIndex: "postcode", minWidth: 100 }, { dataIndex: "adresseerbaar_object_id", diff --git a/src/app/components/shared/Form/ShowHide/ShowHide.tsx b/src/app/components/shared/Form/ShowHide/ShowHide.tsx index 7c65d47ff..989048414 100644 --- a/src/app/components/shared/Form/ShowHide/ShowHide.tsx +++ b/src/app/components/shared/Form/ShowHide/ShowHide.tsx @@ -1,6 +1,6 @@ import { useEffect } from "react" -import produce from "immer" +import { produce } from "immer" import { useFormState, useForm } from "react-final-form" import { FormState } from "final-form" import { Dimensions, Responsive } from "@amsterdam/amsterdam-react-final-form" diff --git a/src/app/components/shared/MockWrapper/MockWrapper.tsx b/src/app/components/shared/MockWrapper/MockWrapper.tsx index 42b136482..1ec3aada4 100644 --- a/src/app/components/shared/MockWrapper/MockWrapper.tsx +++ b/src/app/components/shared/MockWrapper/MockWrapper.tsx @@ -1,5 +1,6 @@ import styled from "styled-components" import { themeColor, ascDefaultTheme } from "@amsterdam/asc-ui" +import { env } from "app/config/env" type Props = { hasPadding?: boolean @@ -19,7 +20,7 @@ const Div = styled.div` ` const MockWrapper: React.FC = ({ hasPadding = true, children }) => ( -
+
{ children }
) diff --git a/src/app/components/shared/navigation/IsAuthorizedMenuButton.tsx b/src/app/components/shared/navigation/IsAuthorizedMenuButton.tsx index 477eb4f26..0fdb95ff0 100644 --- a/src/app/components/shared/navigation/IsAuthorizedMenuButton.tsx +++ b/src/app/components/shared/navigation/IsAuthorizedMenuButton.tsx @@ -2,6 +2,7 @@ import { MenuButton, Link } from "@amsterdam/asc-ui" import styled from "styled-components" import useHasPermission from "app/state/rest/custom/usePermissions/useHasPermission" import StyledButtonLink from "./StyledButtonLink" +import { env } from "app/config/env" type Props = React.ComponentProps & { permissionNames: Components.Schemas.PermissionsEnum[] @@ -52,7 +53,7 @@ const IsAuthorizedMenuButton: React.FC = ({ permissionNames, isHidden, to */ if (isAuthorized && text === "Digitaal toezicht") { return ( - { text } + { text } ) } else if (isAuthorized) { return ( diff --git a/src/app/components/tasks/TableTasks/SelectTask/SelectTask.tsx b/src/app/components/tasks/TableTasks/SelectTask/SelectTask.tsx index 0a94a6c80..260abbd72 100644 --- a/src/app/components/tasks/TableTasks/SelectTask/SelectTask.tsx +++ b/src/app/components/tasks/TableTasks/SelectTask/SelectTask.tsx @@ -6,7 +6,7 @@ import UserIcon from "./UserIcon" import useContextCache from "app/state/rest/provider/useContextCache" import { createNameAbbreviation } from "app/components/shared/Helpers/helpers" import CustomTooltip from "app/components/help/HelpContent/CustomTooltip" -import useHasPermission, { SENSITIVE_CASE_PERMISSION } from "app/state/rest/custom/usePermissions/useHasPermission" +import useHasPermission, { CAN_PERFORM_TASK, SENSITIVE_CASE_PERMISSION } from "app/state/rest/custom/usePermissions/useHasPermission" import { ContextValues } from "app/state/context/ValueProvider" import { getQueryUrl } from "app/state/rest/tasks" @@ -34,9 +34,10 @@ const SelectTask: React.FC = ({ taskId, taskOwner, isEnforcement }) => { // Two different providers are being used. :( const { pagination, sorting, role, theme, owner, projects, subjects, - taskNames, reason, districtNames, housingCorporations + tags, taskNames, reason, districtNames, housingCorporations } = useContext(ContextValues)["tasks"] const [hasPermission] = useHasPermission([SENSITIVE_CASE_PERMISSION]) + const [hasPerformTaskPermission] = useHasPermission([CAN_PERFORM_TASK]) const [isChecked, setIsChecked] = useState(false) const [loading, setLoading] = useState(false) const [data, { isBusy }] = useUsersMe() @@ -54,6 +55,7 @@ const SelectTask: React.FC = ({ taskId, taskOwner, isEnforcement }) => { projects, reason, subjects, + tags, districtNames, housingCorporations ) @@ -92,13 +94,14 @@ const SelectTask: React.FC = ({ taskId, taskOwner, isEnforcement }) => { if (taskOwner && taskOwner !== data?.id ) { return } - return ( + + return hasPerformTaskPermission ? ( - ) + ) : <>- } export default SelectTask diff --git a/src/app/components/tasks/Tasks/Tasks.tsx b/src/app/components/tasks/Tasks/Tasks.tsx index 7c3fc4dee..f19f7ce98 100644 --- a/src/app/components/tasks/Tasks/Tasks.tsx +++ b/src/app/components/tasks/Tasks/Tasks.tsx @@ -1,6 +1,7 @@ import { useEffect, useContext } from "react" -import { useRoles, useTasks, useCaseThemes, useTaskNames, useProjects, - useUsersMe, useTasksReasons, useDistricts, useCorporations, useSubjects +import { useRoles, useTasks, useCaseThemes, useTaskNames, + useProjects, useUsersMe, useTasksReasons, useDistricts, + useCorporations, useSubjects, useTags } from "app/state/rest" import TableTasks from "app/components/tasks/TableTasks/TableTasks" import TasksFilter from "../TasksFilter/TasksFilter" @@ -46,7 +47,7 @@ const FilterContainer = styled.div` const Tasks: React.FC = () => { const { count, districtNames, housingCorporations, owner, pagination, projects, - reason, results, role, sorting, subjects, taskNames, theme, updateContextTasks + reason, results, role, sorting, subjects, tags, taskNames, theme, updateContextTasks } = useContext(ContextValues)["tasks"] const [hasPermission] = useHasPermission([SENSITIVE_CASE_PERMISSION]) const [roles] = useRoles() @@ -56,6 +57,7 @@ const Tasks: React.FC = () => { const themeId = getThemeId(caseThemes?.results, theme) const [projectsTheme] = useProjects(themeId) const [subjectsTheme] = useSubjects(themeId) + const [tagsTheme] = useTags(themeId) const [tasksDistricts] = useDistricts() const [corporationData] = useCorporations() const [dataSource, { isBusy }] = useTasks( @@ -70,6 +72,7 @@ const Tasks: React.FC = () => { projects, reason, subjects, + tags, districtNames, housingCorporations ) @@ -88,6 +91,7 @@ const Tasks: React.FC = () => { projects, reason, subjects, + tags, districtNames, housingCorporations ) @@ -138,6 +142,7 @@ const Tasks: React.FC = () => { tasksContextItem.projects = [] tasksContextItem.reason = "" tasksContextItem.subjects = [] + tasksContextItem.tags = [] } updateContextTasks(tasksContextItem) } @@ -212,6 +217,7 @@ const Tasks: React.FC = () => { selectedCorporations={ housingCorporations } selectedProjects={ projects } selectedSubjects={ subjects } + selectedTags={ tags } selectedTaskNames={ taskNames } setDistrictNames={ (value: Components.Schemas.District["name"][]) => onChangeFilter("districtNames", value) } setOwner={ (value: string) => onChangeFilter("owner", value) } @@ -221,9 +227,11 @@ const Tasks: React.FC = () => { setSelectedCorporations={ (value: string[]) => onChangeFilter("housingCorporations", value) } setSelectedProjects={ (value: string[]) => onChangeFilter("projects", value) } setSelectedSubjects={ (value: string[]) => onChangeFilter("subjects", value) } + setSelectedTags={ (value: string[]) => onChangeFilter("tags", value) } setSelectedTaskNames={ (value: Components.Schemas.CaseUserTaskTaskName["name"][]) => onChangeFilter("taskNames", value) } setTheme={ (value: string) => onChangeFilter("theme", value) } subjects={ subjectsTheme?.results } + tags={ tagsTheme?.results } taskNames={ taskNamesData } theme={ theme } themes={ caseThemes?.results } diff --git a/src/app/components/tasks/TasksFilter/TasksFilter.tsx b/src/app/components/tasks/TasksFilter/TasksFilter.tsx index 3123dfdae..3c95a27fe 100644 --- a/src/app/components/tasks/TasksFilter/TasksFilter.tsx +++ b/src/app/components/tasks/TasksFilter/TasksFilter.tsx @@ -24,6 +24,7 @@ type Props = { selectedCorporations: string[] selectedProjects: string[] selectedSubjects: string[] + selectedTags: string[] selectedTaskNames: string[] setDistrictNames: (value: Components.Schemas.District["name"][]) => void setPageSize: (value: string) => void @@ -32,10 +33,12 @@ type Props = { setSelectedCorporations: (value: Components.Schemas.HousingCorporation["name"][]) => void setSelectedProjects: (value: string[]) => void setSelectedSubjects: (value: string[]) => void + setSelectedTags: (value: string[]) => void setSelectedTaskNames: (value: Components.Schemas.CaseUserTaskTaskName["name"][]) => void setTheme: (value: string) => void setOwner: (value: string) => void subjects?: Components.Schemas.Subject[] + tags?: Components.Schemas.Tag[] taskNames?: Components.Schemas.CaseUserTaskTaskName[] theme: string themes?: Components.Schemas.CaseTheme[] @@ -45,7 +48,8 @@ const TasksFilter: React.FC = ({ role, roles, setRole, theme, themes, setTheme, pageSize, setPageSize, owner, setOwner, taskNames, selectedTaskNames, setSelectedTaskNames, reasons, reason, setReason, districts, districtNames, setDistrictNames, corporations, selectedCorporations, - setSelectedCorporations, subjects, setSelectedSubjects, selectedSubjects, projects, + setSelectedCorporations, subjects, setSelectedSubjects, selectedSubjects, + tags, selectedTags, setSelectedTags, projects, selectedProjects, setSelectedProjects }) => ( <> @@ -109,6 +113,15 @@ const TasksFilter: React.FC = ({ byId /> )} + { tags !== undefined && ( + + )} { const showNotFound = has404 const [isDocumentsTabActive, setIsDocumentsTabActive] = useState(false) - if (showSpinner) { return } @@ -51,7 +51,7 @@ const DetailsPage: React.FC = () => { - + Zaakhistorie @@ -63,7 +63,7 @@ const DetailsPage: React.FC = () => { ] - if (process.env.REACT_APP_ENVIRONMENT !== "production") { + if (env.REACT_APP_ENVIRONMENT !== "production") { tabs.push( setIsDocumentsTabActive(true) } > diff --git a/src/app/pages/cases/routes.tsx b/src/app/pages/cases/routes.tsx index 16c5b06e6..5a62d9987 100644 --- a/src/app/pages/cases/routes.tsx +++ b/src/app/pages/cases/routes.tsx @@ -25,47 +25,56 @@ export default { "afronding/:caseUserTaskId": { Page: CompleteCasePage, title: "Zaak afronden", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "taak": { Page: TaskCreatePage, title: "Taak opvoeren", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "debriefing/:caseUserTaskId": { Page: DebriefCreatePage, title: "Debrief terugkoppeling geven", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "besluit/:caseUserTaskId": { Page: DecisionCreatePage, title: "Resultaat besluit", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "snel-besluit/:caseUserTaskId": { Page: QuickDecisionCreatePage, title: "Resultaat besluit", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "aanschrijving/:caseUserTaskId": { Page: SummonCreatePage, title: "Resultaat aanschrijving", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "inplanning/:caseUserTaskId": { Page: ScheduleCreatePage, title: "Bezoek inplannen", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "huisbezoek/:caseUserTaskId": { Page: VisitCreatePage, title: "Resultaat bezoek", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] }, "melding/:caseUserTaskId": { Page: CitizenReportPage, title: "Melding verwerken", - icon: "Edit" + icon: "Edit", + permissionNames: ["perform_task"] } } } diff --git a/src/app/routing/components/PageTitle.tsx b/src/app/routing/components/PageTitle.tsx index 4e0743fdf..b5a1df728 100644 --- a/src/app/routing/components/PageTitle.tsx +++ b/src/app/routing/components/PageTitle.tsx @@ -1,8 +1,9 @@ import { useEffect } from "react" import find from "../utils/find" import routes from "app/routing/routes" +import { env } from "app/config/env" -const PAGE_TITLE = process.env.REACT_APP_PAGE_TITLE ?? "" +const PAGE_TITLE = env.REACT_APP_PAGE_TITLE ?? "" const setPageTitle = () => { const route = find(routes, window.location.pathname) diff --git a/src/app/routing/routes.tsx b/src/app/routing/routes.tsx index 89bd69025..5a344c1af 100644 --- a/src/app/routing/routes.tsx +++ b/src/app/routing/routes.tsx @@ -6,6 +6,7 @@ import helpRoutes from "../pages/help/routes" import fineRoutes from "../pages/fines/routes" import homeRoutes from "../pages/home/routes" import tonRoutes from "../pages/ton/routes" +import { env } from "app/config/env" import routesToRouteConfig, { RouteConfigObject } from "./utils/routesToRouteConfig" @@ -22,6 +23,6 @@ const routes = { const homeRoutesObject = routesToRouteConfig(homeRoutes, []) const routesObject = routesToRouteConfig(routes as RouteConfigObject, homeRoutesObject["/"].path, homeRoutesObject) -if (process.env.NODE_ENV === "development") console.log("Routes:", routesObject) +if (env.NODE_ENV === "development") console.log("Routes:", routesObject) export type Routes = typeof routesObject export default routesObject diff --git a/src/app/routing/utils/to.ts b/src/app/routing/utils/to.ts index 42efa1471..37fdc8e56 100644 --- a/src/app/routing/utils/to.ts +++ b/src/app/routing/utils/to.ts @@ -1,3 +1,4 @@ +import { env } from "app/config/env" import routesObject, { Routes } from "app/routing/routes" import slashSandwich from "./slashSandwich" @@ -39,7 +40,7 @@ const applyRouteParams = export default (path: K, params?: RouteParams) => { const str = path.toString() - if (process.env.NODE_ENV === "development" && !(slashSandwich([str], { trailingSlash: true }) in routesObject)) console.warn(`${ str } is not an existing route`) + if (env.NODE_ENV === "development" && !(slashSandwich([str], { trailingSlash: true }) in routesObject)) console.warn(`${ str } is not an existing route`) return params !== undefined ? applyRouteParams(str, params) : str diff --git a/src/app/sentry/init.ts b/src/app/sentry/init.ts deleted file mode 100644 index 0c39e03ad..000000000 --- a/src/app/sentry/init.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { init } from "@sentry/react" - -export default () => { - const dsn = process.env.REACT_APP_SENTRY_DSN - const environment = process.env.REACT_APP_ENVIRONMENT - const name = process.env.REACT_APP_SENTRY_PROJECT_NAME ?? "" - const release = process.env.REACT_APP_GIT_COMMIT_HASH ?? "" - if (dsn === undefined || environment === undefined) return - - init({ - dsn, - environment, - release: `${ name }@${ release }`, - autoSessionTracking: false - }) -} \ No newline at end of file diff --git a/src/app/state/auth/keycloak/isLocalDevelopment.ts b/src/app/state/auth/keycloak/isLocalDevelopment.ts index 66382e9f5..f263c49a3 100644 --- a/src/app/state/auth/keycloak/isLocalDevelopment.ts +++ b/src/app/state/auth/keycloak/isLocalDevelopment.ts @@ -1 +1,3 @@ -export default process.env.NODE_ENV === "development" && process.env.REACT_APP_API_TOKEN !== undefined +import { env } from "app/config/env" + +export default env.NODE_ENV === "development" && env.REACT_APP_API_TOKEN !== undefined diff --git a/src/app/state/auth/keycloak/keycloak.mock.ts b/src/app/state/auth/keycloak/keycloak.mock.ts index 3d3da4e08..30ce25e0e 100644 --- a/src/app/state/auth/keycloak/keycloak.mock.ts +++ b/src/app/state/auth/keycloak/keycloak.mock.ts @@ -1,6 +1,8 @@ +import { env } from "app/config/env" + export default { init: async () => {}, updateToken: async () => {}, logout: () => {}, - token: process.env.REACT_APP_API_TOKEN ?? "" + token: env.REACT_APP_API_TOKEN ?? "" } diff --git a/src/app/state/auth/keycloak/keycloak.ts b/src/app/state/auth/keycloak/keycloak.ts index 4d70a7d2c..9d55f3833 100644 --- a/src/app/state/auth/keycloak/keycloak.ts +++ b/src/app/state/auth/keycloak/keycloak.ts @@ -2,9 +2,10 @@ import settings from "./settings" import Keycloak from "keycloak-js" import keycloakMock from "./keycloak.mock" import isLocalDevelopment from "./isLocalDevelopment" +import { env } from "app/config/env" -export const keycloak = process.env.NODE_ENV !== "test" && isLocalDevelopment === false ? new (Keycloak as any)(settings) : keycloakMock +export const keycloak = env.NODE_ENV !== "test" && isLocalDevelopment === false ? new (Keycloak as any)(settings) : keycloakMock -if (process.env.NODE_ENV === "development") { +if (env.NODE_ENV === "development") { (window as any).keycloak = keycloak } diff --git a/src/app/state/auth/keycloak/settings.ts b/src/app/state/auth/keycloak/settings.ts index 87749dfd8..edaf3473a 100644 --- a/src/app/state/auth/keycloak/settings.ts +++ b/src/app/state/auth/keycloak/settings.ts @@ -1,9 +1,11 @@ +import { env } from "app/config/env" + export default { - "url": "https://iam.amsterdam.nl/auth/", - "realm": process.env.REACT_APP_KEYCLOAK_REALM ?? "datapunt-ad-acc", + "url": env.REACT_APP_AUTH_URL ?? "https://iam.amsterdam.nl/auth/", + "realm": env.REACT_APP_KEYCLOAK_REALM ?? "", "ssl-required": "external", - "resource": "wonen-zaaksysteem-frontend", + "resource": env.REACT_APP_KEYCLOAK_CLIENT_ID ?? "wonen-woon-o-azure", "public-client": true, "confidential-port": 0, - "clientId": "wonen-zaaksysteem-frontend" + "clientId": env.REACT_APP_KEYCLOAK_CLIENT_ID ?? "wonen-woon-o-azure" } diff --git a/src/app/state/context/initialState.ts b/src/app/state/context/initialState.ts index 3413d8453..6601aa614 100644 --- a/src/app/state/context/initialState.ts +++ b/src/app/state/context/initialState.ts @@ -12,6 +12,7 @@ export type StateType = { results: Components.Schemas.Case[] sorting: TABLE.Schemas.Sorting subjects: string[] + tags: string[] theme: string updateContextCases: (payload: any) => void } @@ -28,6 +29,7 @@ export type StateType = { sorting: TABLE.Schemas.Sorting theme: string subjects: string[] + tags: string[] taskNames: Components.Schemas.CaseUserTaskTaskName["name"][] updateContextTasks: (payload: any) => void } @@ -52,6 +54,7 @@ export const initialState: StateType = { order: "DESCEND" }, subjects: [], + tags: [], theme: "", updateContextCases: noop }, @@ -73,6 +76,7 @@ export const initialState: StateType = { order: "ASCEND" }, subjects: [], + tags: [], taskNames: [], theme: "", updateContextTasks: noop diff --git a/src/app/state/flashMessages/hooks/useFlashMessagesReducer.ts b/src/app/state/flashMessages/hooks/useFlashMessagesReducer.ts index 26648d5bb..1c42b13c9 100644 --- a/src/app/state/flashMessages/hooks/useFlashMessagesReducer.ts +++ b/src/app/state/flashMessages/hooks/useFlashMessagesReducer.ts @@ -1,6 +1,6 @@ import { ComponentProps, ReactNode, useCallback, useEffect, useReducer } from "react" import { useLocation } from "react-router-dom" -import produce from "immer" +import { produce } from "immer" import { Alert } from "@amsterdam/asc-ui" export type FlashMessage = ComponentProps diff --git a/src/app/state/rest/case.ts b/src/app/state/rest/case.ts index ba63c9bbf..5cd155cfd 100644 --- a/src/app/state/rest/case.ts +++ b/src/app/state/rest/case.ts @@ -228,3 +228,14 @@ export const useDocumentTypesByCase = (caseId: Components.Schemas.CaseDetail["id isProtected: true }) } + +export const useCaseWorkflows = (caseId: Components.Schemas.CaseDetail["id"], options?: Options) => { + const handleError = useErrorHandler() + return useApiRequest({ + ...options, + url: makeApiUrl("cases", caseId, "workflows"), + groupName: "cases", + handleError, + isProtected: true + }) +} diff --git a/src/app/state/rest/cases.ts b/src/app/state/rest/cases.ts index c5584cebc..865ff2c10 100644 --- a/src/app/state/rest/cases.ts +++ b/src/app/state/rest/cases.ts @@ -39,6 +39,7 @@ export const useCases = ( projects?: string[], reason?: string, subjects?: string[], + tags?: string[], districtNames?: Components.Schemas.District["name"][], housingCorporations?: string[], options?: Options @@ -66,6 +67,9 @@ export const useCases = ( if (subjects && subjects?.length > 0) { urlParams.subject = subjects } + if (tags && tags?.length > 0) { + urlParams.tag = tags + } if (districtNames && districtNames?.length > 0) { urlParams.district_name = districtNames } diff --git a/src/app/state/rest/custom/usePanoramaByBagId/usePanoramaByBagId.ts b/src/app/state/rest/custom/usePanoramaByBagId/usePanoramaByBagId.ts index 54d2a94c3..53e4e5c59 100644 --- a/src/app/state/rest/custom/usePanoramaByBagId/usePanoramaByBagId.ts +++ b/src/app/state/rest/custom/usePanoramaByBagId/usePanoramaByBagId.ts @@ -6,8 +6,8 @@ const usePanoramaByBagId = (bagId: string, width: number | undefined, aspect: nu const foundAddress = getAddressFromBagResults(data) return usePanorama( - foundAddress?.centroid[1], - foundAddress?.centroid[0], + foundAddress?.centroid?.[1], + foundAddress?.centroid?.[0], width, aspect, radius, diff --git a/src/app/state/rest/custom/usePermissions/useHasPermission.ts b/src/app/state/rest/custom/usePermissions/useHasPermission.ts index aa57318b7..a656d4ad3 100644 --- a/src/app/state/rest/custom/usePermissions/useHasPermission.ts +++ b/src/app/state/rest/custom/usePermissions/useHasPermission.ts @@ -26,3 +26,4 @@ export default (permissionsToCheck?: Components.Schemas.PermissionsEnum[]) => { } export const SENSITIVE_CASE_PERMISSION = "access_sensitive_dossiers" +export const CAN_PERFORM_TASK = "perform_task" diff --git a/src/app/state/rest/hooks/useApiCache.ts b/src/app/state/rest/hooks/useApiCache.ts index e2ffa63ba..c2034d8c6 100644 --- a/src/app/state/rest/hooks/useApiCache.ts +++ b/src/app/state/rest/hooks/useApiCache.ts @@ -1,5 +1,5 @@ import { useCallback, useReducer } from "react" -import produce from "immer" +import { produce } from "immer" export type ApiCacheItem = { valid: boolean diff --git a/src/app/state/rest/hooks/useRequestQueue.tsx b/src/app/state/rest/hooks/useRequestQueue.tsx index faa9dfbb4..3a00cfa5d 100644 --- a/src/app/state/rest/hooks/useRequestQueue.tsx +++ b/src/app/state/rest/hooks/useRequestQueue.tsx @@ -1,5 +1,5 @@ import { useReducer, useCallback, useEffect, useState } from "react" -import produce from "immer" +import { produce } from "immer" type QueuedPromise = () => Promise diff --git a/src/app/state/rest/hooks/utils/apiUrl.ts b/src/app/state/rest/hooks/utils/apiUrl.ts index fe090df67..cae690e05 100644 --- a/src/app/state/rest/hooks/utils/apiUrl.ts +++ b/src/app/state/rest/hooks/utils/apiUrl.ts @@ -1,18 +1,31 @@ import slashSandwich from "../../../../routing/utils/slashSandwich" +import { env } from "app/config/env" /** * Utility function to create an API URL */ -export const makeApiUrl = (...paths: Array) => slashSandwich([process.env.REACT_APP_API_HOST, process.env.REACT_APP_API_PATH, ...paths]) +export const makeApiUrl = (...paths: Array) => + slashSandwich([env.REACT_APP_API_HOST, env.REACT_APP_API_PATH, ...paths]) /** * Utility function to strip API host from URL */ -export const stripApiHostFromUrl = (url: string) => - url.replace(new RegExp(`^${ process.env.REACT_APP_API_HOST }${ process.env.REACT_APP_API_PATH }`), "") +export const stripApiHostFromUrl = (url: string) => { + const apiHost = env.REACT_APP_API_HOST + const apiPath = env.REACT_APP_API_PATH + + // Ensure the host and path are escaped properly for regular expression usage + const escapedApiHost = apiHost.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + const escapedApiPath = apiPath.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + + const fullPattern = `^${ escapedApiHost }${ escapedApiPath }` + const regex = new RegExp(fullPattern) + + return url.replace(regex, "") +} /** * Utility function to create an API URL for TON */ export const makeTonApiUrl = (...paths: Array) => - slashSandwich([process.env.REACT_APP_API_HOST_TON, process.env.REACT_APP_API_PATH_TON, ...paths], { trailingSlash: false }) + slashSandwich([env.REACT_APP_API_HOST_TON, env.REACT_APP_API_PATH_TON, ...paths], { trailingSlash: false }) \ No newline at end of file diff --git a/src/app/state/rest/tasks.ts b/src/app/state/rest/tasks.ts index 23e2a18a3..41bacbf25 100644 --- a/src/app/state/rest/tasks.ts +++ b/src/app/state/rest/tasks.ts @@ -43,6 +43,7 @@ export const getQueryUrl = ( projects?: string[], reason?: string, subjects?: string[], + tags?: string[], districtNames?: Components.Schemas.District["name"][], housingCorporations?: string[] ) => { @@ -67,6 +68,9 @@ export const getQueryUrl = ( if (subjects && subjects?.length > 0) { urlParams.subject = subjects } + if (tags && tags?.length > 0) { + urlParams.tag = tags + } if (taskNames && taskNames?.length > 0) { urlParams.name = taskNames } @@ -103,6 +107,7 @@ export const useTasks = ( projects?: string[], reason?: string, subjects?: string[], + tags?: string[], districtNames?: Components.Schemas.District["name"][], housingCorporations?: string[], options?: Options @@ -120,6 +125,7 @@ export const useTasks = ( projects, reason, subjects, + tags, districtNames, housingCorporations ) diff --git a/src/index.tsx b/src/index.tsx index 4a292a0eb..66cb78881 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,14 +1,10 @@ -import "./polyfills/" - import { StrictMode } from "react" import ReactDOM from "react-dom" import App from "./App" import * as serviceWorker from "./serviceWorker" import packageInfo from "../package.json" +import { env } from "app/config/env" -// Sentry -import initSentry from "./app/sentry/init" -initSentry() ReactDOM.render( @@ -23,4 +19,4 @@ ReactDOM.render( serviceWorker.unregister() console.log("Name:", packageInfo.name, packageInfo.version) -console.log("Commit hash:", process.env.REACT_APP_GIT_COMMIT_HASH ?? "n/a") +console.log("Commit hash:", env.REACT_APP_GIT_COMMIT_HASH ?? "n/a") diff --git a/src/polyfills/index.ts b/src/polyfills/index.ts deleted file mode 100644 index f9ebe5bb8..000000000 --- a/src/polyfills/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import "react-app-polyfill/ie11" -import "react-app-polyfill/stable" -import { enableES5, enableAllPlugins } from "immer" - -enableES5() -enableAllPlugins() diff --git a/src/serviceWorker.ts b/src/serviceWorker.ts index 7901f0d0d..8bf0c970f 100644 --- a/src/serviceWorker.ts +++ b/src/serviceWorker.ts @@ -9,6 +9,7 @@ // To learn more about the benefits of this model and instructions on how to // opt-in, read https://bit.ly/CRA-PWA +import { env } from "app/config/env" const isLocalhost = Boolean( window.location.hostname === "localhost" || @@ -26,10 +27,10 @@ type Config = { }; export function register(config?: Config) { - if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) { + if (env.NODE_ENV === "production" && "serviceWorker" in navigator) { // The URL constructor is available in all browsers that support SW. const publicUrl = new URL( - process.env.PUBLIC_URL, + env.PUBLIC_URL, window.location.href ) if (publicUrl.origin !== window.location.origin) { @@ -40,7 +41,7 @@ export function register(config?: Config) { } window.addEventListener("load", () => { - const swUrl = `${ process.env.PUBLIC_URL }/service-worker.js` + const swUrl = `${ env.PUBLIC_URL }/service-worker.js` if (isLocalhost) { // This is running on localhost. Let's check if a service worker still exists or not.