From 46803e81d75c6917ec277933f2b70b50a162dbfa Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 11:54:28 +0100 Subject: [PATCH 01/24] tests: add unit tests for Buttons and Badge --- vendors/mkui/.gitignore | 1 + vendors/mkui/README.md | 28 +- vendors/mkui/jest.config.js | 30 + vendors/mkui/jest.setup.js | 1 + vendors/mkui/package.json | 17 +- vendors/mkui/playwright.config.ts | 2 + vendors/mkui/pnpm-lock.yaml | 2432 ++++++++++++++++- .../mkui/src/Components/Badge/Badge.test.tsx | 9 + vendors/mkui/src/Components/Badge/Badge.tsx | 1 - .../src/Components/Button/Button.test.tsx | 14 + .../ButtonGroup/ButtonGroup.test.tsx | 27 + vendors/mkui/src/twin.d.ts | 29 + .../navbar--default-darwin.png | Bin 8032 -> 8905 bytes .../typography--titles-darwin.png | Bin 24319 -> 24364 bytes vendors/mkui/tsconfig.json | 22 +- vendors/mkui/vite.config.ts | 10 + 16 files changed, 2586 insertions(+), 37 deletions(-) create mode 100644 vendors/mkui/jest.config.js create mode 100644 vendors/mkui/jest.setup.js create mode 100644 vendors/mkui/src/Components/Badge/Badge.test.tsx create mode 100644 vendors/mkui/src/Components/Button/Button.test.tsx create mode 100644 vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx create mode 100644 vendors/mkui/src/twin.d.ts diff --git a/vendors/mkui/.gitignore b/vendors/mkui/.gitignore index 87364a27..4755a927 100644 --- a/vendors/mkui/.gitignore +++ b/vendors/mkui/.gitignore @@ -1 +1,2 @@ test-results +coverage diff --git a/vendors/mkui/README.md b/vendors/mkui/README.md index 6a44b119..017a3211 100644 --- a/vendors/mkui/README.md +++ b/vendors/mkui/README.md @@ -1,9 +1,3 @@ -# Visual Snapshots with Playwright - -This package demonstrates how you can quickly automate visual snapshots with Ladle and Playwright to cover all your stories. - -Read the [post](https://ladle.dev/blog/visual-snapshots) for more information. (The actual source code here a slightly different since it has a double purpose as an e2e test.) - ## Run it Clone this repo, navigate to this folder and run: @@ -12,5 +6,25 @@ Clone this repo, navigate to this folder and run: pnpm install pnpm build #build ladle pnpm test #run tests -pnpm test:update #update snapshots if there are changes +pnpm test:visual:update #update snapshots if there are changes ``` + +## Testing + +This project incorporates several types of testing to ensure the quality and functionality of the components: + +- **Unit Tests**: Each component is accompanied by unit tests. To execute these tests, use the command `pnpm test:unit`. + +- **Storybook**: Storybook stories are provided for every component, serving as a visual catalog for manual testing and showcasing different component states. + +- **Visual Regression Tests**: Visual changes in components are tracked using Playwright for visual regression testing. This involves capturing screenshots of each Storybook story and comparing them with previous versions. Run these tests with `pnpm run test:visual`. + +To run all tests, use the command `pnpm test`. + +For unit tests, coverage reports can be generated using the command `pnpm test:unit --coverage`. This will display coverage information in the console and also create an HTML report in the `./coverage` directory. + +### Visual Snapshots with Playwright + +This package demonstrates how you can quickly automate visual snapshots with Ladle and Playwright to cover all your stories. + +Read the [post](https://ladle.dev/blog/visual-snapshots) for more information. (The actual source code here a slightly different since it has a double purpose as an e2e test.) diff --git a/vendors/mkui/jest.config.js b/vendors/mkui/jest.config.js new file mode 100644 index 00000000..cd9f801c --- /dev/null +++ b/vendors/mkui/jest.config.js @@ -0,0 +1,30 @@ +const nextJest = require("next/jest") + +const babelConfigStyledComponents = { + presets: [["next/babel", { "preset-react": { runtime: "automatic" } }]], + plugins: ["babel-plugin-macros", ["babel-plugin-styled-components", { ssr: true }]], +} + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +const customJestConfig = { + setupFilesAfterEnv: ["/jest.setup.js"], + testEnvironment: "jest-environment-jsdom", + moduleNameMapper: { + "^@/components/(.*)$": "/components/$1", + }, + transform: { + "^.+\\.(js|jsx|ts|tsx|mjs)$": ["babel-jest", babelConfigStyledComponents], + }, + collectCoverageFrom: [ + "src/**/*.{js,jsx,ts,tsx}", + "!/node_modules/", + "!/**/*.stories.{js,jsx,ts,tsx}", + ], + coverageDirectory: "/coverage", + testPathIgnorePatterns: ["/tests/"], + coverageReporters: ["html", "text"], +} + +const createJestConfig = nextJest({ dir: "./" }) + +module.exports = createJestConfig(customJestConfig) diff --git a/vendors/mkui/jest.setup.js b/vendors/mkui/jest.setup.js new file mode 100644 index 00000000..df6631ee --- /dev/null +++ b/vendors/mkui/jest.setup.js @@ -0,0 +1 @@ +import "@testing-library/jest-dom" diff --git a/vendors/mkui/package.json b/vendors/mkui/package.json index 0d350a98..4b6da699 100644 --- a/vendors/mkui/package.json +++ b/vendors/mkui/package.json @@ -25,13 +25,19 @@ "@emotion/babel-plugin-jsx-pragmatic": "^0.2.1", "@ladle/react": "^4.0.2", "@playwright/test": "^1.41.1", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", "@types/bramus__pagination-sequence": "^1.2.2", "@types/react": "^18.2.51", "@types/react-dom": "^18.2.18", "@types/sync-fetch": "^0.4.3", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.17", + "babel-plugin-styled-components": "^2.1.4", "cross-env": "^7.0.3", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "next": "^14.1.0", "postcss": "^8.4.33", "prettier": "^3.2.4", "start-server-and-test": "^2.0.3", @@ -56,10 +62,11 @@ "serve": "pnpm serve:dev", "serve:dev": "ladle serve -p 61110", "serve:prod": "ladle preview -p 61110", - "test": "pnpm test:dev", - "test:all": "pnpm test:dev && pnpm test:prod", - "test:dev": "cross-env TYPE=dev pnpm exec playwright test", - "test:prod": "cross-env TYPE=prod pnpm exec playwright test", - "test:update": "cross-env TYPE=update pnpm exec playwright test -u" + "test:unit": "jest", + "test:visual": "pnpm test:visual:dev", + "test:visual:dev": "cross-env TYPE=dev pnpm exec playwright test", + "test:visual:prod": "cross-env TYPE=prod pnpm exec playwright test", + "test:visual:update": "cross-env TYPE=update pnpm exec playwright test -u", + "test": "pnpm test:unit && pnpm test:visual" } } diff --git a/vendors/mkui/playwright.config.ts b/vendors/mkui/playwright.config.ts index 92de201b..fe608502 100644 --- a/vendors/mkui/playwright.config.ts +++ b/vendors/mkui/playwright.config.ts @@ -4,10 +4,12 @@ export default { use: { baseURL: baseUrl, }, + reporter: [["list"]], webServer: { command: process.env.TYPE === "dev" ? "pnpm serve:dev" : "pnpm build-preview > /dev/null", url: baseUrl, reuseExistingServer: true, }, retries: 0, + testMatch: "**/tests/**/*.spec.ts", } diff --git a/vendors/mkui/pnpm-lock.yaml b/vendors/mkui/pnpm-lock.yaml index 9abc1e84..11c7ae86 100644 --- a/vendors/mkui/pnpm-lock.yaml +++ b/vendors/mkui/pnpm-lock.yaml @@ -46,6 +46,12 @@ devDependencies: '@playwright/test': specifier: ^1.41.1 version: 1.41.1 + '@testing-library/jest-dom': + specifier: ^6.4.2 + version: 6.4.2(jest@29.7.0) + '@testing-library/react': + specifier: ^14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@types/bramus__pagination-sequence': specifier: ^1.2.2 version: 1.2.2 @@ -64,9 +70,21 @@ devDependencies: autoprefixer: specifier: ^10.4.17 version: 10.4.17(postcss@8.4.33) + babel-plugin-styled-components: + specifier: ^2.1.4 + version: 2.1.4(@babel/core@7.23.6)(styled-components@6.1.8) cross-env: specifier: ^7.0.3 version: 7.0.3 + jest: + specifier: ^29.7.0 + version: 29.7.0 + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + next: + specifier: ^14.1.0 + version: 14.1.0(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) postcss: specifier: ^8.4.33 version: 8.4.33 @@ -97,6 +115,10 @@ devDependencies: packages: + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + dev: true + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -271,6 +293,51 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} @@ -281,6 +348,80 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} @@ -356,6 +497,10 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + /@bramus/pagination-sequence@1.2.1: resolution: {integrity: sha512-cdyxskW2CTvCtAYMSvuNQDhONds5mH9E6Eavcvbslmk8BRMQPFB5FAZkBxM3EOK/3B/nqb8O0DFVKscpxyvxfw==} dependencies: @@ -427,11 +572,9 @@ packages: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 - dev: false /@emotion/memoize@0.8.1: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - dev: false /@emotion/react@11.11.3(@types/react@18.2.51)(react@18.2.0): resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} @@ -489,6 +632,10 @@ packages: react: 18.2.0 dev: false + /@emotion/unitless@0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: true + /@emotion/unitless@0.8.1: resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} dev: false @@ -758,6 +905,236 @@ packages: wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.10.5) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.10.5 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.10.5 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.10.5 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -914,6 +1291,91 @@ packages: strict-event-emitter: 0.5.1 dev: true + /@next/env@14.1.0: + resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + dev: true + + /@next/swc-darwin-arm64@14.1.0: + resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@next/swc-darwin-x64@14.1.0: + resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-arm64-gnu@14.1.0: + resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-arm64-musl@14.1.0: + resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-x64-gnu@14.1.0: + resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-linux-x64-musl@14.1.0: + resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@next/swc-win32-arm64-msvc@14.1.0: + resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@next/swc-win32-ia32-msvc@14.1.0: + resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@next/swc-win32-x64-msvc@14.1.0: + resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1079,11 +1541,27 @@ packages: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@sindresorhus/merge-streams@1.0.0: + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/merge-streams@1.0.0: resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} engines: {node: '>=18'} dev: true + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + /@swc/core-darwin-arm64@1.3.101: resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==} engines: {node: '>=10'} @@ -1203,6 +1681,12 @@ packages: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} dev: true + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + dev: true + /@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true @@ -1243,12 +1727,81 @@ packages: resolution: {integrity: sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==} dev: false + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.6 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/jest-dom@6.4.2(jest@29.7.0): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.23.6 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + jest: 29.7.0 + lodash: 4.17.21 + redent: 3.0.0 + dev: true + + /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.23.6 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 1.0.5 dev: true + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: @@ -1314,16 +1867,46 @@ packages: '@types/node': 8.10.66 dev: true + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 20.10.5 + dev: true + /@types/hast@3.0.3: resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} dependencies: '@types/unist': 3.0.2 dev: true + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + /@types/js-levenshtein@1.1.3: resolution: {integrity: sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==} dev: true + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 20.10.5 + '@types/tough-cookie': 4.0.5 + parse5: 7.1.2 + dev: true + /@types/mdast@4.0.3: resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: @@ -1389,16 +1972,28 @@ packages: /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + /@types/statuses@2.0.4: resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} dev: true + /@types/stylis@4.2.0: + resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} + dev: true + /@types/sync-fetch@0.4.3: resolution: {integrity: sha512-RfwkmWFd7yi6tRaDcR7KNrxyp6LpO2oXrT6tYkXBLNfp4xf4EKRX7IlLexbtd5X26g34+G6HDD2pMhOZ5srUmQ==} dependencies: '@types/node-fetch': 2.6.9 dev: true + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: true + /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} dev: true @@ -1407,6 +2002,16 @@ packages: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} dev: true + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true @@ -1438,6 +2043,11 @@ packages: - supports-color dev: true + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -1446,6 +2056,13 @@ packages: negotiator: 0.6.3 dev: true + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.11.2 + acorn-walk: 8.3.2 + dev: true + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1454,12 +2071,26 @@ packages: acorn: 8.11.2 dev: true + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.11.2: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true dev: true + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -1493,6 +2124,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -1510,6 +2146,32 @@ packages: /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.3 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.4 + dev: true + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true @@ -1539,6 +2201,11 @@ packages: postcss-value-parser: 4.2.0 dev: true + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} + engines: {node: '>= 0.4'} + dev: true + /axe-core@4.8.3: resolution: {integrity: sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==} engines: {node: '>=4'} @@ -1554,6 +2221,47 @@ packages: - debug dev: true + /babel-jest@29.7.0(@babel/core@7.23.6): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.6 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.6) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.4 + dev: true + /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} @@ -1562,6 +2270,52 @@ packages: cosmiconfig: 7.1.0 resolve: 1.22.8 + /babel-plugin-styled-components@2.1.4(@babel/core@7.23.6)(styled-components@6.1.8): + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 6.1.8(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.6): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + dev: true + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: true @@ -1623,6 +2377,13 @@ packages: big-integer: 1.6.52 dev: true + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: @@ -1645,6 +2406,12 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.2) dev: true + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -1663,6 +2430,13 @@ packages: run-applescript: 5.0.0 dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + /cache-content-type@1.0.1: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} @@ -1687,15 +2461,33 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} dev: true + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: true + /caniuse-lite@1.0.30001578: resolution: {integrity: sha512-J/jkFgsQ3NEl4w2lCoM9ZPxrD+FoBNJ7uJUpGVjIg/j0OwJosWM36EPDv+Yyi0V4twBk9pPmlFS+PLykgEvUmg==} dev: true + /caniuse-lite@1.0.30001584: + resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==} + dev: true + /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true @@ -1712,6 +2504,14 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1725,6 +2525,11 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} dev: true @@ -1764,6 +2569,15 @@ packages: optionalDependencies: fsevents: 2.3.3 + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + /classnames@2.4.0: resolution: {integrity: sha512-lWxiIlphgAhTLN657pwU/ofFxsUTOWc2CRIFeoV5st0MGRJHStUnWIUJgDHxjUO/F0mXzGufXIM4Lfu/8h+MpA==} dev: true @@ -1792,7 +2606,6 @@ packages: /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -1822,6 +2635,10 @@ packages: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} dev: true + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1859,6 +2676,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} @@ -1916,6 +2737,25 @@ packages: path-type: 4.0.0 yaml: 1.10.2 + /create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.10.5) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -1932,18 +2772,63 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: true + /css-selector-parser@3.0.4: resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} dev: true + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: true + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1956,6 +2841,10 @@ packages: ms: 2.1.2 dev: true + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: @@ -1967,10 +2856,48 @@ packages: engines: {node: '>=14.16'} dev: true + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + /deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} dev: true + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + 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.4 + 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.5 + 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.14 + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} @@ -2009,6 +2936,15 @@ packages: engines: {node: '>=12'} dev: true + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -2038,6 +2974,11 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + /devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: @@ -2047,6 +2988,11 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /direction@2.0.1: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true @@ -2055,12 +3001,28 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - /duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} /ee-first@1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} @@ -2070,6 +3032,11 @@ packages: resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} dev: true + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2091,6 +3058,20 @@ packages: dependencies: is-arrayish: 0.2.1 + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + 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 + dev: true + /esbuild@0.19.10: resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==} engines: {node: '>=12'} @@ -2135,6 +3116,11 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2145,6 +3131,29 @@ packages: engines: {node: '>=12'} dev: true + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + /estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: @@ -2185,6 +3194,11 @@ packages: '@types/estree': 1.0.5 dev: true + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: @@ -2227,6 +3241,22 @@ packages: strip-final-newline: 3.0.0 dev: true + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -2250,11 +3280,21 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + /fastq@1.16.0: resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: reusify: 1.0.4 + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -2277,6 +3317,14 @@ packages: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + /follow-redirects@1.15.3(debug@4.3.4): resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} engines: {node: '>=4.0'} @@ -2289,6 +3337,12 @@ packages: debug: 4.3.4 dev: true + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -2327,6 +3381,10 @@ packages: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2345,6 +3403,10 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2364,6 +3426,11 @@ packages: hasown: 2.0.0 dev: true + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + /get-port@3.2.0: resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} engines: {node: '>=4'} @@ -2402,6 +3469,17 @@ packages: minipass: 7.0.4 path-scurry: 1.10.1 + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -2429,11 +3507,19 @@ packages: get-intrinsic: 1.2.2 dev: true + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + /graphql@16.8.1: resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -2466,6 +3552,13 @@ packages: has-symbols: 1.0.3 dev: true + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -2638,6 +3731,17 @@ packages: react-is: 16.13.1 dev: false + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: true @@ -2671,12 +3775,33 @@ packages: toidentifier: 1.0.1 dev: true + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /http-response-object@3.0.2: resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} dependencies: '@types/node': 10.17.60 dev: true + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2694,6 +3819,13 @@ packages: safer-buffer: 2.1.2 dev: true + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -2710,6 +3842,32 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true @@ -2743,6 +3901,15 @@ packages: wrap-ansi: 6.2.0 dev: true + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} dev: true @@ -2754,25 +3921,67 @@ packages: is-decimal: 2.0.1 dev: true + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: true + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: true @@ -2797,6 +4006,11 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -2827,10 +4041,21 @@ packages: engines: {node: '>=8'} dev: true + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + /is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2840,12 +4065,34 @@ packages: engines: {node: '>=12'} dev: true + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 dev: true + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -2856,11 +4103,36 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -2872,9 +4144,72 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -2883,6 +4218,439 @@ packages: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0 + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.10.5) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@20.10.5): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.6 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + babel-jest: 29.7.0(@babel/core@7.23.6) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.10.5 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.10.5 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.10.5 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -2905,6 +4673,55 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.11.2 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.16.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -2927,6 +4744,11 @@ packages: tsscmp: 1.0.6 dev: true + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + /koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} dev: true @@ -2979,6 +4801,11 @@ packages: engines: {node: '> 0.8'} dev: true + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -2990,6 +4817,13 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: false @@ -3037,6 +4871,31 @@ packages: yallist: 3.1.1 dev: true + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + /map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true @@ -3620,11 +5479,22 @@ packages: engines: {node: '>=12'} dev: true + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true dev: false + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -3694,11 +5564,54 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true + /next@14.1.0(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.1.0 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001584 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.6)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.1.0 + '@next/swc-darwin-x64': 14.1.0 + '@next/swc-linux-arm64-gnu': 14.1.0 + '@next/swc-linux-arm64-musl': 14.1.0 + '@next/swc-linux-x64-gnu': 14.1.0 + '@next/swc-linux-x64-musl': 14.1.0 + '@next/swc-win32-arm64-msvc': 14.1.0 + '@next/swc-win32-ia32-msvc': 14.1.0 + '@next/swc-win32-x64-msvc': 14.1.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: true + /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3711,6 +5624,10 @@ packages: whatwg-url: 5.0.0 dev: true + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true @@ -3748,6 +5665,10 @@ packages: boolbase: 1.0.0 dev: true + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3756,8 +5677,31 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 dev: true /on-finished@2.4.1: @@ -3767,6 +5711,12 @@ packages: ee-first: 1.1.1 dev: true + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -3819,6 +5769,32 @@ packages: resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} dev: true + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3862,6 +5838,16 @@ packages: engines: {node: '>= 0.8'} dev: true + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -3923,6 +5909,13 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + /playwright-core@1.41.1: resolution: {integrity: sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg==} engines: {node: '>=16'} @@ -4002,6 +5995,15 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /postcss@8.4.33: resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} engines: {node: ^10 || ^12 || >=14} @@ -4016,6 +6018,24 @@ packages: hasBin: true dev: true + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /prism-react-renderer@2.3.1(react@18.2.0): resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} peerDependencies: @@ -4036,6 +6056,14 @@ packages: asap: 2.0.6 dev: true + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -4060,6 +6088,19 @@ packages: event-stream: 3.3.4 dev: true + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} @@ -4076,6 +6117,10 @@ packages: split-on-first: 3.0.0 dev: true + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4109,6 +6154,14 @@ packages: /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -4152,9 +6205,26 @@ packages: dependencies: picomatch: 2.3.1 + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + /rehype-class-names@1.0.14: resolution: {integrity: sha512-eFBt6Qxb7K77y6P82tUtN9rKpU7guWlaK4XA4RrrSFHkUTCvr2D3cgb9OR5d4t1AaGOvR59FH9nRwUnbpn9AEg==} dependencies: @@ -4228,10 +6298,31 @@ packages: engines: {node: '>=0.10.0'} dev: true + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4308,6 +6399,13 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -4318,6 +6416,14 @@ packages: hasBin: true dev: true + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -4328,10 +6434,23 @@ packages: has-property-descriptors: 1.0.1 dev: true + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: true + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4358,6 +6477,15 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + /slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} @@ -4367,11 +6495,23 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: false + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} @@ -4392,6 +6532,17 @@ packages: through: 2.3.8 dev: true + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + /start-server-and-test@2.0.3: resolution: {integrity: sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==} engines: {node: '>=16'} @@ -4419,16 +6570,36 @@ packages: engines: {node: '>= 0.8'} dev: true + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.6 + dev: true + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: duplexer: 0.1.2 dev: true + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + /strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} dev: true + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4476,6 +6647,11 @@ packages: dependencies: ansi-regex: 6.0.1 + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -4486,6 +6662,18 @@ packages: engines: {node: '>=12'} dev: true + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + /style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: @@ -4498,10 +6686,52 @@ packages: inline-style-parser: 0.2.2 dev: true + /styled-components@6.1.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + dependencies: + '@emotion/is-prop-valid': 1.2.1 + '@emotion/unitless': 0.8.0 + '@types/stylis': 4.2.0 + css-to-react-native: 3.2.0 + csstype: 3.1.2 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + stylis: 4.3.1 + tslib: 2.5.0 + dev: true + + /styled-jsx@5.1.1(@babel/core@7.23.6)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.23.6 + client-only: 0.0.1 + react: 18.2.0 + dev: true + /stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} dev: false + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + dev: true + /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -4528,10 +6758,21 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + /sync-fetch@0.5.2: resolution: {integrity: sha512-6gBqqkHrYvkH65WI2bzrDwrIKmt3U10s4Exnz3dYuE5Ah62FIfNv/F63inrNhu2Nyh3GH5f42GKU3RrSJoaUyQ==} engines: {node: '>=14'} @@ -4586,6 +6827,15 @@ packages: transitivePeerDependencies: - ts-node + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + /then-request@6.0.2: resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} engines: {node: '>=6.0.0'} @@ -4630,6 +6880,10 @@ packages: os-tmpdir: 1.0.2 dev: true + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -4645,10 +6899,27 @@ packages: engines: {node: '>=0.6'} dev: true + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.1 + dev: true + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: true @@ -4673,6 +6944,10 @@ packages: typescript: 5.2.2 dev: true + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true @@ -4697,6 +6972,11 @@ packages: tailwindcss: 3.4.1 dev: true + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -4810,6 +7090,11 @@ packages: unist-util-visit-parents: 6.0.1 dev: true + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -4826,9 +7111,25 @@ packages: picocolors: 1.0.0 dev: true + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -4924,6 +7225,13 @@ packages: fsevents: 2.3.3 dev: true + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + /wait-on@7.2.0(debug@4.3.4): resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} engines: {node: '>=12.0.0'} @@ -4938,6 +7246,12 @@ packages: - debug dev: true + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -4952,6 +7266,31 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -4959,6 +7298,36 @@ packages: webidl-conversions: 3.0.1 dev: true + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.6 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4998,6 +7367,40 @@ packages: string-width: 5.1.2 strip-ansi: 7.1.0 + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5007,6 +7410,10 @@ packages: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -5038,6 +7445,11 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: true diff --git a/vendors/mkui/src/Components/Badge/Badge.test.tsx b/vendors/mkui/src/Components/Badge/Badge.test.tsx new file mode 100644 index 00000000..8396b3ee --- /dev/null +++ b/vendors/mkui/src/Components/Badge/Badge.test.tsx @@ -0,0 +1,9 @@ +import { render, screen } from "@testing-library/react" +import { Badge } from "./Badge" + +describe("Badge", () => { + it("renders its children correctly", () => { + render(Hello, world!) + expect(screen.getByText("Hello, world!")).toBeInTheDocument() + }) +}) diff --git a/vendors/mkui/src/Components/Badge/Badge.tsx b/vendors/mkui/src/Components/Badge/Badge.tsx index e7dc28f1..05171d7f 100644 --- a/vendors/mkui/src/Components/Badge/Badge.tsx +++ b/vendors/mkui/src/Components/Badge/Badge.tsx @@ -1,5 +1,4 @@ import tw, { styled } from "twin.macro" - export type BadgeColor = "default" | "green" | "yellow" | "orange" | "red" | "blue" | "purple" interface BadgeProps { diff --git a/vendors/mkui/src/Components/Button/Button.test.tsx b/vendors/mkui/src/Components/Button/Button.test.tsx new file mode 100644 index 00000000..ccd65709 --- /dev/null +++ b/vendors/mkui/src/Components/Button/Button.test.tsx @@ -0,0 +1,14 @@ +import { render, screen } from "@testing-library/react" +import { Button } from "./Button" + +describe("Button", () => { + it("renders its children correctly", () => { + render() + expect(screen.getByText("Hello, world!")).toBeInTheDocument() + }) + + it("forwards additional props to the underlying button element", () => { + render() + expect(screen.getByTestId("my-button")).toBeInTheDocument() + }) +}) diff --git a/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx b/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx new file mode 100644 index 00000000..b09d834d --- /dev/null +++ b/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx @@ -0,0 +1,27 @@ +import { render, fireEvent, screen } from "@testing-library/react" +import { ButtonGroup } from "./ButtonGroup" + +describe("ButtonGroup", () => { + const buttonProps = [ + { key: "1", title: "Button 1" }, + { key: "2", title: "Button 2" }, + { key: "3", title: "Button 3" }, + ] + + it("renders without crashing", () => { + render( {}} />) + }) + + it("renders the correct number of buttons", () => { + const { getAllByRole } = render( {}} />) + const buttons = getAllByRole("button") + expect(buttons.length).toBe(buttonProps.length) + }) + + it("calls setCurrent with the correct key when a button is clicked", () => { + const setCurrent = jest.fn() + const { getByText } = render() + fireEvent.click(getByText("Button 3")) + expect(setCurrent).toHaveBeenCalledWith("3") + }) +}) diff --git a/vendors/mkui/src/twin.d.ts b/vendors/mkui/src/twin.d.ts new file mode 100644 index 00000000..ceab7c4d --- /dev/null +++ b/vendors/mkui/src/twin.d.ts @@ -0,0 +1,29 @@ +// twin.d.ts +import "twin.macro" +import styledImport, { CSSProp, css as cssImport } from "styled-components" + +declare module "twin.macro" { + // The styled and css imports + const styled: typeof styledImport + const css: typeof cssImport +} + +declare module "react" { + // The css prop + interface HTMLAttributes extends DOMAttributes { + css?: CSSProp + } + // The inline svg css prop + interface SVGProps extends SVGProps { + css?: CSSProp + } +} + +// The 'as' prop on styled components +declare global { + namespace JSX { + interface IntrinsicAttributes extends DOMAttributes { + as?: string + } + } +} diff --git a/vendors/mkui/tests/snapshot.spec.ts-snapshots/navbar--default-darwin.png b/vendors/mkui/tests/snapshot.spec.ts-snapshots/navbar--default-darwin.png index 39d54cdde645b16921042b4d498f61b3767c2047..c71ec086c6620acd162a9514647be01fe903997e 100644 GIT binary patch literal 8905 zcmeG?Yfw|yx}o$)ZI9ABoQi@0+a9&O7O9n&Xo4PWqeVaq0VRfLQP6}yHAEnggo=ua ziq;l2NGKw&9Y{drl_$PHix3c!5JCtDf+Ude%7X-wyEnamZs(jkckcAxVbARO_L}vr zZ>{gSzHjYyX@3Z6#rrPr!(gx#d-v@A4hH)R`1wx9d&@u|rYa*qU`P56^$!@keeD|GFK9C>FQ)O^9EeBpic zw;3hE142s)<|kg8|nF~b^?o~c*(M;AzQ{f*}i zkjGFf`+gmQIBjY^QRJ8r+J3lW{SebD_8?U+u$+0(0}ZUI?s;oJ5LUz804|j}Tcso@ zXnAD03F_-m`dDFpq@%a43Q`F{@a_1l&8~|}<|@8%hqWMm1VJsTZpXdq0T+vMf#(+%m8PLcI{%8ia$ z+UQo#?ZwML?Rb#vL5q=P27dyx#y;Lk#yX$pR_C0VKrEA+u%<$L^;HG&P>e7=m`GDQ z;yE>(ist4EX31C3@asqH_lEV6%#K7HMMYm-~qCM}T#00s2v4$AjtzWK3d zOQfwIp&{rL_19KcV{1L5qeTt8%FPXi!ggI+KBrTf-Mb?S?3xvsx zeto{{MyWC3PPjAGl;M9wwoCu^VWYk>gFI!L1OT0#4M)tT1e zbf2${Nbk~qTW-F3_EY0q{@?VCjX~<>tWwE?Us#&XxKXKVz2bqPzmSeb!?`VWwHhf^ z^Y%t2sEXR+@@sC5RKzyYQEy*wX(;m45Af+`qM9J0RnbyIG1S3^8~Jgwm5H|Ep$(Fo zTb-p9bFFF>JMF$3!@pi3JswCfIXS$v^(8%xR!AI?l>Kc{RS(L}?W> zROcM(J?qc~6bn#iU>zh8n1@ma&$W?oIJ(C93s!4D>Yj>0NnAqfTSTHJ_YBOaEv;5o=&H? zLjguxu%mS5;5<0LTtRGD<E?s)62zfoE7^IO5)gmE$vUs3`)i^M*j^?yw^dM=NBOett}T+T$|+*n&sox2ZB2AR*xUhPnv0dv0 zPw`I3e~YTd2SXb^Nj3hLRvCNtDdSFL<+(WZjBfP-ln!A! z9ypNA&YRpv)#dKh=LHYH5ZSt}qz2(mNAzeF2JA+d0e=#B!;0X{FyCyF329p{hoi~- z$GUMPY2xGQ*^2Y}zP|PO3K41ODdVfSPL>(&%98Na+A_(HE){9QP~!*EbR8l{ z@6921qYJj37Q1X|zReQh&!?i4Alxl-~eFcO%d&>)$@h$t`K7oYDToFwDPZ^a>lmEf1)6nkg_@ntnF; z>#r-Jh?Oh&(E7~^_v>IQ37z!@OzM>)gw(K6rFXuw5LVthVn)D z3s$-agC_#wkL1riUQ_J2?<5BR+?Cd2qk*4AFKdw(;d&A)xB@V40+Rg;*lU>7Aw&x0UR{)>2d5v%R z_S|C3VK2iam+tyV>U`DUVm`HXB3t85Kb^c_ww817{KyB3%4Zk0yinyVhz68(V;Eg; z@*XH7zO`fbfWkMVLcB1{OvqCZ3h6qgcjAl7D^~e4@?2Orom+L>eQ4LpcOXWCbpr8v zYoO&}U3g5O8$?iJ5kBgqOrMC3?J)n11tP!8tb zri%P=D#O#4{yMdTW&~BBk)}dKnwq}{9WUmL9H4mlMxZ5OTb;WVA{sS0bdgJ+|IAB* ztpzOtvOxe?8DP8c-(^vJk_+YTJT>$=G*8C3_vf z&$T2O|HgfJEe@+thC!oKu%u<{ppQRRnJ%loIM`90J~tgDppcWrizRB$P6mSk#EF@b zz9Li(J^?gKf;1e3LM4kAsT}? zFfcG#yvW4cPeN>v7XFM{_n$NVe=3ughAxTe4<{!}Cb47^OD6IEIdfd{oF&g$@|-2l z`QQIcEJcZ>D6teJmZHQ`l=u^V^DYI`KP{NnIKn>%ZwVwrcLDyzPxU2f|7&Rv*y>{( zzJgADGUqFGQy+Z;gI!s^6Kbz^%7DO^8x~K2j_g~!zR-00_xlQ4>=y4f#Jsb3nW6dJ gbr9;m;lNdcdtAP7TKQ=R#Q)x}Lw2+OapdfO0n?Qj^8f$< delta 3056 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 diff --git a/vendors/mkui/tests/snapshot.spec.ts-snapshots/typography--titles-darwin.png b/vendors/mkui/tests/snapshot.spec.ts-snapshots/typography--titles-darwin.png index ed28092b4a49d22a393743a8c73da54f9dd4a0ac..810ae486627d898d86b3d27a77f7af765c87b6ad 100644 GIT binary patch literal 24364 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 literal 24319 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 diff --git a/vendors/mkui/tsconfig.json b/vendors/mkui/tsconfig.json index 40cde55d..5a2e627a 100644 --- a/vendors/mkui/tsconfig.json +++ b/vendors/mkui/tsconfig.json @@ -1,12 +1,9 @@ { "compilerOptions": { + "types": ["jest", "@testing-library/jest-dom"], "target": "ESNext", "useDefineForClassFields": true, - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext" - ], + "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": false, "skipLibCheck": true, "esModuleInterop": false, @@ -20,16 +17,13 @@ "noEmit": true, "jsx": "react-jsx", "jsxImportSource": "@emotion/react", - "baseUrl": "./src" + "baseUrl": "./src", }, - "include": [ - "src", - "types", - ".ladle" - ], + "files": ["twin.d.ts"], + "include": ["src", "types", ".ladle"], "references": [ { - "path": "./tsconfig.node.json" - } - ] + "path": "./tsconfig.node.json", + }, + ], } diff --git a/vendors/mkui/vite.config.ts b/vendors/mkui/vite.config.ts index 22e308bc..dc7b2737 100644 --- a/vendors/mkui/vite.config.ts +++ b/vendors/mkui/vite.config.ts @@ -1,5 +1,6 @@ import { defineConfig } from "vite" import react from "@vitejs/plugin-react" +import istanbul from "vite-plugin-istanbul" // https://vitejs.dev/config/ export default defineConfig({ @@ -30,6 +31,15 @@ export default defineConfig({ ], }, }), + ...(process.env.USE_VITE_PLUGIN_ISTANBUL + ? [ + istanbul({ + include: "src/*", + exclude: ["node_modules", "tests/"], + extension: [".js", ".ts", ".tsx"], + }), + ] + : []), ], server: { open: "none", From cadbf72938d0f85d343c066c828ecc74006cd668 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 12:54:36 +0100 Subject: [PATCH 02/24] tests: add unit tests for datatable --- vendors/mkui/package.json | 1 + vendors/mkui/pnpm-lock.yaml | 15 ++- .../Components/DataTable/DataTable.test.tsx | 123 ++++++++++++++++++ 3 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 vendors/mkui/src/Components/DataTable/DataTable.test.tsx diff --git a/vendors/mkui/package.json b/vendors/mkui/package.json index 4b6da699..b3e9d13c 100644 --- a/vendors/mkui/package.json +++ b/vendors/mkui/package.json @@ -28,6 +28,7 @@ "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^14.2.1", "@types/bramus__pagination-sequence": "^1.2.2", + "@types/jest": "^29.5.12", "@types/react": "^18.2.51", "@types/react-dom": "^18.2.18", "@types/sync-fetch": "^0.4.3", diff --git a/vendors/mkui/pnpm-lock.yaml b/vendors/mkui/pnpm-lock.yaml index 11c7ae86..944ac636 100644 --- a/vendors/mkui/pnpm-lock.yaml +++ b/vendors/mkui/pnpm-lock.yaml @@ -48,13 +48,16 @@ devDependencies: version: 1.41.1 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(jest@29.7.0) + version: 6.4.2(@types/jest@29.5.12)(jest@29.7.0) '@testing-library/react': specifier: ^14.2.1 version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@types/bramus__pagination-sequence': specifier: ^1.2.2 version: 1.2.2 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 '@types/react': specifier: ^18.2.51 version: 18.2.51 @@ -1741,7 +1744,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.4.2(jest@29.7.0): + /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(jest@29.7.0): resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -1764,6 +1767,7 @@ packages: dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.23.6 + '@types/jest': 29.5.12 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 @@ -1895,6 +1899,13 @@ packages: '@types/istanbul-lib-report': 3.0.3 dev: true + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + /@types/js-levenshtein@1.1.3: resolution: {integrity: sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==} dev: true diff --git a/vendors/mkui/src/Components/DataTable/DataTable.test.tsx b/vendors/mkui/src/Components/DataTable/DataTable.test.tsx new file mode 100644 index 00000000..3196b9d1 --- /dev/null +++ b/vendors/mkui/src/Components/DataTable/DataTable.test.tsx @@ -0,0 +1,123 @@ +import { render, fireEvent } from "@testing-library/react" +import { DataTable, Column } from "./DataTable" + +describe("DataTable", () => { + const types: Record = { + firstName: { label: "First name" }, + lastName: { label: "Last name" }, + instrument: { label: "Instrument" }, + country: { label: "Country" }, + } + + const columns = ["firstName", "lastName", "instrument", "country"] + const rows = [ + { firstName: "John", lastName: "Coltrane", instrument: "Saxophone", country: "USA" }, + { firstName: "Miles", lastName: "Davis", instrument: "Trumpet", country: "USA" }, + { firstName: "Thelonious", lastName: "Monk", instrument: "Piano", country: "USA" }, + { firstName: "Charles", lastName: "Mingus", instrument: "Double Bass", country: "USA" }, + ] + + it("renders the table headers", () => { + const { getByText } = render() + + expect(getByText("First name")).toBeInTheDocument() + expect(getByText("Last name")).toBeInTheDocument() + expect(getByText("Instrument")).toBeInTheDocument() + expect(getByText("Country")).toBeInTheDocument() + }) + + it("renders the table rows", () => { + const { getByText, getAllByText } = render() + + expect(getByText("John")).toBeInTheDocument() + expect(getByText("Coltrane")).toBeInTheDocument() + expect(getByText("Saxophone")).toBeInTheDocument() + expect(getByText("Miles")).toBeInTheDocument() + expect(getByText("Davis")).toBeInTheDocument() + expect(getByText("Trumpet")).toBeInTheDocument() + expect(getAllByText("USA").length).toBe(4) + }) + + it("calls onRowClick when a row is clicked", () => { + const onRowClick = jest.fn() + const { getByText } = render() + + fireEvent.click(getByText("John")) + expect(onRowClick).toHaveBeenCalledWith(rows[0]) + }) + it("uses provided get function", () => { + const getfn = jest.fn((row: (typeof rows)[0]) => row.firstName) + + const types: Record = { + firstName: { label: "First name", get: getfn }, + lastName: { label: "Last name" }, + instrument: { label: "Instrument" }, + country: { label: "Country" }, + } + + render() + + rows.forEach((row) => { + expect(getfn).toHaveBeenCalledWith(row) + }) + }) + + it("uses provided format function", () => { + const formatfn = jest.fn((firstName: string) => firstName) + + const types: Record = { + firstName: { label: "First name", format: formatfn }, + lastName: { label: "Last name" }, + instrument: { label: "Instrument" }, + country: { label: "Country" }, + } + + render() + + rows.forEach((row) => { + expect(formatfn).toHaveBeenCalledWith(row.firstName) + }) + }) + + it("shows - when no value", () => { + const rows = [{ firstName: "Charles", lastName: "Mingus", instrument: "Double Bass" }] + + const { getByText } = render() + + expect(getByText("-")).toBeInTheDocument() + }) + it("allows specific onClick actions for column", () => { + const onClick = jest.fn() + const types: Record = { + firstName: { label: "First name", onClick }, + lastName: { label: "Last name" }, + instrument: { label: "Instrument" }, + country: { label: "Country" }, + } + + const { getByText } = render() + + fireEvent.click(getByText("John")) + expect(onClick).toHaveBeenCalledWith(rows[0]) + }) + + it("handles errors in get or format function and shows n/a", () => { + const getfn = jest.fn(() => { + throw new Error("test") + }) + + const types: Record = { + firstName: { label: "First name", get: getfn }, + lastName: { label: "Last name" }, + instrument: { label: "Instrument" }, + country: { label: "Country" }, + } + + const consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(() => {}) + + const { getAllByText } = render() + + expect(getAllByText("n/a").length).toBe(4) + consoleErrorSpy.mockRestore() + }) +}) From fcdd4a57ad89370ff45075e15c9db121205c7844 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 14:03:10 +0100 Subject: [PATCH 03/24] tests: add unit tests for radio component --- .../src/Components/FormWidgets/Radio.test.tsx | 36 +++++++++++++++++++ .../mkui/src/Components/FormWidgets/Radio.tsx | 2 +- vendors/mkui/vite.config.ts | 10 ------ 3 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 vendors/mkui/src/Components/FormWidgets/Radio.test.tsx diff --git a/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx b/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx new file mode 100644 index 00000000..9f8f96e0 --- /dev/null +++ b/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx @@ -0,0 +1,36 @@ +import { render, screen } from "@testing-library/react" +import { Radio } from "./Radio" + +describe("Radio", () => { + it("renders the radio input and label", () => { + render() + + const radioInput = screen.getByRole("radio") + expect(radioInput).toBeInTheDocument() + expect(radioInput).toHaveAttribute("name", "push-notifications") + + const label = screen.getByText("Test Radio") + expect(label).toBeInTheDocument() + }) + + it("uses the name as label when label prop is not provided", () => { + render() + + const label = screen.getByText("test-radio") + expect(label).toBeInTheDocument() + }) + + it("passes inputProps to the input element", () => { + render( {} }} />) + + const radioInput = screen.getByRole("radio") + expect(radioInput).toBeChecked() + }) + + it("passes containerProps to the container div", () => { + render() + + const container = screen.getByTestId("container") + expect(container).toBeInTheDocument() + }) +}) diff --git a/vendors/mkui/src/Components/FormWidgets/Radio.tsx b/vendors/mkui/src/Components/FormWidgets/Radio.tsx index 36417288..825519a7 100644 --- a/vendors/mkui/src/Components/FormWidgets/Radio.tsx +++ b/vendors/mkui/src/Components/FormWidgets/Radio.tsx @@ -8,7 +8,7 @@ export function Radio({ }: { name: string label?: string | ReactNode - inputProps?: React.HTMLAttributes + inputProps?: React.InputHTMLAttributes containerProps?: React.HTMLAttributes }) { return ( diff --git a/vendors/mkui/vite.config.ts b/vendors/mkui/vite.config.ts index dc7b2737..22e308bc 100644 --- a/vendors/mkui/vite.config.ts +++ b/vendors/mkui/vite.config.ts @@ -1,6 +1,5 @@ import { defineConfig } from "vite" import react from "@vitejs/plugin-react" -import istanbul from "vite-plugin-istanbul" // https://vitejs.dev/config/ export default defineConfig({ @@ -31,15 +30,6 @@ export default defineConfig({ ], }, }), - ...(process.env.USE_VITE_PLUGIN_ISTANBUL - ? [ - istanbul({ - include: "src/*", - exclude: ["node_modules", "tests/"], - extension: [".js", ".ts", ".tsx"], - }), - ] - : []), ], server: { open: "none", From 8465cf2ea373425f9efc819776f1a96860b28a90 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 14:11:56 +0100 Subject: [PATCH 04/24] tests: add unit tests for checkbox --- .../Components/FormWidgets/Checkbox.test.tsx | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx diff --git a/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx b/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx new file mode 100644 index 00000000..2da52d5f --- /dev/null +++ b/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx @@ -0,0 +1,55 @@ +import { render, screen, fireEvent } from "@testing-library/react" +import { Checkbox } from "./Checkbox" + +describe("Checkbox", () => { + it("renders the checkbox input and label", () => { + render() + + const checkboxInput = screen.getByRole("checkbox") + expect(checkboxInput).toBeInTheDocument() + expect(checkboxInput).toHaveAttribute("name", "test-checkbox") + + const label = screen.getByText("Test Checkbox") + expect(label).toBeInTheDocument() + }) + + it("uses the name as label when label prop is not provided", () => { + render() + + const label = screen.getByText("test-checkbox") + expect(label).toBeInTheDocument() + }) + + it("passes checked prop to the input element", () => { + render( {}} />) + + const checkboxInput = screen.getByRole("checkbox") + expect(checkboxInput).toBeChecked() + }) + + it("passes containerProps to the container div", () => { + render() + + const container = screen.getByTestId("container") + expect(container).toBeInTheDocument() + }) + + it("passes labelProps to the label element", () => { + render() + + const label = screen.getByTestId("label") + expect(label).toBeInTheDocument() + }) + + it("handles container click", () => { + render() + + const container = screen.getByRole("checkbox").parentElement?.parentElement + if (container) { + fireEvent.click(container) + } + + const checkboxInput = screen.getByRole("checkbox") + expect(checkboxInput).toBeChecked() + }) +}) From 7ae42896226749ccf24f1a6c8cfbf2c9609cfd4b Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 14:52:03 +0100 Subject: [PATCH 05/24] tests: add unit tests for navbar --- .../src/Components/Navbar/Navbar.test.tsx | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 vendors/mkui/src/Components/Navbar/Navbar.test.tsx diff --git a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx new file mode 100644 index 00000000..2dd02dbc --- /dev/null +++ b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx @@ -0,0 +1,35 @@ +import { render, screen } from "@testing-library/react" +import { Navbar } from "./Navbar" + +describe("Navbar", () => { + it("renders without crashing", () => { + render() + expect(screen.getByRole("navigation")).toBeInTheDocument() + }) + + it("renders the correct number of links", async () => { + const items = [ + { label: "Home", to: "/" }, + { label: "About", to: "/about" }, + { label: "Contact", to: "/contact" }, + ] + render() + + // Wait for the links to be present in the document + for (const item of items) { + const link = await screen.findByText(item.label) + expect(link).toBeInTheDocument() + } + }) + + it("correctly identifies the active link", () => { + const items = [ + { label: "Home", to: "/", exact: true }, + { label: "About", to: "/about" }, + { label: "Contact", to: "/contact" }, + ] + render() + const activeLink = screen.getByText("About") + expect(activeLink).toHaveClass("border-primary") + }) +}) From e103d9b60447bcc9380c6394d7310b5f4f247c68 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 16:42:44 +0100 Subject: [PATCH 06/24] tests: add unit tests for paginator --- .../Components/Pagination/Paginator.test.tsx | 48 +++++++++++++++++++ .../src/Components/Pagination/Paginator.tsx | 8 +++- 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 vendors/mkui/src/Components/Pagination/Paginator.test.tsx diff --git a/vendors/mkui/src/Components/Pagination/Paginator.test.tsx b/vendors/mkui/src/Components/Pagination/Paginator.test.tsx new file mode 100644 index 00000000..271aab65 --- /dev/null +++ b/vendors/mkui/src/Components/Pagination/Paginator.test.tsx @@ -0,0 +1,48 @@ +import { render, fireEvent } from "@testing-library/react" +import { Paginator } from "./Paginator" + +describe("Paginator", () => { + it("renders without crashing", () => { + const { getAllByText } = render() + const previousButtons = getAllByText("Previous") + const nextButtons = getAllByText("Next") + expect(previousButtons.length).toBe(2) + expect(nextButtons.length).toBe(2) + }) + + describe("when Previous button is clicked", () => { + it("calls setPage with correct value when previous span clicked", () => { + const setPage = jest.fn() + const { getByText } = render() + + fireEvent.click(getByText("Previous", { selector: "span" })) + expect(setPage).toHaveBeenCalledWith(1) + }) + + it("calls setPage with correct value when previous anchor clicked", () => { + const setPage = jest.fn() + const { getByText } = render() + + fireEvent.click(getByText("Previous", { selector: "a" })) + expect(setPage).toHaveBeenCalledWith(1) + }) + }) + + describe("when Next button is clicked", () => { + it("calls setPage with correct value when next span clicked", () => { + const setPage = jest.fn() + const { getByText } = render() + + fireEvent.click(getByText("Next", { selector: "span" })) + expect(setPage).toHaveBeenCalledWith(3) + }) + + it("calls setPage with correct value when next anchor clicked", () => { + const setPage = jest.fn() + const { getByText } = render() + + fireEvent.click(getByText("Next", { selector: "a" })) + expect(setPage).toHaveBeenCalledWith(3) + }) + }) +}) diff --git a/vendors/mkui/src/Components/Pagination/Paginator.tsx b/vendors/mkui/src/Components/Pagination/Paginator.tsx index 045cfb7e..4f1431c9 100644 --- a/vendors/mkui/src/Components/Pagination/Paginator.tsx +++ b/vendors/mkui/src/Components/Pagination/Paginator.tsx @@ -69,10 +69,13 @@ export function Paginator({ {/* Current: "z-10 bg-primary-600 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600", Default: "text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:outline-offset-0" */} - {generate(current, pages, 1, 1, "…").map((i) => { + {generate(current, pages, 1, 1, "…").map((i, index) => { if (typeof i === "string") { return ( - + ... ) @@ -80,6 +83,7 @@ export function Paginator({ const isCurrent = i === current return ( Date: Tue, 6 Feb 2024 17:11:15 +0100 Subject: [PATCH 07/24] tests: add unit tests for tabs --- .../mkui/src/Components/Pane/Pane.test.tsx | 9 +++++ .../mkui/src/Components/Tabs/Tabs.test.tsx | 33 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 vendors/mkui/src/Components/Pane/Pane.test.tsx create mode 100644 vendors/mkui/src/Components/Tabs/Tabs.test.tsx diff --git a/vendors/mkui/src/Components/Pane/Pane.test.tsx b/vendors/mkui/src/Components/Pane/Pane.test.tsx new file mode 100644 index 00000000..c42848a6 --- /dev/null +++ b/vendors/mkui/src/Components/Pane/Pane.test.tsx @@ -0,0 +1,9 @@ +import { render } from "@testing-library/react" +import { Pane } from "./Pane" + +describe("Pane", () => { + it("renders without crashing", () => { + const { container } = render() + expect(container.firstChild).toBeTruthy() + }) +}) diff --git a/vendors/mkui/src/Components/Tabs/Tabs.test.tsx b/vendors/mkui/src/Components/Tabs/Tabs.test.tsx new file mode 100644 index 00000000..2fb6ac5b --- /dev/null +++ b/vendors/mkui/src/Components/Tabs/Tabs.test.tsx @@ -0,0 +1,33 @@ +import { render, screen } from "@testing-library/react" +import { Tab } from "./Tabs" + +describe("Tab", () => { + it("renders without crashing", () => { + const { container } = render( + + + Tab 1 + + + Panel 1 + + , + ) + expect(container.firstChild).toBeTruthy() + }) + + it("renders the correct content", () => { + render( + + + Tab 1 + + + Panel 1 + + , + ) + expect(screen.getByText("Tab 1")).toBeInTheDocument() + expect(screen.getByText("Panel 1")).toBeInTheDocument() + }) +}) From a802396028ec5351244d89bf7de8b5054887fae2 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 17:17:57 +0100 Subject: [PATCH 08/24] tests: adjust test config --- vendors/mkui/jest.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vendors/mkui/jest.config.js b/vendors/mkui/jest.config.js index cd9f801c..51c034e6 100644 --- a/vendors/mkui/jest.config.js +++ b/vendors/mkui/jest.config.js @@ -16,9 +16,10 @@ const customJestConfig = { "^.+\\.(js|jsx|ts|tsx|mjs)$": ["babel-jest", babelConfigStyledComponents], }, collectCoverageFrom: [ - "src/**/*.{js,jsx,ts,tsx}", + "src/**/*.{js,jsx,tsx}", "!/node_modules/", "!/**/*.stories.{js,jsx,ts,tsx}", + "!/**/Styles/**/*.{js,jsx,ts,tsx}", ], coverageDirectory: "/coverage", testPathIgnorePatterns: ["/tests/"], From 20b65f38639b32ade40754c94896387ee255c346 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Tue, 6 Feb 2024 17:24:23 +0100 Subject: [PATCH 09/24] build: update harp makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index cf27c955..5338b98a 100644 --- a/Makefile +++ b/Makefile @@ -104,10 +104,10 @@ test-ui-build: install-ui cd vendors/mkui; pnpm build test-ui: test-ui-build - cd vendors/mkui; pnpm test:prod + cd vendors/mkui; pnpm test test-ui-update: test-ui-build - cd vendors/mkui; pnpm test:update + cd vendors/mkui; pnpm test:visual:update ######################################################################################################################## # Benchmarks From e521c81782fd0d7981c6ef2a0d55508460aa5ca5 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:03:00 +0100 Subject: [PATCH 10/24] test: snapshot for Badge --- vendors/mkui/src/Components/Badge/Badge.test.tsx | 5 +++++ .../Badge/__snapshots__/Badge.test.tsx.snap | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap diff --git a/vendors/mkui/src/Components/Badge/Badge.test.tsx b/vendors/mkui/src/Components/Badge/Badge.test.tsx index 8396b3ee..e3d2100e 100644 --- a/vendors/mkui/src/Components/Badge/Badge.test.tsx +++ b/vendors/mkui/src/Components/Badge/Badge.test.tsx @@ -6,4 +6,9 @@ describe("Badge", () => { render(Hello, world!) expect(screen.getByText("Hello, world!")).toBeInTheDocument() }) + + it("renders correctly", () => { + const { asFragment } = render(Test Badge) + expect(asFragment()).toMatchSnapshot() + }) }) diff --git a/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap b/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap new file mode 100644 index 00000000..9b3b3a85 --- /dev/null +++ b/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap @@ -0,0 +1,12 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Badge renders correctly 1`] = ` + + + Test Badge + + +`; From 1c1b03d8f61390e44ee566a19718606634f8a94f Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:04:56 +0100 Subject: [PATCH 11/24] test: snapshot for Button --- vendors/mkui/src/Components/Button/Button.test.tsx | 5 +++++ .../Button/__snapshots__/Button.test.tsx.snap | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap diff --git a/vendors/mkui/src/Components/Button/Button.test.tsx b/vendors/mkui/src/Components/Button/Button.test.tsx index ccd65709..0eb61353 100644 --- a/vendors/mkui/src/Components/Button/Button.test.tsx +++ b/vendors/mkui/src/Components/Button/Button.test.tsx @@ -11,4 +11,9 @@ describe("Button", () => { render() expect(screen.getByTestId("my-button")).toBeInTheDocument() }) + + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) }) diff --git a/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap b/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap new file mode 100644 index 00000000..9a94d337 --- /dev/null +++ b/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap @@ -0,0 +1,11 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Button renders correctly 1`] = ` + + + +`; From f01a9ed882cd57a9aeee233d5c959df79be9a769 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:08:05 +0100 Subject: [PATCH 12/24] test: snapshot for ButtonGroup --- .../ButtonGroup/ButtonGroup.test.tsx | 5 ++++ .../__snapshots__/ButtonGroup.test.tsx.snap | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap diff --git a/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx b/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx index b09d834d..309de452 100644 --- a/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx +++ b/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx @@ -24,4 +24,9 @@ describe("ButtonGroup", () => { fireEvent.click(getByText("Button 3")) expect(setCurrent).toHaveBeenCalledWith("3") }) + + it("renders correctly", () => { + const { asFragment } = render( {}} />) + expect(asFragment()).toMatchSnapshot() + }) }) diff --git a/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap b/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap new file mode 100644 index 00000000..755a66fe --- /dev/null +++ b/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap @@ -0,0 +1,28 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ButtonGroup renders correctly 1`] = ` + + + + + + + +`; From 1127cc88dffc7304c83889a34ec4be8ed6a8d62a Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:08:49 +0100 Subject: [PATCH 13/24] test: snapshot for DataTable --- .../Components/DataTable/DataTable.test.tsx | 4 + .../__snapshots__/DataTable.test.tsx.snap | 138 ++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap diff --git a/vendors/mkui/src/Components/DataTable/DataTable.test.tsx b/vendors/mkui/src/Components/DataTable/DataTable.test.tsx index 3196b9d1..7edfa24b 100644 --- a/vendors/mkui/src/Components/DataTable/DataTable.test.tsx +++ b/vendors/mkui/src/Components/DataTable/DataTable.test.tsx @@ -16,6 +16,10 @@ describe("DataTable", () => { { firstName: "Thelonious", lastName: "Monk", instrument: "Piano", country: "USA" }, { firstName: "Charles", lastName: "Mingus", instrument: "Double Bass", country: "USA" }, ] + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) it("renders the table headers", () => { const { getByText } = render() diff --git a/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap b/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap new file mode 100644 index 00000000..c59ce980 --- /dev/null +++ b/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap @@ -0,0 +1,138 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DataTable renders correctly 1`] = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First name + + Last name + + Instrument + + Country +
+ John + + Coltrane + + Saxophone + + USA +
+ Miles + + Davis + + Trumpet + + USA +
+ Thelonious + + Monk + + Piano + + USA +
+ Charles + + Mingus + + Double Bass + + USA +
+
+`; From 051b01318f18fbd8b3024cdd0811ee77a95776ad Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:11:44 +0100 Subject: [PATCH 14/24] test: snapshot for FormWidgets --- .../Components/FormWidgets/Checkbox.test.tsx | 5 ++++ .../src/Components/FormWidgets/Radio.test.tsx | 5 ++++ .../__snapshots__/Checkbox.test.tsx.snap | 30 +++++++++++++++++++ .../__snapshots__/Radio.test.tsx.snap | 22 ++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap create mode 100644 vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap diff --git a/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx b/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx index 2da52d5f..5b494c86 100644 --- a/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx +++ b/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx @@ -2,6 +2,11 @@ import { render, screen, fireEvent } from "@testing-library/react" import { Checkbox } from "./Checkbox" describe("Checkbox", () => { + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) + it("renders the checkbox input and label", () => { render() diff --git a/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx b/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx index 9f8f96e0..356ba16b 100644 --- a/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx +++ b/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx @@ -2,6 +2,11 @@ import { render, screen } from "@testing-library/react" import { Radio } from "./Radio" describe("Radio", () => { + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) + it("renders the radio input and label", () => { render() diff --git a/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap new file mode 100644 index 00000000..f47b3274 --- /dev/null +++ b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap @@ -0,0 +1,30 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Checkbox renders correctly 1`] = ` + +
+
+ +
+
+ +
+
+
+`; diff --git a/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap new file mode 100644 index 00000000..0e4ee72b --- /dev/null +++ b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap @@ -0,0 +1,22 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Radio renders correctly 1`] = ` + +
+ + +
+
+`; From 4290923e81c8c273e194fc509f3c3970b3c5f9e9 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:24:06 +0100 Subject: [PATCH 15/24] test: snapshot for NavBar --- .../src/Components/Navbar/Navbar.test.tsx | 5 ++ .../Navbar/__snapshots__/Navbar.test.tsx.snap | 83 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap diff --git a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx index 2dd02dbc..c68c3f7f 100644 --- a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx +++ b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx @@ -2,6 +2,11 @@ import { render, screen } from "@testing-library/react" import { Navbar } from "./Navbar" describe("Navbar", () => { + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) + it("renders without crashing", () => { render() expect(screen.getByRole("navigation")).toBeInTheDocument() diff --git a/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap b/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap new file mode 100644 index 00000000..096821ad --- /dev/null +++ b/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap @@ -0,0 +1,83 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Navbar renders correctly 1`] = ` + +
+ +`; From 3a838adabef9a1e23c6cd8169fcbc2d96fd6047e Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:37:58 +0100 Subject: [PATCH 16/24] test: snapshot for Paginator --- .pre-commit-config.yaml | 1 + .../Components/Pagination/Paginator.test.tsx | 5 + .../__snapshots__/Paginator.test.tsx.snap | 147 ++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 556215c2..f91f3dd9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,6 +4,7 @@ repos: rev: v3.2.0 hooks: - id: trailing-whitespace + exclude: '\.tsx\.snap$' - id: end-of-file-fixer - id: check-yaml exclude: misc diff --git a/vendors/mkui/src/Components/Pagination/Paginator.test.tsx b/vendors/mkui/src/Components/Pagination/Paginator.test.tsx index 271aab65..1451e0e8 100644 --- a/vendors/mkui/src/Components/Pagination/Paginator.test.tsx +++ b/vendors/mkui/src/Components/Pagination/Paginator.test.tsx @@ -2,6 +2,11 @@ import { render, fireEvent } from "@testing-library/react" import { Paginator } from "./Paginator" describe("Paginator", () => { + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) + it("renders without crashing", () => { const { getAllByText } = render() const previousButtons = getAllByText("Previous") diff --git a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap new file mode 100644 index 00000000..1c2e05c2 --- /dev/null +++ b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap @@ -0,0 +1,147 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Paginator renders correctly 1`] = ` + +
+ + +
+
+`; From 716e0b8598bc0f32d85df5a8bd1ab92fbfd59a98 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:40:50 +0100 Subject: [PATCH 17/24] test: snapshot for Pane --- vendors/mkui/src/Components/Pane/Pane.test.tsx | 5 +++++ .../src/Components/Pane/__snapshots__/Pane.test.tsx.snap | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap diff --git a/vendors/mkui/src/Components/Pane/Pane.test.tsx b/vendors/mkui/src/Components/Pane/Pane.test.tsx index c42848a6..c3820f90 100644 --- a/vendors/mkui/src/Components/Pane/Pane.test.tsx +++ b/vendors/mkui/src/Components/Pane/Pane.test.tsx @@ -2,6 +2,11 @@ import { render } from "@testing-library/react" import { Pane } from "./Pane" describe("Pane", () => { + it("renders correctly", () => { + const { asFragment } = render() + expect(asFragment()).toMatchSnapshot() + }) + it("renders without crashing", () => { const { container } = render() expect(container.firstChild).toBeTruthy() diff --git a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap new file mode 100644 index 00000000..5825858d --- /dev/null +++ b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Pane renders correctly 1`] = ` + +
+ +`; From 500a078cea4b0eb3e3d4da5e863e44c68d9200fb Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:42:32 +0100 Subject: [PATCH 18/24] test: snapshot for Tabs --- .../mkui/src/Components/Tabs/Tabs.test.tsx | 14 +++++++ .../Tabs/__snapshots__/Tabs.test.tsx.snap | 42 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap diff --git a/vendors/mkui/src/Components/Tabs/Tabs.test.tsx b/vendors/mkui/src/Components/Tabs/Tabs.test.tsx index 2fb6ac5b..71eef6b0 100644 --- a/vendors/mkui/src/Components/Tabs/Tabs.test.tsx +++ b/vendors/mkui/src/Components/Tabs/Tabs.test.tsx @@ -2,6 +2,20 @@ import { render, screen } from "@testing-library/react" import { Tab } from "./Tabs" describe("Tab", () => { + it("renders correctly", () => { + const { asFragment } = render( + + + Tab 1 + + + Panel 1 + + , + ) + expect(asFragment()).toMatchSnapshot() + }) + it("renders without crashing", () => { const { container } = render( diff --git a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap new file mode 100644 index 00000000..34a9ae91 --- /dev/null +++ b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap @@ -0,0 +1,42 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Tab renders correctly 1`] = ` + +
+ +
+
+
+ Panel 1 +
+
+
+`; From fdb85d7d967e425c38a967f0a24e818bdcd1cdd2 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:30:55 +0100 Subject: [PATCH 19/24] test: better jest config --- vendors/mkui/jest.config.js | 34 +- vendors/mkui/package.json | 6 +- vendors/mkui/pnpm-lock.yaml | 1340 +++++++++++++++++++++++++++------- vendors/mkui/svgTransform.js | 11 + 4 files changed, 1115 insertions(+), 276 deletions(-) create mode 100644 vendors/mkui/svgTransform.js diff --git a/vendors/mkui/jest.config.js b/vendors/mkui/jest.config.js index 51c034e6..4c332110 100644 --- a/vendors/mkui/jest.config.js +++ b/vendors/mkui/jest.config.js @@ -1,8 +1,21 @@ -const nextJest = require("next/jest") - -const babelConfigStyledComponents = { - presets: [["next/babel", { "preset-react": { runtime: "automatic" } }]], - plugins: ["babel-plugin-macros", ["babel-plugin-styled-components", { ssr: true }]], +const babelConfigEmotion = { + presets: [ + [ + "@babel/preset-env", + { + targets: { node: "current" }, + }, + ], + [ + "@babel/preset-react", + { + runtime: "automatic", + importSource: "@emotion/react", + }, + ], + "@babel/preset-typescript", + ], + plugins: ["babel-plugin-macros", "@emotion/babel-plugin"], } /** @type {import('ts-jest').JestConfigWithTsJest} */ @@ -10,11 +23,14 @@ const customJestConfig = { setupFilesAfterEnv: ["/jest.setup.js"], testEnvironment: "jest-environment-jsdom", moduleNameMapper: { - "^@/components/(.*)$": "/components/$1", + "^@/components/(.*)$": "/src/components/$1", + "^@/pages/(.*)$": "/src/pages/$1", }, transform: { - "^.+\\.(js|jsx|ts|tsx|mjs)$": ["babel-jest", babelConfigStyledComponents], + "^.+\\.(js|jsx|ts|tsx|mjs)$": ["babel-jest", babelConfigEmotion], + "^.+\\.svg$": "/svgTransform.js", }, + collectCoverageFrom: [ "src/**/*.{js,jsx,tsx}", "!/node_modules/", @@ -26,6 +42,4 @@ const customJestConfig = { coverageReporters: ["html", "text"], } -const createJestConfig = nextJest({ dir: "./" }) - -module.exports = createJestConfig(customJestConfig) +module.exports = customJestConfig diff --git a/vendors/mkui/package.json b/vendors/mkui/package.json index 9a99888d..8f563133 100644 --- a/vendors/mkui/package.json +++ b/vendors/mkui/package.json @@ -22,6 +22,9 @@ }, "devDependencies": { "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", "@emotion/babel-plugin-jsx-pragmatic": "^0.2.1", "@ladle/react": "^4.0.2", "@playwright/test": "^1.41.1", @@ -34,11 +37,10 @@ "@types/sync-fetch": "^0.4.3", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.17", - "babel-plugin-styled-components": "^2.1.4", "cross-env": "^7.0.3", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "next": "^14.1.0", + "jest-svg-transformer": "^1.0.0", "postcss": "^8.4.34", "prettier": "^3.2.5", "start-server-and-test": "^2.0.3", diff --git a/vendors/mkui/pnpm-lock.yaml b/vendors/mkui/pnpm-lock.yaml index a65cf19c..ec55a10d 100644 --- a/vendors/mkui/pnpm-lock.yaml +++ b/vendors/mkui/pnpm-lock.yaml @@ -37,6 +37,15 @@ devDependencies: '@babel/plugin-transform-react-jsx': specifier: ^7.23.4 version: 7.23.4(@babel/core@7.23.6) + '@babel/preset-env': + specifier: ^7.23.9 + version: 7.23.9(@babel/core@7.23.6) + '@babel/preset-react': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.23.6) + '@babel/preset-typescript': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.23.6) '@emotion/babel-plugin-jsx-pragmatic': specifier: ^0.2.1 version: 0.2.1(@babel/core@7.23.6) @@ -73,9 +82,6 @@ devDependencies: autoprefixer: specifier: ^10.4.17 version: 10.4.17(postcss@8.4.34) - babel-plugin-styled-components: - specifier: ^2.1.4 - version: 2.1.4(@babel/core@7.23.6)(styled-components@6.1.8) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -85,9 +91,9 @@ devDependencies: jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 - next: - specifier: ^14.1.0 - version: 14.1.0(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + jest-svg-transformer: + specifier: ^1.0.0 + version: 1.0.0(jest@29.7.0)(react@18.2.0) postcss: specifier: ^8.4.34 version: 8.4.34 @@ -186,6 +192,13 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} @@ -197,6 +210,51 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.6): + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.6): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -217,6 +275,13 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} @@ -237,11 +302,42 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} dev: true + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} @@ -249,6 +345,13 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} @@ -269,6 +372,15 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: true + /@babel/helpers@7.23.6: resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} engines: {node: '>=6.9.0'} @@ -296,6 +408,48 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.6): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -323,6 +477,54 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -396,67 +598,799 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.6): + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.6): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: true + + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.6): + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + dev: true + + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + /@babel/preset-env@7.23.9(@babel/core@7.23.6): + resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/compat-data': 7.23.5 '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.6) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.6) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.6) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.6) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.6) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.6) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.6) + core-js-compat: 3.35.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} - engines: {node: '>=6.9.0'} + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.6 + esutils: 2.0.3 dev: true - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + /@babel/preset-react@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/types': 7.23.6 + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true /@babel/runtime@7.23.6: @@ -575,9 +1509,11 @@ packages: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 + dev: false /@emotion/memoize@0.8.1: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false /@emotion/react@11.11.3(@types/react@18.2.55)(react@18.2.0): resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} @@ -635,10 +1571,6 @@ packages: react: 18.2.0 dev: false - /@emotion/unitless@0.8.0: - resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} - dev: true - /@emotion/unitless@0.8.1: resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} dev: false @@ -1294,91 +2226,6 @@ packages: strict-event-emitter: 0.5.1 dev: true - /@next/env@14.1.0: - resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} - dev: true - - /@next/swc-darwin-arm64@14.1.0: - resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@next/swc-darwin-x64@14.1.0: - resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@next/swc-linux-arm64-gnu@14.1.0: - resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@next/swc-linux-arm64-musl@14.1.0: - resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@next/swc-linux-x64-gnu@14.1.0: - resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@next/swc-linux-x64-musl@14.1.0: - resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@next/swc-win32-arm64-msvc@14.1.0: - resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@next/swc-win32-ia32-msvc@14.1.0: - resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@next/swc-win32-x64-msvc@14.1.0: - resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1684,12 +2531,6 @@ packages: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - dependencies: - tslib: 2.6.2 - dev: true - /@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true @@ -1991,10 +2832,6 @@ packages: resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} dev: true - /@types/stylis@4.2.0: - resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} - dev: true - /@types/sync-fetch@0.4.3: resolution: {integrity: sha512-RfwkmWFd7yi6tRaDcR7KNrxyp6LpO2oXrT6tYkXBLNfp4xf4EKRX7IlLexbtd5X26g34+G6HDD2pMhOZ5srUmQ==} dependencies: @@ -2281,19 +3118,40 @@ packages: cosmiconfig: 7.1.0 resolve: 1.22.8 - /babel-plugin-styled-components@2.1.4(@babel/core@7.23.6)(styled-components@6.1.8): - resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.6): + resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} peerDependencies: - styled-components: '>= 2' + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - lodash: 4.17.21 - picomatch: 2.3.1 - styled-components: 6.1.8(react-dom@18.2.0)(react@18.2.0) + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.6) + semver: 6.3.1 transitivePeerDependencies: - - '@babel/core' + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.6): + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.6) + core-js-compat: 3.35.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.6): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.6) + transitivePeerDependencies: + - supports-color dev: true /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): @@ -2441,13 +3299,6 @@ packages: run-applescript: 5.0.0 dev: true - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - dependencies: - streamsearch: 1.1.0 - dev: true - /cache-content-type@1.0.1: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} @@ -2487,10 +3338,6 @@ packages: engines: {node: '>=14.16'} dev: true - /camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - dev: true - /caniuse-lite@1.0.30001584: resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==} dev: true @@ -2613,6 +3460,7 @@ packages: /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -2730,6 +3578,12 @@ packages: keygrip: 1.1.0 dev: true + /core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} + dependencies: + browserslist: 4.22.2 + dev: true + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true @@ -2779,23 +3633,10 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - dev: true - /css-selector-parser@3.0.4: resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} dev: true - /css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - dev: true - /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true @@ -2820,10 +3661,6 @@ packages: cssom: 0.3.8 dev: true - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: true - /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -4589,6 +5426,16 @@ packages: - supports-color dev: true + /jest-svg-transformer@1.0.0(jest@29.7.0)(react@18.2.0): + resolution: {integrity: sha512-+kD21VthJFHIbI3DZRz+jo4sBOSR1qWEMXhVC28owRMqC5nA+zEiJrHOlj+EqQIztYMouRc1dIjE8SJfFPJUXA==} + peerDependencies: + jest: '>22' + react: '>=16' + dependencies: + jest: 29.7.0 + react: 18.2.0 + dev: true + /jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4729,6 +5576,11 @@ packages: - utf-8-validate dev: true + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -4835,6 +5687,10 @@ packages: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: false + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true @@ -5580,45 +6436,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /next@14.1.0(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - dependencies: - '@next/env': 14.1.0 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001584 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.6)(react@18.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 14.1.0 - '@next/swc-darwin-x64': 14.1.0 - '@next/swc-linux-arm64-gnu': 14.1.0 - '@next/swc-linux-arm64-musl': 14.1.0 - '@next/swc-linux-x64-gnu': 14.1.0 - '@next/swc-linux-x64-musl': 14.1.0 - '@next/swc-win32-arm64-msvc': 14.1.0 - '@next/swc-win32-ia32-msvc': 14.1.0 - '@next/swc-win32-x64-msvc': 14.1.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - dev: true - /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -6002,15 +6819,6 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.34: resolution: {integrity: sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==} engines: {node: ^10 || ^12 || >=14} @@ -6220,9 +7028,26 @@ packages: strip-indent: 3.0.0 dev: true + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.6 + dev: true + /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -6232,6 +7057,25 @@ packages: set-function-name: 2.0.1 dev: true + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /rehype-class-names@1.0.14: resolution: {integrity: sha512-eFBt6Qxb7K77y6P82tUtN9rKpU7guWlaK4XA4RrrSFHkUTCvr2D3cgb9OR5d4t1AaGOvR59FH9nRwUnbpn9AEg==} dependencies: @@ -6454,10 +7298,6 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true - /shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -6590,11 +7430,6 @@ packages: duplexer: 0.1.2 dev: true - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: true - /strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} dev: true @@ -6693,52 +7528,10 @@ packages: inline-style-parser: 0.2.2 dev: true - /styled-components@6.1.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==} - engines: {node: '>= 16'} - peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - dependencies: - '@emotion/is-prop-valid': 1.2.1 - '@emotion/unitless': 0.8.0 - '@types/stylis': 4.2.0 - css-to-react-native: 3.2.0 - csstype: 3.1.2 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - shallowequal: 1.1.0 - stylis: 4.3.1 - tslib: 2.5.0 - dev: true - - /styled-jsx@5.1.1(@babel/core@7.23.6)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - dependencies: - '@babel/core': 7.23.6 - client-only: 0.0.1 - react: 18.2.0 - dev: true - /stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} dev: false - /stylis@4.3.1: - resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} - dev: true - /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -6951,10 +7744,6 @@ packages: typescript: 5.2.2 dev: true - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: true - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true @@ -7016,6 +7805,29 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + /unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} diff --git a/vendors/mkui/svgTransform.js b/vendors/mkui/svgTransform.js new file mode 100644 index 00000000..527047bf --- /dev/null +++ b/vendors/mkui/svgTransform.js @@ -0,0 +1,11 @@ +module.exports = { + process() { + return { + code: `module.exports = {};`, + } + }, + getCacheKey() { + // The output is always the same. + return "svgTransform" + }, +} From 77b30f602804578d5b5e8bab1146edc51d8683ca Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:33:03 +0100 Subject: [PATCH 20/24] test: update snapshots --- .../Badge/__snapshots__/Badge.test.tsx.snap | 2 +- .../Button/__snapshots__/Button.test.tsx.snap | 2 +- .../__snapshots__/ButtonGroup.test.tsx.snap | 6 +-- .../__snapshots__/DataTable.test.tsx.snap | 42 +++++++++---------- .../Navbar/__snapshots__/Navbar.test.tsx.snap | 8 ++-- .../Pane/__snapshots__/Pane.test.tsx.snap | 2 +- .../Tabs/__snapshots__/Tabs.test.tsx.snap | 8 ++-- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap b/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap index 9b3b3a85..0cb5d7ea 100644 --- a/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap +++ b/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap @@ -3,7 +3,7 @@ exports[`Badge renders correctly 1`] = ` Test Badge diff --git a/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap b/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap index 9a94d337..bbbda71e 100644 --- a/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap +++ b/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap @@ -3,7 +3,7 @@ exports[`Button renders correctly 1`] = ` diff --git a/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap b/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap index 755a66fe..853c8be6 100644 --- a/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +++ b/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap @@ -6,19 +6,19 @@ exports[`ButtonGroup renders correctly 1`] = ` class="isolate inline-flex rounded-md shadow-sm" > +
+ + + + +
+`; exports[`Navbar renders correctly 1`] = ` diff --git a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap index 1c2e05c2..a112885c 100644 --- a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap +++ b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap @@ -1,4 +1,150 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Paginator > renders correctly 1`] = ` + +
+ + +
+
+`; exports[`Paginator renders correctly 1`] = ` diff --git a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap index e43f4a95..3abdabea 100644 --- a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap +++ b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap @@ -1,4 +1,12 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Pane > renders correctly 1`] = ` + +
+ +`; exports[`Pane renders correctly 1`] = ` diff --git a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap index 9f2d993d..806bdb48 100644 --- a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap +++ b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap @@ -1,4 +1,45 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Tab > renders correctly 1`] = ` + +
+ +
+
+
+ Panel 1 +
+
+
+`; exports[`Tab renders correctly 1`] = ` diff --git a/vendors/mkui/vite.config.ts b/vendors/mkui/vite.config.ts index 22e308bc..95bf1c21 100644 --- a/vendors/mkui/vite.config.ts +++ b/vendors/mkui/vite.config.ts @@ -1,3 +1,4 @@ +/// import { defineConfig } from "vite" import react from "@vitejs/plugin-react" @@ -39,4 +40,10 @@ export default defineConfig({ open: "none", host: "127.0.0.1", }, + test: { + environment: "jsdom", + globals: true, + setupFiles: ["vitest.setup.ts"], + exclude: ["node_modules", "dist", ".idea", ".git", ".cache", "build"], + }, }) diff --git a/vendors/mkui/vitest.setup.ts b/vendors/mkui/vitest.setup.ts new file mode 100644 index 00000000..6d8506f4 --- /dev/null +++ b/vendors/mkui/vitest.setup.ts @@ -0,0 +1,3 @@ +import "@testing-library/jest-dom" + +global.requestAnimationFrame = (fn) => window.setTimeout(fn, 0) From 665fc3578757314ff583c93cae4585bfb21ec4a8 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Thu, 8 Feb 2024 11:15:53 +0100 Subject: [PATCH 22/24] test: update other tests using vitest --- .../mkui/src/Components/Badge/Badge.test.tsx | 4 +- .../Badge/__snapshots__/Badge.test.tsx.snap | 10 +- .../src/Components/Button/Button.test.tsx | 4 +- .../Button/__snapshots__/Button.test.tsx.snap | 10 +- .../ButtonGroup/ButtonGroup.test.tsx | 8 +- .../__snapshots__/ButtonGroup.test.tsx.snap | 14 +- .../Components/DataTable/DataTable.test.tsx | 18 +-- .../__snapshots__/DataTable.test.tsx.snap | 141 +---------------- .../Components/FormWidgets/Checkbox.test.tsx | 4 +- .../src/Components/FormWidgets/Radio.test.tsx | 5 +- .../__snapshots__/Checkbox.test.tsx.snap | 8 +- .../__snapshots__/Radio.test.tsx.snap | 25 +-- .../src/Components/Navbar/Navbar.test.tsx | 4 +- .../Navbar/__snapshots__/Navbar.test.tsx.snap | 86 +---------- .../__snapshots__/Paginator.test.tsx.snap | 146 ------------------ .../Pane/__snapshots__/Pane.test.tsx.snap | 8 - .../Tabs/__snapshots__/Tabs.test.tsx.snap | 41 ----- 17 files changed, 47 insertions(+), 489 deletions(-) diff --git a/vendors/mkui/src/Components/Badge/Badge.test.tsx b/vendors/mkui/src/Components/Badge/Badge.test.tsx index 190b7222..60d6b129 100644 --- a/vendors/mkui/src/Components/Badge/Badge.test.tsx +++ b/vendors/mkui/src/Components/Badge/Badge.test.tsx @@ -9,7 +9,7 @@ describe("Badge", () => { }) it("renders correctly", () => { - const { asFragment } = render(Test Badge) - expect(asFragment).toMatchSnapshot() + const { container } = render(Test Badge) + expect(container).toMatchSnapshot() }) }) diff --git a/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap b/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap index 90044b90..fefd2044 100644 --- a/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap +++ b/vendors/mkui/src/Components/Badge/__snapshots__/Badge.test.tsx.snap @@ -1,14 +1,12 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Badge > renders correctly 1`] = `[Function]`; - -exports[`Badge renders correctly 1`] = ` - +exports[`Badge > renders correctly 1`] = ` +
Test Badge - +
`; diff --git a/vendors/mkui/src/Components/Button/Button.test.tsx b/vendors/mkui/src/Components/Button/Button.test.tsx index 8526c477..d70093d7 100644 --- a/vendors/mkui/src/Components/Button/Button.test.tsx +++ b/vendors/mkui/src/Components/Button/Button.test.tsx @@ -14,7 +14,7 @@ describe("Button", () => { }) it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) }) diff --git a/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap b/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap index b9ae1858..33062a2d 100644 --- a/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap +++ b/vendors/mkui/src/Components/Button/__snapshots__/Button.test.tsx.snap @@ -1,13 +1,11 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Button > renders correctly 1`] = `[Function]`; - -exports[`Button renders correctly 1`] = ` - +exports[`Button > renders correctly 1`] = ` +
- +
`; diff --git a/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx b/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx index e13c308f..869e1c00 100644 --- a/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx +++ b/vendors/mkui/src/Components/ButtonGroup/ButtonGroup.test.tsx @@ -1,6 +1,6 @@ import { render, fireEvent, screen } from "@testing-library/react" import { ButtonGroup } from "./ButtonGroup" -import { expect, describe, it } from "vitest" +import { expect, describe, it, vi } from "vitest" describe("ButtonGroup", () => { const buttonProps = [ @@ -20,14 +20,14 @@ describe("ButtonGroup", () => { }) it("calls setCurrent with the correct key when a button is clicked", () => { - const setCurrent = jest.fn() + const setCurrent = vi.fn() const { getByText } = render() fireEvent.click(getByText("Button 3")) expect(setCurrent).toHaveBeenCalledWith("3") }) it("renders correctly", () => { - const { asFragment } = render( {}} />) - expect(asFragment).toMatchSnapshot() + const { container } = render( {}} />) + expect(container).toMatchSnapshot() }) }) diff --git a/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap b/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap index 3527fb17..df6506e8 100644 --- a/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +++ b/vendors/mkui/src/Components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap @@ -1,30 +1,28 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`ButtonGroup > renders correctly 1`] = `[Function]`; - -exports[`ButtonGroup renders correctly 1`] = ` - +exports[`ButtonGroup > renders correctly 1`] = ` +
- +
`; diff --git a/vendors/mkui/src/Components/DataTable/DataTable.test.tsx b/vendors/mkui/src/Components/DataTable/DataTable.test.tsx index a214ebda..cac8ec33 100644 --- a/vendors/mkui/src/Components/DataTable/DataTable.test.tsx +++ b/vendors/mkui/src/Components/DataTable/DataTable.test.tsx @@ -1,6 +1,6 @@ import { render, fireEvent } from "@testing-library/react" import { DataTable, Column } from "./DataTable" -import { expect, describe, it } from "vitest" +import { expect, describe, it, vi } from "vitest" describe("DataTable", () => { const types: Record = { @@ -18,8 +18,8 @@ describe("DataTable", () => { { firstName: "Charles", lastName: "Mingus", instrument: "Double Bass", country: "USA" }, ] it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) it("renders the table headers", () => { @@ -44,14 +44,14 @@ describe("DataTable", () => { }) it("calls onRowClick when a row is clicked", () => { - const onRowClick = jest.fn() + const onRowClick = vi.fn() const { getByText } = render() fireEvent.click(getByText("John")) expect(onRowClick).toHaveBeenCalledWith(rows[0]) }) it("uses provided get function", () => { - const getfn = jest.fn((row: (typeof rows)[0]) => row.firstName) + const getfn = vi.fn((row: (typeof rows)[0]) => row.firstName) const types: Record = { firstName: { label: "First name", get: getfn }, @@ -68,7 +68,7 @@ describe("DataTable", () => { }) it("uses provided format function", () => { - const formatfn = jest.fn((firstName: string) => firstName) + const formatfn = vi.fn((firstName: string) => firstName) const types: Record = { firstName: { label: "First name", format: formatfn }, @@ -92,7 +92,7 @@ describe("DataTable", () => { expect(getByText("-")).toBeInTheDocument() }) it("allows specific onClick actions for column", () => { - const onClick = jest.fn() + const onClick = vi.fn() const types: Record = { firstName: { label: "First name", onClick }, lastName: { label: "Last name" }, @@ -107,7 +107,7 @@ describe("DataTable", () => { }) it("handles errors in get or format function and shows n/a", () => { - const getfn = jest.fn(() => { + const getfn = vi.fn(() => { throw new Error("test") }) @@ -118,7 +118,7 @@ describe("DataTable", () => { country: { label: "Country" }, } - const consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(() => {}) + const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {}) const { getAllByText } = render() diff --git a/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap b/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap index 9b4c5c4c..bda73923 100644 --- a/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap +++ b/vendors/mkui/src/Components/DataTable/__snapshots__/DataTable.test.tsx.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`DataTable > renders correctly 1`] = ` - +
@@ -134,142 +134,5 @@ exports[`DataTable > renders correctly 1`] = `
- -`; - -exports[`DataTable renders correctly 1`] = ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- First name - - Last name - - Instrument - - Country -
- John - - Coltrane - - Saxophone - - USA -
- Miles - - Davis - - Trumpet - - USA -
- Thelonious - - Monk - - Piano - - USA -
- Charles - - Mingus - - Double Bass - - USA -
-
+
`; diff --git a/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx b/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx index 27356836..6c2db9df 100644 --- a/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx +++ b/vendors/mkui/src/Components/FormWidgets/Checkbox.test.tsx @@ -4,8 +4,8 @@ import { expect, describe, it } from "vitest" describe("Checkbox", () => { it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) it("renders the checkbox input and label", () => { diff --git a/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx b/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx index 356ba16b..4910d0f3 100644 --- a/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx +++ b/vendors/mkui/src/Components/FormWidgets/Radio.test.tsx @@ -1,10 +1,11 @@ import { render, screen } from "@testing-library/react" import { Radio } from "./Radio" +import { expect, describe, it } from "vitest" describe("Radio", () => { it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) it("renders the radio input and label", () => { diff --git a/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap index bc909b82..b0ab7b8c 100644 --- a/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap +++ b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Checkbox.test.tsx.snap @@ -1,9 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Checkbox > renders correctly 1`] = `[Function]`; - -exports[`Checkbox renders correctly 1`] = ` - +exports[`Checkbox > renders correctly 1`] = ` +
@@ -28,5 +26,5 @@ exports[`Checkbox renders correctly 1`] = `
-
+
`; diff --git a/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap index b8cdb4d1..6e4da7c2 100644 --- a/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap +++ b/vendors/mkui/src/Components/FormWidgets/__snapshots__/Radio.test.tsx.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Radio > renders correctly 1`] = ` - +
@@ -18,26 +18,5 @@ exports[`Radio > renders correctly 1`] = ` test-radio
- -`; - -exports[`Radio renders correctly 1`] = ` - -
- - -
-
+
`; diff --git a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx index c68c3f7f..df3a6a4c 100644 --- a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx +++ b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx @@ -3,8 +3,8 @@ import { Navbar } from "./Navbar" describe("Navbar", () => { it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) it("renders without crashing", () => { diff --git a/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap b/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap index 1d166ebf..b71e471d 100644 --- a/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap +++ b/vendors/mkui/src/Components/Navbar/__snapshots__/Navbar.test.tsx.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Navbar > renders correctly 1`] = ` - +
-
-`; - -exports[`Navbar renders correctly 1`] = ` - - - + `; diff --git a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap index a112885c..0a91464e 100644 --- a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap +++ b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap @@ -145,149 +145,3 @@ exports[`Paginator > renders correctly 1`] = `
`; - -exports[`Paginator renders correctly 1`] = ` - -
- - -
-
-`; diff --git a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap index 3abdabea..023b8a78 100644 --- a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap +++ b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap @@ -7,11 +7,3 @@ exports[`Pane > renders correctly 1`] = ` />
`; - -exports[`Pane renders correctly 1`] = ` - -
- -`; diff --git a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap index 806bdb48..92132c52 100644 --- a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap +++ b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap @@ -40,44 +40,3 @@ exports[`Tab > renders correctly 1`] = `
`; - -exports[`Tab renders correctly 1`] = ` - -
- -
-
-
- Panel 1 -
-
-
-`; From b3bf099fb14f174df414f10705f5fd8ba5b2da8f Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Thu, 8 Feb 2024 11:23:45 +0100 Subject: [PATCH 23/24] test: update config and other tests --- vendors/mkui/src/Components/Navbar/Navbar.test.tsx | 1 + .../src/Components/Pagination/Paginator.test.tsx | 13 +++++++------ .../__snapshots__/Paginator.test.tsx.snap | 7 ++++--- vendors/mkui/src/Components/Pane/Pane.test.tsx | 5 +++-- .../Pane/__snapshots__/Pane.test.tsx.snap | 4 ++-- vendors/mkui/src/Components/Tabs/Tabs.test.tsx | 5 +++-- .../Tabs/__snapshots__/Tabs.test.tsx.snap | 4 ++-- vendors/mkui/vite.config.ts | 2 +- 8 files changed, 23 insertions(+), 18 deletions(-) diff --git a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx index df3a6a4c..85b9f254 100644 --- a/vendors/mkui/src/Components/Navbar/Navbar.test.tsx +++ b/vendors/mkui/src/Components/Navbar/Navbar.test.tsx @@ -1,5 +1,6 @@ import { render, screen } from "@testing-library/react" import { Navbar } from "./Navbar" +import { expect, describe, it } from "vitest" describe("Navbar", () => { it("renders correctly", () => { diff --git a/vendors/mkui/src/Components/Pagination/Paginator.test.tsx b/vendors/mkui/src/Components/Pagination/Paginator.test.tsx index 1451e0e8..0ffe1ca3 100644 --- a/vendors/mkui/src/Components/Pagination/Paginator.test.tsx +++ b/vendors/mkui/src/Components/Pagination/Paginator.test.tsx @@ -1,10 +1,11 @@ import { render, fireEvent } from "@testing-library/react" import { Paginator } from "./Paginator" +import { expect, describe, it, vi } from "vitest" describe("Paginator", () => { it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) it("renders without crashing", () => { @@ -17,7 +18,7 @@ describe("Paginator", () => { describe("when Previous button is clicked", () => { it("calls setPage with correct value when previous span clicked", () => { - const setPage = jest.fn() + const setPage = vi.fn() const { getByText } = render() fireEvent.click(getByText("Previous", { selector: "span" })) @@ -25,7 +26,7 @@ describe("Paginator", () => { }) it("calls setPage with correct value when previous anchor clicked", () => { - const setPage = jest.fn() + const setPage = vi.fn() const { getByText } = render() fireEvent.click(getByText("Previous", { selector: "a" })) @@ -35,7 +36,7 @@ describe("Paginator", () => { describe("when Next button is clicked", () => { it("calls setPage with correct value when next span clicked", () => { - const setPage = jest.fn() + const setPage = vi.fn() const { getByText } = render() fireEvent.click(getByText("Next", { selector: "span" })) @@ -43,7 +44,7 @@ describe("Paginator", () => { }) it("calls setPage with correct value when next anchor clicked", () => { - const setPage = jest.fn() + const setPage = vi.fn() const { getByText } = render() fireEvent.click(getByText("Next", { selector: "a" })) diff --git a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap index 0a91464e..16fa44d8 100644 --- a/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap +++ b/vendors/mkui/src/Components/Pagination/__snapshots__/Paginator.test.tsx.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Paginator > renders correctly 1`] = ` - +
@@ -36,7 +36,8 @@ exports[`Paginator > renders correctly 1`] = ` > 1 - to + to + @@ -143,5 +144,5 @@ exports[`Paginator > renders correctly 1`] = `
-
+ `; diff --git a/vendors/mkui/src/Components/Pane/Pane.test.tsx b/vendors/mkui/src/Components/Pane/Pane.test.tsx index c3820f90..b5746a2b 100644 --- a/vendors/mkui/src/Components/Pane/Pane.test.tsx +++ b/vendors/mkui/src/Components/Pane/Pane.test.tsx @@ -1,10 +1,11 @@ import { render } from "@testing-library/react" import { Pane } from "./Pane" +import { expect, describe, it } from "vitest" describe("Pane", () => { it("renders correctly", () => { - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() + const { container } = render() + expect(container).toMatchSnapshot() }) it("renders without crashing", () => { diff --git a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap index 023b8a78..e47ea4af 100644 --- a/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap +++ b/vendors/mkui/src/Components/Pane/__snapshots__/Pane.test.tsx.snap @@ -1,9 +1,9 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Pane > renders correctly 1`] = ` - +
- +
`; diff --git a/vendors/mkui/src/Components/Tabs/Tabs.test.tsx b/vendors/mkui/src/Components/Tabs/Tabs.test.tsx index 71eef6b0..78559674 100644 --- a/vendors/mkui/src/Components/Tabs/Tabs.test.tsx +++ b/vendors/mkui/src/Components/Tabs/Tabs.test.tsx @@ -1,9 +1,10 @@ import { render, screen } from "@testing-library/react" import { Tab } from "./Tabs" +import { expect, describe, it } from "vitest" describe("Tab", () => { it("renders correctly", () => { - const { asFragment } = render( + const { container } = render( Tab 1 @@ -13,7 +14,7 @@ describe("Tab", () => { , ) - expect(asFragment()).toMatchSnapshot() + expect(container).toMatchSnapshot() }) it("renders without crashing", () => { diff --git a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap index 92132c52..f6feecf5 100644 --- a/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap +++ b/vendors/mkui/src/Components/Tabs/__snapshots__/Tabs.test.tsx.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Tab > renders correctly 1`] = ` - +
renders correctly 1`] = ` Panel 1
-
+
`; diff --git a/vendors/mkui/vite.config.ts b/vendors/mkui/vite.config.ts index 95bf1c21..22556097 100644 --- a/vendors/mkui/vite.config.ts +++ b/vendors/mkui/vite.config.ts @@ -44,6 +44,6 @@ export default defineConfig({ environment: "jsdom", globals: true, setupFiles: ["vitest.setup.ts"], - exclude: ["node_modules", "dist", ".idea", ".git", ".cache", "build"], + exclude: ["node_modules", "dist", ".idea", ".git", ".cache", "build", "tests"], }, }) From 5adab96c4086350caff9304890771621253fd515 Mon Sep 17 00:00:00 2001 From: Arthur Degonde <44548105+ArthurD1@users.noreply.github.com> Date: Thu, 8 Feb 2024 11:45:11 +0100 Subject: [PATCH 24/24] test: update config --- vendors/mkui/package.json | 3 +- vendors/mkui/pnpm-lock.yaml | 179 +++++++++++++++++++++++++++++++++++- vendors/mkui/vite.config.ts | 5 + 3 files changed, 185 insertions(+), 2 deletions(-) diff --git a/vendors/mkui/package.json b/vendors/mkui/package.json index e061a980..8f789d28 100644 --- a/vendors/mkui/package.json +++ b/vendors/mkui/package.json @@ -35,6 +35,7 @@ "@types/react-dom": "^18.2.18", "@types/sync-fetch": "^0.4.3", "@vitejs/plugin-react": "^4.2.1", + "@vitest/coverage-v8": "^1.2.2", "autoprefixer": "^10.4.17", "cross-env": "^7.0.3", "jest-environment-jsdom": "^29.7.0", @@ -64,7 +65,7 @@ "serve": "pnpm serve:dev", "serve:dev": "ladle serve -p 61110", "serve:prod": "ladle preview -p 61110", - "test:unit": "vitest", + "test:unit": "vitest run", "test:visual": "pnpm test:visual:dev", "test:visual:dev": "cross-env TYPE=dev pnpm exec playwright test", "test:visual:prod": "cross-env TYPE=prod pnpm exec playwright test", diff --git a/vendors/mkui/pnpm-lock.yaml b/vendors/mkui/pnpm-lock.yaml index 1c1c3982..b89ef7a2 100644 --- a/vendors/mkui/pnpm-lock.yaml +++ b/vendors/mkui/pnpm-lock.yaml @@ -76,6 +76,9 @@ devDependencies: '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.2.1(vite@5.0.12) + '@vitest/coverage-v8': + specifier: ^1.2.2 + version: 1.2.2(vitest@1.2.2) autoprefixer: specifier: ^10.4.17 version: 10.4.17(postcss@8.4.34) @@ -1422,6 +1425,10 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + /@bramus/pagination-sequence@1.2.1: resolution: {integrity: sha512-cdyxskW2CTvCtAYMSvuNQDhONds5mH9E6Eavcvbslmk8BRMQPFB5FAZkBxM3EOK/3B/nqb8O0DFVKscpxyvxfw==} dependencies: @@ -1824,6 +1831,11 @@ packages: wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + /@jest/environment@29.7.0: resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2672,6 +2684,29 @@ packages: - supports-color dev: true + /@vitest/coverage-v8@1.2.2(vitest@1.2.2): + resolution: {integrity: sha512-IHyKnDz18SFclIEEAHb9Y4Uxx0sPKC2VO1kdDCs1BF6Ip4S8rQprs971zIsooLUn7Afs71GRxWMWpkCGZpRMhw==} + peerDependencies: + vitest: ^1.0.0 + dependencies: + '@ampproject/remapping': 2.2.1 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + magic-string: 0.30.7 + magicast: 0.3.3 + picocolors: 1.0.0 + std-env: 3.7.0 + test-exclude: 6.0.0 + v8-to-istanbul: 9.2.0 + vitest: 1.2.2(jsdom@24.0.0) + transitivePeerDependencies: + - supports-color + dev: true + /@vitest/expect@1.2.2: resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} dependencies: @@ -3007,6 +3042,13 @@ packages: big-integer: 1.6.52 dev: true + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: @@ -3280,6 +3322,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} @@ -3930,6 +3976,10 @@ packages: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -4018,6 +4068,17 @@ packages: minipass: 7.0.4 path-scurry: 1.10.1 + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -4283,6 +4344,10 @@ packages: whatwg-encoding: 3.1.1 dev: true + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: true @@ -4413,6 +4478,13 @@ packages: engines: {node: '>=8'} dev: true + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true @@ -4691,6 +4763,39 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -5016,6 +5121,13 @@ packages: yallist: 3.1.1 dev: true + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -5028,6 +5140,21 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + source-map-js: 1.0.2 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + /map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true @@ -5621,6 +5748,12 @@ packages: hasBin: true dev: false + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -5799,6 +5932,12 @@ packages: ee-first: 1.1.1 dev: true + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -5901,6 +6040,11 @@ packages: engines: {node: '>= 0.8'} dev: true + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -6480,6 +6624,14 @@ packages: hasBin: true dev: true + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -6557,7 +6709,6 @@ packages: engines: {node: '>=0.10.0'} requiresBuild: true dev: true - optional: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -6812,6 +6963,15 @@ packages: transitivePeerDependencies: - ts-node + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + /then-request@6.0.2: resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} engines: {node: '>=6.0.0'} @@ -7137,6 +7297,15 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -7482,6 +7651,10 @@ packages: string-width: 5.1.2 strip-ansi: 7.1.0 + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + /ws@8.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} @@ -7518,6 +7691,10 @@ packages: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} diff --git a/vendors/mkui/vite.config.ts b/vendors/mkui/vite.config.ts index 22556097..19cf679b 100644 --- a/vendors/mkui/vite.config.ts +++ b/vendors/mkui/vite.config.ts @@ -41,6 +41,11 @@ export default defineConfig({ host: "127.0.0.1", }, test: { + coverage: { + provider: "v8", + reporter: ["html", "json", "text"], + exclude: ["node_modules", "dist", "build", "tests", ".ladle", "**/Styles", "**/*.{js,ts,cjs}", ".*"], + }, environment: "jsdom", globals: true, setupFiles: ["vitest.setup.ts"],