diff --git a/.eslintrc.json b/.eslintrc.json index 855f5a80..8844c39a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,13 +6,12 @@ "prettier" ], "overrides": [ - // Only uses Testing Library lint rules in test files + // Overrides for Playwright tests { - "files": [ - "**/__tests__/**/*.[jt]s?(x)", - "**/?(*.)+(spec|test).[jt]s?(x)" - ], - "extends": ["plugin:testing-library/react"] + "files": ["tests/**/*.[jt]s?(x)"], + "rules": { + "testing-library/prefer-screen-queries": "off" + } } ], "rules": { diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 00000000..dcf1158c --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,43 @@ +name: Playwright Tests +on: + push: + branches: [main, deploy-staging, 4284-playwright-setup] + pull_request: + branches: [main, deploy-staging] +jobs: + test: + timeout-minutes: 10 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci --force + + - name: Install Playwright Browsers + run: npx playwright install --with-deps + + - name: Build app + run: npm run build + env: + NEXT_PUBLIC_DCAPI_ENDPOINT: ${{ secrets.NEXT_PUBLIC_DCAPI_ENDPOINT }} + + - name: Start app + run: npm run start & + + - name: Wait for server + run: npx wait-on http://localhost:3000 + + - name: Run Playwright tests + run: npx playwright test + env: + BASE_URL: ${{ secrets.BASE_URL }} + + - uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/.gitignore b/.gitignore index 3c5de8d9..075be015 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,9 @@ yarn-error.log* # vscode /.vscode/* + +# playwright +/test-results/ +/playwright-report/* +/blob-report/ +/playwright/.cache/ diff --git a/README.md b/README.md index 810f7a1a..747375e7 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ Digital Collections v2 (DCv2) is a UI application for discovering and interactin The following dependencies should be "pinned" or held behind `@latest` versions -- `next`: We've experienced issues with the AWS Amplify build process when using `@latest` versions of NextJS. To be safe, in general we should pin NextJS to >= 1 minor versions behind `next@latest`. - `@elastic/elasticsearch`: To match the version of `OpenSearch` our app uses. - `swiper` - `@honeybadger-io/js` @@ -138,17 +137,34 @@ A pre-commit hook will ensure code is linted before committed. ### End to end tests -Test fixtures can be accessed by pointing the app to a [Test Environment API](https://github.com/nulib/dc-test-environment). Setting the `NEXT_PUBLIC_DCAPI_ENDPOINT` `env` variable value to https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2 will run DC v2 against test data. The following commands start your server and the test suite. +Test fixtures can be accessed by pointing the app to a [Test Environment API](https://github.com/nulib/dc-test-environment). ```bash -# Start local server +NEXT_PUBLIC_DCAPI_ENDPOINT="https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2" +``` + +```bash +# Start local server (automatically points NEXT_PUBLIC_DCAPI_ENDPOINT to the test data API) npm run dev:test-env -# Start Cypress test runner -npm run cypress:open +# If in AWS Dev Environment, set a BASE_URL environment variable in a .env.local file +BASE_URL="[YOUR_DEV_ID].dev.rdc.library.northwestern.edu" + +# Start Playwright tests in headless mode +npm run test:playwright +``` + +To run more visual tests, try experimenting with: + +```bash +# Run in an interactive test browser to visually see tests run +npx playwright test --ui + +# Run all tests in headed mode +npx playwright test --headed ``` -E2E tests use [Cypress](https://docs.cypress.io/), and are linted with [Cypress ESLint Plugin](https://github.com/cypress-io/eslint-plugin-cypress). +For more info, view the docs: [Playwright](https://playwright.dev/). ### Unit tests diff --git a/components/Facets/Filter/Clear.tsx b/components/Facets/Filter/Clear.tsx index 2e2d49c6..e4236c9b 100644 --- a/components/Facets/Filter/Clear.tsx +++ b/components/Facets/Filter/Clear.tsx @@ -20,7 +20,6 @@ const FilterClear: React.FC = ({ isModal = false }) => { } = router; const handleClear = () => { - console.log("Clear click"); isModal ? filterDispatch({ type: "updateUserFacets", diff --git a/components/Footer/Footer.tsx b/components/Footer/Footer.tsx index ffa71d95..201bbab0 100644 --- a/components/Footer/Footer.tsx +++ b/components/Footer/Footer.tsx @@ -7,7 +7,7 @@ import SiteContentMessage from "./SiteContentMessage/SiteContentMessage"; export default function Footer() { return ( - + diff --git a/components/Header/Super.tsx b/components/Header/Super.tsx index 28e7b1ed..8724e606 100644 --- a/components/Header/Super.tsx +++ b/components/Header/Super.tsx @@ -5,6 +5,7 @@ import { Super, User, } from "@/components/Header/Header.styled"; + import Container from "../Shared/Container"; import { DCAPI_ENDPOINT } from "@/lib/constants/endpoints"; import Link from "next/link"; diff --git a/components/Nav/Nav.tsx b/components/Nav/Nav.tsx index 8dacddb4..b6b533e4 100644 --- a/components/Nav/Nav.tsx +++ b/components/Nav/Nav.tsx @@ -6,7 +6,7 @@ interface NavProps { } const Nav: React.FC = ({ children }) => { - return {children}; + return {children}; }; export default Nav; diff --git a/components/Shared/Container.tsx b/components/Shared/Container.tsx index dee88ed8..d582b368 100644 --- a/components/Shared/Container.tsx +++ b/components/Shared/Container.tsx @@ -7,6 +7,7 @@ interface ContainerProps { containerType?: "default" | "wide"; isFlex?: boolean; maxWidth?: number; + [key: string]: unknown; } const Container: React.FC = ({ @@ -15,6 +16,7 @@ const Container: React.FC = ({ containerType = "default", isFlex = false, maxWidth, + ...restProps }) => { const manualWidth = maxWidth ? { maxWidth: maxWidth } : {}; @@ -24,6 +26,7 @@ const Container: React.FC = ({ containerType={containerType} css={{ ...manualWidth }} isFlex={isFlex} + {...restProps} > {children} diff --git a/components/Shared/SVG/Northwestern.tsx b/components/Shared/SVG/Northwestern.tsx index b435575e..33c5ac05 100644 --- a/components/Shared/SVG/Northwestern.tsx +++ b/components/Shared/SVG/Northwestern.tsx @@ -13,6 +13,7 @@ const NorthwesternWordmark: React.FC = () => ( -// *********************************************** -// This example commands.ts shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add('login', (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) -// -// declare global { -// namespace Cypress { -// interface Chainable { -// login(email: string, password: string): Chainable -// drag(subject: string, options?: Partial): Chainable -// dismiss(subject: string, options?: Partial): Chainable -// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable -// } -// } -// } diff --git a/cypress/support/index.ts b/cypress/support/index.ts deleted file mode 100644 index 9b1b1906..00000000 --- a/cypress/support/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable @typescript-eslint/no-namespace */ - -// in cypress/support/index.ts -// load type definitions that come with Cypress module -/// - -export {}; - -declare global { - namespace Cypress { - interface Chainable { - /** - * Custom command to select DOM element by data-testid attribute. - * @example cy.dataTestId('submit-button') - */ - dataTestId(value: string): Chainable; - } - } -} - -// @ts-ignore -Cypress.Commands.add("dataTestId", (value) => { - return cy.get(`[data-testid=${value}]`); -}); diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json deleted file mode 100644 index 18edb199..00000000 --- a/cypress/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["es5", "dom"], - "types": ["cypress", "node"] - }, - "include": ["**/*.ts"] -} diff --git a/jest.config.js b/jest.config.js index 37e1a985..d5b6b32a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -18,7 +18,7 @@ const customJestConfig = { }, setupFilesAfterEnv: ["/jest.setup.js"], testEnvironment: "jest-environment-jsdom", - testPathIgnorePatterns: ["/node_modules/", "/dist/"], + testPathIgnorePatterns: ["/node_modules/", "/tests/"], watchPathIgnorePatterns: ["/node_modules/", "/.next/"], }; diff --git a/package-lock.json b/package-lock.json index 6c3b13c9..9cefe834 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "devDependencies": { "@elastic/elasticsearch": "7.17", "@iiif/presentation-3": "^1.1.3", + "@playwright/test": "^1.40.1", "@testing-library/jest-dom": "^6.1.2", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.0.4", @@ -53,7 +54,7 @@ "@types/react-sticky-el": "^1.0.3", "@typescript-eslint/eslint-plugin": "^7.13.0", "babel-jest": "^29.6.2", - "cypress": "^12.4.0", + "dotenv": "^16.4.5", "eslint": "^9.4.0", "eslint-config-next": "^14.1.3", "eslint-config-prettier": "^9.0.0", @@ -64,7 +65,8 @@ "next-router-mock": "^0.9.1-beta.0", "prettier": "^3.0.1", "ts-jest": "^29.0.5", - "typescript": "^5.4.2" + "typescript": "^5.4.2", + "wait-on": "^7.2.0" }, "optionalDependencies": { "fsevents": "^2.3.2" @@ -92,9 +94,9 @@ } }, "node_modules/@atlas-viewer/iiif-image-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@atlas-viewer/iiif-image-api/-/iiif-image-api-2.2.0.tgz", - "integrity": "sha512-Rc+16yzhr1gzuWcFFxlAIqXQxi6Jjxr02wCEGaxjuW0SzNlusPgi5o6rMmnjA5F7p0Flq3XHNtDkWd/F/Hekiw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@atlas-viewer/iiif-image-api/-/iiif-image-api-2.2.1.tgz", + "integrity": "sha512-YB/yckhWW1B/kpfO0h/aGxIAK2PF/Reic6/zXrKYVVg+D7QQySrJqIq7DpU7hh7yzucD/TldLRsJWO+z6Dwrow==", "license": "MIT", "peer": true, "dependencies": { @@ -119,9 +121,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "dev": true, "license": "MIT", "engines": { @@ -129,22 +131,22 @@ } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@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/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -160,13 +162,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.24.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -176,15 +178,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -247,9 +249,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "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==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dev": true, "license": "MIT", "dependencies": { @@ -267,9 +269,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "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==", "dev": true, "license": "MIT", "engines": { @@ -304,9 +306,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "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==", "dev": true, "license": "MIT", "engines": { @@ -324,9 +326,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "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==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "license": "MIT", "engines": { @@ -334,14 +336,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -364,9 +366,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "dev": true, "license": "MIT", "bin": { @@ -568,9 +570,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -595,20 +597,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", + "@babel/generator": "^7.24.8", "@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", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -617,13 +619,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -638,93 +640,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cypress/request": { - "version": "2.88.12", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", - "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.10.3", - "safe-buffer": "^5.1.2", - "tough-cookie": "^4.1.3", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@cypress/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/@cypress/request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -735,9 +650,9 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "7.17.13", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-7.17.13.tgz", - "integrity": "sha512-GMXtFVqd3FgUlTtPL/GDc+3GhwvfZ0kSuegCvVVqb58kd+0I6U6u7PL8QFRLHtwzqLEBmYLdwr4PRkBAWKGlzA==", + "version": "7.17.14", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-7.17.14.tgz", + "integrity": "sha512-6uQ1pVXutwz1Krwooo67W+3K8BwH1ASMh1WoHTpomUzw8EXecXN5lHIJ9EPqTHuv1WqR2LKkSJyagcq0HYUJpg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -767,9 +682,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "license": "MIT", "engines": { @@ -777,15 +692,15 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.15.1.tgz", - "integrity": "sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", + "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.3", + "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", - "minimatch": "^3.0.5" + "minimatch": "^3.1.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -897,9 +812,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", - "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", + "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", "dev": true, "license": "MIT", "engines": { @@ -907,9 +822,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.3.tgz", - "integrity": "sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -917,28 +832,28 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", - "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.0" + "@floating-ui/utils": "^0.2.4" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", - "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", - "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" @@ -949,11 +864,28 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", - "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", "license": "MIT" }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, "node_modules/@honeybadger-io/core": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@honeybadger-io/core/-/core-5.2.0.tgz", @@ -1126,31 +1058,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -1665,9 +1572,9 @@ } }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2021,9 +1928,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -2037,24 +1944,24 @@ } }, "node_modules/@next/bundle-analyzer": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-14.2.4.tgz", - "integrity": "sha512-ydSDikSgGhYmBlnvzS4tgdGyn40SCFI9uWDldbkRSwXS60tg4WBJR4qJoTSERTmdAFb1PeUYCyFdfC80i2WL1w==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-14.2.5.tgz", + "integrity": "sha512-BtBbI8VUnB7s4m9ut6CkeJ8Hyx+aq+86mbH+uAld7ZGG0/eH4+5hcPnkHKsQM/yj74iClazS0fninI8yZbIZWA==", "license": "MIT", "dependencies": { "webpack-bundle-analyzer": "4.10.1" } }, "node_modules/@next/env": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", - "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", + "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.4.tgz", - "integrity": "sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.5.tgz", + "integrity": "sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g==", "dev": true, "license": "MIT", "dependencies": { @@ -2062,18 +1969,18 @@ } }, "node_modules/@next/font": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/font/-/font-14.2.4.tgz", - "integrity": "sha512-RPB5kQk8jo8ZeiuryobDuV58FxB3VAiN+ckZ0zPKRl/4YLTSSekMUCwpoqav6y/bL2+hJCWjN8RMgjrBHT6r/g==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/font/-/font-14.2.5.tgz", + "integrity": "sha512-e2f3M+tAuJPUyXwWtEPKlPfpPEKODiQvPjdxOWBZC+zgdGv18KfjTkEmopfkfpZ016yCvw5BmMPeuEU/uiDf9g==", "license": "MIT", "peerDependencies": { "next": "*" } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", - "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", + "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", "cpu": [ "arm64" ], @@ -2087,9 +1994,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", - "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", + "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", "cpu": [ "x64" ], @@ -2103,9 +2010,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", - "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", + "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", "cpu": [ "arm64" ], @@ -2119,9 +2026,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", - "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", + "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", "cpu": [ "arm64" ], @@ -2135,9 +2042,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", - "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", + "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", "cpu": [ "x64" ], @@ -2151,9 +2058,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", - "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", + "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", "cpu": [ "x64" ], @@ -2167,9 +2074,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", - "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", + "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", "cpu": [ "arm64" ], @@ -2183,9 +2090,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", - "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", + "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", "cpu": [ "ia32" ], @@ -2199,9 +2106,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", - "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", + "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", "cpu": [ "x64" ], @@ -2215,9 +2122,9 @@ } }, "node_modules/@next/third-parties": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.4.tgz", - "integrity": "sha512-bf5d5m4a+Fh9syLz0Pf9Ax7LdLazlp7ur7DqX0LUMDyIx9Z/F0J/XxieklA9lRqM9KjrCVNT8Tkhg0AvotTBTQ==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.5.tgz", + "integrity": "sha512-PDRJm8RZ3rnGNporHKjcdCeZqoW8iJ5uP0clo1Z08TqJiQzuntJ66zrGYCJyqTakx62UJNOp73YsQCFo6kbYYg==", "license": "MIT", "dependencies": { "third-party-capital": "1.0.20" @@ -2285,9 +2192,9 @@ } }, "node_modules/@nulib/use-markdown": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@nulib/use-markdown/-/use-markdown-0.2.1.tgz", - "integrity": "sha512-gez/Hd3nku/MZi1ZOx6huwcMDkBpfuSIQX6gMclpf8N+w8QKvFt1sGPowp19H2aEv8FI9f5ao/9HID5jYeNk3A==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@nulib/use-markdown/-/use-markdown-0.2.2.tgz", + "integrity": "sha512-eS3uhiGm4KlogR3/8cn0gZfxdeMyQuBwyjWXif5c0EBibmiuc7l30xVXqTkwh5teO2Loellfo+782GmHe1DIOA==", "dependencies": { "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.0", @@ -2312,6 +2219,22 @@ "node": ">=14" } }, + "node_modules/@playwright/test": { + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.2.tgz", + "integrity": "sha512-JxG9eq92ET75EbVi3s+4sYbcG7q72ECeZNbdBlaMkGcNbiDQ4cAi8U2QP5oKkOx+1gpaiL1LDStmzCaEM1Z6fQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.45.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.25", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", @@ -2325,45 +2248,38 @@ "license": "MIT" }, "node_modules/@radix-ui/number": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", - "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" }, "node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" }, "node_modules/@radix-ui/react-accordion": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.1.2.tgz", - "integrity": "sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.0.tgz", + "integrity": "sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collapsible": "1.0.3", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collapsible": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2375,19 +2291,18 @@ } }, "node_modules/@radix-ui/react-arrow": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", - "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2399,19 +2314,18 @@ } }, "node_modules/@radix-ui/react-aspect-ratio": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.0.3.tgz", - "integrity": "sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", + "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2423,26 +2337,25 @@ } }, "node_modules/@radix-ui/react-checkbox": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.0.4.tgz", - "integrity": "sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.1.tgz", + "integrity": "sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-use-size": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2454,26 +2367,25 @@ } }, "node_modules/@radix-ui/react-collapsible": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.0.3.tgz", - "integrity": "sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.0.tgz", + "integrity": "sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2485,22 +2397,21 @@ } }, "node_modules/@radix-ui/react-collection": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", - "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2512,16 +2423,13 @@ } }, "node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", - "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2530,16 +2438,13 @@ } }, "node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", - "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2548,32 +2453,31 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", - "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", + "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "react-remove-scroll": "2.5.7" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2585,16 +2489,13 @@ } }, "node_modules/@radix-ui/react-direction": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", - "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2603,23 +2504,22 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", - "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", + "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2631,25 +2531,24 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz", - "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz", + "integrity": "sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-menu": "2.0.6", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2661,16 +2560,13 @@ } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", + "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2679,21 +2575,20 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", - "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -2733,20 +2628,56 @@ } } }, - "node_modules/@radix-ui/react-icons": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", - "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "license": "MIT", - "peerDependencies": { - "react": "^16.x || ^17.x || ^18.x" + "dependencies": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@radix-ui/react-id": { + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-compose-refs": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-layout-effect": "1.0.1" @@ -2761,6 +2692,94 @@ } } }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-label": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", @@ -2785,31 +2804,32 @@ } } }, - "node_modules/@radix-ui/react-menu": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz", - "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==", + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-callback-ref": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "@radix-ui/react-slot": "1.0.2" }, "peerDependencies": { "@types/react": "*", @@ -2826,6 +2846,65 @@ } } }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.1.tgz", + "integrity": "sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-popover": { "version": "0.1.7-rc.47", "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-0.1.7-rc.47.tgz", @@ -3178,28 +3257,27 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", - "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-rect": "1.0.1", - "@radix-ui/react-use-size": "1.0.1", - "@radix-ui/rect": "1.0.1" + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3211,19 +3289,19 @@ } }, "node_modules/@radix-ui/react-portal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", - "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", + "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3235,20 +3313,19 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", - "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", + "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3260,19 +3337,18 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3284,28 +3360,27 @@ } }, "node_modules/@radix-ui/react-radio-group": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz", - "integrity": "sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.0.tgz", + "integrity": "sha512-yv+oiLaicYMBpqgfpSPw6q+RyXlLdIpQWDHZbUKURxe+nEh53hFXPPlfhfQQtYkS5MMK/5IWIa76SksleQZSzw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-use-size": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3317,27 +3392,26 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", - "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3349,39 +3423,38 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", - "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", + "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "react-remove-scroll": "2.5.7" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3393,17 +3466,16 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3412,25 +3484,24 @@ } }, "node_modules/@radix-ui/react-switch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3.tgz", - "integrity": "sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.0.tgz", + "integrity": "sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-use-size": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3442,26 +3513,25 @@ } }, "node_modules/@radix-ui/react-tabs": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", - "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.0.tgz", + "integrity": "sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3473,16 +3543,13 @@ } }, "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", - "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3491,17 +3558,16 @@ } }, "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", - "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3510,17 +3576,16 @@ } }, "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", - "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3529,16 +3594,13 @@ } }, "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", - "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3547,16 +3609,13 @@ } }, "node_modules/@radix-ui/react-use-previous": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", - "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3565,17 +3624,16 @@ } }, "node_modules/@radix-ui/react-use-rect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", - "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "1.0.1" + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3584,17 +3642,16 @@ } }, "node_modules/@radix-ui/react-use-size": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", - "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3603,19 +3660,18 @@ } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", - "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3627,13 +3683,10 @@ } }, "node_modules/@radix-ui/rect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", - "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.3", @@ -3643,9 +3696,9 @@ "license": "MIT" }, "node_modules/@samvera/clover-iiif": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@samvera/clover-iiif/-/clover-iiif-2.9.0.tgz", - "integrity": "sha512-Ccbq+trWgKy2cXjZ7qx/yJ+NNb2Ci0YDf+Hs5y2CJNRp7u0+mNHwOdSR65OKeX7nRtG95bhM6mTizolJ5nk0cg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@samvera/clover-iiif/-/clover-iiif-2.9.1.tgz", + "integrity": "sha512-aW5M6A3r1Y0fvSWOginPU+lsiaWl2aYvw4cbkZotBP+BztIUmI+bzS/Um2yDSnVeOZRsZ55DYAAVgjj9lRtYEA==", "license": "ISC", "dependencies": { "@iiif/parser": "^1.1.2", @@ -3677,33 +3730,32 @@ } }, "node_modules/@samvera/clover-iiif/node_modules/@radix-ui/react-popover": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz", - "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.1.tgz", + "integrity": "sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "react-remove-scroll": "2.5.7" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3727,6 +3779,30 @@ "react-dom": "^16.13.1 || ^17 || ^18" } }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -3780,9 +3856,9 @@ } }, "node_modules/@testing-library/dom": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", - "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.3.2.tgz", + "integrity": "sha512-0bxIdP9mmPiOJ6wHLj8bdJRq+51oddObeCGdEf6PNEhYd93ZYAN+lPRnEOVFtheVwDM7+p+tza3LAQgp0PTudg==", "dev": true, "license": "MIT", "peer": true, @@ -4069,9 +4145,9 @@ "peer": true }, "node_modules/@types/aws-lambda": { - "version": "8.10.138", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.138.tgz", - "integrity": "sha512-71EHMl70TPWIAsFuHd85NHq6S6T2OOjiisPTrH7RgcjzpJpPh4RQJv7PvVvIxc6PIp8CLV7F9B+TdjcAES5vcA==", + "version": "8.10.141", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.141.tgz", + "integrity": "sha512-SMWlRBukG9KV8ZNjwemp2AzDibp/czIAeKKTw09nCPbWxVskIxactCJCGOp4y6I1hCMY7T7UGfySvBLXNeUbEw==", "license": "MIT" }, "node_modules/@types/babel__core": { @@ -4189,9 +4265,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -4351,9 +4427,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -4434,20 +4510,6 @@ "@types/send": "*" } }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sizzle": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -4485,29 +4547,18 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.0.tgz", - "integrity": "sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", + "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.13.0", - "@typescript-eslint/type-utils": "7.13.0", - "@typescript-eslint/utils": "7.13.0", - "@typescript-eslint/visitor-keys": "7.13.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/type-utils": "7.16.1", + "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4531,14 +4582,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.0.tgz", - "integrity": "sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", + "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.13.0", - "@typescript-eslint/utils": "7.13.0", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/utils": "7.16.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4559,16 +4610,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz", - "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", + "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.0", - "@typescript-eslint/types": "7.13.0", - "@typescript-eslint/typescript-estree": "7.13.0" + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4582,17 +4633,17 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz", - "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", + "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", "dev": true, "license": "BSD-2-Clause", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.13.0", - "@typescript-eslint/types": "7.13.0", - "@typescript-eslint/typescript-estree": "7.13.0", - "@typescript-eslint/visitor-keys": "7.13.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4" }, "engines": { @@ -4612,14 +4663,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz", - "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", + "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.13.0", - "@typescript-eslint/visitor-keys": "7.13.0" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4630,9 +4681,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz", - "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", + "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", "dev": true, "license": "MIT", "engines": { @@ -4644,14 +4695,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz", - "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", + "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.13.0", - "@typescript-eslint/visitor-keys": "7.13.0", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4686,13 +4737,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz", - "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", + "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/types": "7.16.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4900,9 +4951,9 @@ "optional": true }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -4943,10 +4994,13 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -4964,20 +5018,6 @@ "node": ">= 6.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -5004,16 +5044,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -5067,27 +5097,6 @@ "node": ">= 8" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -5301,16 +5310,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -5327,16 +5326,6 @@ "dev": true, "license": "MIT" }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", @@ -5350,16 +5339,6 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -5376,27 +5355,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", - "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==", - "dev": true, - "license": "MIT" - }, "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", + "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", "dev": true, "license": "MPL-2.0", "engines": { @@ -5415,13 +5377,13 @@ } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, "node_modules/babel-jest": { @@ -5613,51 +5575,6 @@ "dev": true, "license": "MIT" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "license": "MIT" - }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -5682,9 +5599,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "funding": [ { "type": "opencollective", @@ -5701,10 +5618,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -5736,41 +5653,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -5794,16 +5676,6 @@ "node": ">=10.16.0" } }, - "node_modules/cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -5845,9 +5717,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001632", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz", - "integrity": "sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "funding": [ { "type": "opencollective", @@ -5864,13 +5736,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -5936,16 +5801,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -5985,81 +5840,25 @@ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", "license": "MIT" }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "restore-cursor": "^3.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "node": ">=12" } }, "node_modules/cliui/node_modules/ansi-styles": { @@ -6098,6 +5897,28 @@ "dev": true, "license": "MIT" }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -6151,13 +5972,6 @@ "dev": true, "license": "MIT" }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -6181,23 +5995,12 @@ } }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">= 10" } }, "node_modules/concat-map": { @@ -6374,184 +6177,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/cypress": { - "version": "12.17.4", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", - "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@cypress/request": "2.88.12", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.5.3", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" - }, - "engines": { - "node": "^14.0.0 || ^16.0.0 || >=18.0.0" - } - }, - "node_modules/cypress/node_modules/@types/node": { - "version": "16.18.98", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.98.tgz", - "integrity": "sha512-fpiC20NvLpTLAzo3oVBKIqBGR6Fx/8oAK/SSf7G+fydnXMY1x4x9RZ6sBXhqKlCU21g2QapUsbLlhv3+a7wS+Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/cypress/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { - "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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/color-convert": { - "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, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cypress/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/cypress/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cypress/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -6559,19 +6184,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -6650,13 +6262,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", - "dev": true, - "license": "MIT" - }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -6721,6 +6326,39 @@ } } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -6933,6 +6571,19 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -6946,17 +6597,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -6966,10 +6606,26 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { - "version": "1.4.799", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.799.tgz", - "integrity": "sha512-3D3DwWkRTzrdEpntY0hMLYwj7SeBk1138CkPE8sBDSj3WzrzOiG2rHm3luw8jucpf+WiyLBCZyU9lMHyQI9M9Q==", + "version": "1.4.828", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz", + "integrity": "sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==", "license": "ISC" }, "node_modules/emittery": { @@ -6986,21 +6642,11 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } + "license": "MIT" }, "node_modules/enhanced-resolve": { "version": "5.17.0", @@ -7015,20 +6661,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -7135,6 +6767,27 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-iterator-helpers": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", @@ -7162,9 +6815,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "license": "MIT", "peer": true }, @@ -7266,17 +6919,17 @@ } }, "node_modules/eslint": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.4.0.tgz", - "integrity": "sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz", + "integrity": "sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/config-array": "^0.15.1", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.4.0", + "@eslint/js": "9.7.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -7285,10 +6938,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.1", + "eslint-scope": "^8.0.2", "eslint-visitor-keys": "^4.0.0", - "espree": "^10.0.1", - "esquery": "^1.4.2", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -7314,17 +6967,17 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" } }, "node_modules/eslint-config-next": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.4.tgz", - "integrity": "sha512-Qr0wMgG9m6m4uYy2jrYJmyuNlYZzPRQq5Kvb9IDlYwn+7yq6W6sfMNFgb+9guM1KYwuIo6TIaiFhZJ6SnQ/Efw==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.5.tgz", + "integrity": "sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "14.2.4", + "@next/eslint-plugin-next": "14.2.5", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", "eslint-import-resolver-node": "^0.3.6", @@ -7465,12 +7118,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-config-next/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/eslint-config-next/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } }, "node_modules/eslint-config-next/node_modules/eslint-import-resolver-typescript": { "version": "3.6.1", @@ -7565,28 +7221,28 @@ } }, "node_modules/eslint-config-next/node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" }, "engines": { "node": ">=4.0" @@ -7620,9 +7276,9 @@ } }, "node_modules/eslint-config-next/node_modules/eslint-plugin-react": { - "version": "7.34.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", - "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "version": "7.34.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz", + "integrity": "sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==", "dev": true, "license": "MIT", "dependencies": { @@ -7630,20 +7286,21 @@ "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", "object.values": "^1.2.0", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" @@ -7988,9 +7645,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8193,13 +7850,13 @@ } }, "node_modules/espree": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", - "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.11.3", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.0.0" }, @@ -8238,9 +7895,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8281,13 +7938,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true, - "license": "MIT" - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -8299,20 +7949,20 @@ } }, "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "engines": { @@ -8322,18 +7972,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } + "license": "ISC" }, "node_modules/exit": { "version": "0.1.2", @@ -8367,31 +8011,10 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", "engines": [ "node >=0.6.0" ], @@ -8466,16 +8089,6 @@ "bser": "2.1.1" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", @@ -8505,22 +8118,6 @@ "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", "license": "MIT" }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -8534,6 +8131,29 @@ "node": ">=16.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -8619,9 +8239,9 @@ } }, "node_modules/foreground-child": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", - "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "license": "ISC", "dependencies": { @@ -8635,29 +8255,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -8685,9 +8282,9 @@ } }, "node_modules/framer-motion": { - "version": "11.2.10", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.10.tgz", - "integrity": "sha512-/gr3PLZUVFCc86a9MqCUboVrALscrdluzTb3yew+2/qKBU8CX6nzs918/SRBRCqaPbx0TZP10CB6yFgK2C5cYQ==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.4.tgz", + "integrity": "sha512-LC+luwNmz4zEg0AU0rol3yLUFKSJ9GDmIyvigXBAwEbUBG59EWmcRQ2Xh+0py7IkmvWxFUH0TN42v1Dda8xgUg==", "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -8709,22 +8306,6 @@ } } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -8845,16 +8426,13 @@ } }, "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8891,26 +8469,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -8954,22 +8512,6 @@ "license": "BSD-2-Clause", "peer": true }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -9181,9 +8723,9 @@ } }, "node_modules/hast-util-raw": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.3.tgz", - "integrity": "sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9279,9 +8821,9 @@ } }, "node_modules/hls.js": { - "version": "1.5.11", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.11.tgz", - "integrity": "sha512-q3We1izi2+qkOO+TvZdHv+dx6aFzdtk3xc1/Qesrvto4thLTT/x/1FK85c5h1qZE4MmMBNgKg+MIW8nxQfxwBw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.13.tgz", + "integrity": "sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw==", "license": "Apache-2.0" }, "node_modules/hpagent": { @@ -9364,21 +8906,6 @@ "node": ">= 6" } }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -9394,19 +8921,19 @@ } }, "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=8.12.0" + "node": ">=10.17.0" } }, "node_modules/i18next": { - "version": "23.11.5", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.5.tgz", - "integrity": "sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==", + "version": "23.12.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.12.1.tgz", + "integrity": "sha512-l4y291ZGRgUhKuqVSiqyuU2DDzxKStlIWSaoNBR4grYmh0X+pRYbFpTMs3CnJ5ECKbOI8sQcJ3PbTUfLgPRaMA==", "funding": [ { "type": "individual", @@ -9441,27 +8968,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -9558,16 +9064,6 @@ "dev": true, "license": "ISC" }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -9592,6 +9088,23 @@ "loose-envify": "^1.0.0" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -9675,27 +9188,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9805,23 +9308,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -10019,26 +9505,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -10148,13 +9614,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -10282,6 +9741,125 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/jake/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/supports-color": { + "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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -10324,53 +9902,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -12434,6 +11965,20 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -12454,13 +11999,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, "node_modules/jsdom": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", @@ -12533,13 +12071,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -12553,13 +12084,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -12573,19 +12097,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", @@ -12643,37 +12154,6 @@ "node": ">=10" } }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/jsprim/node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -12751,16 +12231,6 @@ "node": ">=0.10" } }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "> 0.8" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -12792,88 +12262,6 @@ "dev": true, "license": "MIT" }, - "node_modules/listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/color-convert": { - "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, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/listr2/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -12955,209 +12343,28 @@ "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "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, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/color-convert": { - "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, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", + "license": "MIT" }, "node_modules/longest-streak": { "version": "3.1.0", @@ -13585,9 +12792,9 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", - "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", @@ -13601,9 +12808,9 @@ } }, "node_modules/micromark-extension-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -13621,9 +12828,9 @@ } }, "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -13639,9 +12846,9 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", - "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -13669,9 +12876,9 @@ } }, "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", - "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -14114,9 +13321,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -14203,12 +13410,12 @@ "peer": true }, "node_modules/next": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz", - "integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", + "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", "license": "MIT", "dependencies": { - "@next/env": "14.2.4", + "@next/env": "14.2.5", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -14223,15 +13430,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.4", - "@next/swc-darwin-x64": "14.2.4", - "@next/swc-linux-arm64-gnu": "14.2.4", - "@next/swc-linux-arm64-musl": "14.2.4", - "@next/swc-linux-x64-gnu": "14.2.4", - "@next/swc-linux-x64-musl": "14.2.4", - "@next/swc-win32-arm64-msvc": "14.2.4", - "@next/swc-win32-ia32-msvc": "14.2.4", - "@next/swc-win32-x64-msvc": "14.2.4" + "@next/swc-darwin-arm64": "14.2.5", + "@next/swc-darwin-x64": "14.2.5", + "@next/swc-linux-arm64-gnu": "14.2.5", + "@next/swc-linux-arm64-musl": "14.2.5", + "@next/swc-linux-x64-gnu": "14.2.5", + "@next/swc-linux-x64-musl": "14.2.5", + "@next/swc-win32-arm64-msvc": "14.2.5", + "@next/swc-win32-ia32-msvc": "14.2.5", + "@next/swc-win32-x64-msvc": "14.2.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -14328,15 +13535,6 @@ "node": ">= 8.16.0" } }, - "node_modules/node-webvtt/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14361,9 +13559,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", "dev": true, "license": "MIT" }, @@ -14378,11 +13576,31 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14465,24 +13683,6 @@ "node": ">= 0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -14563,13 +13763,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true, - "license": "MIT" - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -14615,22 +13808,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -14753,14 +13930,11 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/path-type": { "version": "4.0.0", @@ -14772,20 +13946,6 @@ "node": ">=8" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -14805,16 +13965,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -14838,6 +13988,52 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.2.tgz", + "integrity": "sha512-ReywF2t/0teRvNBpfIgh5e4wnrI/8Su8ssdo5XsQKpjxJj+jspm00jSoz9BTg91TT0c9HRjXO7LBNVrgYj9X0g==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.45.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.2.tgz", + "integrity": "sha512-ha175tAWb0dTK0X4orvBIqi3jGEt701SMxMhyujxNrgd8K0Uy5wMSwwcQHtyB4om7INUkfndx02XnQ2p6dvLDw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -14887,9 +14083,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", "bin": { @@ -14902,19 +14098,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -14945,16 +14128,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -15011,17 +14184,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -15048,22 +14210,6 @@ ], "license": "MIT" }, - "node_modules/qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -15192,12 +14338,12 @@ } }, "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", + "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", + "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", "use-callback-ref": "^1.3.0", @@ -15440,16 +14586,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "throttleit": "^1.0.0" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15528,20 +14664,6 @@ "node": ">=10" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -15553,13 +14675,6 @@ "node": ">=0.10.0" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -15829,94 +14944,49 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "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, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 10" } }, - "node_modules/slice-ansi/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==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT" }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -15963,32 +15033,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ssr-window": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", @@ -16039,6 +15083,19 @@ "node": ">=8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -16062,18 +15119,21 @@ } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -16092,6 +15152,53 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -16119,6 +15226,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -16359,9 +15477,9 @@ } }, "node_modules/terser": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "version": "5.31.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz", + "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==", "license": "BSD-2-Clause", "peer": true, "dependencies": { @@ -16545,39 +15663,12 @@ "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==", "license": "ISC" }, - "node_modules/throttleit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", - "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", "license": "MIT" }, - "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -16633,16 +15724,6 @@ "node": ">=6" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -16690,13 +15771,14 @@ } }, "node_modules/ts-jest": { - "version": "29.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", - "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.2.tgz", + "integrity": "sha512-sSW7OooaKT34AAngP6k1VS669a0HdLxkQZnlC7T76sckGCokXFnvJ3yRlQZGRTAoV5K19HfSgCiSwWOSIfcYlg==", "dev": true, "license": "MIT", "dependencies": { "bs-logger": "0.x", + "ejs": "^3.0.0", "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", "json5": "^2.2.3", @@ -16815,26 +15897,6 @@ "dev": true, "license": "0BSD" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -16958,9 +16020,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -16994,9 +16056,9 @@ "license": "MIT" }, "node_modules/unified": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", - "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -17081,29 +16143,19 @@ } }, "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 4.0.0" } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -17221,9 +16273,9 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { @@ -17250,9 +16302,9 @@ } }, "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -17265,9 +16317,9 @@ } }, "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -17315,6 +16367,26 @@ "node": ">=14" } }, + "node_modules/wait-on": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", + "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "axios": "^1.6.1", + "joi": "^17.11.0", + "lodash": "^4.17.21", + "minimist": "^1.2.8", + "rxjs": "^7.8.1" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -17369,9 +16441,9 @@ } }, "node_modules/webpack": { - "version": "5.92.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.0.tgz", - "integrity": "sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==", + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", "license": "MIT", "peer": true, "dependencies": { @@ -17443,15 +16515,6 @@ "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -17465,9 +16528,9 @@ } }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "engines": { "node": ">=8.3.0" @@ -17744,6 +16807,28 @@ "dev": true, "license": "MIT" }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -17770,31 +16855,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -17832,10 +16892,17 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "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": { @@ -17917,15 +16984,26 @@ "node": ">=12" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index f9ca901c..f6ea6ca8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "scripts": { "analyze": "ANALYZE=true npm run build", "build": "next build", - "cypress:open": "NEXT_PUBLIC_DCAPI_ENDPOINT=https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2 cypress open", "dev": "node server.js", "dev:test-env": "NEXT_PUBLIC_DCAPI_ENDPOINT=https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2 npm run dev", "export": "next build && next export", @@ -12,9 +11,11 @@ "prettier:check": "prettier --check .", "prettier:fix": "prettier . --write", "ts-lint": "tsc --noEmit --incremental --watch", - "start": "next start", + "ts-lint-commit-hook": "tsc --noEmit", + "start": "NEXT_PUBLIC_DCAPI_ENDPOINT=https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2 next start", "test": "jest --watch", - "test:ci": "jest" + "test:ci": "jest", + "test:playwright": "playwright test" }, "dependencies": { "@honeybadger-io/js": "^5.1.1", @@ -54,6 +55,7 @@ "devDependencies": { "@elastic/elasticsearch": "7.17", "@iiif/presentation-3": "^1.1.3", + "@playwright/test": "^1.40.1", "@testing-library/jest-dom": "^6.1.2", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.0.4", @@ -64,7 +66,7 @@ "@types/react-sticky-el": "^1.0.3", "@typescript-eslint/eslint-plugin": "^7.13.0", "babel-jest": "^29.6.2", - "cypress": "^12.4.0", + "dotenv": "^16.4.5", "eslint": "^9.4.0", "eslint-config-next": "^14.1.3", "eslint-config-prettier": "^9.0.0", @@ -75,7 +77,8 @@ "next-router-mock": "^0.9.1-beta.0", "prettier": "^3.0.1", "ts-jest": "^29.0.5", - "typescript": "^5.4.2" + "typescript": "^5.4.2", + "wait-on": "^7.2.0" }, "optionalDependencies": { "fsevents": "^2.3.2" diff --git a/playwright-report/index.html b/playwright-report/index.html index b45f9f4d..f7389a3c 100644 --- a/playwright-report/index.html +++ b/playwright-report/index.html @@ -1,22212 +1,68 @@ - + + + - - - + + + Playwright Test Report - - + + -
+
+window.playwrightReportBase64 = "data:application/zip;base64,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"; \ No newline at end of file diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 00000000..5bf774e3 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,81 @@ +/* eslint sort-keys: "off" */ + +import { defineConfig, devices } from "@playwright/test"; + +/* eslint-disable @typescript-eslint/no-var-requires */ +require("dotenv").config(); + +const PORT = process.env.PORT || 3000; +const BASE_URL = + process.env.BASE_URL || `https://devbox.library.northwestern.edu:${PORT}`; + +export default defineConfig({ + testDir: "./tests", + fullyParallel: false, + + /* Increase locator timeout past default 5s */ + expect: { + timeout: 10 * 1500, + }, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + reporter: "html", + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Increase the default timeout to 10 seconds. */ + timeout: 15000, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : 6, + + use: { + baseURL: BASE_URL, + /* Collect trace when retrying the failed test. */ + trace: "on-first-retry", + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + + { + name: "firefox", + use: { ...devices["Desktop Firefox"], ignoreHTTPSErrors: true }, + }, + + { + name: "webkit", + use: { ...devices["Desktop Safari"] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: "npm run dev:ci", + // url: BASE_URL, + // timeout: 30 * 1000, + // reuseExistingServer: !process.env.CI, + // }, +}); diff --git a/tests/fixtures/open-graph.ts b/tests/fixtures/open-graph.ts new file mode 100644 index 00000000..3b35db7f --- /dev/null +++ b/tests/fixtures/open-graph.ts @@ -0,0 +1,86 @@ +import { type Locator, type Page, expect } from "@playwright/test"; + +export class OpenGraphPage { + defaultTitle: string = + "Digital Collections - Northwestern University Libraries"; + + defaultDescription: string = + "Explore digital resources from the Northwestern University Library collections – including letters, photographs, diaries, maps, and audiovisual materials - as well as licensed art historical images for teaching and reference."; + + dcUrl: string = "https://digitalcollections.library.northwestern.edu"; + + iiifImageServerUrl: string = `https://iiif.dc.library.northwestern.edu/iiif/2/`; + + readonly metaDescription: Locator; + readonly metaTitle: Locator; + readonly ogDescription: Locator; + readonly ogSiteName: Locator; + readonly ogImage: Locator; + readonly ogUrl: Locator; + + constructor( + public readonly page: Page, + public readonly route: string, + ) { + this.metaDescription = page.locator('meta[name="description"]'); + this.metaTitle = page.locator('meta[property="og:title"]'); + this.ogDescription = page.locator('meta[property="og:description"]').nth(0); + this.ogImage = page.locator('meta[property="og:image"]'); + this.ogSiteName = page.locator('meta[property="og:site_name"]'); + this.ogUrl = page.locator('meta[property="og:url"]'); + this.route = route; + } + + async goto() { + await this.page.goto(this.route); + } + + async hasDefaultDescription() { + await expect(this.metaDescription).toHaveAttribute( + "content", + this.defaultDescription, + ); + } + + async hasDefaultOGDescription() { + await expect(this.ogDescription).toHaveAttribute( + "content", + this.defaultDescription, + ); + } + + async hasDefaultOGImage() { + await expect(this.ogImage).toHaveAttribute( + "content", + `${this.iiifImageServerUrl}999a8522-aa7a-4c49-a4a1-25165be91b05/full/461,/0/default.jpg`, + ); + } + + async hasOGDescription(description: string) { + await expect(this.ogDescription).toHaveAttribute("content", description); + } + + async hasOGImage(uri: string) { + await expect(this.ogImage).toHaveAttribute("content", uri); + } + + async hasOGUrl(route: string) { + const params = route ? `/${route}` : ""; + await expect(this.ogUrl).toHaveAttribute( + "content", + `${this.dcUrl}${params}`, + ); + } + + async hasMetaDescription(description: string) { + await expect(this.metaDescription).toHaveAttribute("content", description); + } + + async hasMetaTitle(title: string | null) { + await expect(this.metaTitle).toHaveAttribute("content", title || ""); + } + + async hasOGSiteName() { + await expect(this.ogSiteName).toHaveAttribute("content", this.defaultTitle); + } +} diff --git a/tests/fixtures/search-page.ts b/tests/fixtures/search-page.ts new file mode 100644 index 00000000..8ce27be4 --- /dev/null +++ b/tests/fixtures/search-page.ts @@ -0,0 +1,44 @@ +import { type Page, expect } from "@playwright/test"; + +export class SearchPage { + readonly DEFAULT_PAGINATION_SIZE = 40; + readonly TOTAL_RESULTS = 205; + + readonly route: string = "/search"; + + constructor(public readonly page: Page) {} + + async goto() { + await this.page.goto(this.route); + } + + getPaginationResults = (totalCount: number) => + totalCount > this.DEFAULT_PAGINATION_SIZE + ? this.DEFAULT_PAGINATION_SIZE + : totalCount; + + async verifyGridItemCount(totalCount = 0) { + const paginationResultsCount = this.getPaginationResults(totalCount); + await expect(this.page.getByTestId(`grid-item`)).toHaveCount( + paginationResultsCount + ); + } + + async verifyTopResultsCount(count: number) { + await expect(this.page.getByTestId(`results-count`)).toContainText( + `${count} results` + ); + } + + async verifyTotalsResultDisplay({ + count, + total, + }: { + count: number; + total: number; + }) { + await expect(this.page.getByTestId("results")).toHaveText( + `Showing 1 to ${count} of ${total} results` + ); + } +} diff --git a/tests/fixtures/work-page.ts b/tests/fixtures/work-page.ts new file mode 100644 index 00000000..72308ca3 --- /dev/null +++ b/tests/fixtures/work-page.ts @@ -0,0 +1,7 @@ +import { type Page } from "@playwright/test"; + +export class WorkPage { + readonly route: string = "/items"; + + constructor(public readonly page: Page) {} +} diff --git a/tests/fixtures/works/canary-work.ts b/tests/fixtures/works/canary-work.ts new file mode 100644 index 00000000..e0c35e38 --- /dev/null +++ b/tests/fixtures/works/canary-work.ts @@ -0,0 +1,407 @@ +/* eslint-disable sort-keys */ + +import { Work } from "@nulib/dcapi-types"; + +type WorkExtended = Work & { + canonical_link: string; + related_material: string[]; +}; + +export const canaryWork: WorkExtended = { + abstract: ["Updated description!!!"], + accession_number: "TEST_canary_002", + alternate_title: ["This is an alternative title"], + api_link: + "https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2/works/cb8a19a7-3dec-47f3-80c0-12872ae61f8f", + api_model: "Work", + ark: "ark:/81985/n2x34qh35", + batch_ids: [ + "20ebb42e-93a5-4e47-bfcb-f3491f319b48", + "512ae70f-13db-46cb-ad5b-bd768302d919", + "59c46d06-a2be-4b25-9dc5-ceb1671bf1b8", + ], + box_name: ["The name of a box"], + box_number: ["88"], + canonical_link: + "https://dc.library.northwestern.edu/items/cb8a19a7-3dec-47f3-80c0-12872ae61f8f", + caption: ["Beebo"], + catalog_key: ["MS-1984-1982-1989"], + collection: { + description: "A private collection for Meadow test records", + id: "820fc328-a333-430b-a974-ac6218a1ffcd", + title: "TEST Canary Records", + }, + contributor: [ + { + facet: + "http://id.loc.gov/authorities/names/n91114928|ctg|Metallica (Musical group) (Cartographer)", + id: "http://id.loc.gov/authorities/names/n91114928", + label: "Metallica (Musical group)", + label_with_role: "Metallica (Musical group) (Cartographer)", + role: "Cartographer", + variants: [], + }, + { + facet: + "http://id.worldcat.org/fast/1717972|act|Schober, Franz von, 1796-1882 (Actor)", + id: "http://id.worldcat.org/fast/1717972", + label: "Schober, Franz von, 1796-1882", + label_with_role: "Schober, Franz von, 1796-1882 (Actor)", + role: "Actor", + variants: [], + }, + ], + create_date: "2022-08-02T18:52:31.503448Z", + creator: [ + { + facet: + "http://id.loc.gov/authorities/names/no2011059409||Dessa (Vocalist)", + id: "http://id.loc.gov/authorities/names/no2011059409", + label: "Dessa (Vocalist)", + variants: [ + "Dessa, 1981-", + "Wander, Dessa, 1981-", + "Dessa Darling", + "Wander, Margret", + ], + }, + ], + csv_metadata_update_jobs: ["6eef2d27-dc36-4470-b461-820ae199b835"], + cultural_context: ["Test Context"], + date_created: ["August 1906 to December 1910", "1958"], + description: [ + "This is a private record for RepoDev testing on production", + "Test", + ], + embedding: [123, 1234], + embedding_model: "embed model here", + file_sets: [ + { + accession_number: "TEST_canary_002_001", + description: "access tif", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 3024, + id: "39a418a3-1ec7-4ef6-ae0c-0227c5aa2355", + label: "access tif", + mime_type: "image/tiff", + original_filename: "Squirrel.tif", + poster_offset: null, + rank: 0, + representative_image_url: + "https://dc-test-iiif.rdc-staging.library.northwestern.edu/iiif/2/39a418a3-1ec7-4ef6-ae0c-0227c5aa2355", + role: "Access", + streaming_url: null, + webvtt: null, + width: 4032, + }, + { + accession_number: "TEST_canary_002_006", + description: "access jpg", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 4032, + id: "a59dc417-d313-4286-88d4-1c80916b82c6", + label: "access jpg", + mime_type: "image/jpeg", + original_filename: "PXL_20211213_211133857.jpg", + poster_offset: null, + rank: 1073741824, + representative_image_url: + "https://dc-test-iiif.rdc-staging.library.northwestern.edu/iiif/2/a59dc417-d313-4286-88d4-1c80916b82c6", + role: "Access", + streaming_url: null, + webvtt: null, + width: 3024, + }, + { + accession_number: "KETCHUM_CCC", + description: "Ketchum, 1974", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 4438, + id: "c285fdc6-d7ee-4a94-a548-2c80e22584da", + label: "Cocktail Construction Chart", + mime_type: "image/jpeg", + original_filename: "cocktail_construction_chart_1974.jpg", + poster_offset: null, + rank: 1610612736, + representative_image_url: + "https://dc-test-iiif.rdc-staging.library.northwestern.edu/iiif/2/c285fdc6-d7ee-4a94-a548-2c80e22584da", + role: "Access", + streaming_url: null, + webvtt: null, + width: 6494, + }, + { + accession_number: "TEST_canary_002_002", + description: "preservation bmp", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 862, + id: "b60fc7a7-8f13-407e-8b69-9a030b01daae", + label: "preservation bmp", + mime_type: "image/bmp", + original_filename: "Angela_and_Lisa_Redd.bmp", + poster_offset: null, + rank: 0, + representative_image_url: null, + role: "Preservation", + streaming_url: null, + webvtt: null, + width: 640, + }, + { + accession_number: "TEST_canary_002_004", + description: "preservation tif", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 4032, + id: "258f7218-2f42-4293-8a18-a0aa5e1484f0", + label: "preservation tif", + mime_type: "image/tiff", + original_filename: "distillery.tif", + poster_offset: null, + rank: 1073741824, + representative_image_url: null, + role: "Preservation", + streaming_url: null, + webvtt: null, + width: 3024, + }, + { + accession_number: "TEST_canary_002_005", + description: "preservation jpg", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 4032, + id: "4c7b9949-9cb1-4da2-83bd-04d9dd6d0c4f", + label: "preservation jpg", + mime_type: "image/jpeg", + original_filename: "PXL_20211213_211133857.jpg", + poster_offset: null, + rank: 1610612736, + representative_image_url: null, + role: "Preservation", + streaming_url: null, + webvtt: null, + width: 3024, + }, + { + accession_number: "TEST_canary_002_003", + description: "auxiliary png", + download_url: "https://northwestern.com/download/ABC123", + duration: null, + height: 4000, + id: "e2dfbed2-b125-486a-b33f-ddeff349f887", + label: "auxiliary png", + mime_type: "image/jpeg", + original_filename: "CoopersHawk.png", + poster_offset: null, + rank: 0, + representative_image_url: + "https://dc-test-iiif.rdc-staging.library.northwestern.edu/iiif/2/e2dfbed2-b125-486a-b33f-ddeff349f887", + role: "Auxiliary", + streaming_url: null, + webvtt: null, + width: 6000, + }, + ], + folder_name: ["Blue folder"], + folder_number: ["88"], + genre: [ + { + facet: "http://vocab.getty.edu/aat/300435283||stencil prints", + id: "http://vocab.getty.edu/aat/300435283", + label: "stencil prints", + variants: [], + }, + ], + id: "cb8a19a7-3dec-47f3-80c0-12872ae61f8f", + identifier: ["555"], + iiif_manifest: + "https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2/works/cb8a19a7-3dec-47f3-80c0-12872ae61f8f?as=iiif", + indexed_at: "2023-03-15T21:45:34.246257", + ingest_project: { + id: "e98ca38d-7677-43f8-bc30-f36f92eded0a", + title: "golive_smoketest", + }, + ingest_sheet: { + id: "3999f185-ec7a-4cd9-a219-02aa4cb54ceb", + title: "TEST_CanaryRecords_prod.csv", + }, + keywords: ["leaves"], + language: [ + { + facet: "http://id.loc.gov/vocabulary/languages/crh||Crimean Tatar", + id: "http://id.loc.gov/vocabulary/languages/crh", + label: "Crimean Tatar", + variants: [], + }, + ], + legacy_identifier: ["555"], + library_unit: "University Main Library", + license: { + id: "http://www.europeana.eu/portal/rights/rr-r.html", + label: "All rights reserved", + }, + location: [ + { + facet: "https://sws.geonames.org/4999069/||Leland Township", + id: "https://sws.geonames.org/4999069/", + label: "Leland Township", + variants: [], + }, + ], + modified_date: "2022-12-05T15:52:58.347463Z", + notes: [ + { + note: "Here are some notes", + type: "General Note", + }, + { + note: "Awards type", + type: "Awards", + }, + { + note: "Biographical note", + type: "Bibliographical/Historical Note", + }, + { + note: "creation production credits", + type: "Creation/Production Credits", + }, + { + note: "Language note", + type: "Lanugage Note", + }, + { + note: "Local Note", + type: "Local Note", + }, + { + note: "Performers", + type: "Performers", + }, + { + note: "Statement of Responsibility", + type: "Statement of Responsibility", + }, + { + note: "Venue/event date", + type: "Venue/Event Date", + }, + ], + physical_description_material: ["Acrylic paint on cement block"], + physical_description_size: ["16 x 24 inches"], + preservation_level: "Level 1", + project: { + cycle: "2022", + desc: "This is a description", + manager: "Nicole Finzer", + name: "Test", + proposer: "Carolyn Caizzi", + task_number: "P0000", + }, + provenance: [ + "Artist; sold to Mr. Blank in 1955; sold to Lancelot in 2017; gifted to Northwestern University in 2019", + ], + published: true, + publisher: ["Northwestern University Press"], + related_material: ["See Also: related material"], + related_url: [ + { + label: "Finding Aid", + url: "https://findingaids.library.northwestern.edu/", + }, + { + label: "Resource Guide", + url: "https://www.wbez.org/", + }, + { + label: "Related Information", + url: "https://www.nationalgeographic.com/animals/mammals/facts/squirrels", + }, + { + label: "Hathi Trust", + url: "https://www.hathitrust.org/", + }, + ], + representative_file_set: { + aspect_ratio: 0.75, + id: "a59dc417-d313-4286-88d4-1c80916b82c6", + url: "https://dc-test-iiif.rdc-staging.library.northwestern.edu/iiif/2/a59dc417-d313-4286-88d4-1c80916b82c6", + }, + rights_holder: ["Artist"], + rights_statement: { + id: "http://rightsstatements.org/vocab/InC-EDU/1.0/", + label: "In Copyright - Educational Use Permitted", + }, + scope_and_contents: ["I promise there is scope and content"], + series: ["Canaries and How to Care for Them"], + source: ["Mars"], + status: "Done", + style_period: [ + { + facet: + "http://vocab.getty.edu/aat/300018478||Qing (dynastic styles and periods)", + id: "http://vocab.getty.edu/aat/300018478", + label: "Qing (dynastic styles and periods)", + variants: [], + }, + ], + subject: [ + { + facet: + "http://id.worldcat.org/fast/1902713|TOPICAL|Cats on postage stamps (Topical)", + id: "http://id.worldcat.org/fast/1902713", + label: "Cats on postage stamps", + label_with_role: "Cats on postage stamps (Topical)", + role: "Topical", + variants: [], + }, + { + facet: + "info:nul/6cba23b5-a91a-4c13-8398-54967b329d48|TOPICAL|Test Record Canary (Topical)", + id: "info:nul/6cba23b5-a91a-4c13-8398-54967b329d48", + label: "Test Record Canary", + label_with_role: "Test Record Canary (Topical)", + role: "Topical", + variants: [], + }, + { + facet: + "http://vocab.getty.edu/tgn/2000971|GEOGRAPHICAL|Leelanau (Geographical)", + id: "http://vocab.getty.edu/tgn/2000971", + label: "Leelanau", + label_with_role: "Leelanau (Geographical)", + role: "Geographical", + variants: [], + }, + { + facet: + "http://id.worldcat.org/fast/1204587|GEOGRAPHICAL|Michigan--Ann Arbor (Geographical)", + id: "http://id.worldcat.org/fast/1204587", + label: "Michigan--Ann Arbor", + label_with_role: "Michigan--Ann Arbor (Geographical)", + role: "Geographical", + variants: [], + }, + ], + table_of_contents: ["1. cats; 2. dogs"], + technique: [ + { + facet: + "http://vocab.getty.edu/aat/300053228||drypoint (printing process)", + id: "http://vocab.getty.edu/aat/300053228", + label: "drypoint (printing process)", + variants: [], + }, + ], + terms_of_use: "Terms ", + thumbnail: + "https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2/works/cb8a19a7-3dec-47f3-80c0-12872ae61f8f/thumbnail", + title: "Canary Record TEST 3", + visibility: "Public", + work_type: "Image", +}; diff --git a/tests/home.spec.ts b/tests/home.spec.ts new file mode 100644 index 00000000..0c533c84 --- /dev/null +++ b/tests/home.spec.ts @@ -0,0 +1,24 @@ +import { OpenGraphPage } from "./fixtures/open-graph"; +import { test } from "@playwright/test"; + +const ogTest = test.extend<{ openGraphPage: OpenGraphPage }>({ + openGraphPage: async ({ page }, use) => { + const openGraphPage = new OpenGraphPage(page, "/"); + await openGraphPage.goto(); + await use(openGraphPage); + }, +}); + +ogTest( + "has Homepage Open Graph Data and meta title and description", + async ({ openGraphPage }) => { + await openGraphPage.hasOGSiteName(); + await openGraphPage.hasMetaTitle( + "Digital Collections - Northwestern University Libraries" + ); + await openGraphPage.hasDefaultDescription(); + await openGraphPage.hasDefaultOGDescription(); + await openGraphPage.hasOGUrl(""); + await openGraphPage.hasDefaultOGImage(); + } +); diff --git a/tests/layout.spec.ts b/tests/layout.spec.ts new file mode 100644 index 00000000..193efe1e --- /dev/null +++ b/tests/layout.spec.ts @@ -0,0 +1,44 @@ +import { expect, test } from "@playwright/test"; + +test("top header renders logo and links", async ({ page }) => { + await page.goto("/"); + + // Renders the Northwestern logo + await expect(page.getByTestId("northwestern-logo")).toBeVisible(); + + // Renders the main navigation links + const navEl = page.getByTestId("super-nav"); + + await expect( + navEl.getByRole("link", { exact: true, name: "Libraries" }) + ).toHaveAttribute("href", "https://www.library.northwestern.edu/"); + + await expect( + navEl.getByRole("link", { exact: true, name: "About" }) + ).toHaveAttribute("href", "/about"); + + await expect( + navEl.getByRole("link", { exact: true, name: "Contact" }) + ).toHaveAttribute("href", "/contact"); + + await expect(navEl.getByRole("link", { name: "Sign in" })).toBeVisible(); +}); + +test("footer renders", async ({ page }) => { + await page.goto("/"); + + const footerEl = page.getByTestId("footer"); + + // This component is coming from NUL Design System; not necessary to test everything in it + await expect(footerEl).toBeVisible(); + await expect( + footerEl.getByAltText("Northwestern University logo") + ).toBeVisible(); + + // Display NUL ethics message + await expect( + page.getByText( + "Northwestern University Libraries is dedicated to the fair and ethical" + ) + ).toBeVisible(); +}); diff --git a/tests/search.spec.ts b/tests/search.spec.ts new file mode 100644 index 00000000..0fafefa2 --- /dev/null +++ b/tests/search.spec.ts @@ -0,0 +1,508 @@ +import { test as base, expect } from "@playwright/test"; + +import { OpenGraphPage } from "@/tests/fixtures/open-graph"; +import { SearchPage } from "@/tests/fixtures/search-page"; + +type SearchPageFixtures = { + openGraphPage: OpenGraphPage; + searchPage: SearchPage; +}; + +const TOTAL_RESULTS = 205; + +/** Set up Fixtures for the test. Super handy */ +// https://playwright.dev/docs/test-fixtures +const test = base.extend({ + // A common fixture to help with Open Graph data + openGraphPage: async ({ page }, use) => { + const openGraphPage = new OpenGraphPage(page, "/search"); + await openGraphPage.goto(); + await use(openGraphPage); + }, + // A fixture to help with the Search Page shared functionality + searchPage: async ({ page }, use) => { + const searchPage = new SearchPage(page); + await searchPage.goto(); + await use(searchPage); + }, +}); + +test.describe("Search page component", () => { + test.beforeEach(async ({ page, searchPage }) => { + await searchPage.goto(); + }); + + test("renders Open Graph data and meta title and description", async ({ + openGraphPage, + }) => { + await openGraphPage.hasOGSiteName(); + await openGraphPage.hasMetaTitle("Search"); + await openGraphPage.hasDefaultDescription(); + await openGraphPage.hasDefaultOGDescription(); + await openGraphPage.hasOGUrl("search"); + await openGraphPage.hasDefaultOGImage(); + await openGraphPage.hasDefaultOGDescription(); + }); + + test("renders the global search bar and fires off successful searches", async ({ + page, + searchPage, + }) => { + const searches = [ + { + expectedResultCount: 5, + term: "Obama", + }, + { + expectedResultCount: 35, + term: "Illinois", + }, + { + expectedResultCount: 8, + term: "Berkeley", + }, + ]; + + const searchInput = page.getByPlaceholder("Search by keyword or phrase,"); + const searchBtn = page.getByTestId("submit-button"); + + await searchPage.verifyTopResultsCount(TOTAL_RESULTS); + await searchPage.verifyGridItemCount(TOTAL_RESULTS); + + // Test "Obama" search term + await searchInput.fill(searches[0].term); + await searchBtn.click(); + + await expect(page).toHaveURL(`/search?q=${searches[0].term}`); + await searchPage.verifyTopResultsCount(searches[0].expectedResultCount); + await expect(searchInput).toHaveValue(searches[0].term); + + const search1 = searchPage.getPaginationResults( + searches[0].expectedResultCount, + ); + + await searchPage.verifyTopResultsCount(searches[0].expectedResultCount); + await searchPage.verifyTotalsResultDisplay({ + count: search1, + total: search1, + }); + + // Test "Illinois" search term + await searchInput.fill(searches[1].term); + await searchBtn.click(); + + await expect(page).toHaveURL(`/search?q=${searches[1].term}`); + await searchPage.verifyTopResultsCount(searches[1].expectedResultCount); + await expect(searchInput).toHaveValue(searches[1].term); + + const search2 = searchPage.getPaginationResults( + searches[1].expectedResultCount, + ); + + await searchPage.verifyTopResultsCount(searches[1].expectedResultCount); + await searchPage.verifyTotalsResultDisplay({ + count: search2, + total: search2, + }); + + // Reset the search + await page.getByRole("button", { name: "Clear" }).click(); + await expect(page).toHaveURL(/\/search/); + + // Verify original counts are back in place + await searchPage.verifyTopResultsCount(TOTAL_RESULTS); + await searchPage.verifyGridItemCount(TOTAL_RESULTS); + }); + + test("renders Facet filter buttons above the grid correctly", async ({ + page, + searchPage, + }) => { + const facetInlineComponent = page.getByTestId("facet-inline-component"); + const allBtn = facetInlineComponent.getByRole("radio", { name: "All" }); + const imageBtn = facetInlineComponent.getByRole("radio", { name: "Image" }); + const audioBtn = facetInlineComponent.getByRole("radio", { name: "Audio" }); + const videoBtn = facetInlineComponent.getByRole("radio", { name: "Video" }); + const clearAllBtn = page.getByRole("button", { + name: "Clear All", + }); + const publicWorksToggle = page.getByRole("switch", { + name: "Public works only", + }); + const facetUserComponent = page + .getByTestId("facet-user-component") + .locator("span"); + + const IMAGE_COUNT = 152; + const AUDIO_COUNT = 25; + const VIDEO_COUNT = 28; + const PUBLIC_WORKS_COUNT = 179; + + // Work Type facet button checks + await expect(allBtn).toHaveAttribute("aria-checked", "true"); + await expect(imageBtn).toHaveAttribute("aria-checked", "false"); + + // Select Image facet + await imageBtn.click(); + await expect(imageBtn).toHaveAttribute("aria-checked", "true"); + await expect(allBtn).toHaveAttribute("aria-checked", "false"); + await searchPage.verifyTopResultsCount(IMAGE_COUNT); + await searchPage.verifyGridItemCount(IMAGE_COUNT); + + // Select Audio facet + await audioBtn.click(); + await expect(audioBtn).toHaveAttribute("aria-checked", "true"); + await expect(imageBtn).toHaveAttribute("aria-checked", "false"); + await searchPage.verifyTopResultsCount(AUDIO_COUNT); + await searchPage.verifyGridItemCount(AUDIO_COUNT); + + // Select Video facet + await videoBtn.click(); + await expect(videoBtn).toHaveAttribute("aria-checked", "true"); + await expect(audioBtn).toHaveAttribute("aria-checked", "false"); + await searchPage.verifyTopResultsCount(VIDEO_COUNT); + await searchPage.verifyGridItemCount(VIDEO_COUNT); + + // Toggle Public Works + await allBtn.click(); + await publicWorksToggle.click(); + + await searchPage.verifyTopResultsCount(PUBLIC_WORKS_COUNT); + await searchPage.verifyGridItemCount(PUBLIC_WORKS_COUNT); + + // Test Filter Facet Toggle UI + await clearAllBtn.click(); + await expect(facetUserComponent).not.toBeVisible(); + + await imageBtn.click(); + await page.waitForLoadState("domcontentloaded"); + await expect(facetUserComponent).toContainText("1"); + + await publicWorksToggle.click(); + await expect(facetUserComponent).toContainText("2"); + }); + + test("renders the Filter modal and a general run through of interactions within", async ({ + page, + }) => { + const filterBtn = page.getByRole("button", { name: "Filter Filter" }); + const filterModalHeading = page.getByRole("heading", { name: "Filter" }); + const filterModalBody = page.getByTestId("facets-group-list"); + + await filterBtn.click(); + + // Test Filter Modal UI, default layout and interactions + await expect(filterModalHeading).toBeInViewport(); + await page.getByRole("banner").getByTestId("facets-filter-close").click(); + await page.getByRole("button", { name: "Filter Filter" }).click(); + await page.getByRole("button", { name: "Clear All" }).click(); + await page.getByText("Cancel").click(); + await page.getByRole("button", { name: "Filter Filter" }).click(); + await page + .getByTestId("facets-submit") + .getByTestId("submit-button") + .click(); + + expect(filterModalHeading).not.toBeVisible(); + + // Test facets; Subject and Descriptive defaults open on load + await filterBtn.click(); + await expect( + filterModalBody.getByRole("button", { name: "Subject and Descriptive" }), + ).toBeVisible(); + + // Test Genre facet + await page.getByRole("tab", { name: "Genre" }).click(); + await page.getByRole("heading", { name: "Genre" }).click(); + + // Test Language facet + await page.getByRole("tab", { name: "Language" }).click(); + await page.getByRole("heading", { name: "Language" }).click(); + await page.locator("li").filter({ hasText: "English(84)" }).click(); + await page.locator("li").filter({ hasText: "French(11)" }).click(); + + // Test Style Period facet + await page.getByRole("tab", { name: "Style Period" }).click(); + await page.getByRole("heading", { name: "Style Period" }).click(); + await page.getByPlaceholder("Find Style Period").click(); + await page.getByText("Qing (dynastic styles and").click(); + await page + .getByTestId("facet-options") + .getByLabel("Qing (dynastic styles and") + .click(); + + // Test Subject facet + await page.getByRole("tab", { name: "Subject" }).click(); + await page + .getByTestId("facet-multi-component") + .getByRole("heading", { name: "Subject" }) + .click(); + await page.getByPlaceholder("Find Subject").click(); + await page + .getByText("Northwestern University (Evanston, Ill.)(21)") + .click(); + await page + .getByLabel("Northwestern University (Evanston, Ill.)(22)") + .click(); + + // Test Technique facet + await page.getByRole("tab", { name: "Technique" }).click(); + await page.getByRole("heading", { name: "Technique" }).click(); + await page.getByPlaceholder("Find Technique").click(); + await page + .locator("li") + .filter({ hasText: "photomechanical processes(6)" }) + .click(); + await page.getByLabel("photomechanical processes(6)").click(); + + // Test Work Type facet + await page.getByRole("tab", { name: "Work Type" }).click(); + await page.getByRole("heading", { name: "Work Type" }).click(); + await page.getByPlaceholder("Find Work Type").click(); + await page.getByTestId("facet-options").click(); + + // Close modal + await page.getByRole("banner").getByTestId("facets-filter-close").click(); + + // Reopen modal + await filterBtn.click(); + + // Check Collection and Location Group facets + await page.getByRole("button", { name: "Collection and Location" }).click(); + await page.getByRole("tab", { name: "Collection" }).click(); + await page + .getByTestId("facet-multi-component") + .getByRole("heading", { name: "Collection" }) + .click(); + await page.getByPlaceholder("Find Collection").click(); + await page + .locator("li") + .filter({ hasText: "Collection of Carl Smith(14)" }) + .click(); + await page + .locator("li") + .filter({ hasText: "Chicago Chamber Musicians" }) + .click(); + await page + .getByTestId("facet-options") + .getByLabel("Chicago Chamber Musicians") + .click(); + await page.getByRole("tab", { name: "Series" }).click(); + await page.getByRole("heading", { name: "Series" }).click(); + await page.getByPlaceholder("Find Series").click(); + await page.getByRole("tab", { name: "Box Number" }).click(); + await page.getByRole("heading", { name: "Box Number" }).click(); + await page.getByPlaceholder("Find Box Number").click(); + + // Activate a facet + await page.getByLabel("(16)").click(); + await page.getByRole("heading", { name: "Preview Results" }).click(); + + // Currently selected (uncommitted) facets display in modal header + const userFacet = page.getByTestId("facet-user-value-component"); + await expect(userFacet).toContainText("1"); + await expect(userFacet).toContainText("Box Number"); + + // Remove facet + await userFacet.click(); + + // Verify currently selected user facet is removed from the modal header + expect(userFacet).not.toBeVisible(); + + // Toggle the facet again + await page.getByLabel("(16)").click(); + + // Submit button shows number of results + const modalSubmitBtn = page + .getByTestId("facets-submit") + .getByTestId("submit-button"); + await expect(modalSubmitBtn).toHaveText("View Results (16)"); + await modalSubmitBtn.click(); + + // Main search page matches result count + await expect(page.getByTestId("results-count")).toHaveText("16 results"); + }); + + test("Filter modal facets will update Preview Results when facets are turned on/off", async ({ + page, + }) => { + const filterBtn = page.getByRole("button", { name: "Filter Filter" }); + const previewItems = page.getByTestId("facets-filter-preview-item"); + const facetOptions = page.getByTestId("facet-options"); + const userFacetsRow = page.getByTestId("facet-user-component"); + const userFacetButtons = userFacetsRow.getByTestId( + "facet-user-value-component", + ); + + await filterBtn.click(); + + // Default Preview Results display + await expect(previewItems).toHaveCount(5); + expect(previewItems.nth(0)).toContainText("Dracula"); + expect(previewItems.nth(1)).toContainText("Portrait of Justine Cordwell."); + expect(userFacetsRow).toHaveCount(0); + + // Activate a facet + await page.getByLabel("African American college students").click(); + + // Preview Items update + await expect(previewItems.nth(0)).toContainText( + "Protest photographs, c. 1969-1970", + ); + await expect(previewItems.nth(1)).toContainText( + "Ronald E. Pitts. Cleveland", + ); + + // User selected facets update + await expect(userFacetButtons).toHaveCount(1); + await expect( + userFacetsRow.getByLabel("Remove African American"), + ).toBeVisible(); + + // Test the facet count (12) is included in the facet label and its checked + await expect( + facetOptions.getByText("African American college students(12)"), + ).toBeVisible(); + await expect( + facetOptions.getByLabel("African American college students"), + ).toBeChecked(); + + // Activating a second facet + await facetOptions.getByLabel("Choirs (Music)").click(); + + // Preview Items update + await expect(previewItems).toHaveCount(2); + await expect(previewItems.nth(0)).toContainText( + "Ronald E. Pitts. Cleveland", + ); + await expect(previewItems.nth(1)).toContainText( + "Audition for the Northwestern Community Ensemble", + ); + + // User facets update + await expect(userFacetButtons).toHaveCount(2); + await expect( + userFacetsRow.getByLabel("Remove Choirs (Music)"), + ).toBeVisible(); + await expect( + userFacetsRow.getByLabel("Remove African American"), + ).toBeVisible(); + + // Test the facet count (2) is included in the facet label and its checked + await expect( + facetOptions.getByText("African American college students(2)"), + ).toBeVisible(); + await expect(facetOptions.getByLabel("Choirs (Music)")).toBeChecked(); + }); + + test("Filter modal cancel buttons do not make changes to the search results", async ({ + page, + }) => { + const filterBtn = page.getByRole("button", { name: "Filter Filter" }); + const facetOptions = page.getByTestId("facet-options"); + const submitBtn = page + .getByTestId("facets-submit") + .getByTestId("submit-button"); + const resultsCount = page.getByTestId("results-count"); + + await filterBtn.click(); + + // Activating a facet updates uncommitted count within modal + await page.getByRole("tab", { name: "Language" }).click(); + await facetOptions.getByLabel("French(11)").check(); + await expect(submitBtn).toHaveText("View Results (11)"); + + // Canceling returns the default number of total results + await page.getByText("Cancel").click(); + await expect(resultsCount).toHaveText(`${TOTAL_RESULTS} results`); + + await filterBtn.click(); + + // Try another facet from a different group + await page.getByRole("button", { name: "Collection and Location" }).click(); + await page.getByRole("tab", { name: "Collection" }).click(); + await facetOptions.getByLabel("Map and Atlas Collection").check(); + await expect(submitBtn).toHaveText("View Results (6)"); + + await page.getByRole("banner").getByTestId("facets-filter-close").click(); + await expect(resultsCount).toHaveText(`${TOTAL_RESULTS} results`); + }); + + test("renders correct pagination", async ({ page, searchPage }) => { + function buildResultsString({ page }: { page: number }) { + const start = paginationResultsCount * (page - 1) + 1; + const end = start + paginationResultsCount - 1; + const refinedEnd = end > TOTAL_RESULTS ? TOTAL_RESULTS : end; + return `Showing ${start} to ${refinedEnd} of ${TOTAL_RESULTS} results`; + } + + const nextBtn = page.getByRole("button", { name: "Next" }); + const prevBtn = page.getByRole("button", { name: "Previous" }); + const startBtn = page.getByRole("button", { name: "Start" }); + const paginationResultsCount = + searchPage.getPaginationResults(TOTAL_RESULTS); + + await searchPage.verifyGridItemCount(TOTAL_RESULTS); + await searchPage.verifyTopResultsCount(TOTAL_RESULTS); + + await expect(prevBtn).not.toBeVisible(); + await expect(startBtn).not.toBeVisible(); + + // Click to page 2 + await nextBtn.click(); + await searchPage.verifyGridItemCount( + TOTAL_RESULTS - paginationResultsCount, + ); + await expect(page.getByTestId("results")).toHaveText( + buildResultsString({ page: 2 }), + ); + await expect(prevBtn).toBeVisible(); + await expect(startBtn).not.toBeVisible(); + + // URL updates + await expect(page).toHaveURL(new RegExp(`/search\\?page=2`)); + + // Click to page 3 + await nextBtn.click(); + await searchPage.verifyGridItemCount( + TOTAL_RESULTS - paginationResultsCount * 2, + ); + await expect(page.getByTestId("results")).toHaveText( + buildResultsString({ page: 3 }), + ); + expect(prevBtn).toBeVisible(); + expect(startBtn).toBeVisible(); + + await expect(page).toHaveURL(`/search?page=3`); + + // Click previous going back to page 2 + await prevBtn.click(); + await searchPage.verifyGridItemCount( + TOTAL_RESULTS - paginationResultsCount, + ); + await expect(page.getByTestId("results")).toHaveText( + buildResultsString({ page: 2 }), + ); + await expect(page).toHaveURL(`/search?page=2`); + + // Go to end of results + await page.goto("/search?page=6"); + await searchPage.verifyGridItemCount(5); + await expect(page.getByTestId("results")).toHaveText( + buildResultsString({ page: 6 }), + ); + await expect(nextBtn).not.toBeVisible(); + }); + + test("renders Work results which link to the Work page", async ({ page }) => { + await page.getByLabel("Public works only").click(); + await page.getByRole("link", { name: "Ajal-e Moallaq Image" }).click(); + await expect(page).toHaveURL("items/5a2dcade-0071-48c3-b29b-755293e862c4"); + + await page.goto("/search"); + await page.getByLabel("Public works only").click(); + + await page.getByRole("link", { name: "Cadbury Eggs Cars Image" }).click(); + await expect(page).toHaveURL("items/944cc66c-dcf9-4ac5-8d0d-ec48a699a0fe"); + }); +}); diff --git a/tests/work.spec.ts b/tests/work.spec.ts new file mode 100644 index 00000000..511d5a59 --- /dev/null +++ b/tests/work.spec.ts @@ -0,0 +1,534 @@ +import { test as base, expect } from "@playwright/test"; + +import { OpenGraphPage } from "@/tests/fixtures/open-graph"; +import { WorkPage } from "@/tests/fixtures/work-page"; +import { canaryWork } from "@/tests/fixtures/works/canary-work"; + +type WorkPageFixtures = { + openGraphPage: OpenGraphPage; + workPage: WorkPage; +}; + +const CANARY_WORK_ID = "cb8a19a7-3dec-47f3-80c0-12872ae61f8f"; + +const test = base.extend({ + // A common fixture to help with Open Graph data + openGraphPage: async ({ page }, use) => { + const openGraphPage = new OpenGraphPage(page, `/items/${CANARY_WORK_ID}`); + await openGraphPage.goto(); + await use(openGraphPage); + }, + // A fixture to help with the Search Page shared functionality + workPage: async ({ page }, use) => { + const workPage = new WorkPage(page); + await use(workPage); + }, +}); + +test.describe("Work page component", async () => { + test.beforeEach(async ({ page }) => { + await page.goto(`/items/${CANARY_WORK_ID}`); + }); + + test("renders Open Graph data and meta title and description", async ({ + openGraphPage, + }) => { + await openGraphPage.hasMetaTitle(canaryWork.title); + await openGraphPage.hasMetaDescription(canaryWork.description.join(" ")); + await openGraphPage.hasOGDescription( + `${canaryWork.description.join(" ")} - ${canaryWork.terms_of_use}` + ); + await openGraphPage.hasOGSiteName(); + await openGraphPage.hasOGUrl(`items/${canaryWork.id}`); + await openGraphPage.hasOGImage( + `https://dc-test-iiif.rdc-staging.library.northwestern.edu/iiif/2/a59dc417-d313-4286-88d4-1c80916b82c6/full/1200,630/0/default.jpg` + ); + }); + + test("renders the Work top level metadata", async ({ page }) => { + const metadataEl = page.getByTestId("metadata"); + + await page.getByRole("button", { name: "Dismiss" }).click(); + + await expect(page.getByTestId("title")).toContainText( + canaryWork.title || "" + ); + await expect(page.getByTestId("summary")).toContainText( + canaryWork.description.join(", ") || "" + ); + + await expect(metadataEl.getByText("Alternate Title")).toBeVisible(); + await expect( + metadataEl.getByText("This is an alternative title") + ).toBeVisible(); + await expect(metadataEl.getByText("Abstract")).toBeVisible(); + await expect(metadataEl.getByText("Updated description!!!")).toBeVisible(); + await expect(metadataEl.getByText("Caption")).toBeVisible(); + await expect(metadataEl.getByText("Beebo")).toBeVisible(); + await expect(metadataEl.getByText("Contributor")).toBeVisible(); + await expect( + metadataEl.getByText("Metallica (Musical group) (Cartographer)") + ).toBeVisible(); + await expect(metadataEl.getByText("Creator")).toBeVisible(); + await expect(metadataEl.getByText("Dessa (Vocalist)")).toBeVisible(); + await expect(metadataEl.getByText("Cultural Context")).toBeVisible(); + await expect(metadataEl.getByText("Test Context")).toBeVisible(); + await expect(metadataEl.getByText("Date", { exact: true })).toBeVisible(); + await expect( + metadataEl.getByText("August 1906 to December 1910") + ).toBeVisible(); + await expect(metadataEl.getByText("1958")).toBeVisible(); + await expect(metadataEl.getByText("Department")).toBeVisible(); + await expect( + metadataEl.getByText("University (MAIN) Library") + ).toBeVisible(); + await expect(metadataEl.getByText("Dimensions")).toBeVisible(); + await expect(metadataEl.getByText("16 x 24 inches")).toBeVisible(); + await expect(metadataEl.getByText("Genre")).toBeVisible(); + + // Click to show more + await page.getByRole("button", { name: "Show More" }).click(); + + await expect(metadataEl.getByText("stencil prints")).toBeVisible(); + await expect( + metadataEl.getByText("Language", { exact: true }) + ).toBeVisible(); + await expect(metadataEl.getByText("Crimean Tatar")).toBeVisible(); + await expect(metadataEl.getByText("Location")).toBeVisible(); + await expect(metadataEl.getByText("Leland Township")).toBeVisible(); + await expect( + metadataEl.getByText("Materials", { exact: true }) + ).toBeVisible(); + await expect( + metadataEl.getByText("Acrylic paint on cement block") + ).toBeVisible(); + await expect(metadataEl.getByText("Notes", { exact: true })).toBeVisible(); + await expect( + metadataEl.getByText("Here are some notes (General Note)", { + exact: true, + }) + ).toBeVisible(); + await expect(metadataEl.getByText("Awards type (Awards)")).toBeVisible(); + await expect(metadataEl.getByText("Biographical note (")).toBeVisible(); + await expect( + metadataEl.getByText("creation production credits (") + ).toBeVisible(); + await expect(metadataEl.getByText("Provenance")).toBeVisible(); + await expect( + metadataEl.getByText("Artist; sold to Mr. Blank in") + ).toBeVisible(); + await expect(metadataEl.getByText("Publisher")).toBeVisible(); + await expect( + metadataEl.getByText("Northwestern University Press") + ).toBeVisible(); + await expect( + metadataEl.getByText("Related Material", { exact: true }) + ).toBeVisible(); + await expect( + metadataEl.getByText("See Also: related material") + ).toBeVisible(); + await expect(metadataEl.getByText("Related URL")).toBeVisible(); + await expect(metadataEl.getByText("Finding Aid")).toBeVisible(); + await expect(metadataEl.getByText("Research Guide")).toBeVisible(); + await expect(metadataEl.getByText("Rights Holder")).toBeVisible(); + await expect(metadataEl.getByText("Artist", { exact: true })).toBeVisible(); + await expect(metadataEl.getByText("Rights Statement")).toBeVisible(); + await expect( + metadataEl.getByText("In Copyright - Educational") + ).toBeVisible(); + await expect(metadataEl.getByText("Scope and Contents")).toBeVisible(); + await expect( + metadataEl.getByText("I promise there is scope and") + ).toBeVisible(); + await expect(metadataEl.getByText("Series")).toBeVisible(); + await expect( + metadataEl.getByText("Canaries and How to Care for") + ).toBeVisible(); + await expect(metadataEl.getByText("Source")).toBeVisible(); + await expect(metadataEl.getByText("Mars")).toBeVisible(); + await expect(metadataEl.getByText("Style Period")).toBeVisible(); + await expect( + metadataEl.getByText("Qing (dynastic styles and") + ).toBeVisible(); + await expect(metadataEl.getByText("Subject")).toBeVisible(); + await expect(metadataEl.getByText("Cats on postage stamps")).toBeVisible(); + await expect(metadataEl.getByText("Test Record Canary")).toBeVisible(); + await expect(metadataEl.getByText("Table of Contents")).toBeVisible(); + await expect(metadataEl.getByText("cats; 2. dogs")).toBeVisible(); + await expect(metadataEl.getByText("Technique")).toBeVisible(); + await expect( + metadataEl.getByText("drypoint (printing process)") + ).toBeVisible(); + await expect(page.getByText("Attribution")).toContainText("Attribution"); + await expect(page.getByText("Courtesy of Northwestern")).toBeVisible(); + + // Shows the collection + const collectionsCard = page.getByTestId("card-wrapper").locator("a"); + await expect( + collectionsCard.getByAltText("TEST Canary Records") + ).toHaveAttribute( + "src", + `https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2/collections/820fc328-a333-430b-a974-ac6218a1ffcd/thumbnail?aspect=square` + ); + const figCaption = collectionsCard.locator("figcaption"); + await expect(figCaption).toContainText("TEST Canary Records"); + await expect(figCaption.getByTestId("work-count-total")).toContainText( + "3 Works" + ); + const workCountTypes = figCaption.getByTestId("work-count-type"); + await expect(workCountTypes.nth(0)).toContainText("1"); + await expect(workCountTypes.nth(1)).toContainText("1"); + await expect(workCountTypes.nth(2)).toContainText("1"); + }); + + test("renders the Explore Further section Clover sliders", async ({ + page, + }) => { + await page.getByRole("button", { name: "Dismiss" }).click(); + const relatedItems = page.getByTestId("related-items"); + + await expect( + page.getByRole("heading", { name: "Explore Further" }) + ).toBeVisible(); + + // Collection Slider + await expect( + page + .getByTestId("related-items") + .locator("a") + .filter({ hasText: "TEST Canary Records" }) + ).toHaveAttribute( + "href", + "https://dc.library.northwestern.edu/search?q=collection.id%3A%22820fc328-a333-430b-a974-ac6218a1ffcd%22" + ); + + // View all button + await expect(page.getByLabel("TEST Canary Records").nth(1)).toHaveAttribute( + "href", + "https://dc.library.northwestern.edu/search?q=collection.id%3A%22820fc328-a333-430b-a974-ac6218a1ffcd%22" + ); + + // Test the Collection carousel + const collectionsSliderItems = relatedItems + .locator(".swiper-wrapper") + .nth(0); + await expect( + collectionsSliderItems.filter({ hasText: "Canary Record TEST 3" }) + ).toBeVisible(); + await expect( + collectionsSliderItems.filter({ hasText: "Image" }) + ).toBeVisible(); + await expect( + collectionsSliderItems.filter({ hasText: "Canary Record TEST 2" }) + ).toBeVisible(); + await expect( + collectionsSliderItems.filter({ hasText: "Video" }) + ).toBeVisible(); + await expect( + collectionsSliderItems.filter({ hasText: "Canary Record TEST 1" }) + ).toBeVisible(); + await expect( + collectionsSliderItems.filter({ hasText: "Audio" }) + ).toBeVisible(); + + // More Like This slider + await expect( + page + .getByTestId("related-items") + .locator("a") + .filter({ hasText: "More Like This" }) + ).toHaveAttribute( + "href", + "https://dc.library.northwestern.edu/search?similar=cb8a19a7-3dec-47f3-80c0-12872ae61f8f" + ); + + // TODO: Something is wrong with the More Like This slider + + // // Test the More Like This carousel + // const moreLikeThisSliderItems = relatedItems + // .locator(".swiper-wrapper") + // .nth(1); + + // // Test the More Like This carousel has 10 items + // await expect(moreLikeThisSliderItems.locator(".swiper-slide")).toHaveCount( + // 11 + // ); + + // // Slider navigation + // await expect( + // relatedItems.getByRole("button", { name: "previous item" }) + // ).toBeDisabled(); + + // await page.getByRole("button", { name: "next item" }).click(); + // // expect prev button to be enabled + // await expect( + // relatedItems.getByRole("button", { name: "previous item" }) + // ).toBeEnabled(); + // // expect next button to be disabled + // await expect( + // relatedItems.getByRole("button", { name: "next item" }) + // ).toBeDisabled(); + + // Test the Subject carousels exist. But they'll be random so can't really test the content + const subject1SliderItems = relatedItems.locator(".swiper-wrapper").nth(2); + const subject2SliderItems = relatedItems.locator(".swiper-wrapper").nth(3); + + await expect(subject1SliderItems).toBeVisible(); + await expect(subject2SliderItems).toBeVisible(); + }); + + test("renders the Find this item and Cite this item modal windows", async ({ + page, + }) => { + const today = new Date().toDateString(); + + await page.getByRole("button", { name: "Dismiss" }).click(); + + /** + * Find this item + */ + await page.getByRole("button", { name: "Find this item" }).click(); + await page.getByRole("heading", { name: "Find this item" }).click(); + await page + .getByTestId("actions-dialog-aside") + .getByRole("img", { name: "Canary Record TEST" }) + .click(); + await page + .getByTestId("actions-dialog-aside") + .getByText("Canary Record TEST") + .click(); + await page.getByTestId("actions-dialog-aside").getByText("Image").click(); + await page.getByText("Accession").click(); + await page.getByText("TEST_canary_002").click(); + await page.getByText("Box Name").click(); + await page.getByText("The name of a box").click(); + await page.getByText("Box Number").click(); + await page.getByText("88").nth(1).click(); + await page.getByText("Folder Name").click(); + await page.getByText("Blue folder").click(); + await page.getByText("Folder Number").click(); + await page.getByText("88").nth(2).click(); + await page.getByText("NUsearch").click(); + await page.getByRole("link", { name: "MS-1984-1982-" }).click(); + + expect(page.url()).toBe( + "https://search.library.northwestern.edu/discovery/search?vid=01NWU_INST%3ANULVNEW&institution=01NWU&field=any&query=any%2Ccontains%2CMS-1984-1982-1989&query=&search_scope=MyInst_and_CI" + ); + + await page.goBack(); + + /** + * Cite this item + */ + const citeDialog = page.getByRole("dialog").getByTestId("metadata"); + + await page.getByRole("button", { name: "Cite this item" }).click(); + await expect( + page.getByRole("heading", { name: "Cite this item" }) + ).toBeVisible(); + + // Aside info + await expect( + page + .getByTestId("actions-dialog-aside") + .getByRole("img", { name: "Canary Record TEST" }) + ).toBeVisible(); + await expect( + page.getByTestId("actions-dialog-aside").getByText("Canary Record TEST") + ).toBeVisible(); + await expect( + page.getByTestId("actions-dialog-aside").getByText("Image") + ).toBeVisible(); + + // Main data + await expect(citeDialog.getByText("Title", { exact: true })).toBeVisible(); + await expect( + citeDialog.getByText("Canary Record TEST 3 | Copy") + ).toBeVisible(); + await citeDialog + .locator("dd") + .filter({ hasText: "Canary Record TEST 3 | Copy" }) + .getByRole("button") + .click(); + + await expect(citeDialog.getByText("Use Statement")).toBeVisible(); + await expect(citeDialog.getByText("Terms | Copy")).toBeVisible(); + + await expect(citeDialog.getByText("Ark", { exact: true })).toBeVisible(); + await expect( + citeDialog.getByText("ark:/81985/n2x34qh35 | Copy") + ).toBeVisible(); + + await expect(citeDialog.getByText("APA Format")).toBeVisible(); + await expect( + citeDialog.getByText( + `University (MAIN) Library, Northwestern University Libraries. (${today}` + ) + ).toBeVisible(); + + await expect(citeDialog.getByText("Chicago/Turabian Format")).toBeVisible(); + await expect( + citeDialog.getByText("University (MAIN) Library,").nth(1) + ).toBeVisible(); + + await expect(citeDialog.getByText("MLA Format")).toBeVisible(); + await expect( + citeDialog.getByText( + `University (MAIN) Library, Northwestern University Libraries. "Canary Record TEST 3", TEST Canary Records ${today}.` + ) + ).toBeVisible(); + + await expect(citeDialog.getByText("Wiki Citation")).toBeVisible(); + await expect( + citeDialog.getByText("{{cite web |") + ).toBeVisible(); + + // Verify the copy button is present on all items + const copyButtons = citeDialog + .locator("button") + .filter({ hasText: "Copy" }); + await expect(copyButtons).toHaveCount(7); + await copyButtons.nth(0).click(); + + // TODO: This fails in headless tests for some reason + //await expect(copyButtons.nth(0).locator("> span")).toHaveText("Copied"); + + await page.getByTestId("facets-filter-close").click(); + }); + + test("Download and share dialog renders all content", async ({ page }) => { + await page.getByRole("button", { name: "Dismiss" }).click(); + await page.getByRole("button", { name: "Download and share" }).click(); + + const dialog = page.getByRole("dialog"); + + await expect( + dialog.getByRole("heading", { name: "Download this item" }) + ).toBeVisible(); + + // Aside info + await expect( + dialog.getByRole("img", { name: "Canary Record TEST" }) + ).toBeVisible(); + await expect(dialog.getByText("Image", { exact: true })).toBeVisible(); + await expect( + dialog.getByRole("button", { name: "Logo Facebook" }) + ).toBeVisible(); + await expect( + dialog.getByRole("button", { name: "Logo Twitter" }) + ).toBeVisible(); + await expect( + dialog.getByRole("button", { name: "Logo Pinterest" }) + ).toBeVisible(); + + // IIIF Manifest + await expect( + dialog.getByRole("heading", { name: "IIIF Manifest" }) + ).toBeVisible(); + await expect( + dialog.getByRole("link", { name: "https://dc-test-api.rdc-" }) + ).toBeVisible(); + await dialog.getByRole("button", { name: "Copy Manifest Link" }).click(); + + //TODO: This fails in headless tests for some reason + //await expect(dialog.getByText("Copied")).toBeVisible(); + + await expect( + dialog.getByRole("link", { name: "What is IIIF?" }) + ).toHaveAttribute("href", "https://iiif.io/get-started/why-iiif/"); + await expect( + dialog.getByRole("link", { name: "View in Mirador" }) + ).toHaveAttribute( + "href", + "https://projectmirador.org/embed/?iiif-content=https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2/works/cb8a19a7-3dec-47f3-80c0-12872ae61f8f?as=iiif" + ); + + // Embed Viewer + const embedViewer = dialog.getByTestId("preview-embed-viewer"); + + await expect( + dialog.getByRole("heading", { name: "Embed Viewer" }) + ).toBeVisible(); + await expect(dialog.getByTestId("embed-html")).toContainText( + `/embedded-viewer/https%3A%2F%2Fdc-test-api.rdc-staging.library.northwestern.edu%2Fapi%2Fv2%2Fworks%2Fcb8a19a7-3dec-47f3-80c0-12872ae61f8f%3Fas%3Diiif" title="Canary Record TEST 3" width="100%" height="800">` + ); + await expect(dialog.getByText("Preview")).toBeVisible(); + await expect( + embedViewer.filter({ hasText: "Canary Record TEST 3" }) + ).toBeVisible(); + await expect(embedViewer.locator("span").nth(1)).toHaveAttribute( + "style", + `background-image: url(\"https://dc-test-api.rdc-staging.library.northwestern.edu/api/v2/works/cb8a19a7-3dec-47f3-80c0-12872ae61f8f/thumbnail\");` + ); + + await page.getByRole("button", { exact: true, name: "Copy" }).click(); + + await page.locator('select[name="show-title"]').selectOption("false"); + await expect(embedViewer.getByText("Canary Record TEST 3")).toBeHidden(); + + await expect(page.getByTestId("preview-info-panel")).not.toBeVisible(); + await page + .locator('select[name="show-info-panel"]') + .selectOption("show initially open"); + await expect(page.getByTestId("preview-info-panel")).toBeVisible(); + + // Download and Embed Images + const downloadEmbedItems = dialog.getByTestId("download-embed-items"); + + // Image thumbnails + await expect( + dialog.getByRole("heading", { name: "Download and Embed" }) + ).toBeVisible(); + await expect( + downloadEmbedItems.getByRole("img", { name: "access tif" }) + ).toBeVisible(); + await expect( + downloadEmbedItems.getByRole("img", { name: "access jpg" }) + ).toBeVisible(); + await expect( + downloadEmbedItems.getByRole("img", { + name: "Cocktail Construction Chart", + }) + ).toBeVisible(); + await expect( + downloadEmbedItems.getByRole("img", { name: "auxiliary png" }) + ).toBeVisible(); + + await expect(downloadEmbedItems.getByText("access tif")).toBeVisible(); + await expect(downloadEmbedItems.getByText("access jpg")).toBeVisible(); + await expect( + downloadEmbedItems.getByText("Cocktail Construction Chart") + ).toBeVisible(); + await expect(downloadEmbedItems.getByText("auxiliary png")).toBeVisible(); + + await expect( + downloadEmbedItems.getByRole("button", { name: "Download JPG" }) + ).toHaveCount(4); + await expect(downloadEmbedItems.getByText("Embed HTML")).toHaveCount(4); + await expect( + downloadEmbedItems.getByRole("button", { name: "Copy IIIF" }) + ).toHaveCount(4); + + // Toggle Embed HTML + const embedHtml = downloadEmbedItems.getByText( + `Northwestern Libraries Digital Collections Fileset image for 39a418a3-1ec7-4ef6-ae0c-0227c5aa2355` + ); + + await expect(embedHtml).toBeHidden(); + await downloadEmbedItems.getByText("Embed HTML").nth(0).click(); + await expect(embedHtml).toBeVisible(); + + await expect( + downloadEmbedItems.getByText("Copy 3000px - 100%1800px - 50") + ).toBeVisible(); + + await downloadEmbedItems.getByRole("combobox").nth(0).selectOption("900"); + await downloadEmbedItems.getByRole("combobox").nth(1).selectOption("gray"); + + await expect( + downloadEmbedItems.getByText( + `Northwestern Libraries Digital Collections Fileset image for 39a418a3-1ec7-4ef6-ae0c-0227c5aa2355` + ) + ).toBeVisible(); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index e6e8420f..cb3b00bd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,30 +1,54 @@ { "compilerOptions": { - "target": "ES6", - "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, + "baseUrl": ".", "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, + "forceConsistentCasingInFileNames": true, + "incremental": true, "isolatedModules": true, "jsx": "preserve", - "incremental": true, - "baseUrl": ".", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "module": "esnext", + "moduleResolution": "node", + "noEmit": true, "paths": { - "@/*": ["*"], - "@/components/*": ["components/*"], - "@/context/*": ["context/*"], - "@/lib/*": ["lib/*"], - "@/mocks/*": ["mocks/*"], - "@/pages/*": ["pages/*"], - "@/styles/*": ["styles/*"] - } + "@/*": [ + "*" + ], + "@/components/*": [ + "components/*" + ], + "@/context/*": [ + "context/*" + ], + "@/lib/*": [ + "lib/*" + ], + "@/mocks/*": [ + "mocks/*" + ], + "@/pages/*": [ + "pages/*" + ], + "@/styles/*": [ + "styles/*" + ] + }, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES6", + "types": ["jest"] }, + "exclude": [ + "node_modules", + "cypress", + "./cypress.config.ts" + ], "include": [ "next-env.d.ts", "**/*.ts", @@ -33,6 +57,5 @@ "**/*.jsx", "**/*.mjs", "types.d.ts" - ], - "exclude": ["node_modules", "cypress", "./cypress.config.ts"] -} + ] +} \ No newline at end of file