From 4b42e9491a8dfcd4f9837f7ee8a38b0608bdf467 Mon Sep 17 00:00:00 2001 From: belltalion Date: Thu, 25 Sep 2025 17:38:30 +0900 Subject: [PATCH 01/59] Fix action script --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e7332bc8..b720de84 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,8 +20,8 @@ jobs: uses: actions/checkout@v4 - uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: Cargo tarpaulin - run: cargo install cargo-tarpaulin + - name: Cargo tarpaulin and fmt + run: cargo install cargo-tarpaulin cargo-fmt - uses: pnpm/action-setup@v4 name: Install pnpm with: From 25951d898e36b87f169ae32d969cf68c76a20480 Mon Sep 17 00:00:00 2001 From: belltalion Date: Thu, 25 Sep 2025 17:44:44 +0900 Subject: [PATCH 02/59] Fix action script --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b720de84..24be96a4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,7 +21,7 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Cargo tarpaulin and fmt - run: cargo install cargo-tarpaulin cargo-fmt + run: cargo install cargo-tarpaulin rustfmt - uses: pnpm/action-setup@v4 name: Install pnpm with: From d7e6649ae4c00d90ed6d95132dbe2af01fbe32da Mon Sep 17 00:00:00 2001 From: belltalion Date: Thu, 25 Sep 2025 17:46:11 +0900 Subject: [PATCH 03/59] Fix action script --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 24be96a4..685cfdd1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,7 +21,7 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Cargo tarpaulin and fmt - run: cargo install cargo-tarpaulin rustfmt + run: cargo install cargo-tarpaulin rustfmt --force - uses: pnpm/action-setup@v4 name: Install pnpm with: From 49e59124d021b84d4a7c36659a72a59871072894 Mon Sep 17 00:00:00 2001 From: belltalion Date: Thu, 25 Sep 2025 17:55:36 +0900 Subject: [PATCH 04/59] Fix action script --- .github/workflows/publish.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 685cfdd1..848b79b3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,7 +21,9 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Cargo tarpaulin and fmt - run: cargo install cargo-tarpaulin rustfmt --force + run: | + cargo install cargo-tarpaulin + rustup component add rustfmt - uses: pnpm/action-setup@v4 name: Install pnpm with: From 668eab3a9459fed891ad75c31618edf773df7f21 Mon Sep 17 00:00:00 2001 From: belltalion Date: Thu, 25 Sep 2025 17:59:14 +0900 Subject: [PATCH 05/59] Fix action script --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 848b79b3..13a79205 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,7 +23,7 @@ jobs: - name: Cargo tarpaulin and fmt run: | cargo install cargo-tarpaulin - rustup component add rustfmt + rustup component add rustfmt clippy - uses: pnpm/action-setup@v4 name: Install pnpm with: From 4695225fafecf7b575a41951379d581007f27815 Mon Sep 17 00:00:00 2001 From: belltalion Date: Fri, 26 Sep 2025 16:31:38 +0900 Subject: [PATCH 06/59] Fix landing bench --- apps/landing/src/app/Bench.tsx | 10 ++--- apps/landing/src/app/BenchBox.tsx | 72 ++++++++++++++++++++++++++++++ apps/landing/src/app/OtherCard.tsx | 1 + 3 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 apps/landing/src/app/BenchBox.tsx diff --git a/apps/landing/src/app/Bench.tsx b/apps/landing/src/app/Bench.tsx index d5014d12..5514a7ee 100644 --- a/apps/landing/src/app/Bench.tsx +++ b/apps/landing/src/app/Bench.tsx @@ -1,5 +1,6 @@ -import { Box, Flex, Text, VStack } from '@devup-ui/react' +import { Flex, Text, VStack } from '@devup-ui/react' +import { BenchBox } from './BenchBox' import { DevupUICard } from './DevupUICard' import { OtherCard } from './OtherCard' @@ -86,10 +87,7 @@ export function Bench() { - + ))} - + ) diff --git a/apps/landing/src/app/BenchBox.tsx b/apps/landing/src/app/BenchBox.tsx new file mode 100644 index 00000000..55f8a0c8 --- /dev/null +++ b/apps/landing/src/app/BenchBox.tsx @@ -0,0 +1,72 @@ +'use client' + +import { Box } from '@devup-ui/react' +import { useRef } from 'react' +import { useCallback, useState } from 'react' +import { ReactNode } from 'react' + +interface BenchBoxProps { + children: ReactNode +} +export function BenchBox({ children }: BenchBoxProps) { + const scrollRef = useRef(null) + const [isDragging, setIsDragging] = useState(false) + const [startX, setStartX] = useState(0) + const [scrollLeft, setScrollLeft] = useState(0) + + const handleMouseDown = useCallback((e: React.MouseEvent) => { + if (!scrollRef.current) return + + setIsDragging(true) + setStartX(e.pageX - scrollRef.current.offsetLeft) + setScrollLeft(scrollRef.current.scrollLeft) + scrollRef.current.style.cursor = 'grabbing' + scrollRef.current.style.userSelect = 'none' + }, []) + + const handleMouseMove = useCallback( + (e: React.MouseEvent) => { + if (!isDragging || !scrollRef.current) return + + e.preventDefault() + const x = e.pageX - scrollRef.current.offsetLeft + const walk = (x - startX) * 2 // 스크롤 속도 조절 + scrollRef.current.scrollLeft = scrollLeft - walk + }, + [isDragging, startX, scrollLeft], + ) + + const handleMouseUp = useCallback(() => { + if (!scrollRef.current) return + + setIsDragging(false) + scrollRef.current.style.cursor = 'grab' + scrollRef.current.style.userSelect = 'auto' + }, []) + + const handleMouseLeave = useCallback(() => { + if (!scrollRef.current) return + + setIsDragging(false) + scrollRef.current.style.cursor = 'grab' + scrollRef.current.style.userSelect = 'auto' + }, []) + + return ( + + {children} + + ) +} diff --git a/apps/landing/src/app/OtherCard.tsx b/apps/landing/src/app/OtherCard.tsx index 6b3cacf1..d7f7d7e6 100644 --- a/apps/landing/src/app/OtherCard.tsx +++ b/apps/landing/src/app/OtherCard.tsx @@ -25,6 +25,7 @@ export function OtherCard({ gap={['20px', null, '40px']} h={[null, null, null, null, '318px']} justifyContent="space-between" + maxW={[null, null, null, null, '300px']} minW={[null, null, '240px', null, 'none']} p={[6, null, '30px']} > From 5f8050cee895e8cb721bb0396094b4b2979ac751 Mon Sep 17 00:00:00 2001 From: belltalion Date: Fri, 26 Sep 2025 16:36:40 +0900 Subject: [PATCH 07/59] Fix landing bench --- apps/landing/src/app/BenchBox.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/landing/src/app/BenchBox.tsx b/apps/landing/src/app/BenchBox.tsx index 55f8a0c8..1d0fe242 100644 --- a/apps/landing/src/app/BenchBox.tsx +++ b/apps/landing/src/app/BenchBox.tsx @@ -55,6 +55,7 @@ export function BenchBox({ children }: BenchBoxProps) { return ( {children} From 90bd7c61c5490337e8ce4d40c9cfe5e8b5b31327 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sun, 21 Sep 2025 17:14:29 +0900 Subject: [PATCH 08/59] Add package devDependencies husky lint-staged eslint-plugin-jsonc eslint-plugin-mdx jsonc-eslint-parser @typescript-eslint/parser --- package.json | 25 ++- pnpm-lock.yaml | 571 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 587 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index f9526490..6f625ef6 100644 --- a/package.json +++ b/package.json @@ -10,20 +10,27 @@ "test": "cargo tarpaulin --out xml --out stdout --out html --all-targets && vitest test --coverage --run && pnpm -r test", "build": "pnpm -F wasm build && pnpm -F @devup-ui/* -F !wasm build", "dev": "pnpm -r dev", - "benchmark": "node benchmark.js" + "benchmark": "node benchmark.js", + "prepare": "husky" }, "devDependencies": { - "eslint-plugin-devup": "^2.0.5", - "eslint": "^9.36.0", - "vitest": "^3.2.4", - "@vitest/coverage-v8": "^3.2.4", "@changesets/cli": "^2.29.7", - "@types/node": "^24.5.2", - "happy-dom": "^18.0.1", + "@devup-ui/vite-plugin": "workspace:*", + "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "14.6.1", - "@testing-library/jest-dom": "^6.8.0", - "@devup-ui/vite-plugin": "workspace:*" + "@types/node": "^24.5.2", + "@typescript-eslint/parser": "^8.44.0", + "@vitest/coverage-v8": "^3.2.4", + "eslint": "^9.35.0", + "eslint-plugin-devup": "^2.0.5", + "eslint-plugin-jsonc": "^2.20.1", + "eslint-plugin-mdx": "^3.6.2", + "happy-dom": "^18.0.1", + "husky": "^9.1.7", + "jsonc-eslint-parser": "^2.4.1", + "lint-staged": "^16.1.6", + "vitest": "^3.2.4" }, "author": "devfive", "packageManager": "pnpm@10.17.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc50ed99..ad51eefa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ importers: '@types/node': specifier: ^24.5.2 version: 24.5.2 + '@typescript-eslint/parser': + specifier: ^8.44.0 + version: 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) @@ -41,6 +44,15 @@ importers: happy-dom: specifier: ^18.0.1 version: 18.0.1 + husky: + specifier: ^9.1.7 + version: 9.1.7 + jsonc-eslint-parser: + specifier: ^2.4.1 + version: 2.4.1 + lint-staged: + specifier: ^16.1.6 + version: 16.1.6 vitest: specifier: ^3.2.4 version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) @@ -2861,6 +2873,9 @@ packages: '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/concat-stream@2.0.3': + resolution: {integrity: sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -2888,6 +2903,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/is-empty@1.2.3': + resolution: {integrity: sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2912,6 +2930,9 @@ packages: '@types/node@20.19.17': resolution: {integrity: sha512-gfehUI8N1z92kygssiuWvLiwcbOB3IRktR6hTDgJlXMYh5OvkPSRmgfoBUmfZt+vhwJtX7v1Yw4KvvAf7c5QKQ==} + '@types/node@22.18.6': + resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} + '@types/node@24.5.2': resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} @@ -2946,6 +2967,9 @@ packages: '@types/stylis@4.2.7': resolution: {integrity: sha512-VgDNokpBoKF+wrdvhAAfS55OMQpL6QRglwTwNC3kIgBrzZxA4WsFj+2eLfEA/uMUDzBcEhYmjSbwQakn/i3ajA==} + '@types/supports-color@8.1.3': + resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -3490,6 +3514,10 @@ packages: '@zag-js/utils@1.24.1': resolution: {integrity: sha512-4nU9lfFlLLW/4T+/HaP+HdHYFeWvacxSVcccv0JSf+ZTC110IldV48kZELP+wFg9xDL/jCPPjlRtO1K64EIwgA==} + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + acorn-import-phases@1.0.4: resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} @@ -3554,6 +3582,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@7.1.0: + resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3791,6 +3823,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -3835,6 +3871,18 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.3.0: + resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@5.1.0: + resolution: {integrity: sha512-7JDGG+4Zp0CsknDCedl0DYdaeOhc46QNpXi3NLQblkZpXXgA6LncLDUUyvrjSvZeF3VRQa+KiMGomazQrC1V8g==} + engines: {node: '>=20'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -3861,12 +3909,19 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@14.0.1: + resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} + engines: {node: '>=20'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -3879,6 +3934,10 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -4038,6 +4097,10 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -4069,6 +4132,9 @@ packages: electron-to-chromium@1.5.222: resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4091,6 +4157,13 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -4319,6 +4392,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -4372,6 +4449,9 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -4667,6 +4747,11 @@ packages: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + iconv-lite@0.7.0: resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} @@ -4675,6 +4760,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@6.0.2: + resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} + engines: {node: '>= 4'} + ignore@7.0.5: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} @@ -4687,6 +4776,9 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -4773,6 +4865,9 @@ packages: engines: {node: '>=8'} hasBin: true + is-empty@1.2.0: + resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4785,6 +4880,10 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -4877,6 +4976,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -4948,6 +5051,10 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4966,6 +5073,10 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-eslint-parser@2.4.1: + resolution: {integrity: sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -5136,6 +5247,22 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lint-staged@16.1.6: + resolution: {integrity: sha512-U4kuulU3CKIytlkLlaHcGgKscNfJPNTiDF2avIUGFCv7K95/DCYQ7Ra62ydeRWmgQGg9zJYw2dzdbztwJlqrow==} + engines: {node: '>=20.17'} + hasBin: true + + listr2@9.0.4: + resolution: {integrity: sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ==} + engines: {node: '>=20.0.0'} + + load-plugin@6.0.3: + resolution: {integrity: sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -5181,6 +5308,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -5425,6 +5556,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -5481,6 +5616,10 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + nano-spawn@1.0.3: + resolution: {integrity: sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA==} + engines: {node: '>=20.17'} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5531,6 +5670,31 @@ packages: node-releases@2.0.21: resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-pick-manifest@9.1.0: + resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} + engines: {node: ^16.14.0 || >=18.0.0} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5647,6 +5811,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -5705,6 +5873,11 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -5824,6 +5997,22 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -5910,10 +6099,18 @@ packages: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -6028,6 +6225,14 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -6056,6 +6261,10 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -6162,6 +6371,10 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -6190,6 +6403,18 @@ packages: spawndamnit@3.0.1: resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -6253,6 +6478,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -6319,6 +6547,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -6466,6 +6698,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -6482,6 +6718,9 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typescript-eslint@8.44.0: resolution: {integrity: sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6542,9 +6781,15 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unified-engine@11.2.2: + resolution: {integrity: sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unist-util-inspect@8.1.0: + resolution: {integrity: sha512-mOlg8Mp33pR0eeFpo5d2902ojqFFOKMMG2hF8bmH7ZlhnmjFgh0NI3/ZDwdaBJNbvrS7LZFVrBVtIE9KZ9s7vQ==} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -6593,9 +6838,30 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + vfile-reporter@8.1.1: + resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==} + + vfile-sort@4.0.0: + resolution: {integrity: sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==} + + vfile-statistics@3.0.0: + resolution: {integrity: sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==} + vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -6684,6 +6950,9 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + watchpack@2.4.4: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} @@ -6733,6 +7002,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -9303,6 +9577,10 @@ snapshots: dependencies: '@types/deep-eql': 4.0.2 + '@types/concat-stream@2.0.3': + dependencies: + '@types/node': 24.5.2 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -9335,6 +9613,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/is-empty@1.2.3': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -9355,6 +9635,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@22.18.6': + dependencies: + undici-types: 6.21.0 + '@types/node@24.5.2': dependencies: undici-types: 7.12.0 @@ -9387,6 +9671,8 @@ snapshots: '@types/stylis@4.2.7': {} + '@types/supports-color@8.1.3': {} + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -10350,6 +10636,8 @@ snapshots: '@zag-js/utils@1.24.1': {} + abbrev@2.0.0: {} + acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -10409,6 +10697,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@7.1.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -10682,6 +10974,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@1.1.4: {} @@ -10710,6 +11004,17 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.3.0: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@5.1.0: + dependencies: + slice-ansi: 7.1.2 + string-width: 8.1.0 + client-only@0.0.1: {} cliui@6.0.0: @@ -10732,10 +11037,14 @@ snapshots: color-name@1.1.4: {} + colorette@2.0.20: {} + comma-separated-tokens@1.0.8: {} comma-separated-tokens@2.0.3: {} + commander@14.0.1: {} + commander@2.20.3: {} common-path-prefix@3.0.0: {} @@ -10744,6 +11053,13 @@ snapshots: concat-map@0.0.1: {} + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + confbox@0.1.8: {} confbox@0.2.2: {} @@ -10881,6 +11197,8 @@ snapshots: dependencies: dequal: 2.0.3 + diff@5.2.0: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -10912,6 +11230,8 @@ snapshots: electron-to-chromium@1.5.222: {} + emoji-regex@10.5.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -10930,6 +11250,10 @@ snapshots: entities@4.5.0: {} + environment@1.1.0: {} + + err-code@2.0.3: {} + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -11366,6 +11690,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} esquery@1.6.0: @@ -11422,6 +11752,8 @@ snapshots: '@types/node': 24.5.2 require-like: 0.1.2 + eventemitter3@5.0.1: {} + events@3.3.0: {} expect-type@1.2.2: {} @@ -11768,12 +12100,16 @@ snapshots: human-id@4.1.1: {} + husky@9.1.7: {} + iconv-lite@0.7.0: dependencies: safer-buffer: 2.1.2 ignore@5.3.2: {} + ignore@6.0.2: {} + ignore@7.0.5: {} import-fresh@3.3.1: @@ -11783,6 +12119,8 @@ snapshots: import-lazy@4.0.0: {} + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -11872,6 +12210,8 @@ snapshots: is-docker@2.2.1: {} + is-empty@1.2.0: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -11880,6 +12220,10 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.4.0 + is-generator-function@1.1.0: dependencies: call-bound: 1.0.4 @@ -11963,6 +12307,8 @@ snapshots: isexe@2.0.0: {} + isexe@3.1.1: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -12036,6 +12382,8 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-parse-even-better-errors@3.0.2: {} + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -12048,6 +12396,13 @@ snapshots: json5@2.2.3: {} + jsonc-eslint-parser@2.4.1: + dependencies: + acorn: 8.15.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.7.2 + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -12176,6 +12531,39 @@ snapshots: lines-and-columns@1.2.4: {} + lines-and-columns@2.0.4: {} + + lint-staged@16.1.6: + dependencies: + chalk: 5.6.2 + commander: 14.0.1 + debug: 4.4.3 + lilconfig: 3.1.3 + listr2: 9.0.4 + micromatch: 4.0.8 + nano-spawn: 1.0.3 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.8.1 + transitivePeerDependencies: + - supports-color + + listr2@9.0.4: + dependencies: + cli-truncate: 5.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + load-plugin@6.0.3: + dependencies: + '@npmcli/config': 8.3.4 + import-meta-resolve: 4.2.0 + transitivePeerDependencies: + - bluebird + loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -12216,6 +12604,14 @@ snapshots: lodash@4.17.21: {} + log-update@6.1.0: + dependencies: + ansi-escapes: 7.1.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + longest-streak@3.1.0: {} look-it-up@2.1.0: {} @@ -12723,6 +13119,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-function@5.0.1: {} + min-indent@1.0.1: {} minimatch@10.0.3: @@ -12768,6 +13166,8 @@ snapshots: muggle-string@0.4.1: {} + nano-spawn@1.0.3: {} + nanoid@3.3.11: {} napi-postinstall@0.3.3: {} @@ -12810,6 +13210,36 @@ snapshots: node-releases@2.0.21: {} + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + npm-install-checks@6.3.0: + dependencies: + semver: 7.7.2 + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@11.0.3: + dependencies: + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.7.2 + validate-npm-package-name: 5.0.1 + + npm-pick-manifest@9.1.0: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.3 + semver: 7.7.2 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -12953,6 +13383,14 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@7.1.1: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 + json-parse-even-better-errors: 3.0.2 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -12991,6 +13429,8 @@ snapshots: picomatch@4.0.3: {} + pidtree@0.6.0: {} + pify@4.0.1: {} pkg-dir@7.0.0: @@ -13103,6 +13543,15 @@ snapshots: prismjs@1.30.0: {} + proc-log@4.2.0: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -13212,6 +13661,11 @@ snapshots: react@19.1.1: {} + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.2 + npm-normalize-package-bin: 3.0.1 + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -13219,6 +13673,12 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + readdirp@4.1.2: {} recast@0.23.11: @@ -13396,6 +13856,13 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + retry@0.12.0: {} + reusify@1.1.0: {} rgb-regex@1.0.1: {} @@ -13444,6 +13911,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 + sade@1.8.1: + dependencies: + mri: 1.2.0 + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -13592,6 +14063,11 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -13614,6 +14090,20 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.22 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 + + spdx-license-ids@3.0.22: {} + sprintf-js@1.0.3: {} stable-hash@0.0.5: {} @@ -13717,6 +14207,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -13774,6 +14268,8 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@9.4.0: {} + supports-preserve-symlinks-flag@1.0.0: {} synckit@0.11.11: @@ -13906,6 +14402,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@3.13.1: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -13984,6 +14482,33 @@ snapshots: unicorn-magic@0.1.0: {} + unified-engine@11.2.2: + dependencies: + '@types/concat-stream': 2.0.3 + '@types/debug': 4.1.12 + '@types/is-empty': 1.2.3 + '@types/node': 22.18.6 + '@types/unist': 3.0.3 + concat-stream: 2.0.0 + debug: 4.4.3 + extend: 3.0.2 + glob: 10.4.5 + ignore: 6.0.2 + is-empty: 1.2.0 + is-plain-obj: 4.1.0 + load-plugin: 6.0.3 + parse-json: 7.1.1 + trough: 2.2.0 + unist-util-inspect: 8.1.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + vfile-reporter: 8.1.1 + vfile-statistics: 3.0.0 + yaml: 2.8.1 + transitivePeerDependencies: + - bluebird + - supports-color + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -13994,6 +14519,10 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unist-util-inspect@8.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -14080,11 +14609,46 @@ snapshots: util-deprecate@1.0.2: {} + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.1: {} + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 + vfile-reporter@8.1.1: + dependencies: + '@types/supports-color': 8.1.3 + string-width: 6.1.0 + supports-color: 9.4.0 + unist-util-stringify-position: 4.0.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + vfile-sort: 4.0.0 + vfile-statistics: 3.0.0 + + vfile-sort@4.0.0: + dependencies: + vfile: 6.0.3 + vfile-message: 4.0.3 + + vfile-statistics@3.0.0: + dependencies: + vfile: 6.0.3 + vfile-message: 4.0.3 + vfile@6.0.3: dependencies: '@types/unist': 3.0.3 @@ -14144,6 +14708,7 @@ snapshots: jiti: 2.5.1 lightningcss: 1.30.1 terser: 5.44.0 + yaml: 2.8.1 vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0): dependencies: @@ -14190,6 +14755,8 @@ snapshots: vscode-uri@3.1.0: {} + walk-up-path@3.0.1: {} + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 @@ -14280,6 +14847,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@4.0.0: + dependencies: + isexe: 3.1.1 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 From 67754ecbe46a51775a476c147413953ad13e75ef Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sun, 21 Sep 2025 17:15:05 +0900 Subject: [PATCH 09/59] Add pre-commit, lintstaged --- .husky/pre-commit | 4 ++++ .lintstagedrc.mjs | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 .husky/pre-commit create mode 100644 .lintstagedrc.mjs diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..e9a388c2 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm lint-staged \ No newline at end of file diff --git a/.lintstagedrc.mjs b/.lintstagedrc.mjs new file mode 100644 index 00000000..7afc7807 --- /dev/null +++ b/.lintstagedrc.mjs @@ -0,0 +1,8 @@ +export default { + '**/*.{js,jsx,ts,tsx,mjs,md,mdx,json,json5,jsonc}': (files) => { + return [ + `npx eslint --config eslint.config.mjs --fix ${files.join(' ')}`, + `git add ${files.join(' ')}`, + ] + }, +} From 050f5d106292145ead533abfc9ff18e345d405ef Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sun, 21 Sep 2025 17:15:37 +0900 Subject: [PATCH 10/59] Add eslint config, rules --- eslint.config.mjs | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index c9f97135..2d33653c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,3 +1,38 @@ +import tsParser from '@typescript-eslint/parser' import { configs } from 'eslint-plugin-devup' +import jsonc from 'eslint-plugin-jsonc' +import * as mdx from 'eslint-plugin-mdx' +import jsonParser from 'jsonc-eslint-parser' -export default configs.recommended +export default [ + ...configs.recommended, + { + files: ['**/*.{json,json5,jsonc}'], + languageOptions: { parser: jsonParser }, + plugins: { jsonc }, + rules: { + 'prettier/prettier': 'off', + 'eol-last': ['error', 'never'], + 'no-multiple-empty-lines': ['error', { max: 0, maxEOF: 0 }], + }, + }, + { + ...mdx.flat, + files: ['**/*.{md,mdx}'], + processor: mdx.createRemarkProcessor({ + lintCodeBlocks: true, + }), + }, + { + ...mdx.flatCodeBlocks, + files: ['**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], + languageOptions: { parser: tsParser }, + rules: { + ...mdx.flatCodeBlocks.rules, + 'react/jsx-no-undef': 'off', + semi: ['error', 'never'], + quotes: ['error', 'single', { avoidEscape: true }], + 'react/jsx-tag-spacing': ['error', { beforeClosing: 'never' }], + }, + }, +] From 95454324ec5f4abba9824f510848664d056ae09e Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sun, 21 Sep 2025 17:15:50 +0900 Subject: [PATCH 11/59] Fix markdown codeblock parsing error --- .../src/app/(detail)/docs/features/page.mdx | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/apps/landing/src/app/(detail)/docs/features/page.mdx b/apps/landing/src/app/(detail)/docs/features/page.mdx index d992a3ba..f5bcddb8 100644 --- a/apps/landing/src/app/(detail)/docs/features/page.mdx +++ b/apps/landing/src/app/(detail)/docs/features/page.mdx @@ -16,11 +16,10 @@ Devup UI eliminates the performance degradation of the browser through the CSS i We develop a preprocessor that considers all grammatical cases. - ## How it works -```typescript -const before = +```tsx +const before = const after =
``` @@ -29,8 +28,8 @@ const after =
Devup UI supports responsive design. -```typescript -const before = +```tsx +const before = const after =
``` @@ -39,12 +38,17 @@ const after =
Devup UI supports variables. -```typescript +```tsx const before = -const after =
+const after = ( +
+) ``` ## Theme @@ -66,29 +70,33 @@ Devup UI supports theme. } ``` -```typescript - +```tsx + ``` ## Expressions Devup UI supports expressions. -```typescript -const before = b ? "yellow" : variable}/> - -const after = b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable} /> + +const after = ( + b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` ## Pseudo Selector Devup UI supports pseudo selector. -```typescript -const before = +```tsx +const before = -const after = +const after = ``` - From 40dd0b3954cef20484438db96d4c5f18fb50c175 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sat, 27 Sep 2025 20:08:08 +0900 Subject: [PATCH 12/59] Fix docs markdown parsing error --- README.md | 83 ++-- README_ko.md | 81 ++-- .../src/app/(detail)/docs/api/box/page.mdx | 8 +- .../src/app/(detail)/docs/api/button/page.mdx | 4 +- .../src/app/(detail)/docs/api/center/page.mdx | 14 +- .../src/app/(detail)/docs/api/css/page.mdx | 7 +- .../src/app/(detail)/docs/api/flex/page.mdx | 2 +- .../src/app/(detail)/docs/api/grid/page.mdx | 11 +- .../(detail)/docs/api/group-selector/page.mdx | 2 +- .../src/app/(detail)/docs/api/image/page.mdx | 4 +- .../src/app/(detail)/docs/api/input/page.mdx | 4 +- .../src/app/(detail)/docs/api/text/page.mdx | 4 +- .../app/(detail)/docs/api/v-stack/page.mdx | 8 +- .../(detail)/docs/devup/breakpoints/page.mdx | 4 +- .../app/(detail)/docs/devup/colors/page.mdx | 8 +- .../(detail)/docs/devup/typography/page.mdx | 2 +- libs/extractor/README.md | 21 +- packages/components/README.md | 77 ++-- packages/next-plugin/README.md | 77 ++-- packages/react/README.md | 77 ++-- packages/reset-css/README.md | 77 ++-- packages/rsbuild-plugin/README.md | 77 ++-- packages/vite-plugin/README.md | 77 ++-- packages/webpack-plugin/README.md | 77 ++-- pnpm-lock.yaml | 423 ++++++++++++++---- 25 files changed, 795 insertions(+), 434 deletions(-) diff --git a/README.md b/README.md index 5f2aa52f..3216e93c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,36 +148,40 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` ## How to Contribute ### Requirements + - [Node.js](https://nodejs.org) (LTS version recommended) - [Rust](https://rustup.rs) compiler - pnpm package manager (`npm install -g pnpm`) ### Development Setup + To set up the development environment, install the following packages: + ```sh pnpm i pnpm build cargo install cargo-tarpaulin cargo install wasm-pack ``` -After installation, run `pnpm test` to ensure everything works correctly. \ No newline at end of file + +After installation, run `pnpm test` to ensure everything works correctly. diff --git a/README_ko.md b/README_ko.md index 82ad08a1..699664a5 100644 --- a/README_ko.md +++ b/README_ko.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -70,17 +69,17 @@ npm install @devup-ui/vite-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| 라이브러리 | 버전 | 빌드 시간 | 빌드 사이즈 | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| 라이브러리 | 버전 | 빌드 시간 | 빌드 사이즈 | +| ---------------------- | ------ | --------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## 작동 원리 @@ -88,30 +87,40 @@ Devup UI는 런타임이 필요 없는 CSS in JS 전처리기입니다. Devup UI는 CSS in JS 전처리기를 통하여 브라우저의 성능 저하를 원천적으로 제거합니다. 모든 문법적 경우의 수를 고려하여 전처리기를 개발합니다. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` 변수 사용도 완전히 지원합니다. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` 다양한 표현식과 반응형도 모두 지원합니다. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` 타이핑이 되는 테마를 지원합니다. @@ -133,36 +142,40 @@ const after =
b ? "d2" : "d3"}`} style={{ } ``` -```typescript +```tsx // Type Safe - + ``` 반응형과 가상 선택자도 지원합니다. 물론 동시 사용도 가능합니다. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` ## 기여 방법 ### 요구 사항 + - [Node.js](https://nodejs.org) (LTS 버전 권장) - [Rust](https://rustup.rs) 컴파일러 - pnpm 패키지 매니저 (`npm install -g pnpm`) ### 개발 환경 설정 + 개발 환경을 위해 아래 패키지들을 설치합니다: + ```sh pnpm i pnpm build cargo install cargo-tarpaulin cargo install wasm-pack ``` + 설치 후 `pnpm test`를 실행하여 문제가 없는지 확인합니다. diff --git a/apps/landing/src/app/(detail)/docs/api/box/page.mdx b/apps/landing/src/app/(detail)/docs/api/box/page.mdx index acccf98b..3ace3fba 100644 --- a/apps/landing/src/app/(detail)/docs/api/box/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/box/page.mdx @@ -14,16 +14,16 @@ It is just a `div` with some styles. ## How to use -```typescript -const before = +```tsx +const before = const after =
``` You can use the `as` prop to change the element type. -```typescript -const before = +```tsx +const before = const after = ``` diff --git a/apps/landing/src/app/(detail)/docs/api/button/page.mdx b/apps/landing/src/app/(detail)/docs/api/button/page.mdx index a3e6c762..5b517db8 100644 --- a/apps/landing/src/app/(detail)/docs/api/button/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/button/page.mdx @@ -12,8 +12,8 @@ The `Button` component is a simple button component that can be used to trigger ## How to use -```typescript -const before =
) -```` +``` diff --git a/apps/landing/src/app/(detail)/docs/api/css/page.mdx b/apps/landing/src/app/(detail)/docs/api/css/page.mdx index 792a1f73..045b5110 100644 --- a/apps/landing/src/app/(detail)/docs/api/css/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/css/page.mdx @@ -17,7 +17,7 @@ export const metadata = { You can use `css` as a tag function to create a css string. Pass in a string of css properties as an argument, ans it will be converted into a class list. -```typescript +```tsx const before = (
) -const after = - +const after = ``` ### CSS Object You can also use the css function by passing in a css object as an argument. -```typescript +```tsx const before = ( const after =
diff --git a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx index fe86b9a8..a93bf9c5 100644 --- a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx @@ -14,12 +14,12 @@ It has a `display: grid` style by default. ## How to use -````typescript +```tsx const before = ( - - - + + + ) @@ -30,5 +30,4 @@ const after = (
) - ``` -```` +``` diff --git a/apps/landing/src/app/(detail)/docs/api/group-selector/page.mdx b/apps/landing/src/app/(detail)/docs/api/group-selector/page.mdx index bacf5e92..a9630224 100644 --- a/apps/landing/src/app/(detail)/docs/api/group-selector/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/group-selector/page.mdx @@ -12,7 +12,7 @@ The `group` selector is used to apply styles to a group of elements. It is used ## How to use -```typescript +```tsx const group = (
diff --git a/apps/landing/src/app/(detail)/docs/api/image/page.mdx b/apps/landing/src/app/(detail)/docs/api/image/page.mdx index af21b6ea..7f1be76b 100644 --- a/apps/landing/src/app/(detail)/docs/api/image/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/image/page.mdx @@ -14,8 +14,8 @@ It is just a `img` with some styles. ## How to use -```typescript -const before = +```tsx +const before = const after = ``` diff --git a/apps/landing/src/app/(detail)/docs/api/input/page.mdx b/apps/landing/src/app/(detail)/docs/api/input/page.mdx index 0fc38e63..61d25259 100644 --- a/apps/landing/src/app/(detail)/docs/api/input/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/input/page.mdx @@ -14,8 +14,8 @@ It is just a `input` with some styles. ## How to use -```typescript -const before = +```tsx +const before = const after = ``` diff --git a/apps/landing/src/app/(detail)/docs/api/text/page.mdx b/apps/landing/src/app/(detail)/docs/api/text/page.mdx index 965e7e1d..ec1addf4 100644 --- a/apps/landing/src/app/(detail)/docs/api/text/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/text/page.mdx @@ -14,8 +14,8 @@ It is just a `span` with some styles. ## How to use -```typescript -const before = This is Text component. +```tsx +const before = This is Text component. const after = This is Text component. ``` diff --git a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx index de54b927..1f0e9cfb 100644 --- a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx @@ -14,12 +14,12 @@ It has a `display: flex` style with `flex-direction: column`. ## How to use -```typescript +```tsx const before = ( - - - + + + ) diff --git a/apps/landing/src/app/(detail)/docs/devup/breakpoints/page.mdx b/apps/landing/src/app/(detail)/docs/devup/breakpoints/page.mdx index 1b84e2d9..86d981a3 100644 --- a/apps/landing/src/app/(detail)/docs/devup/breakpoints/page.mdx +++ b/apps/landing/src/app/(detail)/docs/devup/breakpoints/page.mdx @@ -19,9 +19,9 @@ value in the array are listed below: ## How to use -```typescript +```tsx const box = ( - + Hello ) diff --git a/apps/landing/src/app/(detail)/docs/devup/colors/page.mdx b/apps/landing/src/app/(detail)/docs/devup/colors/page.mdx index 9e8f2e65..b6c5a76b 100644 --- a/apps/landing/src/app/(detail)/docs/devup/colors/page.mdx +++ b/apps/landing/src/app/(detail)/docs/devup/colors/page.mdx @@ -10,8 +10,8 @@ export const metadata = { You can directly pass color values to the primitive components. -```typescript -const box = +```tsx +const box = ``` But, when your project gets larger and more complicated, it could be better to use variables to style your project. @@ -32,6 +32,6 @@ Pass in the variables that you created in `devup.json`. } ``` -```typescript -const color = +```tsx +const color = ``` diff --git a/apps/landing/src/app/(detail)/docs/devup/typography/page.mdx b/apps/landing/src/app/(detail)/docs/devup/typography/page.mdx index acd2ada9..6af20504 100644 --- a/apps/landing/src/app/(detail)/docs/devup/typography/page.mdx +++ b/apps/landing/src/app/(detail)/docs/devup/typography/page.mdx @@ -23,6 +23,6 @@ You can create a typography theme in your `devup.json` file and pass variables t } ``` -```typescript +```tsx const text = Hello ``` diff --git a/libs/extractor/README.md b/libs/extractor/README.md index 6db1c299..9f43037e 100644 --- a/libs/extractor/README.md +++ b/libs/extractor/README.md @@ -6,19 +6,22 @@ jsx to css extractor Before -```typescript - - Hello World +```tsx + + Hello World ``` After -```typescript - - Hello World +```tsx + + Hello World ``` @@ -30,4 +33,4 @@ graph TD ExtractStyleValue --> GenCssFile; ExtractStyleValue --> EditCode; ExtractStyleProp --> EditCode; -``` \ No newline at end of file +``` diff --git a/packages/components/README.md b/packages/components/README.md index d8a0f189..d84355a5 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/packages/next-plugin/README.md b/packages/next-plugin/README.md index d8a0f189..d84355a5 100644 --- a/packages/next-plugin/README.md +++ b/packages/next-plugin/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/packages/react/README.md b/packages/react/README.md index d8a0f189..d84355a5 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/packages/reset-css/README.md b/packages/reset-css/README.md index d8a0f189..d84355a5 100644 --- a/packages/reset-css/README.md +++ b/packages/reset-css/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/packages/rsbuild-plugin/README.md b/packages/rsbuild-plugin/README.md index d8a0f189..d84355a5 100644 --- a/packages/rsbuild-plugin/README.md +++ b/packages/rsbuild-plugin/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index d8a0f189..d84355a5 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index d8a0f189..d84355a5 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -2,7 +2,6 @@ Devup UI logo
-

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

@@ -23,8 +22,8 @@ Discord - - + +
@@ -76,17 +75,17 @@ npm install @devup-ui/webpack-plugin Next.js Build Time and Build Size (github action - ubuntu-latest) -| Library | Version | Build Time | Build Size | -|--------------------------|----------|------------|-------------------| -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +| Library | Version | Build Time | Build Size | +| ---------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | +| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | +| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | +| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | +| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | +| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | +| mui | 7.3.2 | 22.21s | 94,231,958 bytes | +| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | +| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | ## How it works @@ -94,30 +93,40 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. -```typescript -const before = +```tsx +const before = -const after =
+const after =
``` Variables are fully supported. -```typescript -const before = - -const after =
+```tsx +const before = + +const after = ( +
+) ``` Various expressions and responsiveness are also fully supported. -```typescript -const before = b ? "yellow" : variable]}/> - -const after =
b ? "d2" : "d3"}`} style={{ - "--d2": variable -}}/> +```tsx +const before = b ? 'yellow' : variable]} /> + +const after = ( +
b ? 'd2' : 'd3'}`} + style={{ + '--d2': variable, + }} + /> +) ``` Support Theme with Typing @@ -139,19 +148,19 @@ Support Theme with Typing } ``` -```typescript +```tsx // Type Safe - + ``` Support Responsive And Pseudo Selector You can use responsive and pseudo selector. -```typescript +```tsx // Responsive with Selector -const box = +const box = // Same -const box = +const box = ``` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad51eefa..bf4bd5a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,16 +31,22 @@ importers: version: 24.5.2 '@typescript-eslint/parser': specifier: ^8.44.0 - version: 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + version: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) eslint: - specifier: ^9.36.0 + specifier: ^9.35.0 version: 9.36.0(jiti@2.5.1) eslint-plugin-devup: specifier: ^2.0.5 version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-jsonc: + specifier: ^2.20.1 + version: 2.20.1(eslint@9.36.0(jiti@2.5.1)) + eslint-plugin-mdx: + specifier: ^3.6.2 + version: 3.6.2(eslint@9.36.0(jiti@2.5.1)) happy-dom: specifier: ^18.0.1 version: 18.0.1 @@ -55,7 +61,7 @@ importers: version: 16.1.6 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) apps/landing: dependencies: @@ -218,13 +224,13 @@ importers: version: 19.1.9(@types/react@19.1.13) '@vitejs/plugin-react': specifier: ^5.0.3 - version: 5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) apps/vite-lib: dependencies: @@ -246,16 +252,16 @@ importers: version: 19.1.13 '@vitejs/plugin-react': specifier: ^5.0.3 - version: 5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) benchmark/next-chakra-ui: dependencies: @@ -621,37 +627,37 @@ importers: version: link:../vite-plugin '@storybook/addon-docs': specifier: ^9.1.7 - version: 9.1.7(@types/react@19.1.13)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))) + version: 9.1.7(@types/react@19.1.13)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/addon-onboarding': specifier: ^9.1.7 - version: 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))) + version: 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/react-vite': specifier: ^9.1.7 - version: 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@types/react': specifier: ^19.1.13 version: 19.1.13 eslint-plugin-storybook: specifier: ^9.1.7 - version: 9.1.7(eslint@9.36.0(jiti@2.5.1))(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(typescript@5.9.2) + version: 9.1.7(eslint@9.36.0(jiti@2.5.1))(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) rollup-plugin-preserve-directives: specifier: ^0.4.0 version: 0.4.0(rollup@4.51.0) storybook: specifier: ^9.1.7 - version: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5.9.2 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/next-plugin: dependencies: @@ -673,13 +679,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/react: dependencies: @@ -701,10 +707,10 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/reset-css: dependencies: @@ -720,10 +726,10 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/rsbuild-plugin: dependencies: @@ -739,13 +745,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/vite-plugin: dependencies: @@ -754,14 +760,14 @@ importers: version: link:../../bindings/devup-ui-wasm vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) devDependencies: typescript: specifier: ^5.9.2 version: 5.9.2 vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/webpack-plugin: dependencies: @@ -777,13 +783,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages: @@ -2332,6 +2338,30 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@npmcli/config@8.3.4': + resolution: {integrity: sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/git@5.0.8': + resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/map-workspaces@3.0.6': + resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/name-from-folder@2.0.0': + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/package-json@5.2.1': + resolution: {integrity: sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/promise-spawn@7.0.2': + resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} + engines: {node: ^16.14.0 || >=18.0.0} + '@pandacss/config@1.3.1': resolution: {integrity: sha512-Q58Q40JvVyZSruX3jthoJMsUv80Q0g2Aug0Q4OKSaqxLV3MXh3gW8KN0qztVp4kSS+sURShh8qPd6Ucjp5YXPA==} @@ -4242,6 +4272,12 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + eslint-config-next@15.5.3: resolution: {integrity: sha512-e6j+QhQFOr5pfsc8VJbuTD9xTXJaRvMHYjEeLPA2pFkheNlgPLCkxdvhxhfuM4KGcqSZj2qEnpHisdTVs3BxuQ==} peerDependencies: @@ -4273,6 +4309,27 @@ packages: eslint-plugin-import-x: optional: true + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-mdx@3.6.2: + resolution: {integrity: sha512-5hczn5iSSEcwtNtVXFwCKIk6iLEDaZpwc3vjYDl/B779OzaAAK/ou16J2xVdO6ecOLEO1WZqp7MRCQ/WsKDUig==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: '>=8.0.0' + remark-lint-file-extension: '*' + peerDependenciesMeta: + remark-lint-file-extension: + optional: true + eslint-module-utils@2.12.1: resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} @@ -4309,12 +4366,24 @@ packages: '@typescript-eslint/parser': optional: true + eslint-plugin-jsonc@2.20.1: + resolution: {integrity: sha512-gUzIwQHXx7ZPypUoadcyRi4WbHW2TPixDr0kqQ4miuJBU0emJmyGTlnaT3Og9X2a8R1CDayN9BFSq5weGWbTng==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + eslint-plugin-jsx-a11y@6.10.2: resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + eslint-plugin-mdx@3.6.2: + resolution: {integrity: sha512-RfMd5HYD/9+cqANhVWJbuBRg3huWUsAoGJNGmPsyiRD2X6BaG6bvt1omyk1ORlg81GK8ST7Ojt5fNAuwWhWU8A==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: '>=8.0.0' + eslint-plugin-prettier@5.5.4: resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4602,6 +4671,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -4728,6 +4801,10 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + hsl-regex@1.0.0: resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} @@ -4794,6 +4871,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} @@ -5244,6 +5325,10 @@ packages: resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -5734,6 +5819,10 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -6237,6 +6326,9 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} @@ -6455,6 +6547,18 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.1.0: + resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} + engines: {node: '>=20'} + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} @@ -7032,6 +7136,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -7068,6 +7176,11 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -8529,12 +8642,12 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: glob: 10.4.5 magic-string: 0.30.19 react-docgen-typescript: 2.4.0(typescript@5.9.2) - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) optionalDependencies: typescript: 5.9.2 @@ -8908,6 +9021,58 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@npmcli/config@8.3.4': + dependencies: + '@npmcli/map-workspaces': 3.0.6 + '@npmcli/package-json': 5.2.1 + ci-info: 4.3.0 + ini: 4.1.3 + nopt: 7.2.1 + proc-log: 4.2.0 + semver: 7.7.2 + walk-up-path: 3.0.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/git@5.0.8': + dependencies: + '@npmcli/promise-spawn': 7.0.2 + ini: 4.1.3 + lru-cache: 10.4.3 + npm-pick-manifest: 9.1.0 + proc-log: 4.2.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.7.2 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + + '@npmcli/map-workspaces@3.0.6': + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.4.5 + minimatch: 9.0.5 + read-package-json-fast: 3.0.2 + + '@npmcli/name-from-folder@2.0.0': {} + + '@npmcli/package-json@5.2.1': + dependencies: + '@npmcli/git': 5.0.8 + glob: 10.4.5 + hosted-git-info: 7.0.2 + json-parse-even-better-errors: 3.0.2 + normalize-package-data: 6.0.2 + proc-log: 4.2.0 + semver: 7.7.2 + transitivePeerDependencies: + - bluebird + + '@npmcli/promise-spawn@7.0.2': + dependencies: + which: 4.0.0 + '@pandacss/config@1.3.1': dependencies: '@pandacss/logger': 1.3.1 @@ -9274,33 +9439,33 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@storybook/addon-docs@9.1.7(@types/react@19.1.13)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))': + '@storybook/addon-docs@9.1.7(@types/react@19.1.13)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.1.13)(react@19.1.1) - '@storybook/csf-plugin': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))) + '@storybook/csf-plugin': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/icons': 1.6.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@storybook/react-dom-shim': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))) + '@storybook/react-dom-shim': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-onboarding@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))': + '@storybook/addon-onboarding@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/builder-vite@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': + '@storybook/builder-vite@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: - '@storybook/csf-plugin': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + '@storybook/csf-plugin': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) - '@storybook/csf-plugin@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))': + '@storybook/csf-plugin@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -9310,39 +9475,39 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/react-dom-shim@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))': + '@storybook/react-dom-shim@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/react-vite@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': + '@storybook/react-vite@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@rollup/pluginutils': 5.3.0(rollup@4.51.0) - '@storybook/builder-vite': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) - '@storybook/react': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(typescript@5.9.2) + '@storybook/builder-vite': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/react': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) find-up: 7.0.0 magic-string: 0.30.19 react: 19.1.1 react-docgen: 8.0.1 react-dom: 19.1.1(react@19.1.1) resolve: 1.22.10 - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) tsconfig-paths: 4.2.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(typescript@5.9.2)': + '@storybook/react@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))) + '@storybook/react-dom-shim': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) optionalDependencies: typescript: 5.9.2 @@ -9905,7 +10070,7 @@ snapshots: - babel-plugin-macros - supports-color - '@vitejs/plugin-react@5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': + '@vitejs/plugin-react@5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -9913,11 +10078,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.35 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -9932,7 +10097,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -9944,13 +10109,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': + '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -11448,6 +11613,11 @@ snapshots: escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.6.5(eslint@9.36.0(jiti@2.5.1)): + dependencies: + eslint: 9.36.0(jiti@2.5.1) + semver: 7.7.2 + eslint-config-next@15.5.3(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2): dependencies: '@next/eslint-plugin-next': 15.5.3 @@ -11495,6 +11665,32 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-json-compat-utils@0.2.1(eslint@9.36.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.1): + dependencies: + eslint: 9.36.0(jiti@2.5.1) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.1 + + eslint-mdx@3.6.2(eslint@9.36.0(jiti@2.5.1)): + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint: 9.36.0(jiti@2.5.1) + espree: 10.4.0 + estree-util-visit: 2.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.11.11 + unified: 11.0.5 + unified-engine: 11.2.2 + unist-util-visit: 5.0.0 + uvu: 0.5.6 + vfile: 6.0.3 + transitivePeerDependencies: + - bluebird + - supports-color + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)): dependencies: debug: 3.2.7 @@ -11554,6 +11750,20 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-jsonc@2.20.1(eslint@9.36.0(jiti@2.5.1)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) + eslint: 9.36.0(jiti@2.5.1) + eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.5.1)) + eslint-json-compat-utils: 0.2.1(eslint@9.36.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.1) + espree: 10.4.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.1 + natural-compare: 1.4.0 + synckit: 0.11.11 + transitivePeerDependencies: + - '@eslint/json' + eslint-plugin-jsx-a11y@6.10.2(eslint@9.36.0(jiti@2.5.1)): dependencies: aria-query: 5.3.2 @@ -11573,6 +11783,24 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 + eslint-plugin-mdx@3.6.2(eslint@9.36.0(jiti@2.5.1)): + dependencies: + eslint: 9.36.0(jiti@2.5.1) + eslint-mdx: 3.6.2(eslint@9.36.0(jiti@2.5.1)) + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.11.11 + unified: 11.0.5 + vfile: 6.0.3 + transitivePeerDependencies: + - bluebird + - remark-lint-file-extension + - supports-color + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.5.1)))(eslint@9.36.0(jiti@2.5.1))(prettier@3.6.2): dependencies: eslint: 9.36.0(jiti@2.5.1) @@ -11613,11 +11841,11 @@ snapshots: dependencies: eslint: 9.36.0(jiti@2.5.1) - eslint-plugin-storybook@9.1.7(eslint@9.36.0(jiti@2.5.1))(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)))(typescript@5.9.2): + eslint-plugin-storybook@9.1.7(eslint@9.36.0(jiti@2.5.1))(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2): dependencies: '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) eslint: 9.36.0(jiti@2.5.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - typescript @@ -11904,6 +12132,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.4.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -12088,6 +12318,10 @@ snapshots: hookable@5.5.3: {} + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + hsl-regex@1.0.0: {} hsla-regex@1.0.0: {} @@ -12132,6 +12366,8 @@ snapshots: inherits@2.0.4: {} + ini@4.1.3: {} + inline-style-parser@0.2.4: {} internal-slot@1.1.0: @@ -12529,6 +12765,8 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.1 lightningcss-win32-x64-msvc: 1.30.1 + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} lines-and-columns@2.0.4: {} @@ -13288,6 +13526,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -13865,6 +14107,8 @@ snapshots: reusify@1.1.0: {} + rfdc@1.4.1: {} + rgb-regex@1.0.1: {} rgba-regex@1.0.0: {} @@ -14119,13 +14363,13 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)): + storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.8.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.10 @@ -14157,6 +14401,23 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.2 + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.5.0 + strip-ansi: 7.1.2 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.5.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + string-width@8.1.0: + dependencies: + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.8 @@ -14437,6 +14698,8 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typedarray@0.0.6: {} + typescript-eslint@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2): dependencies: '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) @@ -14654,13 +14917,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -14675,7 +14938,7 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)): + vite-plugin-dts@4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.52.13(@types/node@24.5.2) '@rollup/pluginutils': 5.3.0(rollup@4.51.0) @@ -14688,13 +14951,13 @@ snapshots: magic-string: 0.30.19 typescript: 5.9.2 optionalDependencies: - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0): + vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -14710,11 +14973,11 @@ snapshots: terser: 5.44.0 yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) + '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -14732,8 +14995,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -14878,6 +15141,12 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.2 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrappy@1.0.2: {} ws@8.18.3: {} @@ -14894,6 +15163,8 @@ snapshots: yaml@1.10.2: {} + yaml@2.8.1: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 From 1fa3e2f65ceaf70a753257c2837074431812314e Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sat, 27 Sep 2025 20:12:37 +0900 Subject: [PATCH 13/59] Fix tsconfig.json lint error --- packages/components/tsconfig.json | 2 +- packages/next-plugin/tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/components/tsconfig.json b/packages/components/tsconfig.json index 10085d46..efd7a86b 100644 --- a/packages/components/tsconfig.json +++ b/packages/components/tsconfig.json @@ -24,4 +24,4 @@ "jsx": "react-jsx" }, "include": ["src/**/*", ".storybook/**/*", "./setupTests.ts"] -} +} \ No newline at end of file diff --git a/packages/next-plugin/tsconfig.json b/packages/next-plugin/tsconfig.json index 4c6e75be..26e90a70 100644 --- a/packages/next-plugin/tsconfig.json +++ b/packages/next-plugin/tsconfig.json @@ -23,4 +23,4 @@ "baseUrl": ".", "jsx": "react-jsx" } -} +} \ No newline at end of file From 9d33222d3a904ccfca58dc262f8b55b79d02d9e6 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Sun, 28 Sep 2025 16:26:02 +0900 Subject: [PATCH 14/59] Fix eslint files scope --- eslint.config.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 2d33653c..591eaa9a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -7,7 +7,7 @@ import jsonParser from 'jsonc-eslint-parser' export default [ ...configs.recommended, { - files: ['**/*.{json,json5,jsonc}'], + files: ['src/**/*.{json,json5,jsonc}'], languageOptions: { parser: jsonParser }, plugins: { jsonc }, rules: { @@ -18,14 +18,14 @@ export default [ }, { ...mdx.flat, - files: ['**/*.{md,mdx}'], + files: ['src/**/*.{md,mdx}'], processor: mdx.createRemarkProcessor({ lintCodeBlocks: true, }), }, { ...mdx.flatCodeBlocks, - files: ['**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], + files: ['src/**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], languageOptions: { parser: tsParser }, rules: { ...mdx.flatCodeBlocks.rules, From d6f3f7adbf21120196df2b4da476742fc9675501 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 00:24:31 +0900 Subject: [PATCH 15/59] Fix eslint file scope settings --- eslint.config.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 591eaa9a..2d33653c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -7,7 +7,7 @@ import jsonParser from 'jsonc-eslint-parser' export default [ ...configs.recommended, { - files: ['src/**/*.{json,json5,jsonc}'], + files: ['**/*.{json,json5,jsonc}'], languageOptions: { parser: jsonParser }, plugins: { jsonc }, rules: { @@ -18,14 +18,14 @@ export default [ }, { ...mdx.flat, - files: ['src/**/*.{md,mdx}'], + files: ['**/*.{md,mdx}'], processor: mdx.createRemarkProcessor({ lintCodeBlocks: true, }), }, { ...mdx.flatCodeBlocks, - files: ['src/**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], + files: ['**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], languageOptions: { parser: tsParser }, rules: { ...mdx.flatCodeBlocks.rules, From 8ae6924020ecee7c825250fbe6575375c893f32d Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 00:25:59 +0900 Subject: [PATCH 16/59] Fix eslint rules for landing folder --- .../[component]/bottom-sheet/Api.mdx | 1 - .../[component]/bottom-sheet/index.mdx | 2 +- .../components/[component]/button/Api.mdx | 3 ++- .../components/[component]/checkbox/Api.mdx | 1 - .../components/[component]/checkbox/index.mdx | 2 +- .../[component]/color-picker/Api.mdx | 1 - .../[component]/color-picker/index.mdx | 2 +- .../components/[component]/confirm/Api.mdx | 1 - .../components/[component]/confirm/index.mdx | 2 +- .../[component]/date-picker/Api.mdx | 1 - .../[component]/date-picker/index.mdx | 2 +- .../components/[component]/dropdown/Api.mdx | 1 - .../components/[component]/dropdown/index.mdx | 2 +- .../components/[component]/footer/Api.mdx | 1 - .../components/[component]/footer/index.mdx | 2 +- .../components/[component]/header/Api.mdx | 1 - .../components/[component]/header/index.mdx | 2 +- .../components/[component]/input/Api.mdx | 23 +++++++++--------- .../components/[component]/input/index.mdx | 2 +- .../components/[component]/label/Api.mdx | 1 - .../components/[component]/label/index.mdx | 2 +- .../components/[component]/menu/Api.mdx | 1 - .../components/[component]/menu/index.mdx | 2 +- .../components/[component]/pagination/Api.mdx | 1 - .../[component]/pagination/index.mdx | 2 +- .../[component]/progress-bar/Api.mdx | 1 - .../[component]/progress-bar/index.mdx | 2 +- .../components/[component]/radio/Api.mdx | 1 - .../components/[component]/radio/index.mdx | 2 +- .../components/[component]/search/Api.mdx | 1 - .../components/[component]/search/index.mdx | 2 +- .../components/[component]/select/Api.mdx | 1 - .../components/[component]/select/index.mdx | 2 +- .../components/[component]/slider/Api.mdx | 1 - .../components/[component]/slider/index.mdx | 2 +- .../components/[component]/snackbar/Api.mdx | 1 - .../components/[component]/snackbar/index.mdx | 2 +- .../components/[component]/stepper/Api.mdx | 1 - .../components/[component]/stepper/index.mdx | 2 +- .../components/[component]/tab/Api.mdx | 1 - .../components/[component]/tab/index.mdx | 2 +- .../components/[component]/textarea/Api.mdx | 1 - .../components/[component]/textarea/index.mdx | 2 +- .../components/[component]/textbox/Api.mdx | 1 - .../components/[component]/textbox/index.mdx | 2 +- .../[component]/theme-button/Api.mdx | 1 - .../[component]/theme-button/index.mdx | 2 +- .../components/[component]/toggle/Api.mdx | 1 - .../components/[component]/toggle/index.mdx | 2 +- .../components/[component]/tooltip/Api.mdx | 1 - .../components/[component]/tooltip/index.mdx | 2 +- .../components/[component]/uploader/Api.mdx | 1 - .../components/[component]/uploader/index.mdx | 2 +- .../app/(detail)/docs/installation/page.mdx | 24 ++++++++++--------- .../src/app/(detail)/docs/overview/page.mdx | 9 ++++--- apps/landing/src/app/(detail)/team/page.mdx | 12 ++++------ 56 files changed, 62 insertions(+), 86 deletions(-) diff --git a/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/index.mdx b/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/index.mdx index 3e5ee7d2..45610330 100644 --- a/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/bottom-sheet/index.mdx @@ -1 +1 @@ -`Bottom Sheet` component displays content in a slide-up panel from the bottom of the screen. \ No newline at end of file +`Bottom Sheet` component displays content in a slide-up panel from the bottom of the screen. diff --git a/apps/landing/src/app/(detail)/components/[component]/button/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/button/Api.mdx index 3789d5af..c3d0a455 100644 --- a/apps/landing/src/app/(detail)/components/[component]/button/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/button/Api.mdx @@ -1,5 +1,6 @@ ###### API -`Button` props extends the button HTML attributes. + +`Button` props extends the button HTML attributes.
| Property | Description | Type | Default | diff --git a/apps/landing/src/app/(detail)/components/[component]/checkbox/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/checkbox/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/checkbox/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/checkbox/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/checkbox/index.mdx b/apps/landing/src/app/(detail)/components/[component]/checkbox/index.mdx index 58d4b2b1..15027c92 100644 --- a/apps/landing/src/app/(detail)/components/[component]/checkbox/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/checkbox/index.mdx @@ -1 +1 @@ -`Checkbox` component allows users to select multiple options. \ No newline at end of file +`Checkbox` component allows users to select multiple options. diff --git a/apps/landing/src/app/(detail)/components/[component]/color-picker/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/color-picker/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/color-picker/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/color-picker/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/color-picker/index.mdx b/apps/landing/src/app/(detail)/components/[component]/color-picker/index.mdx index 8f149a61..5ded854f 100644 --- a/apps/landing/src/app/(detail)/components/[component]/color-picker/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/color-picker/index.mdx @@ -1 +1 @@ -`Color Picker` component allows users to select colors from a color palette. \ No newline at end of file +`Color Picker` component allows users to select colors from a color palette. diff --git a/apps/landing/src/app/(detail)/components/[component]/confirm/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/confirm/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/confirm/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/confirm/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/confirm/index.mdx b/apps/landing/src/app/(detail)/components/[component]/confirm/index.mdx index 124f7fae..758b7297 100644 --- a/apps/landing/src/app/(detail)/components/[component]/confirm/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/confirm/index.mdx @@ -1 +1 @@ -`Confirm` component displays a confirmation dialog to users. \ No newline at end of file +`Confirm` component displays a confirmation dialog to users. diff --git a/apps/landing/src/app/(detail)/components/[component]/date-picker/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/date-picker/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/date-picker/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/date-picker/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/date-picker/index.mdx b/apps/landing/src/app/(detail)/components/[component]/date-picker/index.mdx index 08c07d5d..67f10706 100644 --- a/apps/landing/src/app/(detail)/components/[component]/date-picker/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/date-picker/index.mdx @@ -1 +1 @@ -`Date Picker` component allows users to select a date from a calendar interface. \ No newline at end of file +`Date Picker` component allows users to select a date from a calendar interface. diff --git a/apps/landing/src/app/(detail)/components/[component]/dropdown/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/dropdown/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/dropdown/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/dropdown/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/dropdown/index.mdx b/apps/landing/src/app/(detail)/components/[component]/dropdown/index.mdx index 7ccdce4b..2268669f 100644 --- a/apps/landing/src/app/(detail)/components/[component]/dropdown/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/dropdown/index.mdx @@ -1 +1 @@ -`Dropdown` component displays a list of options that can be toggled. \ No newline at end of file +`Dropdown` component displays a list of options that can be toggled. diff --git a/apps/landing/src/app/(detail)/components/[component]/footer/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/footer/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/footer/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/footer/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/footer/index.mdx b/apps/landing/src/app/(detail)/components/[component]/footer/index.mdx index 546e56d2..20fbdfb6 100644 --- a/apps/landing/src/app/(detail)/components/[component]/footer/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/footer/index.mdx @@ -1 +1 @@ -`Footer` component displays the bottom section of a page. \ No newline at end of file +`Footer` component displays the bottom section of a page. diff --git a/apps/landing/src/app/(detail)/components/[component]/header/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/header/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/header/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/header/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/header/index.mdx b/apps/landing/src/app/(detail)/components/[component]/header/index.mdx index ef274326..6800cb23 100644 --- a/apps/landing/src/app/(detail)/components/[component]/header/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/header/index.mdx @@ -1 +1 @@ -`Header` component displays the top navigation area of a page. \ No newline at end of file +`Header` component displays the top navigation area of a page. diff --git a/apps/landing/src/app/(detail)/components/[component]/input/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/input/Api.mdx index 38f68784..a5f94f64 100644 --- a/apps/landing/src/app/(detail)/components/[component]/input/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/input/Api.mdx @@ -1,13 +1,14 @@ ###### API -`Input` props extends the input HTML attributes. -
-| Property | Description | Type | Default | -| --- | --- | --- | --- | -| **variant** | The variant of the input | `'primary' \| 'default'` | `'default'` | -| **size** | The size of the input | `'sm' \| 'md' \| 'lg'` | `'md'` | -| **placeholder** | Placeholder text for the input | `string` | `undefined` | -| **type** | The type of input | `'text' \| 'password' \| 'email' \| 'number'` | `'text'` | -| **disabled** | Whether the input is disabled | `boolean` | `false` | -| **error** | Whether the input has an error state | `boolean` | `false` | -
\ No newline at end of file +`Input` props extends the input HTML attributes. + +
+ | Property | Description | Type | Default | | --- | --- | --- | --- | | + **variant** | The variant of the input | `'primary' \| 'default'` | + `'default'` | | **size** | The size of the input | `'sm' \| 'md' \| 'lg'` | + `'md'` | | **placeholder** | Placeholder text for the input | `string` | + `undefined` | | **type** | The type of input | `'text' \| 'password' \| + 'email' \| 'number'` | `'text'` | | **disabled** | Whether the input is + disabled | `boolean` | `false` | | **error** | Whether the input has an error + state | `boolean` | `false` | +
diff --git a/apps/landing/src/app/(detail)/components/[component]/input/index.mdx b/apps/landing/src/app/(detail)/components/[component]/input/index.mdx index b2598a47..8b2541da 100644 --- a/apps/landing/src/app/(detail)/components/[component]/input/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/input/index.mdx @@ -1 +1 @@ -`Input` component is used to handle text input from users. \ No newline at end of file +`Input` component is used to handle text input from users. diff --git a/apps/landing/src/app/(detail)/components/[component]/label/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/label/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/label/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/label/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/label/index.mdx b/apps/landing/src/app/(detail)/components/[component]/label/index.mdx index 66ac34e6..158e8a94 100644 --- a/apps/landing/src/app/(detail)/components/[component]/label/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/label/index.mdx @@ -1 +1 @@ -`Label` component provides text labels for form elements. \ No newline at end of file +`Label` component provides text labels for form elements. diff --git a/apps/landing/src/app/(detail)/components/[component]/menu/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/menu/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/menu/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/menu/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/menu/index.mdx b/apps/landing/src/app/(detail)/components/[component]/menu/index.mdx index 97dbf522..72726159 100644 --- a/apps/landing/src/app/(detail)/components/[component]/menu/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/menu/index.mdx @@ -1 +1 @@ -`Menu` component displays a list of navigation options. \ No newline at end of file +`Menu` component displays a list of navigation options. diff --git a/apps/landing/src/app/(detail)/components/[component]/pagination/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/pagination/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/pagination/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/pagination/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/pagination/index.mdx b/apps/landing/src/app/(detail)/components/[component]/pagination/index.mdx index cf69ad59..7ee4a3ce 100644 --- a/apps/landing/src/app/(detail)/components/[component]/pagination/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/pagination/index.mdx @@ -1 +1 @@ -`Pagination` component allows users to navigate through multiple pages. \ No newline at end of file +`Pagination` component allows users to navigate through multiple pages. diff --git a/apps/landing/src/app/(detail)/components/[component]/progress-bar/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/progress-bar/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/progress-bar/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/progress-bar/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/progress-bar/index.mdx b/apps/landing/src/app/(detail)/components/[component]/progress-bar/index.mdx index 8ec889a6..8cb64d36 100644 --- a/apps/landing/src/app/(detail)/components/[component]/progress-bar/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/progress-bar/index.mdx @@ -1 +1 @@ -`Progress Bar` component displays the progress of a task or operation. \ No newline at end of file +`Progress Bar` component displays the progress of a task or operation. diff --git a/apps/landing/src/app/(detail)/components/[component]/radio/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/radio/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/radio/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/radio/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/radio/index.mdx b/apps/landing/src/app/(detail)/components/[component]/radio/index.mdx index dbc0cef6..310e1771 100644 --- a/apps/landing/src/app/(detail)/components/[component]/radio/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/radio/index.mdx @@ -1 +1 @@ -`Radio` component allows users to select a single option from a group. \ No newline at end of file +`Radio` component allows users to select a single option from a group. diff --git a/apps/landing/src/app/(detail)/components/[component]/search/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/search/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/search/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/search/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/search/index.mdx b/apps/landing/src/app/(detail)/components/[component]/search/index.mdx index 1f42be2d..7312ac16 100644 --- a/apps/landing/src/app/(detail)/components/[component]/search/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/search/index.mdx @@ -1 +1 @@ -`Search` component provides a search input with filtering capabilities. \ No newline at end of file +`Search` component provides a search input with filtering capabilities. diff --git a/apps/landing/src/app/(detail)/components/[component]/select/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/select/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/select/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/select/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/select/index.mdx b/apps/landing/src/app/(detail)/components/[component]/select/index.mdx index c587b299..296464e0 100644 --- a/apps/landing/src/app/(detail)/components/[component]/select/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/select/index.mdx @@ -1 +1 @@ -`Select` component allows users to choose from a list of options. \ No newline at end of file +`Select` component allows users to choose from a list of options. diff --git a/apps/landing/src/app/(detail)/components/[component]/slider/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/slider/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/slider/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/slider/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/slider/index.mdx b/apps/landing/src/app/(detail)/components/[component]/slider/index.mdx index 789d8ff2..05ffa485 100644 --- a/apps/landing/src/app/(detail)/components/[component]/slider/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/slider/index.mdx @@ -1 +1 @@ -`Slider` component allows users to select a value from a range. \ No newline at end of file +`Slider` component allows users to select a value from a range. diff --git a/apps/landing/src/app/(detail)/components/[component]/snackbar/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/snackbar/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/snackbar/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/snackbar/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/snackbar/index.mdx b/apps/landing/src/app/(detail)/components/[component]/snackbar/index.mdx index 75cbc49a..cff6e589 100644 --- a/apps/landing/src/app/(detail)/components/[component]/snackbar/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/snackbar/index.mdx @@ -1 +1 @@ -`Snackbar` component displays brief notifications to users. \ No newline at end of file +`Snackbar` component displays brief notifications to users. diff --git a/apps/landing/src/app/(detail)/components/[component]/stepper/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/stepper/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/stepper/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/stepper/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/stepper/index.mdx b/apps/landing/src/app/(detail)/components/[component]/stepper/index.mdx index 9ac4a130..cf99774b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/stepper/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/stepper/index.mdx @@ -1 +1 @@ -`Stepper` component guides users through a multi-step process. \ No newline at end of file +`Stepper` component guides users through a multi-step process. diff --git a/apps/landing/src/app/(detail)/components/[component]/tab/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/tab/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/tab/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/tab/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/tab/index.mdx b/apps/landing/src/app/(detail)/components/[component]/tab/index.mdx index a86e5651..d50b3049 100644 --- a/apps/landing/src/app/(detail)/components/[component]/tab/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/tab/index.mdx @@ -1 +1 @@ -`Tab` component organizes content into multiple views. \ No newline at end of file +`Tab` component organizes content into multiple views. diff --git a/apps/landing/src/app/(detail)/components/[component]/textarea/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/textarea/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/textarea/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/textarea/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/textarea/index.mdx b/apps/landing/src/app/(detail)/components/[component]/textarea/index.mdx index 4572394f..7b361fec 100644 --- a/apps/landing/src/app/(detail)/components/[component]/textarea/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/textarea/index.mdx @@ -1 +1 @@ -`Textarea` component is used for multi-line text input. \ No newline at end of file +`Textarea` component is used for multi-line text input. diff --git a/apps/landing/src/app/(detail)/components/[component]/textbox/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/textbox/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/textbox/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/textbox/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/textbox/index.mdx b/apps/landing/src/app/(detail)/components/[component]/textbox/index.mdx index c6db46d4..d2432636 100644 --- a/apps/landing/src/app/(detail)/components/[component]/textbox/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/textbox/index.mdx @@ -1 +1 @@ -`Textbox` component is used for single-line text input. \ No newline at end of file +`Textbox` component is used for single-line text input. diff --git a/apps/landing/src/app/(detail)/components/[component]/theme-button/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/theme-button/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/theme-button/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/theme-button/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/theme-button/index.mdx b/apps/landing/src/app/(detail)/components/[component]/theme-button/index.mdx index 1cd8b259..5e46418a 100644 --- a/apps/landing/src/app/(detail)/components/[component]/theme-button/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/theme-button/index.mdx @@ -1 +1 @@ -`Theme Button` component is used to switch between light and dark themes. \ No newline at end of file +`Theme Button` component is used to switch between light and dark themes. diff --git a/apps/landing/src/app/(detail)/components/[component]/toggle/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/toggle/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/toggle/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/toggle/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/toggle/index.mdx b/apps/landing/src/app/(detail)/components/[component]/toggle/index.mdx index 2f8973eb..a034d947 100644 --- a/apps/landing/src/app/(detail)/components/[component]/toggle/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/toggle/index.mdx @@ -1 +1 @@ -`Toggle` component allows users to switch between two states. \ No newline at end of file +`Toggle` component allows users to switch between two states. diff --git a/apps/landing/src/app/(detail)/components/[component]/tooltip/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/tooltip/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/tooltip/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/tooltip/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/tooltip/index.mdx b/apps/landing/src/app/(detail)/components/[component]/tooltip/index.mdx index 7e79a439..7c8e7b17 100644 --- a/apps/landing/src/app/(detail)/components/[component]/tooltip/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/tooltip/index.mdx @@ -1 +1 @@ -`Tooltip` component displays additional information on hover. \ No newline at end of file +`Tooltip` component displays additional information on hover. diff --git a/apps/landing/src/app/(detail)/components/[component]/uploader/Api.mdx b/apps/landing/src/app/(detail)/components/[component]/uploader/Api.mdx index 0519ecba..e69de29b 100644 --- a/apps/landing/src/app/(detail)/components/[component]/uploader/Api.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/uploader/Api.mdx @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/landing/src/app/(detail)/components/[component]/uploader/index.mdx b/apps/landing/src/app/(detail)/components/[component]/uploader/index.mdx index 150a3bad..15016737 100644 --- a/apps/landing/src/app/(detail)/components/[component]/uploader/index.mdx +++ b/apps/landing/src/app/(detail)/components/[component]/uploader/index.mdx @@ -1 +1 @@ -`Uploader` component allows users to upload files. \ No newline at end of file +`Uploader` component allows users to upload files. diff --git a/apps/landing/src/app/(detail)/docs/installation/page.mdx b/apps/landing/src/app/(detail)/docs/installation/page.mdx index 41bf58cb..dd9af932 100644 --- a/apps/landing/src/app/(detail)/docs/installation/page.mdx +++ b/apps/landing/src/app/(detail)/docs/installation/page.mdx @@ -32,7 +32,7 @@ After installing the plugin, you can use the plugin in your Next.js project. import { DevupUI } from '@devup-ui/next-plugin' export default DevupUI({}) -```` +``` ### Using Devup UI with Vite @@ -62,10 +62,13 @@ import react from '@vitejs/plugin-react' import { defineConfig } from 'vite' export default defineConfig({ - plugins: [react(), DevupUI({ - // no extract css - extractCss: false, -})], + plugins: [ + react(), + DevupUI({ + // no extract css + extractCss: false, + }), + ], }) ``` @@ -82,15 +85,14 @@ After installing the plugin, you can use the plugin in your rsbuild project. ```js // rsbuild.config.mjs -import { defineConfig } from '@rsbuild/core'; -import { pluginReact } from '@rsbuild/plugin-react'; -import { DevupUIRsbuildPlugin } from '@devup-ui/rsbuild-plugin'; +import { DevupUIRsbuildPlugin } from '@devup-ui/rsbuild-plugin' +import { defineConfig } from '@rsbuild/core' +import { pluginReact } from '@rsbuild/plugin-react' export default defineConfig({ plugins: [pluginReact(), DevupUIRsbuildPlugin()], -}); - -```` +}) +``` ## Project Examples diff --git a/apps/landing/src/app/(detail)/docs/overview/page.mdx b/apps/landing/src/app/(detail)/docs/overview/page.mdx index 1f4697ea..801aab54 100644 --- a/apps/landing/src/app/(detail)/docs/overview/page.mdx +++ b/apps/landing/src/app/(detail)/docs/overview/page.mdx @@ -1,8 +1,8 @@ export const metadata = { - title: "What is Devup UI?", - alternates: { - canonical: '/docs/overview', - } + title: 'What is Devup UI?', + alternates: { + canonical: '/docs/overview', + }, } ## What is Devup UI? @@ -12,4 +12,3 @@ Devup UI is a CSS in JS preprocessor that does not require runtime. Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor. We develop a preprocessor that considers all grammatical cases. - diff --git a/apps/landing/src/app/(detail)/team/page.mdx b/apps/landing/src/app/(detail)/team/page.mdx index 404cfe8e..3d826aa9 100644 --- a/apps/landing/src/app/(detail)/team/page.mdx +++ b/apps/landing/src/app/(detail)/team/page.mdx @@ -1,17 +1,15 @@ export const metadata = { - alternates: { - canonical: '/team', - } + alternates: { + canonical: '/team', + }, } - # Team We are a team committed to developing the most optimized CSS-in-JS solutions. --- -import {TeamCard} from "./TeamCard"; - - +import { TeamCard } from './TeamCard' + From 99e1824f1b3ac835365650f8f92f9c54690bb16e Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 02:09:08 +0900 Subject: [PATCH 17/59] Fix eslint rules - cleanup eslint rule configuration --- eslint.config.mjs | 48 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 2d33653c..7f6b5494 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,21 +1,49 @@ -import tsParser from '@typescript-eslint/parser' import { configs } from 'eslint-plugin-devup' import jsonc from 'eslint-plugin-jsonc' import * as mdx from 'eslint-plugin-mdx' -import jsonParser from 'jsonc-eslint-parser' +import globals from 'globals' export default [ + // eslint-plugin-devup ...configs.recommended, + // eslint-plugin-jsonc + ...jsonc.configs['flat/recommended-with-json'], + ...jsonc.configs['flat/recommended-with-jsonc'], + // globals (node, browser, builtin) { - files: ['**/*.{json,json5,jsonc}'], - languageOptions: { parser: jsonParser }, - plugins: { jsonc }, + files: ['**/*.{js,mjs,cjs}'], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + ...globals.builtin, + }, + }, + rules: { + // js require import allowed + '@typescript-eslint/no-require-imports': 'off', + }, + }, + // benchmark no console rules + { + files: ['benchmark.js'], + rules: { + 'no-console': [ + 'error', + { + allow: ['info', 'debug', 'warn', 'error', 'profile', 'profileEnd'], + }, + ], + }, + }, + // create-style-context.mjs no children prop + { + files: ['**/*.mjs'], rules: { - 'prettier/prettier': 'off', - 'eol-last': ['error', 'never'], - 'no-multiple-empty-lines': ['error', { max: 0, maxEOF: 0 }], + 'react/no-children-prop': 'off', }, }, + // md, mdx rules { ...mdx.flat, files: ['**/*.{md,mdx}'], @@ -23,15 +51,13 @@ export default [ lintCodeBlocks: true, }), }, + // md, mdx code blocks rules { ...mdx.flatCodeBlocks, files: ['**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], - languageOptions: { parser: tsParser }, rules: { ...mdx.flatCodeBlocks.rules, 'react/jsx-no-undef': 'off', - semi: ['error', 'never'], - quotes: ['error', 'single', { avoidEscape: true }], 'react/jsx-tag-spacing': ['error', { beforeClosing: 'never' }], }, }, From 5244ecd666c6dc8e1c1cc34ca8a9358e89b7edbe Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 02:10:04 +0900 Subject: [PATCH 18/59] Remove unnecessary package dependencies - @typescript-eslint/parser - jsonc-eslint-parser --- package.json | 5 ++--- pnpm-lock.yaml | 15 +++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 6f625ef6..b96bea0d 100644 --- a/package.json +++ b/package.json @@ -20,15 +20,14 @@ "@testing-library/react": "^16.3.0", "@testing-library/user-event": "14.6.1", "@types/node": "^24.5.2", - "@typescript-eslint/parser": "^8.44.0", "@vitest/coverage-v8": "^3.2.4", "eslint": "^9.35.0", "eslint-plugin-devup": "^2.0.5", "eslint-plugin-jsonc": "^2.20.1", "eslint-plugin-mdx": "^3.6.2", + "globals": "^16.4.0", "happy-dom": "^18.0.1", "husky": "^9.1.7", - "jsonc-eslint-parser": "^2.4.1", "lint-staged": "^16.1.6", "vitest": "^3.2.4" }, @@ -37,4 +36,4 @@ "resolutions": { "vite": "^6" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf4bd5a3..b7a28a73 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,9 +29,6 @@ importers: '@types/node': specifier: ^24.5.2 version: 24.5.2 - '@typescript-eslint/parser': - specifier: ^8.44.0 - version: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) @@ -47,15 +44,15 @@ importers: eslint-plugin-mdx: specifier: ^3.6.2 version: 3.6.2(eslint@9.36.0(jiti@2.5.1)) + globals: + specifier: ^16.4.0 + version: 16.4.0 happy-dom: specifier: ^18.0.1 version: 18.0.1 husky: specifier: ^9.1.7 version: 9.1.7 - jsonc-eslint-parser: - specifier: ^2.4.1 - version: 2.4.1 lint-staged: specifier: ^16.1.6 version: 16.1.6 @@ -4718,6 +4715,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -12201,6 +12202,8 @@ snapshots: globals@14.0.0: {} + globals@16.4.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 From 3d34f448aa2fa2270e36e64776c0e912ef4e2330 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 02:12:04 +0900 Subject: [PATCH 19/59] Update json files per eslint configuration --- apps/landing/tsconfig.json | 16 +- apps/next/package.json | 2 +- apps/next/tsconfig.json | 16 +- apps/rsbuild/package.json | 2 +- apps/vite-lib/package.json | 2 +- apps/vite-lib/tsconfig.json | 22 +- apps/vite/package.json | 2 +- apps/vite/tsconfig.json | 22 +- benchmark/next-chakra-ui/package.json | 2 +- benchmark/next-chakra-ui/tsconfig.json | 16 +- benchmark/next-devup-ui-single/package.json | 2 +- benchmark/next-devup-ui-single/tsconfig.json | 16 +- benchmark/next-devup-ui/package.json | 2 +- benchmark/next-devup-ui/tsconfig.json | 16 +- benchmark/next-kuma-ui/package.json | 2 +- benchmark/next-kuma-ui/tsconfig.json | 16 +- benchmark/next-mui/package.json | 2 +- benchmark/next-mui/tsconfig.json | 16 +- benchmark/next-panda-css/package.json | 2 +- benchmark/next-panda-css/tsconfig.json | 16 +- benchmark/next-stylex/package.json | 2 +- benchmark/next-stylex/tsconfig.json | 16 +- benchmark/next-tailwind/package.json | 2 +- benchmark/next-tailwind/tsconfig.json | 16 +- benchmark/next-vanilla-extract/package.json | 2 +- benchmark/next-vanilla-extract/tsconfig.json | 16 +- bindings/devup-ui-wasm/package.json | 2 +- packages/components/devup.json | 1162 +++++++++--------- packages/components/package.json | 2 +- packages/components/tsconfig.json | 9 +- packages/next-plugin/package.json | 2 +- packages/next-plugin/tsconfig.json | 2 +- packages/react/package.json | 2 +- packages/react/tsconfig.json | 2 +- packages/reset-css/package.json | 2 +- packages/reset-css/tsconfig.json | 8 +- packages/rsbuild-plugin/package.json | 2 +- packages/rsbuild-plugin/tsconfig.json | 19 +- packages/vite-plugin/package.json | 2 +- packages/vite-plugin/tsconfig.json | 19 +- packages/webpack-plugin/package.json | 2 +- packages/webpack-plugin/tsconfig.json | 19 +- 42 files changed, 679 insertions(+), 823 deletions(-) diff --git a/apps/landing/tsconfig.json b/apps/landing/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/apps/landing/tsconfig.json +++ b/apps/landing/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/apps/next/package.json b/apps/next/package.json index 6f572fc9..3da1fccf 100644 --- a/apps/next/package.json +++ b/apps/next/package.json @@ -22,4 +22,4 @@ "@types/react": "^19", "@types/react-dom": "^19" } -} \ No newline at end of file +} diff --git a/apps/next/tsconfig.json b/apps/next/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/apps/next/tsconfig.json +++ b/apps/next/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/apps/rsbuild/package.json b/apps/rsbuild/package.json index 3848d509..21ee119d 100644 --- a/apps/rsbuild/package.json +++ b/apps/rsbuild/package.json @@ -20,4 +20,4 @@ "@rsbuild/plugin-react": "^1.4.0", "@devup-ui/rsbuild-plugin": "workspace:*" } -} \ No newline at end of file +} diff --git a/apps/vite-lib/package.json b/apps/vite-lib/package.json index b1821ea8..7154e899 100644 --- a/apps/vite-lib/package.json +++ b/apps/vite-lib/package.json @@ -24,4 +24,4 @@ "@types/node": "^24", "@types/react": "^19" } -} \ No newline at end of file +} diff --git a/apps/vite-lib/tsconfig.json b/apps/vite-lib/tsconfig.json index 2d26fac1..a75649ee 100644 --- a/apps/vite-lib/tsconfig.json +++ b/apps/vite-lib/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,17 +14,9 @@ "jsx": "preserve", "incremental": true, "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, - "include": [ - "**/*.ts", - "**/*.tsx", - "df/*.d.ts" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": ["**/*.ts", "**/*.tsx", "df/*.d.ts"], + "exclude": ["node_modules"] +} diff --git a/apps/vite/package.json b/apps/vite/package.json index dc38b4b2..9900ac12 100644 --- a/apps/vite/package.json +++ b/apps/vite/package.json @@ -24,4 +24,4 @@ "@types/react": "^19", "@types/react-dom": "^19" } -} \ No newline at end of file +} diff --git a/apps/vite/tsconfig.json b/apps/vite/tsconfig.json index 2d26fac1..a75649ee 100644 --- a/apps/vite/tsconfig.json +++ b/apps/vite/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,17 +14,9 @@ "jsx": "preserve", "incremental": true, "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, - "include": [ - "**/*.ts", - "**/*.tsx", - "df/*.d.ts" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": ["**/*.ts", "**/*.tsx", "df/*.d.ts"], + "exclude": ["node_modules"] +} diff --git a/benchmark/next-chakra-ui/package.json b/benchmark/next-chakra-ui/package.json index 008c4bb7..7862ceb7 100644 --- a/benchmark/next-chakra-ui/package.json +++ b/benchmark/next-chakra-ui/package.json @@ -24,4 +24,4 @@ "@types/react-dom": "^19", "typescript": "^5" } -} \ No newline at end of file +} diff --git a/benchmark/next-chakra-ui/tsconfig.json b/benchmark/next-chakra-ui/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-chakra-ui/tsconfig.json +++ b/benchmark/next-chakra-ui/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-devup-ui-single/package.json b/benchmark/next-devup-ui-single/package.json index 5c567388..64f8711c 100644 --- a/benchmark/next-devup-ui-single/package.json +++ b/benchmark/next-devup-ui-single/package.json @@ -22,4 +22,4 @@ "@types/react": "^19", "@types/react-dom": "^19" } -} \ No newline at end of file +} diff --git a/benchmark/next-devup-ui-single/tsconfig.json b/benchmark/next-devup-ui-single/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-devup-ui-single/tsconfig.json +++ b/benchmark/next-devup-ui-single/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-devup-ui/package.json b/benchmark/next-devup-ui/package.json index 6a7f17da..884eb5c8 100644 --- a/benchmark/next-devup-ui/package.json +++ b/benchmark/next-devup-ui/package.json @@ -22,4 +22,4 @@ "@types/react": "^19", "@types/react-dom": "^19" } -} \ No newline at end of file +} diff --git a/benchmark/next-devup-ui/tsconfig.json b/benchmark/next-devup-ui/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-devup-ui/tsconfig.json +++ b/benchmark/next-devup-ui/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-kuma-ui/package.json b/benchmark/next-kuma-ui/package.json index cc5a463d..c398cc6e 100644 --- a/benchmark/next-kuma-ui/package.json +++ b/benchmark/next-kuma-ui/package.json @@ -22,4 +22,4 @@ "@types/react": "^19", "@types/react-dom": "^19" } -} \ No newline at end of file +} diff --git a/benchmark/next-kuma-ui/tsconfig.json b/benchmark/next-kuma-ui/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-kuma-ui/tsconfig.json +++ b/benchmark/next-kuma-ui/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-mui/package.json b/benchmark/next-mui/package.json index 407e63a9..b35d0c8f 100644 --- a/benchmark/next-mui/package.json +++ b/benchmark/next-mui/package.json @@ -24,4 +24,4 @@ "@types/react-dom": "^19", "typescript": "^5" } -} \ No newline at end of file +} diff --git a/benchmark/next-mui/tsconfig.json b/benchmark/next-mui/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-mui/tsconfig.json +++ b/benchmark/next-mui/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-panda-css/package.json b/benchmark/next-panda-css/package.json index 953e32a8..686950a8 100644 --- a/benchmark/next-panda-css/package.json +++ b/benchmark/next-panda-css/package.json @@ -22,4 +22,4 @@ "@types/react": "^19", "@types/react-dom": "^19" } -} \ No newline at end of file +} diff --git a/benchmark/next-panda-css/tsconfig.json b/benchmark/next-panda-css/tsconfig.json index c8477744..0911c907 100644 --- a/benchmark/next-panda-css/tsconfig.json +++ b/benchmark/next-panda-css/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -36,7 +30,5 @@ "df/*.d.ts", "styled-system" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-stylex/package.json b/benchmark/next-stylex/package.json index 457b1a87..0e284970 100644 --- a/benchmark/next-stylex/package.json +++ b/benchmark/next-stylex/package.json @@ -38,4 +38,4 @@ "ts_dependency_graph": "^2.1.1", "typescript": "5.9.2" } -} \ No newline at end of file +} diff --git a/benchmark/next-stylex/tsconfig.json b/benchmark/next-stylex/tsconfig.json index 671111d1..3098b586 100644 --- a/benchmark/next-stylex/tsconfig.json +++ b/benchmark/next-stylex/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -24,9 +20,7 @@ } ], "paths": { - "@/*": [ - "./*" - ] + "@/*": ["./*"] } }, "include": [ @@ -36,7 +30,5 @@ ".next/types/**/*.ts", "app/layout.js" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-tailwind/package.json b/benchmark/next-tailwind/package.json index d53478b6..ec87a173 100644 --- a/benchmark/next-tailwind/package.json +++ b/benchmark/next-tailwind/package.json @@ -24,4 +24,4 @@ "typescript": "^5", "tailwindcss": "^4.1.13" } -} \ No newline at end of file +} diff --git a/benchmark/next-tailwind/tsconfig.json b/benchmark/next-tailwind/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-tailwind/tsconfig.json +++ b/benchmark/next-tailwind/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/benchmark/next-vanilla-extract/package.json b/benchmark/next-vanilla-extract/package.json index ff3d72a1..e42d317a 100644 --- a/benchmark/next-vanilla-extract/package.json +++ b/benchmark/next-vanilla-extract/package.json @@ -23,4 +23,4 @@ "typescript": "^5", "@vanilla-extract/next-plugin": "^2.4.14" } -} \ No newline at end of file +} diff --git a/benchmark/next-vanilla-extract/tsconfig.json b/benchmark/next-vanilla-extract/tsconfig.json index 426d9c2d..311cfed4 100644 --- a/benchmark/next-vanilla-extract/tsconfig.json +++ b/benchmark/next-vanilla-extract/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, "include": [ @@ -35,7 +29,5 @@ ".next/types/**/*.ts", "df/*.d.ts" ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/bindings/devup-ui-wasm/package.json b/bindings/devup-ui-wasm/package.json index caeb9f0e..bc675281 100644 --- a/bindings/devup-ui-wasm/package.json +++ b/bindings/devup-ui-wasm/package.json @@ -44,4 +44,4 @@ } }, "types": "./pkg/index.d.ts" -} \ No newline at end of file +} diff --git a/packages/components/devup.json b/packages/components/devup.json index 40781c5d..ab553df7 100644 --- a/packages/components/devup.json +++ b/packages/components/devup.json @@ -1,584 +1,584 @@ { - "theme": { - "colors": { - "light": { - "primary": "#674DC7", - "primaryHover": "#4D38AE", - "primaryActive": "#312395", - "primaryBg": "#F4F3FA", - "secondary": "#E3E0F2", - "link": "#7C8EE1", - "text": "#272727", - "background": "#F5F5F5", - "containerBackground": "#FFFFFF", - "border": "#E4E4E4", - "success": "#2CA353", - "warning": "#FF9800", - "error": "#D52B2E", - "info": "#2196F3", - "white": "#FFFFFF", - "black": "#000000", - "title": "#1A1A1A", - "caption": "#787878", - "black50": "#00000080", - "placeHolder": "#9D9D9D", - "base50": "#FFFFFF80", - "footerBackground": "#2F313B", - "footerAward": "#EAEAED", - "footerBody": "#FFFFFF", - "footerTitle": "#F2F2F2", - "footerCaption": "#CACACA", - "white10": "#FFFFFF1A", - "base": "#FFFFFF", - "negativeBase": "#000000", - "inputPlaceholder": "#A9A8AB", - "inputBg": "#FFFFFF", - "inputIcon": "#C3C2C8", - "inputDisabledBg": "#F0F0F3", - "inputDisabledText": "#D6D7DE", - "inputCaption": "#9B9BA6", - "negative20": "#00000033", - "negative10": "#0000001A", - "toggleBg": "#E4E4E4", - "primary50": "#614FC480", - "primary20": "#614FC433", - "tableSearch": "#FFED8A", - "black5": "#0000000D", - "filterBg": "#EFEEF2", - "footerLink": "#B7B5C0", - "familysiteBg": "#828389", - "familysiteTxt": "#272727", - "familyHover": "#A0A1A5", - "footerNavTitle": "#98989D", - "snackBg": "#29292CCC", - "snackLink": "#B2B0EF", - "containerHover": "#EEEEEE", - "kakoBg": "#FFE232", - "kakaoHover": "#F0C81A", - "textFixed": "#272727", - "primaryFocus": "#9385D3", - "containerPush": "#DADAE1", - "selectDisabled": "#C4C5D1", - "selectBoxBg": "#00000012", - "iconBold": "#8D8C9A", - "borderBold": "#BCBCBC", - "gnbBg": "#FFFFFFCC" - }, - "dark": { - "primary": "#8163E1", - "primaryHover": "#A290E7", - "primaryActive": "#BEB3ED", - "primaryBg": "#F4F3FA0D", - "secondary": "#272331", - "link": "#006BFF", - "text": "#F6F6F6", - "background": "#202020", - "containerBackground": "#1E1E1E", - "border": "#434343", - "success": "#4CAF50", - "warning": "#FF9800", - "error": "#FF5B5E", - "info": "#2196F3", - "white": "#FFFFFF", - "black": "#000000", - "title": "#FAFAFA", - "caption": "#787878", - "black50": "#00000080", - "placeHolder": "#9D9D9D", - "base50": "#00000080", - "footerBackground": "#D8D8D8", - "footerAward": "#3D3D3D", - "footerBody": "#404040", - "footerTitle": "#1F1F1F", - "footerCaption": "#7D7D7D", - "white10": "#0000001A", - "base": "#000000", - "negativeBase": "#FFFFFF", - "inputPlaceholder": "#CBCBCB", - "inputBg": "#2E2E2E", - "inputIcon": "#696A6F", - "inputDisabledBg": "#414244", - "inputDisabledText": "#373737", - "inputCaption": "#C3C2C8", - "negative20": "#FFFFFF66", - "negative10": "#FFFFFF1A", - "toggleBg": "#383838", - "primary50": "#7D6DD880", - "primary20": "#7D6DD833", - "tableSearch": "#B55100", - "black5": "#0000000D", - "filterBg": "#4B494F", - "footerLink": "#5E6063", - "familysiteBg": "#B0B0B0", - "familysiteTxt": "#272727", - "familyHover": "#94969E", - "footerNavTitle": "#747276", - "snackBg": "#29292CCC", - "snackLink": "#7C8EE1", - "containerHover": "#3A3A3A", - "kakoBg": "#FFE232", - "kakaoHover": "#FFE232", - "textFixed": "#272727", - "primaryFocus": "#927CE4", - "containerPush": "#606066", - "selectDisabled": "#45464D", - "selectBoxBg": "#FFFFFF12", - "iconBold": "#666577", - "borderBold": "#535353", - "gnbBg": "#000000CC" - } + "theme": { + "colors": { + "light": { + "primary": "#674DC7", + "primaryHover": "#4D38AE", + "primaryActive": "#312395", + "primaryBg": "#F4F3FA", + "secondary": "#E3E0F2", + "link": "#7C8EE1", + "text": "#272727", + "background": "#F5F5F5", + "containerBackground": "#FFFFFF", + "border": "#E4E4E4", + "success": "#2CA353", + "warning": "#FF9800", + "error": "#D52B2E", + "info": "#2196F3", + "white": "#FFFFFF", + "black": "#000000", + "title": "#1A1A1A", + "caption": "#787878", + "black50": "#00000080", + "placeHolder": "#9D9D9D", + "base50": "#FFFFFF80", + "footerBackground": "#2F313B", + "footerAward": "#EAEAED", + "footerBody": "#FFFFFF", + "footerTitle": "#F2F2F2", + "footerCaption": "#CACACA", + "white10": "#FFFFFF1A", + "base": "#FFFFFF", + "negativeBase": "#000000", + "inputPlaceholder": "#A9A8AB", + "inputBg": "#FFFFFF", + "inputIcon": "#C3C2C8", + "inputDisabledBg": "#F0F0F3", + "inputDisabledText": "#D6D7DE", + "inputCaption": "#9B9BA6", + "negative20": "#00000033", + "negative10": "#0000001A", + "toggleBg": "#E4E4E4", + "primary50": "#614FC480", + "primary20": "#614FC433", + "tableSearch": "#FFED8A", + "black5": "#0000000D", + "filterBg": "#EFEEF2", + "footerLink": "#B7B5C0", + "familysiteBg": "#828389", + "familysiteTxt": "#272727", + "familyHover": "#A0A1A5", + "footerNavTitle": "#98989D", + "snackBg": "#29292CCC", + "snackLink": "#B2B0EF", + "containerHover": "#EEEEEE", + "kakoBg": "#FFE232", + "kakaoHover": "#F0C81A", + "textFixed": "#272727", + "primaryFocus": "#9385D3", + "containerPush": "#DADAE1", + "selectDisabled": "#C4C5D1", + "selectBoxBg": "#00000012", + "iconBold": "#8D8C9A", + "borderBold": "#BCBCBC", + "gnbBg": "#FFFFFFCC" + }, + "dark": { + "primary": "#8163E1", + "primaryHover": "#A290E7", + "primaryActive": "#BEB3ED", + "primaryBg": "#F4F3FA0D", + "secondary": "#272331", + "link": "#006BFF", + "text": "#F6F6F6", + "background": "#202020", + "containerBackground": "#1E1E1E", + "border": "#434343", + "success": "#4CAF50", + "warning": "#FF9800", + "error": "#FF5B5E", + "info": "#2196F3", + "white": "#FFFFFF", + "black": "#000000", + "title": "#FAFAFA", + "caption": "#787878", + "black50": "#00000080", + "placeHolder": "#9D9D9D", + "base50": "#00000080", + "footerBackground": "#D8D8D8", + "footerAward": "#3D3D3D", + "footerBody": "#404040", + "footerTitle": "#1F1F1F", + "footerCaption": "#7D7D7D", + "white10": "#0000001A", + "base": "#000000", + "negativeBase": "#FFFFFF", + "inputPlaceholder": "#CBCBCB", + "inputBg": "#2E2E2E", + "inputIcon": "#696A6F", + "inputDisabledBg": "#414244", + "inputDisabledText": "#373737", + "inputCaption": "#C3C2C8", + "negative20": "#FFFFFF66", + "negative10": "#FFFFFF1A", + "toggleBg": "#383838", + "primary50": "#7D6DD880", + "primary20": "#7D6DD833", + "tableSearch": "#B55100", + "black5": "#0000000D", + "filterBg": "#4B494F", + "footerLink": "#5E6063", + "familysiteBg": "#B0B0B0", + "familysiteTxt": "#272727", + "familyHover": "#94969E", + "footerNavTitle": "#747276", + "snackBg": "#29292CCC", + "snackLink": "#7C8EE1", + "containerHover": "#3A3A3A", + "kakoBg": "#FFE232", + "kakaoHover": "#FFE232", + "textFixed": "#272727", + "primaryFocus": "#927CE4", + "containerPush": "#606066", + "selectDisabled": "#45464D", + "selectBoxBg": "#FFFFFF12", + "iconBold": "#666577", + "borderBold": "#535353", + "gnbBg": "#000000CC" + } + }, + "typography": { + "buttonM": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "0px" }, - "typography": { - "buttonM": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "0px" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "18px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - }, - null - ], - "inputBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null - ], - "buttonS": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "0px" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - }, - null - ], - "buttonxs": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.03em" - }, - null - ], - "inputPlaceholder": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "13px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null - ], - "inputText": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.03em" - }, - null - ], - "inlineLabelL": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "16px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "18px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "inlineLabelS": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "12px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - "body": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "15px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "16px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null - ], - "inputPhBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "13px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null - ], - "uploadButton": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - "pagination": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "paginationSelected": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 900, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "langMenu": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "langButton": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null - ], - "tableTitle": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - }, - null - ], - "footerL": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.3, - "letterSpacing": "-0.02em" - }, - "footerM": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "13px", - "lineHeight": "18px", - "letterSpacing": "-0.01em" - }, - "footerMsemibold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "13px", - "lineHeight": "18px", - "letterSpacing": "-0.01em" - }, - "footerS": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "12px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "footerxl": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.02em" - }, - "footerSsemibold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "12px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "footerxs": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "10px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "footerXSsemibold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "10px", - "lineHeight": "18px", - "letterSpacing": "-0.02em" - }, - "footerNav": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.02em" - }, - "footerList": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "subMenu": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "16px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null - ], - "tableText": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "15px", - "lineHeight": 1.4, - "letterSpacing": "-0.01em" - }, - null - ], - "tableTextBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - }, - null - ], - "resetButton": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null - ] - } + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "18px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "inputBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "buttonS": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "0px" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "buttonxs": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.03em" + }, + null + ], + "inputPlaceholder": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "13px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "inputText": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.03em" + }, + null + ], + "inlineLabelL": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "16px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "18px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "inlineLabelS": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "12px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + "body": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "15px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "16px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null + ], + "inputPhBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "13px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "uploadButton": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + "pagination": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "paginationSelected": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 900, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "langMenu": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "langButton": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "tableTitle": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "footerL": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.3, + "letterSpacing": "-0.02em" + }, + "footerM": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "13px", + "lineHeight": "18px", + "letterSpacing": "-0.01em" + }, + "footerMsemibold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "13px", + "lineHeight": "18px", + "letterSpacing": "-0.01em" + }, + "footerS": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "12px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "footerxl": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.02em" + }, + "footerSsemibold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "12px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "footerxs": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "10px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "footerXSsemibold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "10px", + "lineHeight": "18px", + "letterSpacing": "-0.02em" + }, + "footerNav": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.02em" + }, + "footerList": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "subMenu": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "16px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null + ], + "tableText": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "15px", + "lineHeight": 1.4, + "letterSpacing": "-0.01em" + }, + null + ], + "tableTextBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "resetButton": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ] } -} \ No newline at end of file + } +} diff --git a/packages/components/package.json b/packages/components/package.json index b07a012f..9a54dbeb 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -66,4 +66,4 @@ "csstype": "*", "react": "*" } -} \ No newline at end of file +} diff --git a/packages/components/tsconfig.json b/packages/components/tsconfig.json index efd7a86b..3779d817 100644 --- a/packages/components/tsconfig.json +++ b/packages/components/tsconfig.json @@ -1,6 +1,11 @@ { "compilerOptions": { - "types": ["vite/client", "vitest/importMeta", "vitest/globals", "@testing-library/jest-dom"], + "types": [ + "vite/client", + "vitest/importMeta", + "vitest/globals", + "@testing-library/jest-dom" + ], "strict": true, "target": "ESNext", "declaration": true, @@ -24,4 +29,4 @@ "jsx": "react-jsx" }, "include": ["src/**/*", ".storybook/**/*", "./setupTests.ts"] -} \ No newline at end of file +} diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index b74bc6ca..292a6f4e 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -56,4 +56,4 @@ "@devup-ui/webpack-plugin": "*", "next": "*" } -} \ No newline at end of file +} diff --git a/packages/next-plugin/tsconfig.json b/packages/next-plugin/tsconfig.json index 26e90a70..4c6e75be 100644 --- a/packages/next-plugin/tsconfig.json +++ b/packages/next-plugin/tsconfig.json @@ -23,4 +23,4 @@ "baseUrl": ".", "jsx": "react-jsx" } -} \ No newline at end of file +} diff --git a/packages/react/package.json b/packages/react/package.json index 5bdfd820..55253f0a 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -53,4 +53,4 @@ "react": "*", "csstype": "*" } -} \ No newline at end of file +} diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index eada434c..f4911405 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -28,4 +28,4 @@ "baseUrl": ".", "jsx": "react-jsx" } -} \ No newline at end of file +} diff --git a/packages/reset-css/package.json b/packages/reset-css/package.json index 698d8b9d..4dabf3a2 100644 --- a/packages/reset-css/package.json +++ b/packages/reset-css/package.json @@ -50,4 +50,4 @@ "peerDependencies": { "@devup-ui/react": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/reset-css/tsconfig.json b/packages/reset-css/tsconfig.json index 8b53b487..4c6e75be 100644 --- a/packages/reset-css/tsconfig.json +++ b/packages/reset-css/tsconfig.json @@ -1,10 +1,6 @@ { "compilerOptions": { - "types": [ - "vite/client", - "vitest/importMeta", - "vitest/globals" - ], + "types": ["vite/client", "vitest/importMeta", "vitest/globals"], "strict": true, "target": "ESNext", "declaration": true, @@ -27,4 +23,4 @@ "baseUrl": ".", "jsx": "react-jsx" } -} \ No newline at end of file +} diff --git a/packages/rsbuild-plugin/package.json b/packages/rsbuild-plugin/package.json index 0e7604a3..5714c89b 100644 --- a/packages/rsbuild-plugin/package.json +++ b/packages/rsbuild-plugin/package.json @@ -62,4 +62,4 @@ "vitest": "^3.2.4", "typescript": "^5.9.2" } -} \ No newline at end of file +} diff --git a/packages/rsbuild-plugin/tsconfig.json b/packages/rsbuild-plugin/tsconfig.json index 30053bb9..fa3c2eb3 100644 --- a/packages/rsbuild-plugin/tsconfig.json +++ b/packages/rsbuild-plugin/tsconfig.json @@ -1,10 +1,6 @@ { "compilerOptions": { - "types": [ - "vite/client", - "vitest/importMeta", - "vitest/globals" - ], + "types": ["vite/client", "vitest/importMeta", "vitest/globals"], "strict": true, "target": "ESNext", "declaration": true, @@ -27,13 +23,6 @@ "baseUrl": ".", "jsx": "react-jsx" }, - "include": [ - "src", - "vite.config.ts", - "../../vitest.setup.ts" - ], - "exclude": [ - "node_modules", - "dist" - ] -} \ No newline at end of file + "include": ["src", "vite.config.ts", "../../vitest.setup.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 9c030dc7..ccf470df 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -50,4 +50,4 @@ "vite": "*", "@devup-ui/wasm": "*" } -} \ No newline at end of file +} diff --git a/packages/vite-plugin/tsconfig.json b/packages/vite-plugin/tsconfig.json index 30053bb9..fa3c2eb3 100644 --- a/packages/vite-plugin/tsconfig.json +++ b/packages/vite-plugin/tsconfig.json @@ -1,10 +1,6 @@ { "compilerOptions": { - "types": [ - "vite/client", - "vitest/importMeta", - "vitest/globals" - ], + "types": ["vite/client", "vitest/importMeta", "vitest/globals"], "strict": true, "target": "ESNext", "declaration": true, @@ -27,13 +23,6 @@ "baseUrl": ".", "jsx": "react-jsx" }, - "include": [ - "src", - "vite.config.ts", - "../../vitest.setup.ts" - ], - "exclude": [ - "node_modules", - "dist" - ] -} \ No newline at end of file + "include": ["src", "vite.config.ts", "../../vitest.setup.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 83d2418d..3c622629 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -61,4 +61,4 @@ "vitest": "^3.2.4", "typescript": "^5.9.2" } -} \ No newline at end of file +} diff --git a/packages/webpack-plugin/tsconfig.json b/packages/webpack-plugin/tsconfig.json index 30053bb9..fa3c2eb3 100644 --- a/packages/webpack-plugin/tsconfig.json +++ b/packages/webpack-plugin/tsconfig.json @@ -1,10 +1,6 @@ { "compilerOptions": { - "types": [ - "vite/client", - "vitest/importMeta", - "vitest/globals" - ], + "types": ["vite/client", "vitest/importMeta", "vitest/globals"], "strict": true, "target": "ESNext", "declaration": true, @@ -27,13 +23,6 @@ "baseUrl": ".", "jsx": "react-jsx" }, - "include": [ - "src", - "vite.config.ts", - "../../vitest.setup.ts" - ], - "exclude": [ - "node_modules", - "dist" - ] -} \ No newline at end of file + "include": ["src", "vite.config.ts", "../../vitest.setup.ts"], + "exclude": ["node_modules", "dist"] +} From 617af2d7188ecafc5ac27ba668da39e13223c863 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 02:12:32 +0900 Subject: [PATCH 20/59] Update js files per eslint configuration --- benchmark/next-stylex/.babelrc.js | 12 ++++++------ benchmark/next-stylex/.eslintrc.js | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/benchmark/next-stylex/.babelrc.js b/benchmark/next-stylex/.babelrc.js index bb2fafe0..167781a6 100644 --- a/benchmark/next-stylex/.babelrc.js +++ b/benchmark/next-stylex/.babelrc.js @@ -1,19 +1,19 @@ module.exports = { - presets: ["next/babel"], + presets: ['next/babel'], plugins: [ [ - "@stylexjs/babel-plugin", + '@stylexjs/babel-plugin', { - dev: process.env.NODE_ENV === "development", - test: process.env.NODE_ENV === "test", + dev: process.env.NODE_ENV === 'development', + test: process.env.NODE_ENV === 'test', runtimeInjection: false, genConditionalClasses: true, treeshakeCompensation: true, unstable_moduleResolution: { - type: "commonJS", + type: 'commonJS', rootDir: __dirname, }, }, ], ], -}; +} diff --git a/benchmark/next-stylex/.eslintrc.js b/benchmark/next-stylex/.eslintrc.js index da5f2ce4..b3660afd 100644 --- a/benchmark/next-stylex/.eslintrc.js +++ b/benchmark/next-stylex/.eslintrc.js @@ -1,9 +1,9 @@ module.exports = { - extends: "next/core-web-vitals", - plugins: ["@stylexjs"], + extends: 'next/core-web-vitals', + plugins: ['@stylexjs'], rules: { // The Eslint rule still needs work, but you can // enable it to test things out. - "@stylexjs/valid-styles": "error", + '@stylexjs/valid-styles': 'error', }, -}; +} From d90b94af9c56d5b05cbd2e5f66c5b743f3e037a9 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 29 Sep 2025 02:12:41 +0900 Subject: [PATCH 21/59] Update md files per eslint configuration --- bindings/devup-ui-wasm/README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/bindings/devup-ui-wasm/README.md b/bindings/devup-ui-wasm/README.md index 6b684085..613206dd 100644 --- a/bindings/devup-ui-wasm/README.md +++ b/bindings/devup-ui-wasm/README.md @@ -2,7 +2,7 @@

wasm-pack-template

- A template for kick starting a Rust and WebAssembly project using wasm-pack. +A template for kick starting a Rust and WebAssembly project using wasm-pack.

Build Status @@ -14,7 +14,8 @@ Chat - Built with 🦀🕸 by The Rust and WebAssembly Working Group +Built with 🦀🕸 by The Rust and WebAssembly Working Group +

## About @@ -61,18 +62,18 @@ wasm-pack publish ## 🔋 Batteries Included -* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating +- [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating between WebAssembly and JavaScript. -* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook) +- [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook) for logging panic messages to the developer console. -* `LICENSE-APACHE` and `LICENSE-MIT`: most Rust projects are licensed this way, so these are included for you +- `LICENSE-APACHE` and `LICENSE-MIT`: most Rust projects are licensed this way, so these are included for you ## License Licensed under either of -* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) -* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) +- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. From 0a4911c2102b82b1c611ffdf3d808fae45a56de4 Mon Sep 17 00:00:00 2001 From: Jeong Min Oh Date: Mon, 29 Sep 2025 10:37:20 +0900 Subject: [PATCH 22/59] Update FUNDING.yml --- .github/FUNDING.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 7e4de40d..0b0595a6 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -3,10 +3,3 @@ github: owjs3901 patreon: JeongMinOh open_collective: devup-ui -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] \ No newline at end of file From 1cd2d6faaae352b1c15d9ae188224101ff6daebc Mon Sep 17 00:00:00 2001 From: Jeong Min Oh Date: Mon, 29 Sep 2025 10:40:05 +0900 Subject: [PATCH 23/59] Update FUNDING.yml --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 0b0595a6..4ff5166b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,5 +1,5 @@ # These are supported funding model platforms -github: owjs3901 +github: dev-five-git patreon: JeongMinOh open_collective: devup-ui From 38febe60bd9ed2d3667925c75161e6e0c55d76d4 Mon Sep 17 00:00:00 2001 From: Jeong Min Oh Date: Mon, 29 Sep 2025 11:36:30 +0900 Subject: [PATCH 24/59] Update config.json --- .changeset/config.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index 50fc841a..1c6921f1 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,6 +1,9 @@ { "$schema": "https://unpkg.com/@changesets/config@3.0.5/schema.json", - "changelog": "@changesets/cli/changelog", + "changelog": [ + "@changesets/changelog-github", + { "repo": "dev-five-git/devup-ui" } + ], "commit": false, "fixed": [], "linked": [], @@ -12,4 +15,4 @@ "*-benchmark", "landing" ] -} \ No newline at end of file +} From 002fe6ef09fd1642ee0bdfa762f4d3e2d16d385d Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Mon, 29 Sep 2025 17:24:57 +0900 Subject: [PATCH 25/59] Add new prop positioning --- libs/css/src/constant.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/libs/css/src/constant.rs b/libs/css/src/constant.rs index ba095ff8..8ceb9aaf 100644 --- a/libs/css/src/constant.rs +++ b/libs/css/src/constant.rs @@ -73,6 +73,39 @@ pub(super) static GLOBAL_STYLE_PROPERTY: phf::Map<&str, &[&str]> = phf_map! { "maskPos" => &["mask-position"], "maskImg" => &["mask-image"], }; + +pub(super) static GLOBAL_ENUM_STYLE_PROPERTY: phf::Map<&str, phf::Map<&str, phf::Map<&str, &str>>> = phf_map! { + "positioning " => phf_map! { + "top" => phf_map! { + "top" => "0", + }, + "right" => phf_map! { + "right" => "0", + }, + "bottom" => phf_map! { + "bottom" => "0", + }, + "left" => phf_map! { + "left" => "0", + }, + "top-right" => phf_map! { + "top" => "0", + "right" => "0", + }, + "top-left" => phf_map! { + "top" => "0", + "left" => "0", + }, + "bottom-left" => phf_map! { + "bottom" => "0", + "left" => "0", + }, + "bottom-right" => phf_map! { + "bottom" => "0", + "right" => "0", + }, + } +}; pub(super) static OPTIMIZE_MULTI_CSS_VALUE_PROPERTY: phf::Set<&str> = phf_set! { "font-family", "src", From e7b997e58468fcf499da580170409bc32d06c182 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Mon, 29 Sep 2025 18:25:43 +0900 Subject: [PATCH 26/59] devup ui eslint plugin --- apps/landing/package.json | 8 +- apps/next/package.json | 2 +- apps/rsbuild/package.json | 4 +- apps/vite-lib/package.json | 4 +- apps/vite/package.json | 4 +- benchmark/next-chakra-ui/package.json | 2 +- benchmark/next-devup-ui-single/package.json | 2 +- benchmark/next-devup-ui/package.json | 2 +- benchmark/next-kuma-ui/package.json | 2 +- benchmark/next-mui/package.json | 2 +- benchmark/next-panda-css/package.json | 4 +- benchmark/next-stylex/package.json | 12 +- benchmark/next-tailwind/package.json | 2 +- benchmark/next-vanilla-extract/package.json | 2 +- package.json | 8 +- packages/components/package.json | 14 +- packages/eslint-plugin/README.md | 0 packages/eslint-plugin/package.json | 42 + .../eslint-plugin/src/__tests__/index.test.ts | 11 + .../__snapshots__/recommended.test.ts.snap | 14466 ++++++++++++++++ .../src/configs/__tests__/recommended.test.ts | 6 + .../eslint-plugin/src/configs/recommended.ts | 33 + packages/eslint-plugin/src/index.ts | 6 + .../src/rules/__tests__/index.test.ts | 8 + .../rules/css-utils-literal-only/README.md | 0 .../__tests__/index.test.ts | 88 + .../src/rules/css-utils-literal-only/index.ts | 25 + packages/eslint-plugin/src/rules/index.ts | 1 + .../src/rules/no-useless-responsive/README.md | 0 .../__tests__/index.test.ts | 56 + .../src/rules/no-useless-responsive/index.ts | 25 + .../rules/no-useless-tailing-nulls/README.md | 0 .../__tests__/index.test.ts | 64 + .../rules/no-useless-tailing-nulls/index.ts | 25 + packages/eslint-plugin/tsconfig.json | 26 + packages/eslint-plugin/vite.config.ts | 63 + packages/next-plugin/package.json | 2 +- packages/react/package.json | 2 +- packages/reset-css/package.json | 2 +- packages/rsbuild-plugin/package.json | 4 +- packages/webpack-plugin/package.json | 2 +- pnpm-lock.yaml | 1307 +- 42 files changed, 15807 insertions(+), 531 deletions(-) create mode 100644 packages/eslint-plugin/README.md create mode 100644 packages/eslint-plugin/package.json create mode 100644 packages/eslint-plugin/src/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap create mode 100644 packages/eslint-plugin/src/configs/__tests__/recommended.test.ts create mode 100644 packages/eslint-plugin/src/configs/recommended.ts create mode 100644 packages/eslint-plugin/src/index.ts create mode 100644 packages/eslint-plugin/src/rules/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/rules/css-utils-literal-only/README.md create mode 100644 packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts create mode 100644 packages/eslint-plugin/src/rules/index.ts create mode 100644 packages/eslint-plugin/src/rules/no-useless-responsive/README.md create mode 100644 packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/rules/no-useless-responsive/index.ts create mode 100644 packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md create mode 100644 packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts create mode 100644 packages/eslint-plugin/tsconfig.json create mode 100644 packages/eslint-plugin/vite.config.ts diff --git a/apps/landing/package.json b/apps/landing/package.json index 809833d6..a31d0981 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -16,17 +16,17 @@ "@devup-ui/reset-css": "workspace:*", "@mdx-js/loader": "^3.1.1", "@mdx-js/react": "^3.1.1", - "@next/mdx": "^15.5.3", + "@next/mdx": "^15.5.4", "@types/mdx": "^2.0.13", "body-scroll-lock": "3.1.5", "clsx": "^2.1.1", - "next": "^15.5.3", + "next": "^15.5.4", "react": "^19.1.1", "react-dom": "^19.1.1", "react-markdown": "^10.1.0", "react-syntax-highlighter": "^15.6.6", "remark-gfm": "^4.0.1", - "lenis": "1.3.11" + "lenis": "1.3.11" }, "devDependencies": { "@devup-ui/next-plugin": "workspace:*", @@ -39,4 +39,4 @@ "remark": "^15.0.1", "typescript": "^5" } -} \ No newline at end of file +} diff --git a/apps/next/package.json b/apps/next/package.json index 3da1fccf..9c1af65a 100644 --- a/apps/next/package.json +++ b/apps/next/package.json @@ -12,7 +12,7 @@ "dependencies": { "react": "^19.1.1", "react-dom": "^19.1.1", - "next": "^15.5.3", + "next": "^15.5.4", "@devup-ui/react": "workspace:*" }, "devDependencies": { diff --git a/apps/rsbuild/package.json b/apps/rsbuild/package.json index 21ee119d..74760dd1 100644 --- a/apps/rsbuild/package.json +++ b/apps/rsbuild/package.json @@ -16,8 +16,8 @@ "@devup-ui/react": "workspace:*" }, "devDependencies": { - "@rsbuild/core": "^1.5.10", - "@rsbuild/plugin-react": "^1.4.0", + "@rsbuild/core": "^1.5.12", + "@rsbuild/plugin-react": "^1.4.1", "@devup-ui/rsbuild-plugin": "workspace:*" } } diff --git a/apps/vite-lib/package.json b/apps/vite-lib/package.json index 7154e899..75ec93b0 100644 --- a/apps/vite-lib/package.json +++ b/apps/vite-lib/package.json @@ -18,8 +18,8 @@ "devDependencies": { "vite-plugin-dts": "^4.5.4", "@devup-ui/vite-plugin": "workspace:*", - "@vitejs/plugin-react": "^5.0.3", - "vite": "^7.1.6", + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7", "typescript": "^5", "@types/node": "^24", "@types/react": "^19" diff --git a/apps/vite/package.json b/apps/vite/package.json index 9900ac12..ac3fb35f 100644 --- a/apps/vite/package.json +++ b/apps/vite/package.json @@ -17,8 +17,8 @@ }, "devDependencies": { "@devup-ui/vite-plugin": "workspace:*", - "vite": "^7.1.6", - "@vitejs/plugin-react": "^5.0.3", + "vite": "^7.1.7", + "@vitejs/plugin-react": "^5.0.4", "typescript": "^5", "@types/node": "^24", "@types/react": "^19", diff --git a/benchmark/next-chakra-ui/package.json b/benchmark/next-chakra-ui/package.json index 7862ceb7..9b978a6e 100644 --- a/benchmark/next-chakra-ui/package.json +++ b/benchmark/next-chakra-ui/package.json @@ -12,7 +12,7 @@ "dependencies": { "@chakra-ui/react": "^3.27.0", "@emotion/react": "^11.14.0", - "next": "^15.5.3", + "next": "^15.5.4", "next-themes": "^0.4.6", "react": "^19.1.1", "react-dom": "^19.1.1", diff --git a/benchmark/next-devup-ui-single/package.json b/benchmark/next-devup-ui-single/package.json index 64f8711c..3490f43a 100644 --- a/benchmark/next-devup-ui-single/package.json +++ b/benchmark/next-devup-ui-single/package.json @@ -12,7 +12,7 @@ "dependencies": { "react": "^19.1.1", "react-dom": "^19.1.1", - "next": "^15.5.3", + "next": "^15.5.4", "@devup-ui/react": "workspace:*" }, "devDependencies": { diff --git a/benchmark/next-devup-ui/package.json b/benchmark/next-devup-ui/package.json index 884eb5c8..cdcaddb4 100644 --- a/benchmark/next-devup-ui/package.json +++ b/benchmark/next-devup-ui/package.json @@ -12,7 +12,7 @@ "dependencies": { "react": "^19.1.1", "react-dom": "^19.1.1", - "next": "^15.5.3", + "next": "^15.5.4", "@devup-ui/react": "workspace:*" }, "devDependencies": { diff --git a/benchmark/next-kuma-ui/package.json b/benchmark/next-kuma-ui/package.json index c398cc6e..207b6618 100644 --- a/benchmark/next-kuma-ui/package.json +++ b/benchmark/next-kuma-ui/package.json @@ -12,7 +12,7 @@ "dependencies": { "react": "^19.1.1", "react-dom": "^19.1.1", - "next": "^15.5.3", + "next": "^15.5.4", "@kuma-ui/core": "^1.5.9" }, "devDependencies": { diff --git a/benchmark/next-mui/package.json b/benchmark/next-mui/package.json index b35d0c8f..f8fa0f9d 100644 --- a/benchmark/next-mui/package.json +++ b/benchmark/next-mui/package.json @@ -13,7 +13,7 @@ "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@mui/material": "7.3.2", - "next": "^15.5.3", + "next": "^15.5.4", "react": "^19.1.1", "react-dom": "^19.1.1", "react-icons": "^5.5.0" diff --git a/benchmark/next-panda-css/package.json b/benchmark/next-panda-css/package.json index 686950a8..10a7e38c 100644 --- a/benchmark/next-panda-css/package.json +++ b/benchmark/next-panda-css/package.json @@ -13,10 +13,10 @@ "dependencies": { "react": "^19.1.1", "react-dom": "^19.1.1", - "next": "^15.5.3" + "next": "^15.5.4" }, "devDependencies": { - "@pandacss/dev": "^1.3", + "@pandacss/dev": "^1.4", "typescript": "^5", "@types/node": "^24", "@types/react": "^19", diff --git a/benchmark/next-stylex/package.json b/benchmark/next-stylex/package.json index 0e284970..be3cd1b8 100644 --- a/benchmark/next-stylex/package.json +++ b/benchmark/next-stylex/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@stylexjs/open-props": "^0.11.1", - "@stylexjs/stylex": "^0.15.4", + "@stylexjs/stylex": "^0.16.0", "bright": "^1.0.0", - "next": "15.5.3", + "next": "15.5.4", "react": "19.1.1", "react-dom": "19.1.1" }, @@ -23,15 +23,15 @@ "@babel/plugin-syntax-flow": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", - "@stylexjs/babel-plugin": "^0.15.4", - "@stylexjs/eslint-plugin": "^0.15.4", + "@stylexjs/babel-plugin": "^0.16.0", + "@stylexjs/eslint-plugin": "^0.16.0", "@stylexjs/nextjs-plugin": "^0.11.1", "@types/node": "24.5.2", - "@types/react": "19.1.13", + "@types/react": "19.1.15", "@types/react-dom": "19.1.9", "@types/react-test-renderer": "^19.1.0", "eslint": "9.36.0", - "eslint-config-next": "15.5.3", + "eslint-config-next": "15.5.4", "prettier": "^3.6.2", "react-test-renderer": "^19.1.1", "rimraf": "^6.0.1", diff --git a/benchmark/next-tailwind/package.json b/benchmark/next-tailwind/package.json index ec87a173..e932b4f4 100644 --- a/benchmark/next-tailwind/package.json +++ b/benchmark/next-tailwind/package.json @@ -10,7 +10,7 @@ "lint": "next lint" }, "dependencies": { - "next": "^15.5.3", + "next": "^15.5.4", "react": "^19.1.1", "react-dom": "^19.1.1", "react-icons": "^5.5.0" diff --git a/benchmark/next-vanilla-extract/package.json b/benchmark/next-vanilla-extract/package.json index e42d317a..304834ea 100644 --- a/benchmark/next-vanilla-extract/package.json +++ b/benchmark/next-vanilla-extract/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@vanilla-extract/css": "^1.17.4", - "next": "^15.5.3", + "next": "^15.5.4", "react": "^19.1.1", "react-dom": "^19.1.1", "react-icons": "^5.5.0" diff --git a/package.json b/package.json index b96bea0d..eedcf8ad 100644 --- a/package.json +++ b/package.json @@ -21,18 +21,18 @@ "@testing-library/user-event": "14.6.1", "@types/node": "^24.5.2", "@vitest/coverage-v8": "^3.2.4", - "eslint": "^9.35.0", + "eslint": "^9.36.0", "eslint-plugin-devup": "^2.0.5", "eslint-plugin-jsonc": "^2.20.1", "eslint-plugin-mdx": "^3.6.2", "globals": "^16.4.0", - "happy-dom": "^18.0.1", + "happy-dom": "^19.0.1", "husky": "^9.1.7", - "lint-staged": "^16.1.6", + "lint-staged": "^16.2.3", "vitest": "^3.2.4" }, "author": "devfive", - "packageManager": "pnpm@10.17.0", + "packageManager": "pnpm@10.17.1", "resolutions": { "vite": "^6" } diff --git a/packages/components/package.json b/packages/components/package.json index 9a54dbeb..acd704bd 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -49,15 +49,15 @@ }, "devDependencies": { "@devup-ui/vite-plugin": "workspace:*", - "@storybook/addon-docs": "^9.1.7", - "@storybook/addon-onboarding": "^9.1.7", - "@storybook/react-vite": "^9.1.7", - "@types/react": "^19.1.13", - "eslint-plugin-storybook": "^9.1.7", + "@storybook/addon-docs": "^9.1.8", + "@storybook/addon-onboarding": "^9.1.8", + "@storybook/react-vite": "^9.1.8", + "@types/react": "^19.1.15", + "eslint-plugin-storybook": "^9.1.8", "rollup-plugin-preserve-directives": "^0.4.0", - "storybook": "^9.1.7", + "storybook": "^9.1.8", "typescript": "^5.9.2", - "vite": "^7.1.6", + "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4" }, diff --git a/packages/eslint-plugin/README.md b/packages/eslint-plugin/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json new file mode 100644 index 00000000..c314c37d --- /dev/null +++ b/packages/eslint-plugin/package.json @@ -0,0 +1,42 @@ +{ + "name": "@devup-ui/eslint-plugin", + "version": "0.1.0", + "description": "eslint plugin for devup-ui", + "main": "dist/index.cjs", + "type": "module", + "scripts": { + "test": "vitest run --coverage", + "test:s": "vitest run -u", + "lint": "eslint", + "build": "tsc && vite build" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.cjs" + } + }, + "files": [ + "dist" + ], + "keywords": [ + "eslint" + ], + "author": "devfive", + "license": "ISC", + "dependencies": { + "typescript-eslint": "^8.44" + }, + "devDependencies": { + "@types/eslint": "^9.6", + "@types/eslint__js": "^9.14", + "@typescript-eslint/rule-tester": "^8.44", + "@typescript-eslint/utils": "^8.44", + "@vitest/coverage-v8": "3.2.4", + "eslint-plugin-eslint-plugin": "^7.0.0", + "typescript": "^5.9.2", + "vite": "^7.1.7", + "vite-plugin-dts": "^4.5.4", + "vitest": "^3.2.4" + } +} diff --git a/packages/eslint-plugin/src/__tests__/index.test.ts b/packages/eslint-plugin/src/__tests__/index.test.ts new file mode 100644 index 00000000..e163ea00 --- /dev/null +++ b/packages/eslint-plugin/src/__tests__/index.test.ts @@ -0,0 +1,11 @@ +import * as index from '../index' +describe('export index', () => { + it('export', () => { + expect({ ...index }).toEqual({ + rules: expect.any(Object), + configs: { + recommended: expect.any(Object), + }, + }) + }) +}) diff --git a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap new file mode 100644 index 00000000..f1ac655a --- /dev/null +++ b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap @@ -0,0 +1,14466 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`recommended > export recommended config 1`] = ` +[ + { + "ignores": [ + "**/node_modules/", + "**/build/", + "**/__snapshots__/", + "!**/src/**", + "!vite.config.ts", + "!**/.storybook/**", + "**/storybook-static/", + "**/dist/", + "**/next-env.d.ts", + "**/out/", + "**/.next/", + "**/public/", + "**/.df/", + ], + }, + { + "languageOptions": { + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + }, + }, + "plugins": { + "react": { + "configs": { + "all": { + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + }, + "plugins": [ + "react", + ], + "rules": { + "react/boolean-prop-naming": 2, + "react/button-has-type": 2, + "react/checked-requires-onchange-or-readonly": 2, + "react/default-props-match-prop-types": 2, + "react/destructuring-assignment": 2, + "react/display-name": 2, + "react/forbid-component-props": 2, + "react/forbid-dom-props": 2, + "react/forbid-elements": 2, + "react/forbid-foreign-prop-types": 2, + "react/forbid-prop-types": 2, + "react/forward-ref-uses-ref": 2, + "react/function-component-definition": 2, + "react/hook-use-state": 2, + "react/iframe-missing-sandbox": 2, + "react/jsx-boolean-value": 2, + "react/jsx-child-element-spacing": 2, + "react/jsx-closing-bracket-location": 2, + "react/jsx-closing-tag-location": 2, + "react/jsx-curly-brace-presence": 2, + "react/jsx-curly-newline": 2, + "react/jsx-curly-spacing": 2, + "react/jsx-equals-spacing": 2, + "react/jsx-filename-extension": 2, + "react/jsx-first-prop-new-line": 2, + "react/jsx-fragments": 2, + "react/jsx-handler-names": 2, + "react/jsx-indent": 2, + "react/jsx-indent-props": 2, + "react/jsx-key": 2, + "react/jsx-max-depth": 2, + "react/jsx-max-props-per-line": 2, + "react/jsx-newline": 2, + "react/jsx-no-bind": 2, + "react/jsx-no-comment-textnodes": 2, + "react/jsx-no-constructed-context-values": 2, + "react/jsx-no-duplicate-props": 2, + "react/jsx-no-leaked-render": 2, + "react/jsx-no-literals": 2, + "react/jsx-no-script-url": 2, + "react/jsx-no-target-blank": 2, + "react/jsx-no-undef": 2, + "react/jsx-no-useless-fragment": 2, + "react/jsx-one-expression-per-line": 2, + "react/jsx-pascal-case": 2, + "react/jsx-props-no-multi-spaces": 2, + "react/jsx-props-no-spread-multi": 2, + "react/jsx-props-no-spreading": 2, + "react/jsx-sort-props": 2, + "react/jsx-tag-spacing": 2, + "react/jsx-uses-react": 2, + "react/jsx-uses-vars": 2, + "react/jsx-wrap-multilines": 2, + "react/no-access-state-in-setstate": 2, + "react/no-adjacent-inline-elements": 2, + "react/no-array-index-key": 2, + "react/no-arrow-function-lifecycle": 2, + "react/no-children-prop": 2, + "react/no-danger": 2, + "react/no-danger-with-children": 2, + "react/no-deprecated": 2, + "react/no-did-mount-set-state": 2, + "react/no-did-update-set-state": 2, + "react/no-direct-mutation-state": 2, + "react/no-find-dom-node": 2, + "react/no-invalid-html-attribute": 2, + "react/no-is-mounted": 2, + "react/no-multi-comp": 2, + "react/no-namespace": 2, + "react/no-object-type-as-default-prop": 2, + "react/no-redundant-should-component-update": 2, + "react/no-render-return-value": 2, + "react/no-set-state": 2, + "react/no-string-refs": 2, + "react/no-this-in-sfc": 2, + "react/no-typos": 2, + "react/no-unescaped-entities": 2, + "react/no-unknown-property": 2, + "react/no-unsafe": 2, + "react/no-unstable-nested-components": 2, + "react/no-unused-class-component-methods": 2, + "react/no-unused-prop-types": 2, + "react/no-unused-state": 2, + "react/no-will-update-set-state": 2, + "react/prefer-es6-class": 2, + "react/prefer-exact-props": 2, + "react/prefer-read-only-props": 2, + "react/prefer-stateless-function": 2, + "react/prop-types": 2, + "react/react-in-jsx-scope": 2, + "react/require-default-props": 2, + "react/require-optimization": 2, + "react/require-render-return": 2, + "react/self-closing-comp": 2, + "react/sort-comp": 2, + "react/sort-default-props": 2, + "react/sort-prop-types": 2, + "react/state-in-constructor": 2, + "react/static-property-placement": 2, + "react/style-prop-object": 2, + "react/void-dom-elements-no-children": 2, + }, + }, + "flat": { + "all": { + "languageOptions": { + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + }, + }, + "plugins": { + "react": [Circular], + }, + "rules": { + "react/boolean-prop-naming": 2, + "react/button-has-type": 2, + "react/checked-requires-onchange-or-readonly": 2, + "react/default-props-match-prop-types": 2, + "react/destructuring-assignment": 2, + "react/display-name": 2, + "react/forbid-component-props": 2, + "react/forbid-dom-props": 2, + "react/forbid-elements": 2, + "react/forbid-foreign-prop-types": 2, + "react/forbid-prop-types": 2, + "react/forward-ref-uses-ref": 2, + "react/function-component-definition": 2, + "react/hook-use-state": 2, + "react/iframe-missing-sandbox": 2, + "react/jsx-boolean-value": 2, + "react/jsx-child-element-spacing": 2, + "react/jsx-closing-bracket-location": 2, + "react/jsx-closing-tag-location": 2, + "react/jsx-curly-brace-presence": 2, + "react/jsx-curly-newline": 2, + "react/jsx-curly-spacing": 2, + "react/jsx-equals-spacing": 2, + "react/jsx-filename-extension": 2, + "react/jsx-first-prop-new-line": 2, + "react/jsx-fragments": 2, + "react/jsx-handler-names": 2, + "react/jsx-indent": 2, + "react/jsx-indent-props": 2, + "react/jsx-key": 2, + "react/jsx-max-depth": 2, + "react/jsx-max-props-per-line": 2, + "react/jsx-newline": 2, + "react/jsx-no-bind": 2, + "react/jsx-no-comment-textnodes": 2, + "react/jsx-no-constructed-context-values": 2, + "react/jsx-no-duplicate-props": 2, + "react/jsx-no-leaked-render": 2, + "react/jsx-no-literals": 2, + "react/jsx-no-script-url": 2, + "react/jsx-no-target-blank": 2, + "react/jsx-no-undef": 2, + "react/jsx-no-useless-fragment": 2, + "react/jsx-one-expression-per-line": 2, + "react/jsx-pascal-case": 2, + "react/jsx-props-no-multi-spaces": 2, + "react/jsx-props-no-spread-multi": 2, + "react/jsx-props-no-spreading": 2, + "react/jsx-sort-props": 2, + "react/jsx-tag-spacing": 2, + "react/jsx-uses-react": 2, + "react/jsx-uses-vars": 2, + "react/jsx-wrap-multilines": 2, + "react/no-access-state-in-setstate": 2, + "react/no-adjacent-inline-elements": 2, + "react/no-array-index-key": 2, + "react/no-arrow-function-lifecycle": 2, + "react/no-children-prop": 2, + "react/no-danger": 2, + "react/no-danger-with-children": 2, + "react/no-deprecated": 2, + "react/no-did-mount-set-state": 2, + "react/no-did-update-set-state": 2, + "react/no-direct-mutation-state": 2, + "react/no-find-dom-node": 2, + "react/no-invalid-html-attribute": 2, + "react/no-is-mounted": 2, + "react/no-multi-comp": 2, + "react/no-namespace": 2, + "react/no-object-type-as-default-prop": 2, + "react/no-redundant-should-component-update": 2, + "react/no-render-return-value": 2, + "react/no-set-state": 2, + "react/no-string-refs": 2, + "react/no-this-in-sfc": 2, + "react/no-typos": 2, + "react/no-unescaped-entities": 2, + "react/no-unknown-property": 2, + "react/no-unsafe": 2, + "react/no-unstable-nested-components": 2, + "react/no-unused-class-component-methods": 2, + "react/no-unused-prop-types": 2, + "react/no-unused-state": 2, + "react/no-will-update-set-state": 2, + "react/prefer-es6-class": 2, + "react/prefer-exact-props": 2, + "react/prefer-read-only-props": 2, + "react/prefer-stateless-function": 2, + "react/prop-types": 2, + "react/react-in-jsx-scope": 2, + "react/require-default-props": 2, + "react/require-optimization": 2, + "react/require-render-return": 2, + "react/self-closing-comp": 2, + "react/sort-comp": 2, + "react/sort-default-props": 2, + "react/sort-prop-types": 2, + "react/state-in-constructor": 2, + "react/static-property-placement": 2, + "react/style-prop-object": 2, + "react/void-dom-elements-no-children": 2, + }, + }, + "jsx-runtime": { + "languageOptions": { + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "jsxPragma": null, + }, + }, + "plugins": { + "react": [Circular], + }, + "rules": { + "react/jsx-uses-react": 0, + "react/react-in-jsx-scope": 0, + }, + }, + "recommended": [Circular], + }, + "jsx-runtime": { + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "jsxPragma": null, + }, + "plugins": [ + "react", + ], + "rules": { + "react/jsx-uses-react": 0, + "react/react-in-jsx-scope": 0, + }, + }, + "recommended": { + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + }, + "plugins": [ + "react", + ], + "rules": { + "react/display-name": 2, + "react/jsx-key": 2, + "react/jsx-no-comment-textnodes": 2, + "react/jsx-no-duplicate-props": 2, + "react/jsx-no-target-blank": 2, + "react/jsx-no-undef": 2, + "react/jsx-uses-react": 2, + "react/jsx-uses-vars": 2, + "react/no-children-prop": 2, + "react/no-danger-with-children": 2, + "react/no-deprecated": 2, + "react/no-direct-mutation-state": 2, + "react/no-find-dom-node": 2, + "react/no-is-mounted": 2, + "react/no-render-return-value": 2, + "react/no-string-refs": 2, + "react/no-unescaped-entities": 2, + "react/no-unknown-property": 2, + "react/no-unsafe": 0, + "react/prop-types": 2, + "react/react-in-jsx-scope": 2, + "react/require-render-return": 2, + }, + }, + }, + "deprecatedRules": { + "jsx-sort-default-props": { + "create": [Function], + "meta": { + "deprecated": true, + "docs": { + "category": "Stylistic Issues", + "description": "Enforce defaultProps declarations alphabetical sorting", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md", + }, + "messages": { + "propsNotSorted": "Default prop types declarations should be sorted alphabetically", + }, + "replacedBy": [ + "sort-default-props", + ], + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreCase": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-space-before-closing": { + "create": [Function], + "meta": { + "deprecated": true, + "docs": { + "category": "Stylistic Issues", + "description": "Enforce spacing before closing bracket in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md", + }, + "fixable": "code", + "messages": { + "needSpaceBeforeClose": "A space is required before closing bracket", + "noSpaceBeforeClose": "A space is forbidden before closing bracket", + }, + "replacedBy": [ + "jsx-tag-spacing", + ], + "schema": [ + { + "enum": [ + "always", + "never", + ], + }, + ], + }, + }, + }, + "rules": { + "boolean-prop-naming": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforces consistent naming for boolean props", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md", + }, + "messages": { + "patternMismatch": "Prop name \`{{propName}}\` doesn’t match rule \`{{pattern}}\`", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "message": { + "minLength": 1, + "type": "string", + }, + "propTypeNames": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "rule": { + "default": "^(is|has)[A-Z]([A-Za-z0-9]?)+", + "minLength": 1, + "type": "string", + }, + "validateNested": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "button-has-type": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow usage of \`button\` elements without an explicit \`type\` attribute", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md", + }, + "messages": { + "complexType": "The button type attribute must be specified by a static string or a trivial ternary expression", + "forbiddenValue": ""{{value}}" is an invalid value for button type attribute", + "invalidValue": ""{{value}}" is an invalid value for button type attribute", + "missingType": "Missing an explicit type attribute for button", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "button": { + "default": true, + "type": "boolean", + }, + "reset": { + "default": true, + "type": "boolean", + }, + "submit": { + "default": true, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "checked-requires-onchange-or-readonly": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Enforce using \`onChange\` or \`readonly\` attribute when \`checked\` is used", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md", + }, + "messages": { + "exclusiveCheckedAttribute": "Use either \`checked\` or \`defaultChecked\`, but not both.", + "missingProperty": "\`checked\` should be used with either \`onChange\` or \`readOnly\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreExclusiveCheckedAttribute": { + "type": "boolean", + }, + "ignoreMissingProperties": { + "type": "boolean", + }, + }, + }, + ], + }, + }, + "default-props-match-prop-types": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Enforce all defaultProps have a corresponding non-required PropType", + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md", + }, + "messages": { + "defaultHasNoType": "defaultProp "{{name}}" has no corresponding propTypes declaration.", + "requiredHasDefault": "defaultProp "{{name}}" defined for isRequired propType.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowRequiredDefaults": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "destructuring-assignment": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce consistent usage of destructuring assignment of props, state, and context", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md", + }, + "fixable": "code", + "messages": { + "destructureInSignature": "Must destructure props in the function signature.", + "noDestructAssignment": "Must never use destructuring {{type}} assignment", + "noDestructContextInSFCArg": "Must never use destructuring context assignment in SFC argument", + "noDestructPropsInSFCArg": "Must never use destructuring props assignment in SFC argument", + "useDestructAssignment": "Must use destructuring {{type}} assignment", + }, + "schema": [ + { + "enum": [ + "always", + "never", + ], + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "destructureInSignature": { + "enum": [ + "always", + "ignore", + ], + "type": "string", + }, + "ignoreClassFields": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "display-name": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow missing displayName in a React component definition", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md", + }, + "messages": { + "noContextDisplayName": "Context definition is missing display name", + "noDisplayName": "Component definition is missing display name", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "checkContextObjects": { + "type": "boolean", + }, + "ignoreTranspilerName": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "forbid-component-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow certain props on components", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md", + }, + "messages": { + "propIsForbidden": "Prop "{{prop}}" is forbidden on Components", + }, + "schema": [ + { + "properties": { + "forbid": { + "items": { + "anyOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "allowedFor": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "allowedForPatterns": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "message": { + "type": "string", + }, + "propName": { + "type": "string", + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "disallowedFor", + ], + }, + { + "required": [ + "disallowedForPatterns", + ], + }, + ], + "properties": { + "disallowedFor": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "disallowedForPatterns": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "message": { + "type": "string", + }, + "propName": { + "type": "string", + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "allowedFor": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "allowedForPatterns": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "message": { + "type": "string", + }, + "propNamePattern": { + "type": "string", + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "disallowedFor", + ], + }, + { + "required": [ + "disallowedForPatterns", + ], + }, + ], + "properties": { + "disallowedFor": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "disallowedForPatterns": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "message": { + "type": "string", + }, + "propNamePattern": { + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "forbid-dom-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow certain props on DOM Nodes", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md", + }, + "messages": { + "propIsForbidden": "Prop "{{prop}}" is forbidden on DOM Nodes", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "forbid": { + "items": { + "anyOf": [ + { + "type": "string", + }, + { + "properties": { + "disallowedFor": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "message": { + "type": "string", + }, + "propName": { + "type": "string", + }, + }, + "type": "object", + }, + ], + "minLength": 1, + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + }, + }, + "forbid-elements": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow certain elements", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md", + }, + "messages": { + "forbiddenElement": "<{{element}}> is forbidden", + "forbiddenElement_message": "<{{element}}> is forbidden, {{message}}", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "forbid": { + "items": { + "anyOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "element": { + "type": "string", + }, + "message": { + "type": "string", + }, + }, + "required": [ + "element", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "forbid-foreign-prop-types": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow using another component's propTypes", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md", + }, + "messages": { + "forbiddenPropType": "Using propTypes from another component is not safe because they may be removed in production builds", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowInPropTypes": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "forbid-prop-types": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow certain propTypes", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md", + }, + "messages": { + "forbiddenPropType": "Prop type "{{target}}" is forbidden", + }, + "schema": [ + { + "additionalProperties": true, + "properties": { + "checkChildContextTypes": { + "type": "boolean", + }, + "checkContextTypes": { + "type": "boolean", + }, + "forbid": { + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "forward-ref-uses-ref": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Require all forwardRef components include a ref parameter", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md", + }, + "hasSuggestions": true, + "messages": { + "addRefParameter": "Add a ref parameter", + "missingRefParameter": "forwardRef is used with this component but no ref parameter is set", + "removeForwardRef": "Remove forwardRef wrapper", + }, + "schema": [], + "type": "suggestion", + }, + }, + "function-component-definition": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce a specific function type for function components", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md", + }, + "fixable": "code", + "messages": { + "arrow-function": "Function component is not an arrow function", + "function-declaration": "Function component is not a function declaration", + "function-expression": "Function component is not a function expression", + }, + "schema": [ + { + "properties": { + "namedComponents": { + "anyOf": [ + { + "enum": [ + "function-declaration", + "arrow-function", + "function-expression", + ], + }, + { + "items": { + "enum": [ + "function-declaration", + "arrow-function", + "function-expression", + ], + "type": "string", + }, + "type": "array", + }, + ], + }, + "unnamedComponents": { + "anyOf": [ + { + "enum": [ + "arrow-function", + "function-expression", + ], + }, + { + "items": { + "enum": [ + "arrow-function", + "function-expression", + ], + "type": "string", + }, + "type": "array", + }, + ], + }, + }, + "type": "object", + }, + ], + }, + }, + "hook-use-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Ensure destructuring and symmetric naming of useState hook value and setter variables", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md", + }, + "hasSuggestions": true, + "messages": { + "suggestMemo": "Replace useState call with useMemo", + "suggestPair": "Destructure useState call into value + setter pair", + "useStateErrorMessage": "useState call is not destructured into value + setter pair", + "useStateErrorMessageOrAddOption": "useState call is not destructured into value + setter pair (you can allow destructuring by enabling "allowDestructuredState" option)", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowDestructuredState": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "iframe-missing-sandbox": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Enforce sandbox attribute on iframe elements", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md", + }, + "messages": { + "attributeMissing": "An iframe element is missing a sandbox attribute", + "invalidCombination": "An iframe element defines a sandbox attribute with both allow-scripts and allow-same-origin which is invalid", + "invalidValue": "An iframe element defines a sandbox attribute with invalid value "{{ value }}"", + }, + "schema": [], + }, + }, + "jsx-boolean-value": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce boolean attributes notation in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md", + }, + "fixable": "code", + "messages": { + "omitBoolean": "Value must be omitted for boolean attribute \`{{propName}}\`", + "omitPropAndBoolean": "Value must be omitted for \`false\` attribute: \`{{propName}}\`", + "setBoolean": "Value must be set for boolean attribute \`{{propName}}\`", + }, + "schema": { + "anyOf": [ + { + "additionalItems": false, + "items": [ + { + "enum": [ + "always", + "never", + ], + }, + ], + "type": "array", + }, + { + "additionalItems": false, + "items": [ + { + "enum": [ + "always", + ], + }, + { + "additionalProperties": false, + "properties": { + "assumeUndefinedIsFalse": { + "type": "boolean", + }, + "never": { + "items": { + "minLength": 1, + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + { + "additionalItems": false, + "items": [ + { + "enum": [ + "never", + ], + }, + { + "additionalProperties": false, + "properties": { + "always": { + "items": { + "minLength": 1, + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "assumeUndefinedIsFalse": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + ], + }, + }, + }, + "jsx-child-element-spacing": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce or disallow spaces inside of curly braces in JSX attributes and expressions", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md", + }, + "fixable": null, + "messages": { + "spacingAfterPrev": "Ambiguous spacing after previous element {{element}}", + "spacingBeforeNext": "Ambiguous spacing before next element {{element}}", + }, + "schema": [], + }, + }, + "jsx-closing-bracket-location": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce closing bracket location in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md", + }, + "fixable": "code", + "messages": { + "bracketLocation": "The closing bracket must be {{location}}{{details}}", + }, + "schema": [ + { + "anyOf": [ + { + "enum": [ + "after-props", + "props-aligned", + "tag-aligned", + "line-aligned", + ], + }, + { + "additionalProperties": false, + "properties": { + "location": { + "enum": [ + "after-props", + "props-aligned", + "tag-aligned", + "line-aligned", + ], + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "nonEmpty": { + "enum": [ + "after-props", + "props-aligned", + "tag-aligned", + "line-aligned", + false, + ], + }, + "selfClosing": { + "enum": [ + "after-props", + "props-aligned", + "tag-aligned", + "line-aligned", + false, + ], + }, + }, + "type": "object", + }, + ], + }, + ], + }, + }, + "jsx-closing-tag-location": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce closing tag location for multiline JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md", + }, + "fixable": "whitespace", + "messages": { + "alignWithOpening": "Expected closing tag to be aligned with the line containing the opening tag", + "matchIndent": "Expected closing tag to match indentation of opening.", + "onOwnLine": "Closing tag of a multiline JSX expression must be on its own line.", + }, + "schema": [ + { + "anyOf": [ + { + "enum": [ + "tag-aligned", + "line-aligned", + ], + }, + { + "additionalProperties": false, + "properties": { + "location": { + "enum": [ + "tag-aligned", + "line-aligned", + ], + }, + }, + "type": "object", + }, + ], + }, + ], + }, + }, + "jsx-curly-brace-presence": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md", + }, + "fixable": "code", + "messages": { + "missingCurly": "Need to wrap this literal in a JSX expression.", + "unnecessaryCurly": "Curly braces are unnecessary here.", + }, + "schema": [ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "children": { + "enum": [ + "always", + "never", + "ignore", + ], + }, + "propElementValues": { + "enum": [ + "always", + "never", + "ignore", + ], + }, + "props": { + "enum": [ + "always", + "never", + "ignore", + ], + }, + }, + "type": "object", + }, + { + "enum": [ + "always", + "never", + "ignore", + ], + }, + ], + }, + ], + }, + }, + "jsx-curly-newline": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce consistent linebreaks in curly braces in JSX attributes and expressions", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md", + }, + "fixable": "whitespace", + "messages": { + "expectedAfter": "Expected newline after '{'.", + "expectedBefore": "Expected newline before '}'.", + "unexpectedAfter": "Unexpected newline after '{'.", + "unexpectedBefore": "Unexpected newline before '}'.", + }, + "schema": [ + { + "anyOf": [ + { + "enum": [ + "consistent", + "never", + ], + }, + { + "additionalProperties": false, + "properties": { + "multiline": { + "enum": [ + "consistent", + "require", + "forbid", + ], + }, + "singleline": { + "enum": [ + "consistent", + "require", + "forbid", + ], + }, + }, + "type": "object", + }, + ], + }, + ], + "type": "layout", + }, + }, + "jsx-curly-spacing": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce or disallow spaces inside of curly braces in JSX attributes and expressions", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md", + }, + "fixable": "code", + "messages": { + "noNewlineAfter": "There should be no newline after '{{token}}'", + "noNewlineBefore": "There should be no newline before '{{token}}'", + "noSpaceAfter": "There should be no space after '{{token}}'", + "noSpaceBefore": "There should be no space before '{{token}}'", + "spaceNeededAfter": "A space is required after '{{token}}'", + "spaceNeededBefore": "A space is required before '{{token}}'", + }, + "schema": { + "definitions": { + "basicConfig": { + "properties": { + "allowMultiline": { + "type": "boolean", + }, + "spacing": { + "properties": { + "objectLiterals": { + "enum": [ + "always", + "never", + ], + }, + }, + "type": "object", + }, + "when": { + "enum": [ + "always", + "never", + ], + }, + }, + "type": "object", + }, + "basicConfigOrBoolean": { + "anyOf": [ + { + "$ref": "#/definitions/basicConfig", + }, + { + "type": "boolean", + }, + ], + }, + }, + "items": [ + { + "anyOf": [ + { + "allOf": [ + { + "$ref": "#/definitions/basicConfig", + }, + { + "properties": { + "attributes": { + "$ref": "#/definitions/basicConfigOrBoolean", + }, + "children": { + "$ref": "#/definitions/basicConfigOrBoolean", + }, + }, + "type": "object", + }, + ], + }, + { + "enum": [ + "always", + "never", + ], + }, + ], + }, + { + "additionalProperties": false, + "properties": { + "allowMultiline": { + "type": "boolean", + }, + "spacing": { + "properties": { + "objectLiterals": { + "enum": [ + "always", + "never", + ], + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + }, + "jsx-equals-spacing": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce or disallow spaces around equal signs in JSX attributes", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md", + }, + "fixable": "code", + "messages": { + "needSpaceAfter": "A space is required after '='", + "needSpaceBefore": "A space is required before '='", + "noSpaceAfter": "There should be no space after '='", + "noSpaceBefore": "There should be no space before '='", + }, + "schema": [ + { + "enum": [ + "always", + "never", + ], + }, + ], + }, + }, + "jsx-filename-extension": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow file extensions that may contain JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md", + }, + "messages": { + "extensionOnlyForJSX": "Only files containing JSX may use the extension '{{ext}}'", + "noJSXWithExtension": "JSX not allowed in files with extension '{{ext}}'", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "enum": [ + "always", + "as-needed", + ], + }, + "extensions": { + "items": { + "type": "string", + }, + "type": "array", + }, + "ignoreFilesWithoutCode": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-first-prop-new-line": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce proper position of the first property in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md", + }, + "fixable": "code", + "messages": { + "propOnNewLine": "Property should be placed on a new line", + "propOnSameLine": "Property should be placed on the same line as the component declaration", + }, + "schema": [ + { + "enum": [ + "always", + "never", + "multiline", + "multiline-multiprop", + "multiprop", + ], + }, + ], + }, + }, + "jsx-fragments": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce shorthand or standard form for React fragments", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md", + }, + "fixable": "code", + "messages": { + "fragmentsNotSupported": "Fragments are only supported starting from React v16.2. Please disable the \`react/jsx-fragments\` rule in \`eslint\` settings or upgrade your version of React.", + "preferFragment": "Prefer fragment shorthand over {{react}}.{{fragment}}", + "preferPragma": "Prefer {{react}}.{{fragment}} over fragment shorthand", + }, + "schema": [ + { + "enum": [ + "syntax", + "element", + ], + }, + ], + }, + }, + "jsx-handler-names": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce event handler naming conventions in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md", + }, + "messages": { + "badHandlerName": "Handler function for {{propKey}} prop key must be a camelCase name beginning with '{{handlerPrefix}}' only", + "badPropKey": "Prop key for {{propValue}} must begin with '{{handlerPropPrefix}}'", + }, + "schema": [ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "checkInlineFunction": { + "type": "boolean", + }, + "checkLocalVariables": { + "type": "boolean", + }, + "eventHandlerPrefix": { + "type": "string", + }, + "eventHandlerPropPrefix": { + "type": "string", + }, + "ignoreComponentNames": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "checkInlineFunction": { + "type": "boolean", + }, + "checkLocalVariables": { + "type": "boolean", + }, + "eventHandlerPrefix": { + "type": "string", + }, + "eventHandlerPropPrefix": { + "enum": [ + false, + ], + "type": "boolean", + }, + "ignoreComponentNames": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "checkInlineFunction": { + "type": "boolean", + }, + "checkLocalVariables": { + "type": "boolean", + }, + "eventHandlerPrefix": { + "enum": [ + false, + ], + "type": "boolean", + }, + "eventHandlerPropPrefix": { + "type": "string", + }, + "ignoreComponentNames": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "checkLocalVariables": { + "type": "boolean", + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "checkInlineFunction": { + "type": "boolean", + }, + }, + "type": "object", + }, + { + "properties": { + "ignoreComponentNames": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + }, + ], + }, + }, + "jsx-indent": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce JSX indentation", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md", + }, + "fixable": "whitespace", + "messages": { + "wrongIndent": "Expected indentation of {{needed}} {{type}} {{characters}} but found {{gotten}}.", + }, + "schema": [ + { + "anyOf": [ + { + "enum": [ + "tab", + ], + }, + { + "type": "integer", + }, + ], + }, + { + "additionalProperties": false, + "properties": { + "checkAttributes": { + "type": "boolean", + }, + "indentLogicalExpressions": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-indent-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce props indentation in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md", + }, + "fixable": "code", + "messages": { + "wrongIndent": "Expected indentation of {{needed}} {{type}} {{characters}} but found {{gotten}}.", + }, + "schema": [ + { + "anyOf": [ + { + "enum": [ + "tab", + "first", + ], + }, + { + "type": "integer", + }, + { + "properties": { + "ignoreTernaryOperator": { + "type": "boolean", + }, + "indentMode": { + "anyOf": [ + { + "enum": [ + "tab", + "first", + ], + }, + { + "type": "integer", + }, + ], + }, + }, + "type": "object", + }, + ], + }, + ], + }, + }, + "jsx-key": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow missing \`key\` props in iterators/collection literals", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md", + }, + "messages": { + "keyBeforeSpread": "\`key\` prop must be placed before any \`{...spread}, to avoid conflicting with React’s new JSX transform: https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html\`", + "missingArrayKey": "Missing "key" prop for element in array", + "missingArrayKeyUsePrag": "Missing "key" prop for element in array. Shorthand fragment syntax does not support providing keys. Use {{reactPrag}}.{{fragPrag}} instead", + "missingIterKey": "Missing "key" prop for element in iterator", + "missingIterKeyUsePrag": "Missing "key" prop for element in iterator. Shorthand fragment syntax does not support providing keys. Use {{reactPrag}}.{{fragPrag}} instead", + "nonUniqueKeys": "\`key\` prop must be unique", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "checkFragmentShorthand": { + "default": false, + "type": "boolean", + }, + "checkKeyMustBeforeSpread": { + "default": false, + "type": "boolean", + }, + "warnOnDuplicates": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-max-depth": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce JSX maximum depth", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md", + }, + "messages": { + "wrongDepth": "Expected the depth of nested jsx elements to be <= {{needed}}, but found {{found}}.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "max": { + "minimum": 0, + "type": "integer", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-max-props-per-line": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce maximum of props on a single line in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md", + }, + "fixable": "code", + "messages": { + "newLine": "Prop \`{{prop}}\` must be placed on a new line", + }, + "schema": [ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "maximum": { + "properties": { + "multi": { + "minimum": 1, + "type": "integer", + }, + "single": { + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "maximum": { + "minimum": 1, + "type": "number", + }, + "when": { + "enum": [ + "always", + "multiline", + ], + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + ], + }, + }, + "jsx-newline": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Require or prevent a new line after jsx elements and expressions.", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md", + }, + "fixable": "code", + "messages": { + "allowMultilines": "Multiline JSX elements should start in a new line", + "prevent": "JSX element should not start in a new line", + "require": "JSX element should start in a new line", + }, + "schema": [ + { + "additionalProperties": false, + "if": { + "properties": { + "allowMultilines": { + "const": true, + }, + }, + }, + "properties": { + "allowMultilines": { + "default": false, + "type": "boolean", + }, + "prevent": { + "default": false, + "type": "boolean", + }, + }, + "then": { + "properties": { + "prevent": { + "const": true, + }, + }, + "required": [ + "prevent", + ], + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-bind": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow \`.bind()\` or arrow functions in JSX props", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md", + }, + "messages": { + "arrowFunc": "JSX props should not use arrow functions", + "bindCall": "JSX props should not use .bind()", + "bindExpression": "JSX props should not use ::", + "func": "JSX props should not use functions", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowArrowFunctions": { + "default": false, + "type": "boolean", + }, + "allowBind": { + "default": false, + "type": "boolean", + }, + "allowFunctions": { + "default": false, + "type": "boolean", + }, + "ignoreDOMComponents": { + "default": false, + "type": "boolean", + }, + "ignoreRefs": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-comment-textnodes": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow comments from being inserted as text nodes", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md", + }, + "messages": { + "putCommentInBraces": "Comments inside children section of tag should be placed inside braces", + }, + "schema": [], + }, + }, + "jsx-no-constructed-context-values": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallows JSX context provider values from taking values that will cause needless rerenders", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md", + }, + "messages": { + "defaultMsg": "The {{type}} passed as the value prop to the Context provider (at line {{nodeLine}}) changes every render. To fix this consider wrapping it in a useMemo hook.", + "defaultMsgFunc": "The {{type}} passed as the value prop to the Context provider (at line {{nodeLine}}) changes every render. To fix this consider wrapping it in a useCallback hook.", + "withIdentifierMsg": "The '{{variableName}}' {{type}} (at line {{nodeLine}}) passed as the value prop to the Context provider (at line {{usageLine}}) changes every render. To fix this consider wrapping it in a useMemo hook.", + "withIdentifierMsgFunc": "The '{{variableName}}' {{type}} (at line {{nodeLine}}) passed as the value prop to the Context provider (at line {{usageLine}}) changes every render. To fix this consider wrapping it in a useCallback hook.", + }, + "schema": false, + }, + }, + "jsx-no-duplicate-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow duplicate properties in JSX", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md", + }, + "messages": { + "noDuplicateProps": "No duplicate props allowed", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreCase": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-leaked-render": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow problematic leaked values from being rendered", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md", + }, + "fixable": "code", + "messages": { + "noPotentialLeakedRender": "Potential leaked value that might cause unintentionally rendered values or rendering crashes", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "validStrategies": { + "default": [ + "ternary", + "coerce", + ], + "items": { + "enum": [ + "ternary", + "coerce", + ], + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-literals": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow usage of string literals in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md", + }, + "messages": { + "invalidPropValue": "Invalid prop value: "{{text}}"", + "invalidPropValueInElement": "Invalid prop value: "{{text}}" in {{element}}", + "literalNotInJSXExpression": "Missing JSX expression container around literal string: "{{text}}"", + "literalNotInJSXExpressionInElement": "Missing JSX expression container around literal string: "{{text}}" in {{element}}", + "noStringsInAttributes": "Strings not allowed in attributes: "{{text}}"", + "noStringsInAttributesInElement": "Strings not allowed in attributes: "{{text}}" in {{element}}", + "noStringsInJSX": "Strings not allowed in JSX files: "{{text}}"", + "noStringsInJSXInElement": "Strings not allowed in JSX files: "{{text}}" in {{element}}", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowedStrings": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "elementOverrides": { + "patternProperties": { + "^[A-Z][\\w.]*$": { + "properties": { + "allowedStrings": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "applyToNestedElements": { + "type": "boolean", + }, + "ignoreProps": { + "type": "boolean", + }, + "noAttributeStrings": { + "type": "boolean", + }, + "noStrings": { + "type": "boolean", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "ignoreProps": { + "type": "boolean", + }, + "noAttributeStrings": { + "type": "boolean", + }, + "noStrings": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-script-url": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of \`javascript:\` URLs", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md", + }, + "messages": { + "noScriptURL": "A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML, try using dangerouslySetInnerHTML instead.", + }, + "schema": { + "anyOf": [ + { + "additionalItems": false, + "items": [ + { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + }, + "props": { + "items": { + "type": "string", + "uniqueItems": true, + }, + "type": "array", + }, + }, + "required": [ + "name", + "props", + ], + "type": "object", + }, + "type": "array", + "uniqueItems": true, + }, + { + "additionalItems": false, + "properties": { + "includeFromSettings": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + { + "additionalItems": false, + "items": [ + { + "additionalItems": false, + "properties": { + "includeFromSettings": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + ], + }, + }, + }, + "jsx-no-target-blank": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow \`target="_blank"\` attribute without \`rel="noreferrer"\`", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md", + }, + "fixable": "code", + "messages": { + "noTargetBlankWithoutNoopener": "Using target="_blank" without rel="noreferrer" or rel="noopener" (the former implies the latter and is preferred due to wider support) is a security risk: see https://mathiasbynens.github.io/rel-noopener/#recommendations", + "noTargetBlankWithoutNoreferrer": "Using target="_blank" without rel="noreferrer" (which implies rel="noopener") is a security risk in older browsers: see https://mathiasbynens.github.io/rel-noopener/#recommendations", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowReferrer": { + "type": "boolean", + }, + "enforceDynamicLinks": { + "enum": [ + "always", + "never", + ], + }, + "forms": { + "default": false, + "type": "boolean", + }, + "links": { + "default": true, + "type": "boolean", + }, + "warnOnSpreadAttributes": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-undef": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow undeclared variables in JSX", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md", + }, + "messages": { + "undefined": "'{{identifier}}' is not defined.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowGlobals": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-no-useless-fragment": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow unnecessary fragments", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md", + }, + "fixable": "code", + "messages": { + "ChildOfHtmlElement": "Passing a fragment to an HTML element is useless.", + "NeedsMoreChildren": "Fragments should contain more than one child - otherwise, there’s no need for a Fragment at all.", + }, + "schema": [ + { + "properties": { + "allowExpressions": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "jsx-one-expression-per-line": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Require one JSX element per line", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md", + }, + "fixable": "whitespace", + "messages": { + "moveToNewLine": "\`{{descriptor}}\` must be placed on a new line", + }, + "schema": [ + { + "additionalProperties": false, + "default": { + "allow": "none", + }, + "properties": { + "allow": { + "enum": [ + "none", + "literal", + "single-child", + "non-jsx", + ], + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-pascal-case": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce PascalCase for user-defined JSX components", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md", + }, + "messages": { + "usePascalCase": "Imported JSX component {{name}} must be in PascalCase", + "usePascalOrSnakeCase": "Imported JSX component {{name}} must be in PascalCase or SCREAMING_SNAKE_CASE", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowAllCaps": { + "type": "boolean", + }, + "allowLeadingUnderscore": { + "type": "boolean", + }, + "allowNamespace": { + "type": "boolean", + }, + "ignore": { + "items": [ + { + "type": "string", + }, + ], + "minItems": 0, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-props-no-multi-spaces": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow multiple spaces between inline JSX props", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md", + }, + "fixable": "code", + "messages": { + "noLineGap": "Expected no line gap between “{{prop1}}” and “{{prop2}}”", + "onlyOneSpace": "Expected only one space between “{{prop1}}” and “{{prop2}}”", + }, + "schema": [], + }, + }, + "jsx-props-no-spread-multi": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow JSX prop spreading the same identifier multiple times", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md", + }, + "messages": { + "noMultiSpreading": "Spreading the same expression multiple times is forbidden", + }, + }, + }, + "jsx-props-no-spreading": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow JSX prop spreading", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md", + }, + "messages": { + "noSpreading": "Prop spreading is forbidden", + }, + "schema": [ + { + "allOf": [ + { + "properties": { + "custom": { + "enum": [ + "enforce", + "ignore", + ], + }, + "exceptions": { + "items": { + "type": "string", + "uniqueItems": true, + }, + "type": "array", + }, + "explicitSpread": { + "enum": [ + "enforce", + "ignore", + ], + }, + "html": { + "enum": [ + "enforce", + "ignore", + ], + }, + }, + "type": "object", + }, + { + "not": { + "properties": { + "custom": { + "enum": [ + "ignore", + ], + }, + "exceptions": { + "maxItems": 0, + "minItems": 0, + "type": "array", + }, + "html": { + "enum": [ + "ignore", + ], + }, + }, + "required": [ + "html", + "custom", + ], + "type": "object", + }, + }, + ], + }, + ], + }, + }, + "jsx-sort-default-props": { + "create": [Function], + "meta": { + "deprecated": true, + "docs": { + "category": "Stylistic Issues", + "description": "Enforce defaultProps declarations alphabetical sorting", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md", + }, + "messages": { + "propsNotSorted": "Default prop types declarations should be sorted alphabetically", + }, + "replacedBy": [ + "sort-default-props", + ], + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreCase": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-sort-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce props alphabetical sorting", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md", + }, + "fixable": "code", + "messages": { + "listCallbacksLast": "Callbacks must be listed after all other props", + "listIsEmpty": "A customized reserved first list must not be empty", + "listMultilineFirst": "Multiline props must be listed before all other props", + "listMultilineLast": "Multiline props must be listed after all other props", + "listReservedPropsFirst": "Reserved props must be listed before all other props", + "listShorthandFirst": "Shorthand props must be listed before all other props", + "listShorthandLast": "Shorthand props must be listed after all other props", + "noUnreservedProps": "A customized reserved first list must only contain a subset of React reserved props. Remove: {{unreservedWords}}", + "sortPropsByAlpha": "Props should be sorted alphabetically", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "callbacksLast": { + "type": "boolean", + }, + "ignoreCase": { + "type": "boolean", + }, + "locale": { + "default": "auto", + "type": "string", + }, + "multiline": { + "default": "ignore", + "enum": [ + "ignore", + "first", + "last", + ], + }, + "noSortAlphabetically": { + "type": "boolean", + }, + "reservedFirst": { + "type": [ + "array", + "boolean", + ], + }, + "shorthandFirst": { + "type": "boolean", + }, + "shorthandLast": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-space-before-closing": { + "create": [Function], + "meta": { + "deprecated": true, + "docs": { + "category": "Stylistic Issues", + "description": "Enforce spacing before closing bracket in JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md", + }, + "fixable": "code", + "messages": { + "needSpaceBeforeClose": "A space is required before closing bracket", + "noSpaceBeforeClose": "A space is forbidden before closing bracket", + }, + "replacedBy": [ + "jsx-tag-spacing", + ], + "schema": [ + { + "enum": [ + "always", + "never", + ], + }, + ], + }, + }, + "jsx-tag-spacing": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce whitespace in and around the JSX opening and closing brackets", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md", + }, + "fixable": "whitespace", + "messages": { + "afterOpenNeedSpace": "A space is required after opening bracket", + "afterOpenNoSpace": "A space is forbidden after opening bracket", + "beforeCloseNeedNewline": "A newline is required before closing bracket", + "beforeCloseNeedSpace": "Whitespace is required before closing bracket", + "beforeCloseNoSpace": "A space is forbidden before closing bracket", + "beforeSelfCloseNeedNewline": "A newline is required before closing bracket", + "beforeSelfCloseNeedSpace": "A space is required before closing bracket", + "beforeSelfCloseNoSpace": "A space is forbidden before closing bracket", + "closeSlashNeedSpace": "Whitespace is required between \`<\` and \`/\`; write \`< /\`", + "closeSlashNoSpace": "Whitespace is forbidden between \`<\` and \`/\`; write \`\`; write \`/ >\`", + "selfCloseSlashNoSpace": "Whitespace is forbidden between \`/\` and \`>\`; write \`/>\`", + }, + "schema": [ + { + "additionalProperties": false, + "default": { + "afterOpening": "never", + "beforeClosing": "allow", + "beforeSelfClosing": "always", + "closingSlash": "never", + }, + "properties": { + "afterOpening": { + "enum": [ + "always", + "allow-multiline", + "never", + "allow", + ], + }, + "beforeClosing": { + "enum": [ + "always", + "proportional-always", + "never", + "allow", + ], + }, + "beforeSelfClosing": { + "enum": [ + "always", + "proportional-always", + "never", + "allow", + ], + }, + "closingSlash": { + "enum": [ + "always", + "never", + "allow", + ], + }, + }, + "type": "object", + }, + ], + }, + }, + "jsx-uses-react": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow React to be incorrectly marked as unused", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md", + }, + "schema": [], + }, + }, + "jsx-uses-vars": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow variables used in JSX to be incorrectly marked as unused", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md", + }, + "schema": [], + }, + }, + "jsx-wrap-multilines": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow missing parentheses around multiline JSX", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md", + }, + "fixable": "code", + "messages": { + "extraParens": "Expected no parentheses around multilines JSX", + "missingParens": "Missing parentheses around multilines JSX", + "parensOnNewLines": "Parentheses around JSX should be on separate lines", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "arrow": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + "assignment": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + "condition": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + "declaration": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + "logical": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + "prop": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + "return": { + "enum": [ + true, + false, + "ignore", + "parens", + "parens-new-line", + "never", + ], + }, + }, + "type": "object", + }, + ], + }, + }, + "no-access-state-in-setstate": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow when this.state is accessed within setState", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md", + }, + "messages": { + "useCallback": "Use callback in setState when referencing the previous state.", + }, + }, + }, + "no-adjacent-inline-elements": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow adjacent inline elements not separated by whitespace.", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md", + }, + "messages": { + "inlineElement": "Child elements which render as inline HTML elements should be separated by a space or wrapped in block level elements.", + }, + "schema": [], + }, + }, + "no-array-index-key": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of Array index in keys", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md", + }, + "messages": { + "noArrayIndex": "Do not use Array index in keys", + }, + "schema": [], + }, + }, + "no-arrow-function-lifecycle": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Lifecycle methods should be methods on the prototype, not class fields", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md", + }, + "fixable": "code", + "messages": { + "lifecycle": "{{propertyName}} is a React lifecycle method, and should not be an arrow function or in a class field. Use an instance method instead.", + }, + "schema": [], + }, + }, + "no-children-prop": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow passing of children as props", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md", + }, + "messages": { + "nestChildren": "Do not pass children as props. Instead, nest children between the opening and closing tags.", + "nestFunction": "Do not nest a function between the opening and closing tags. Instead, pass it as a prop.", + "passChildrenAsArgs": "Do not pass children as props. Instead, pass them as additional arguments to React.createElement.", + "passFunctionAsArgs": "Do not pass a function as an additional argument to React.createElement. Instead, pass it as a prop.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowFunctions": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-danger": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of dangerous JSX properties", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md", + }, + "messages": { + "dangerousProp": "Dangerous property '{{name}}' found", + }, + "schema": [ + { + "properties": { + "customComponentNames": { + "items": { + "type": "string", + }, + "minItems": 0, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + }, + }, + "no-danger-with-children": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow when a DOM element is using both children and dangerouslySetInnerHTML", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md", + }, + "messages": { + "dangerWithChildren": "Only set one of \`children\` or \`props.dangerouslySetInnerHTML\`", + }, + "schema": [], + }, + }, + "no-deprecated": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of deprecated methods", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md", + }, + "messages": { + "deprecated": "{{oldMethod}} is deprecated since React {{version}}{{newMethod}}{{refs}}", + }, + "schema": [], + }, + }, + "no-did-mount-set-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of setState in componentDidMount", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md", + }, + "messages": { + "noSetState": "Do not use setState in {{name}}", + }, + "schema": [ + { + "enum": [ + "disallow-in-func", + ], + }, + ], + }, + }, + "no-did-update-set-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of setState in componentDidUpdate", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md", + }, + "messages": { + "noSetState": "Do not use setState in {{name}}", + }, + "schema": [ + { + "enum": [ + "disallow-in-func", + ], + }, + ], + }, + }, + "no-direct-mutation-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow direct mutation of this.state", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md", + }, + "messages": { + "noDirectMutation": "Do not mutate state directly. Use setState().", + }, + }, + }, + "no-find-dom-node": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of findDOMNode", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md", + }, + "messages": { + "noFindDOMNode": "Do not use findDOMNode. It doesn’t work with function components and is deprecated in StrictMode. See https://reactjs.org/docs/react-dom.html#finddomnode", + }, + "schema": [], + }, + }, + "no-invalid-html-attribute": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow usage of invalid attributes", + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md", + }, + "hasSuggestions": true, + "messages": { + "emptyIsMeaningless": "An empty “{{attributeName}}” attribute is meaningless.", + "neverValid": "“{{reportingValue}}” is never a valid “{{attributeName}}” attribute value.", + "noEmpty": "An empty “{{attributeName}}” attribute is meaningless.", + "noMethod": "The ”{{attributeName}}“ attribute cannot be a method.", + "notAlone": "“{{reportingValue}}” must be directly followed by “{{missingValue}}”.", + "notPaired": "“{{reportingValue}}” can not be directly followed by “{{secondValue}}” without “{{missingValue}}”.", + "notValidFor": "“{{reportingValue}}” is not a valid “{{attributeName}}” attribute value for <{{elementName}}>.", + "onlyMeaningfulFor": "The ”{{attributeName}}“ attribute only has meaning on the tags: {{tagNames}}", + "onlyStrings": "“{{attributeName}}” attribute only supports strings.", + "spaceDelimited": "”{{attributeName}}“ attribute values should be space delimited.", + "suggestRemoveDefault": ""remove {{attributeName}}"", + "suggestRemoveEmpty": ""remove empty attribute {{attributeName}}"", + "suggestRemoveInvalid": "“remove invalid attribute {{reportingValue}}”", + "suggestRemoveNonString": "remove non-string value in “{{attributeName}}”", + "suggestRemoveWhitespaces": "remove whitespaces in “{{attributeName}}”", + }, + "schema": [ + { + "items": { + "enum": [ + "rel", + ], + }, + "type": "array", + "uniqueItems": true, + }, + ], + "type": "suggestion", + }, + }, + "no-is-mounted": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of isMounted", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md", + }, + "messages": { + "noIsMounted": "Do not use isMounted", + }, + "schema": [], + }, + }, + "no-multi-comp": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow multiple component definition per file", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md", + }, + "messages": { + "onlyOneComponent": "Declare only one React component per file", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreStateless": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-namespace": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Enforce that namespaces are not used in React elements", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md", + }, + "messages": { + "noNamespace": "React component {{name}} must not be in a namespace, as React does not support them", + }, + "schema": [], + }, + }, + "no-object-type-as-default-prop": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of referential-type variables as default param in functional component", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md", + }, + "messages": { + "forbiddenTypeDefaultParam": "{{propName}} has a/an {{forbiddenType}} as default prop. This could lead to potential infinite render loop in React. Use a variable reference instead of {{forbiddenType}}.", + }, + }, + }, + "no-redundant-should-component-update": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow usage of shouldComponentUpdate when extending React.PureComponent", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md", + }, + "messages": { + "noShouldCompUpdate": "{{component}} does not need shouldComponentUpdate when extending React.PureComponent.", + }, + "schema": [], + }, + }, + "no-render-return-value": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of the return value of ReactDOM.render", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md", + }, + "messages": { + "noReturnValue": "Do not depend on the return value from {{node}}.render", + }, + "schema": [], + }, + }, + "no-set-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow usage of setState", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md", + }, + "messages": { + "noSetState": "Do not use setState", + }, + "schema": [], + }, + }, + "no-string-refs": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow using string references", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md", + }, + "messages": { + "stringInRefDeprecated": "Using string literals in ref attributes is deprecated.", + "thisRefsDeprecated": "Using this.refs is deprecated.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "noTemplateLiterals": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-this-in-sfc": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow \`this\` from being used in stateless functional components", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md", + }, + "messages": { + "noThisInSFC": "Stateless functional components should not use \`this\`", + }, + "schema": [], + }, + }, + "no-typos": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow common typos", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md", + }, + "messages": { + "noPropTypesBinding": "\`'prop-types'\` imported without a local \`PropTypes\` binding.", + "noReactBinding": "\`'react'\` imported without a local \`React\` binding.", + "staticLifecycleMethod": "Lifecycle method should be static: {{method}}", + "typoLifecycleMethod": "Typo in component lifecycle method declaration: {{actual}} should be {{expected}}", + "typoPropDeclaration": "Typo in property declaration", + "typoPropType": "Typo in declared prop type: {{name}}", + "typoPropTypeChain": "Typo in prop type chain qualifier: {{name}}", + "typoStaticClassProp": "Typo in static class property declaration", + }, + "schema": [], + }, + }, + "no-unescaped-entities": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow unescaped HTML entities from appearing in markup", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md", + }, + "hasSuggestions": true, + "messages": { + "replaceWithAlt": "Replace with \`{{alt}}\`.", + "unescapedEntity": "HTML entity, \`{{entity}}\` , must be escaped.", + "unescapedEntityAlts": "\`{{entity}}\` can be escaped with {{alts}}.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "forbid": { + "items": { + "anyOf": [ + { + "type": "string", + }, + { + "properties": { + "alternatives": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "char": { + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-unknown-property": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow usage of unknown DOM property", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md", + }, + "fixable": "code", + "messages": { + "dataLowercaseRequired": "React does not recognize data-* props with uppercase characters on a DOM element. Found '{{name}}', use '{{lowerCaseName}}' instead", + "invalidPropOnTag": "Invalid property '{{name}}' found on tag '{{tagName}}', but it is only allowed on: {{allowedTags}}", + "unknownProp": "Unknown property '{{name}}' found", + "unknownPropWithStandardName": "Unknown property '{{name}}' found, use '{{standardName}}' instead", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignore": { + "items": { + "type": "string", + }, + "type": "array", + }, + "requireDataLowercase": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-unsafe": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of unsafe lifecycle methods", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md", + }, + "messages": { + "unsafeMethod": "{{method}} is unsafe for use in async rendering. Update the component to use {{newMethod}} instead. {{details}}", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "checkAliases": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-unstable-nested-components": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow creating unstable components inside components", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowAsProps": { + "type": "boolean", + }, + "customValidators": { + "items": { + "type": "string", + }, + "type": "array", + }, + "propNamePattern": { + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-unused-class-component-methods": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow declaring unused methods of component class", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md", + }, + "messages": { + "unused": "Unused method or property "{{name}}"", + "unusedWithClass": "Unused method or property "{{name}}" of class "{{className}}"", + }, + "schema": [], + }, + }, + "no-unused-prop-types": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow definitions of unused propTypes", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md", + }, + "messages": { + "unusedPropType": "'{{name}}' PropType is defined but prop is never used", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "customValidators": { + "items": { + "type": "string", + }, + "type": "array", + }, + "ignore": { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + "skipShapeProps": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "no-unused-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow definitions of unused state", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md", + }, + "messages": { + "unusedStateField": "Unused state field: '{{name}}'", + }, + "schema": [], + }, + }, + "no-will-update-set-state": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow usage of setState in componentWillUpdate", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md", + }, + "messages": { + "noSetState": "Do not use setState in {{name}}", + }, + "schema": [ + { + "enum": [ + "disallow-in-func", + ], + }, + ], + }, + }, + "prefer-es6-class": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce ES5 or ES6 class for React Components", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md", + }, + "messages": { + "shouldUseCreateClass": "Component should use createClass instead of es6 class", + "shouldUseES6Class": "Component should use es6 class instead of createClass", + }, + "schema": [ + { + "enum": [ + "always", + "never", + ], + }, + ], + }, + }, + "prefer-exact-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Prefer exact proptype definitions", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md", + }, + "messages": { + "flow": "Component flow props should be set with exact objects.", + "propTypes": "Component propTypes should be exact by using {{exactPropWrappers}}.", + }, + "schema": [], + }, + }, + "prefer-read-only-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce that props are read-only", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md", + }, + "fixable": "code", + "messages": { + "readOnlyProp": "Prop '{{name}}' should be read-only.", + }, + "schema": [], + }, + }, + "prefer-stateless-function": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce stateless components to be written as a pure function", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md", + }, + "messages": { + "componentShouldBePure": "Component should be written as a pure function", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignorePureComponents": { + "default": false, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "prop-types": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow missing props validation in a React component definition", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md", + }, + "messages": { + "missingPropType": "'{{name}}' is missing in props validation", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "customValidators": { + "items": { + "type": "string", + }, + "type": "array", + }, + "ignore": { + "items": { + "type": "string", + }, + "type": "array", + }, + "skipUndeclared": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "react-in-jsx-scope": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Disallow missing React when using JSX", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md", + }, + "messages": { + "notInScope": "'{{name}}' must be in scope when using JSX", + }, + "schema": [], + }, + }, + "require-default-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Enforce a defaultProps definition for every prop that is not a required prop", + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md", + }, + "messages": { + "destructureInSignature": "Must destructure props in the function signature to initialize an optional prop.", + "noDefaultPropsWithFunction": "Don’t use defaultProps with function components.", + "noDefaultWithRequired": "propType "{{name}}" is required and should not have a defaultProps declaration.", + "shouldAssignObjectDefault": "propType "{{name}}" is not required, but has no corresponding default argument value.", + "shouldHaveDefault": "propType "{{name}}" is not required, but has no corresponding defaultProps declaration.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "classes": { + "enum": [ + "defaultProps", + "ignore", + ], + }, + "forbidDefaultForRequired": { + "type": "boolean", + }, + "functions": { + "enum": [ + "defaultArguments", + "defaultProps", + "ignore", + ], + }, + "ignoreFunctionalComponents": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "require-optimization": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Enforce React components to have a shouldComponentUpdate method", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md", + }, + "messages": { + "noShouldComponentUpdate": "Component is not optimized. Please add a shouldComponentUpdate method.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowDecorators": { + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "require-render-return": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Enforce ES5 or ES6 class for returning value in render function", + "recommended": true, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md", + }, + "messages": { + "noRenderReturn": "Your render method should have a return statement", + }, + "schema": [], + }, + }, + "self-closing-comp": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Disallow extra closing tags for components without children", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md", + }, + "fixable": "code", + "messages": { + "notSelfClosing": "Empty components are self-closing", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "component": { + "default": true, + "type": "boolean", + }, + "html": { + "default": true, + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "sort-comp": { + "create": [Function], + "defaultConfig": { + "groups": { + "lifecycle": [ + "displayName", + "propTypes", + "contextTypes", + "childContextTypes", + "mixins", + "statics", + "defaultProps", + "constructor", + "getDefaultProps", + "state", + "getInitialState", + "getChildContext", + "getDerivedStateFromProps", + "componentWillMount", + "UNSAFE_componentWillMount", + "componentDidMount", + "componentWillReceiveProps", + "UNSAFE_componentWillReceiveProps", + "shouldComponentUpdate", + "componentWillUpdate", + "UNSAFE_componentWillUpdate", + "getSnapshotBeforeUpdate", + "componentDidUpdate", + "componentDidCatch", + "componentWillUnmount", + ], + }, + "order": [ + "static-methods", + "lifecycle", + "everything-else", + "render", + ], + }, + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce component methods order", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md", + }, + "messages": { + "unsortedProps": "{{propA}} should be placed {{position}} {{propB}}", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "groups": { + "patternProperties": { + "^.*$": { + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + "order": { + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "sort-default-props": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce defaultProps declarations alphabetical sorting", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md", + }, + "messages": { + "propsNotSorted": "Default prop types declarations should be sorted alphabetically", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreCase": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "sort-prop-types": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce propTypes declarations alphabetical sorting", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md", + }, + "fixable": "code", + "messages": { + "callbackPropsLast": "Callback prop types must be listed after all other prop types", + "propsNotSorted": "Prop types declarations should be sorted alphabetically", + "requiredPropsFirst": "Required prop types must be listed before all other prop types", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "callbacksLast": { + "type": "boolean", + }, + "checkTypes": { + "type": "boolean", + }, + "ignoreCase": { + "type": "boolean", + }, + "noSortAlphabetically": { + "type": "boolean", + }, + "requiredFirst": { + "type": "boolean", + }, + "sortShapeProp": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "state-in-constructor": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforce class component state initialization style", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md", + }, + "messages": { + "stateInitClassProp": "State initialization should be in a class property", + "stateInitConstructor": "State initialization should be in a constructor", + }, + "schema": [ + { + "enum": [ + "always", + "never", + ], + }, + ], + }, + }, + "static-property-placement": { + "create": [Function], + "meta": { + "docs": { + "category": "Stylistic Issues", + "description": "Enforces where React component static properties should be positioned.", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md", + }, + "fixable": null, + "messages": { + "declareOutsideClass": "'{{name}}' should be declared outside the class body.", + "notGetterClassFunc": "'{{name}}' should be declared as a static getter class function.", + "notStaticClassProp": "'{{name}}' should be declared as a static class property.", + }, + "schema": [ + { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + { + "additionalProperties": false, + "properties": { + "childContextTypes": { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + "contextType": { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + "contextTypes": { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + "defaultProps": { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + "displayName": { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + "propTypes": { + "enum": [ + "static public field", + "static getter", + "property assignment", + ], + }, + }, + "type": "object", + }, + ], + }, + }, + "style-prop-object": { + "create": [Function], + "meta": { + "docs": { + "category": "Possible Errors", + "description": "Enforce style prop value is an object", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md", + }, + "messages": { + "stylePropNotObject": "Style prop value must be an object", + }, + "schema": [ + { + "properties": { + "allow": { + "additionalItems": false, + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + }, + }, + "void-dom-elements-no-children": { + "create": [Function], + "meta": { + "docs": { + "category": "Best Practices", + "description": "Disallow void DOM elements (e.g. \`\`, \`
\`) from receiving children", + "recommended": false, + "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md", + }, + "messages": { + "noChildrenInVoidEl": "Void DOM element <{{element}} /> cannot receive children.", + }, + "schema": [], + }, + }, + }, + }, + }, + "rules": { + "react/display-name": 2, + "react/jsx-key": 2, + "react/jsx-no-comment-textnodes": 2, + "react/jsx-no-duplicate-props": 2, + "react/jsx-no-target-blank": 2, + "react/jsx-no-undef": 2, + "react/jsx-uses-react": 2, + "react/jsx-uses-vars": 2, + "react/no-children-prop": 2, + "react/no-danger-with-children": 2, + "react/no-deprecated": 2, + "react/no-direct-mutation-state": 2, + "react/no-find-dom-node": 2, + "react/no-is-mounted": 2, + "react/no-render-return-value": 2, + "react/no-string-refs": 2, + "react/no-unescaped-entities": 2, + "react/no-unknown-property": 2, + "react/no-unsafe": 0, + "react/prop-types": 2, + "react/react-in-jsx-scope": 2, + "react/require-render-return": 2, + }, + }, + { + "rules": { + "constructor-super": "error", + "for-direction": "error", + "getter-return": "error", + "no-async-promise-executor": "error", + "no-case-declarations": "error", + "no-class-assign": "error", + "no-compare-neg-zero": "error", + "no-cond-assign": "error", + "no-const-assign": "error", + "no-constant-binary-expression": "error", + "no-constant-condition": "error", + "no-control-regex": "error", + "no-debugger": "error", + "no-delete-var": "error", + "no-dupe-args": "error", + "no-dupe-class-members": "error", + "no-dupe-else-if": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty": "error", + "no-empty-character-class": "error", + "no-empty-pattern": "error", + "no-empty-static-block": "error", + "no-ex-assign": "error", + "no-extra-boolean-cast": "error", + "no-fallthrough": "error", + "no-func-assign": "error", + "no-global-assign": "error", + "no-import-assign": "error", + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-loss-of-precision": "error", + "no-misleading-character-class": "error", + "no-new-native-nonconstructor": "error", + "no-nonoctal-decimal-escape": "error", + "no-obj-calls": "error", + "no-octal": "error", + "no-prototype-builtins": "error", + "no-redeclare": "error", + "no-regex-spaces": "error", + "no-self-assign": "error", + "no-setter-return": "error", + "no-shadow-restricted-names": "error", + "no-sparse-arrays": "error", + "no-this-before-super": "error", + "no-undef": "error", + "no-unexpected-multiline": "error", + "no-unreachable": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unsafe-optional-chaining": "error", + "no-unused-labels": "error", + "no-unused-private-class-members": "error", + "no-unused-vars": "error", + "no-useless-backreference": "error", + "no-useless-catch": "error", + "no-useless-escape": "error", + "no-with": "error", + "require-yield": "error", + "use-isnan": "error", + "valid-typeof": "error", + }, + }, + { + "name": "eslint-plugin-prettier/recommended", + "plugins": { + "prettier": { + "configs": { + "recommended": { + "extends": [ + "prettier", + ], + "plugins": [ + "prettier", + ], + "rules": { + "arrow-body-style": "off", + "prefer-arrow-callback": "off", + "prettier/prettier": "error", + }, + }, + }, + "meta": { + "name": "eslint-plugin-prettier", + "version": "5.2.3", + }, + "rules": { + "prettier": { + "create": [Function], + "meta": { + "docs": { + "url": "https://github.com/prettier/eslint-plugin-prettier#options", + }, + "fixable": "code", + "messages": { + "delete": "Delete \`{{ deleteText }}\`", + "insert": "Insert \`{{ insertText }}\`", + "replace": "Replace \`{{ deleteText }}\` with \`{{ insertText }}\`", + }, + "schema": [ + { + "additionalProperties": true, + "properties": {}, + "type": "object", + }, + { + "additionalProperties": true, + "properties": { + "fileInfoOptions": { + "additionalProperties": true, + "properties": {}, + "type": "object", + }, + "usePrettierrc": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "layout", + }, + }, + }, + }, + }, + "rules": { + "@babel/object-curly-spacing": "off", + "@babel/semi": "off", + "@stylistic/array-bracket-newline": "off", + "@stylistic/array-bracket-spacing": "off", + "@stylistic/array-element-newline": "off", + "@stylistic/arrow-parens": "off", + "@stylistic/arrow-spacing": "off", + "@stylistic/block-spacing": "off", + "@stylistic/brace-style": "off", + "@stylistic/comma-dangle": "off", + "@stylistic/comma-spacing": "off", + "@stylistic/comma-style": "off", + "@stylistic/computed-property-spacing": "off", + "@stylistic/dot-location": "off", + "@stylistic/eol-last": "off", + "@stylistic/func-call-spacing": "off", + "@stylistic/function-call-argument-newline": "off", + "@stylistic/function-call-spacing": "off", + "@stylistic/function-paren-newline": "off", + "@stylistic/generator-star-spacing": "off", + "@stylistic/implicit-arrow-linebreak": "off", + "@stylistic/indent": "off", + "@stylistic/indent-binary-ops": "off", + "@stylistic/js/array-bracket-newline": "off", + "@stylistic/js/array-bracket-spacing": "off", + "@stylistic/js/array-element-newline": "off", + "@stylistic/js/arrow-parens": "off", + "@stylistic/js/arrow-spacing": "off", + "@stylistic/js/block-spacing": "off", + "@stylistic/js/brace-style": "off", + "@stylistic/js/comma-dangle": "off", + "@stylistic/js/comma-spacing": "off", + "@stylistic/js/comma-style": "off", + "@stylistic/js/computed-property-spacing": "off", + "@stylistic/js/dot-location": "off", + "@stylistic/js/eol-last": "off", + "@stylistic/js/func-call-spacing": "off", + "@stylistic/js/function-call-argument-newline": "off", + "@stylistic/js/function-call-spacing": "off", + "@stylistic/js/function-paren-newline": "off", + "@stylistic/js/generator-star-spacing": "off", + "@stylistic/js/implicit-arrow-linebreak": "off", + "@stylistic/js/indent": "off", + "@stylistic/js/jsx-quotes": "off", + "@stylistic/js/key-spacing": "off", + "@stylistic/js/keyword-spacing": "off", + "@stylistic/js/linebreak-style": "off", + "@stylistic/js/lines-around-comment": 0, + "@stylistic/js/max-len": 0, + "@stylistic/js/max-statements-per-line": "off", + "@stylistic/js/multiline-ternary": "off", + "@stylistic/js/new-parens": "off", + "@stylistic/js/newline-per-chained-call": "off", + "@stylistic/js/no-confusing-arrow": 0, + "@stylistic/js/no-extra-parens": "off", + "@stylistic/js/no-extra-semi": "off", + "@stylistic/js/no-floating-decimal": "off", + "@stylistic/js/no-mixed-operators": 0, + "@stylistic/js/no-mixed-spaces-and-tabs": "off", + "@stylistic/js/no-multi-spaces": "off", + "@stylistic/js/no-multiple-empty-lines": "off", + "@stylistic/js/no-tabs": 0, + "@stylistic/js/no-trailing-spaces": "off", + "@stylistic/js/no-whitespace-before-property": "off", + "@stylistic/js/nonblock-statement-body-position": "off", + "@stylistic/js/object-curly-newline": "off", + "@stylistic/js/object-curly-spacing": "off", + "@stylistic/js/object-property-newline": "off", + "@stylistic/js/one-var-declaration-per-line": "off", + "@stylistic/js/operator-linebreak": "off", + "@stylistic/js/padded-blocks": "off", + "@stylistic/js/quote-props": "off", + "@stylistic/js/quotes": 0, + "@stylistic/js/rest-spread-spacing": "off", + "@stylistic/js/semi": "off", + "@stylistic/js/semi-spacing": "off", + "@stylistic/js/semi-style": "off", + "@stylistic/js/space-before-blocks": "off", + "@stylistic/js/space-before-function-paren": "off", + "@stylistic/js/space-in-parens": "off", + "@stylistic/js/space-infix-ops": "off", + "@stylistic/js/space-unary-ops": "off", + "@stylistic/js/switch-colon-spacing": "off", + "@stylistic/js/template-curly-spacing": "off", + "@stylistic/js/template-tag-spacing": "off", + "@stylistic/js/wrap-iife": "off", + "@stylistic/js/wrap-regex": "off", + "@stylistic/js/yield-star-spacing": "off", + "@stylistic/jsx-child-element-spacing": "off", + "@stylistic/jsx-closing-bracket-location": "off", + "@stylistic/jsx-closing-tag-location": "off", + "@stylistic/jsx-curly-newline": "off", + "@stylistic/jsx-curly-spacing": "off", + "@stylistic/jsx-equals-spacing": "off", + "@stylistic/jsx-first-prop-new-line": "off", + "@stylistic/jsx-indent": "off", + "@stylistic/jsx-indent-props": "off", + "@stylistic/jsx-max-props-per-line": "off", + "@stylistic/jsx-newline": "off", + "@stylistic/jsx-one-expression-per-line": "off", + "@stylistic/jsx-props-no-multi-spaces": "off", + "@stylistic/jsx-quotes": "off", + "@stylistic/jsx-tag-spacing": "off", + "@stylistic/jsx-wrap-multilines": "off", + "@stylistic/jsx/jsx-child-element-spacing": "off", + "@stylistic/jsx/jsx-closing-bracket-location": "off", + "@stylistic/jsx/jsx-closing-tag-location": "off", + "@stylistic/jsx/jsx-curly-newline": "off", + "@stylistic/jsx/jsx-curly-spacing": "off", + "@stylistic/jsx/jsx-equals-spacing": "off", + "@stylistic/jsx/jsx-first-prop-new-line": "off", + "@stylistic/jsx/jsx-indent": "off", + "@stylistic/jsx/jsx-indent-props": "off", + "@stylistic/jsx/jsx-max-props-per-line": "off", + "@stylistic/key-spacing": "off", + "@stylistic/keyword-spacing": "off", + "@stylistic/linebreak-style": "off", + "@stylistic/lines-around-comment": 0, + "@stylistic/max-len": 0, + "@stylistic/max-statements-per-line": "off", + "@stylistic/member-delimiter-style": "off", + "@stylistic/multiline-ternary": "off", + "@stylistic/new-parens": "off", + "@stylistic/newline-per-chained-call": "off", + "@stylistic/no-confusing-arrow": 0, + "@stylistic/no-extra-parens": "off", + "@stylistic/no-extra-semi": "off", + "@stylistic/no-floating-decimal": "off", + "@stylistic/no-mixed-operators": 0, + "@stylistic/no-mixed-spaces-and-tabs": "off", + "@stylistic/no-multi-spaces": "off", + "@stylistic/no-multiple-empty-lines": "off", + "@stylistic/no-tabs": 0, + "@stylistic/no-trailing-spaces": "off", + "@stylistic/no-whitespace-before-property": "off", + "@stylistic/nonblock-statement-body-position": "off", + "@stylistic/object-curly-newline": "off", + "@stylistic/object-curly-spacing": "off", + "@stylistic/object-property-newline": "off", + "@stylistic/one-var-declaration-per-line": "off", + "@stylistic/operator-linebreak": "off", + "@stylistic/padded-blocks": "off", + "@stylistic/quote-props": "off", + "@stylistic/quotes": 0, + "@stylistic/rest-spread-spacing": "off", + "@stylistic/semi": "off", + "@stylistic/semi-spacing": "off", + "@stylistic/semi-style": "off", + "@stylistic/space-before-blocks": "off", + "@stylistic/space-before-function-paren": "off", + "@stylistic/space-in-parens": "off", + "@stylistic/space-infix-ops": "off", + "@stylistic/space-unary-ops": "off", + "@stylistic/switch-colon-spacing": "off", + "@stylistic/template-curly-spacing": "off", + "@stylistic/template-tag-spacing": "off", + "@stylistic/ts/block-spacing": "off", + "@stylistic/ts/brace-style": "off", + "@stylistic/ts/comma-dangle": "off", + "@stylistic/ts/comma-spacing": "off", + "@stylistic/ts/func-call-spacing": "off", + "@stylistic/ts/function-call-spacing": "off", + "@stylistic/ts/indent": "off", + "@stylistic/ts/key-spacing": "off", + "@stylistic/ts/keyword-spacing": "off", + "@stylistic/ts/lines-around-comment": 0, + "@stylistic/ts/member-delimiter-style": "off", + "@stylistic/ts/no-extra-parens": "off", + "@stylistic/ts/no-extra-semi": "off", + "@stylistic/ts/object-curly-spacing": "off", + "@stylistic/ts/quotes": 0, + "@stylistic/ts/semi": "off", + "@stylistic/ts/space-before-blocks": "off", + "@stylistic/ts/space-before-function-paren": "off", + "@stylistic/ts/space-infix-ops": "off", + "@stylistic/ts/type-annotation-spacing": "off", + "@stylistic/type-annotation-spacing": "off", + "@stylistic/type-generic-spacing": "off", + "@stylistic/type-named-tuple-spacing": "off", + "@stylistic/wrap-iife": "off", + "@stylistic/wrap-regex": "off", + "@stylistic/yield-star-spacing": "off", + "@typescript-eslint/block-spacing": "off", + "@typescript-eslint/brace-style": "off", + "@typescript-eslint/comma-dangle": "off", + "@typescript-eslint/comma-spacing": "off", + "@typescript-eslint/func-call-spacing": "off", + "@typescript-eslint/indent": "off", + "@typescript-eslint/key-spacing": "off", + "@typescript-eslint/keyword-spacing": "off", + "@typescript-eslint/lines-around-comment": 0, + "@typescript-eslint/member-delimiter-style": "off", + "@typescript-eslint/no-extra-parens": "off", + "@typescript-eslint/no-extra-semi": "off", + "@typescript-eslint/object-curly-spacing": "off", + "@typescript-eslint/quotes": 0, + "@typescript-eslint/semi": "off", + "@typescript-eslint/space-before-blocks": "off", + "@typescript-eslint/space-before-function-paren": "off", + "@typescript-eslint/space-infix-ops": "off", + "@typescript-eslint/type-annotation-spacing": "off", + "array-bracket-newline": "off", + "array-bracket-spacing": "off", + "array-element-newline": "off", + "arrow-body-style": "off", + "arrow-parens": "off", + "arrow-spacing": "off", + "babel/object-curly-spacing": "off", + "babel/quotes": 0, + "babel/semi": "off", + "block-spacing": "off", + "brace-style": "off", + "comma-dangle": "off", + "comma-spacing": "off", + "comma-style": "off", + "computed-property-spacing": "off", + "curly": 0, + "dot-location": "off", + "eol-last": "off", + "flowtype/boolean-style": "off", + "flowtype/delimiter-dangle": "off", + "flowtype/generic-spacing": "off", + "flowtype/object-type-curly-spacing": "off", + "flowtype/object-type-delimiter": "off", + "flowtype/quotes": "off", + "flowtype/semi": "off", + "flowtype/space-after-type-colon": "off", + "flowtype/space-before-generic-bracket": "off", + "flowtype/space-before-type-colon": "off", + "flowtype/union-intersection-spacing": "off", + "func-call-spacing": "off", + "function-call-argument-newline": "off", + "function-paren-newline": "off", + "generator-star": "off", + "generator-star-spacing": "off", + "implicit-arrow-linebreak": "off", + "indent": "off", + "indent-legacy": "off", + "jsx-quotes": "off", + "key-spacing": "off", + "keyword-spacing": "off", + "linebreak-style": "off", + "lines-around-comment": 0, + "max-len": 0, + "max-statements-per-line": "off", + "multiline-ternary": "off", + "new-parens": "off", + "newline-per-chained-call": "off", + "no-arrow-condition": "off", + "no-comma-dangle": "off", + "no-confusing-arrow": 0, + "no-extra-parens": "off", + "no-extra-semi": "off", + "no-floating-decimal": "off", + "no-mixed-operators": 0, + "no-mixed-spaces-and-tabs": "off", + "no-multi-spaces": "off", + "no-multiple-empty-lines": "off", + "no-reserved-keys": "off", + "no-space-before-semi": "off", + "no-spaced-func": "off", + "no-tabs": 0, + "no-trailing-spaces": "off", + "no-unexpected-multiline": 0, + "no-whitespace-before-property": "off", + "no-wrap-func": "off", + "nonblock-statement-body-position": "off", + "object-curly-newline": "off", + "object-curly-spacing": "off", + "object-property-newline": "off", + "one-var-declaration-per-line": "off", + "operator-linebreak": "off", + "padded-blocks": "off", + "prefer-arrow-callback": "off", + "prettier/prettier": "error", + "quote-props": "off", + "quotes": 0, + "react/jsx-child-element-spacing": "off", + "react/jsx-closing-bracket-location": "off", + "react/jsx-closing-tag-location": "off", + "react/jsx-curly-newline": "off", + "react/jsx-curly-spacing": "off", + "react/jsx-equals-spacing": "off", + "react/jsx-first-prop-new-line": "off", + "react/jsx-indent": "off", + "react/jsx-indent-props": "off", + "react/jsx-max-props-per-line": "off", + "react/jsx-newline": "off", + "react/jsx-one-expression-per-line": "off", + "react/jsx-props-no-multi-spaces": "off", + "react/jsx-space-before-closing": "off", + "react/jsx-tag-spacing": "off", + "react/jsx-wrap-multilines": "off", + "rest-spread-spacing": "off", + "semi": "off", + "semi-spacing": "off", + "semi-style": "off", + "space-after-function-name": "off", + "space-after-keywords": "off", + "space-before-blocks": "off", + "space-before-function-paren": "off", + "space-before-function-parentheses": "off", + "space-before-keywords": "off", + "space-in-brackets": "off", + "space-in-parens": "off", + "space-infix-ops": "off", + "space-return-throw-case": "off", + "space-unary-ops": "off", + "space-unary-word-ops": "off", + "standard/array-bracket-even-spacing": "off", + "standard/computed-property-even-spacing": "off", + "standard/object-curly-even-spacing": "off", + "switch-colon-spacing": "off", + "template-curly-spacing": "off", + "template-tag-spacing": "off", + "unicorn/empty-brace-spaces": "off", + "unicorn/no-nested-ternary": "off", + "unicorn/number-literal-case": "off", + "unicorn/template-indent": 0, + "vue/array-bracket-newline": "off", + "vue/array-bracket-spacing": "off", + "vue/array-element-newline": "off", + "vue/arrow-spacing": "off", + "vue/block-spacing": "off", + "vue/block-tag-newline": "off", + "vue/brace-style": "off", + "vue/comma-dangle": "off", + "vue/comma-spacing": "off", + "vue/comma-style": "off", + "vue/dot-location": "off", + "vue/func-call-spacing": "off", + "vue/html-closing-bracket-newline": "off", + "vue/html-closing-bracket-spacing": "off", + "vue/html-end-tags": "off", + "vue/html-indent": "off", + "vue/html-quotes": "off", + "vue/html-self-closing": 0, + "vue/key-spacing": "off", + "vue/keyword-spacing": "off", + "vue/max-attributes-per-line": "off", + "vue/max-len": 0, + "vue/multiline-html-element-content-newline": "off", + "vue/multiline-ternary": "off", + "vue/mustache-interpolation-spacing": "off", + "vue/no-extra-parens": "off", + "vue/no-multi-spaces": "off", + "vue/no-spaces-around-equal-signs-in-attribute": "off", + "vue/object-curly-newline": "off", + "vue/object-curly-spacing": "off", + "vue/object-property-newline": "off", + "vue/operator-linebreak": "off", + "vue/quote-props": "off", + "vue/script-indent": "off", + "vue/singleline-html-element-content-newline": "off", + "vue/space-in-parens": "off", + "vue/space-infix-ops": "off", + "vue/space-unary-ops": "off", + "vue/template-curly-spacing": "off", + "wrap-iife": "off", + "wrap-regex": "off", + "yield-star-spacing": "off", + }, + }, + { + "languageOptions": { + "parser": { + "meta": { + "name": "typescript-eslint/parser", + "version": "8.27.0", + }, + "parseForESLint": [Function], + }, + "sourceType": "module", + }, + "name": "typescript-eslint/base", + "plugins": { + "@typescript-eslint": { + "configs": { + "all": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/ban-tslint-comment": "error", + "@typescript-eslint/class-literal-property-style": "error", + "@typescript-eslint/class-methods-use-this": "error", + "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/consistent-indexed-object-style": "error", + "@typescript-eslint/consistent-return": "error", + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/consistent-type-exports": "error", + "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/default-param-last": "error", + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/explicit-function-return-type": "error", + "@typescript-eslint/explicit-member-accessibility": "error", + "@typescript-eslint/explicit-module-boundary-types": "error", + "@typescript-eslint/init-declarations": "error", + "@typescript-eslint/max-params": "error", + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/method-signature-style": "error", + "@typescript-eslint/naming-convention": "error", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-array-delete": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-confusing-non-null-assertion": "error", + "@typescript-eslint/no-confusing-void-expression": "error", + "@typescript-eslint/no-deprecated": "error", + "@typescript-eslint/no-dupe-class-members": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-dynamic-delete": "error", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-import-type-side-effects": "error", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/no-invalid-this": "error", + "@typescript-eslint/no-invalid-void-type": "error", + "@typescript-eslint/no-loop-func": "error", + "@typescript-eslint/no-magic-numbers": "error", + "@typescript-eslint/no-meaningless-void-operator": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-misused-spread": "error", + "@typescript-eslint/no-mixed-enums": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-redeclare": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-restricted-imports": "error", + "@typescript-eslint/no-restricted-types": "error", + "@typescript-eslint/no-shadow": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error", + "@typescript-eslint/no-unnecessary-qualifier": "error", + "@typescript-eslint/no-unnecessary-template-expression": "error", + "@typescript-eslint/no-unnecessary-type-arguments": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unnecessary-type-parameters": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-type-assertion": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-use-before-define": "error", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/no-useless-empty-export": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/non-nullable-type-assertion-style": "error", + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/parameter-properties": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-destructuring": "error", + "@typescript-eslint/prefer-enum-initializers": "error", + "@typescript-eslint/prefer-find": "error", + "@typescript-eslint/prefer-for-of": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-literal-enum-member": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/prefer-nullish-coalescing": "error", + "@typescript-eslint/prefer-optional-chain": "error", + "@typescript-eslint/prefer-promise-reject-errors": "error", + "@typescript-eslint/prefer-readonly": "error", + "@typescript-eslint/prefer-readonly-parameter-types": "error", + "@typescript-eslint/prefer-reduce-type-parameter": "error", + "@typescript-eslint/prefer-regexp-exec": "error", + "@typescript-eslint/prefer-return-this-type": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/related-getter-setter-pairs": "error", + "@typescript-eslint/require-array-sort-compare": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "@typescript-eslint/return-await": "error", + "@typescript-eslint/strict-boolean-expressions": "error", + "@typescript-eslint/switch-exhaustiveness-check": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/typedef": "error", + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/unified-signatures": "error", + "@typescript-eslint/use-unknown-in-catch-callback-variable": "error", + "class-methods-use-this": "off", + "consistent-return": "off", + "default-param-last": "off", + "dot-notation": "off", + "init-declarations": "off", + "max-params": "off", + "no-array-constructor": "off", + "no-dupe-class-members": "off", + "no-empty-function": "off", + "no-implied-eval": "off", + "no-invalid-this": "off", + "no-loop-func": "off", + "no-magic-numbers": "off", + "no-redeclare": "off", + "no-restricted-imports": "off", + "no-return-await": "off", + "no-shadow": "off", + "no-throw-literal": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + "no-use-before-define": "off", + "no-useless-constructor": "off", + "prefer-destructuring": "off", + "prefer-promise-reject-errors": "off", + "require-await": "off", + }, + }, + "base": { + "parser": "@typescript-eslint/parser", + "parserOptions": { + "sourceType": "module", + }, + "plugins": [ + "@typescript-eslint", + ], + }, + "disable-type-checked": { + "parserOptions": { + "program": null, + "project": false, + "projectService": false, + }, + "rules": { + "@typescript-eslint/await-thenable": "off", + "@typescript-eslint/consistent-return": "off", + "@typescript-eslint/consistent-type-exports": "off", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/naming-convention": "off", + "@typescript-eslint/no-array-delete": "off", + "@typescript-eslint/no-base-to-string": "off", + "@typescript-eslint/no-confusing-void-expression": "off", + "@typescript-eslint/no-deprecated": "off", + "@typescript-eslint/no-duplicate-type-constituents": "off", + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/no-for-in-array": "off", + "@typescript-eslint/no-implied-eval": "off", + "@typescript-eslint/no-meaningless-void-operator": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/no-misused-spread": "off", + "@typescript-eslint/no-mixed-enums": "off", + "@typescript-eslint/no-redundant-type-constituents": "off", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", + "@typescript-eslint/no-unnecessary-condition": "off", + "@typescript-eslint/no-unnecessary-qualifier": "off", + "@typescript-eslint/no-unnecessary-template-expression": "off", + "@typescript-eslint/no-unnecessary-type-arguments": "off", + "@typescript-eslint/no-unnecessary-type-assertion": "off", + "@typescript-eslint/no-unnecessary-type-parameters": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-unsafe-enum-comparison": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-unsafe-type-assertion": "off", + "@typescript-eslint/no-unsafe-unary-minus": "off", + "@typescript-eslint/non-nullable-type-assertion-style": "off", + "@typescript-eslint/only-throw-error": "off", + "@typescript-eslint/prefer-destructuring": "off", + "@typescript-eslint/prefer-find": "off", + "@typescript-eslint/prefer-includes": "off", + "@typescript-eslint/prefer-nullish-coalescing": "off", + "@typescript-eslint/prefer-optional-chain": "off", + "@typescript-eslint/prefer-promise-reject-errors": "off", + "@typescript-eslint/prefer-readonly": "off", + "@typescript-eslint/prefer-readonly-parameter-types": "off", + "@typescript-eslint/prefer-reduce-type-parameter": "off", + "@typescript-eslint/prefer-regexp-exec": "off", + "@typescript-eslint/prefer-return-this-type": "off", + "@typescript-eslint/prefer-string-starts-ends-with": "off", + "@typescript-eslint/promise-function-async": "off", + "@typescript-eslint/related-getter-setter-pairs": "off", + "@typescript-eslint/require-array-sort-compare": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/restrict-plus-operands": "off", + "@typescript-eslint/restrict-template-expressions": "off", + "@typescript-eslint/return-await": "off", + "@typescript-eslint/strict-boolean-expressions": "off", + "@typescript-eslint/switch-exhaustiveness-check": "off", + "@typescript-eslint/unbound-method": "off", + "@typescript-eslint/use-unknown-in-catch-callback-variable": "off", + }, + }, + "eslint-recommended": { + "overrides": [ + { + "files": [ + "*.ts", + "*.tsx", + "*.mts", + "*.cts", + ], + "rules": { + "constructor-super": "off", + "getter-return": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-args": "off", + "no-dupe-class-members": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-new-native-nonconstructor": "off", + "no-new-symbol": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-undef": "off", + "no-unreachable": "off", + "no-unsafe-negation": "off", + "no-var": "error", + "prefer-const": "error", + "prefer-rest-params": "error", + "prefer-spread": "error", + }, + }, + ], + }, + "recommended": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/triple-slash-reference": "error", + "no-array-constructor": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + }, + }, + "recommended-requiring-type-checking": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-array-delete": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/prefer-promise-reject-errors": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/unbound-method": "error", + "no-array-constructor": "off", + "no-implied-eval": "off", + "no-throw-literal": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + "prefer-promise-reject-errors": "off", + "require-await": "off", + }, + }, + "recommended-type-checked": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-array-delete": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/prefer-promise-reject-errors": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/unbound-method": "error", + "no-array-constructor": "off", + "no-implied-eval": "off", + "no-throw-literal": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + "prefer-promise-reject-errors": "off", + "require-await": "off", + }, + }, + "recommended-type-checked-only": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-array-delete": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/prefer-promise-reject-errors": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "@typescript-eslint/unbound-method": "error", + "no-implied-eval": "off", + "no-throw-literal": "off", + "prefer-promise-reject-errors": "off", + "require-await": "off", + }, + }, + "strict": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "minimumDescriptionLength": 10, + }, + ], + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-dynamic-delete": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-invalid-void-type": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-literal-enum-member": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/unified-signatures": "error", + "no-array-constructor": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + "no-useless-constructor": "off", + }, + }, + "strict-type-checked": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "minimumDescriptionLength": 10, + }, + ], + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-array-delete": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-confusing-void-expression": "error", + "@typescript-eslint/no-deprecated": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-dynamic-delete": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-invalid-void-type": "error", + "@typescript-eslint/no-meaningless-void-operator": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-misused-spread": "error", + "@typescript-eslint/no-mixed-enums": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-unnecessary-template-expression": "error", + "@typescript-eslint/no-unnecessary-type-arguments": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unnecessary-type-parameters": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-literal-enum-member": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/prefer-promise-reject-errors": "error", + "@typescript-eslint/prefer-reduce-type-parameter": "error", + "@typescript-eslint/prefer-return-this-type": "error", + "@typescript-eslint/related-getter-setter-pairs": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": [ + "error", + { + "allowAny": false, + "allowBoolean": false, + "allowNullish": false, + "allowNumberAndString": false, + "allowRegExp": false, + }, + ], + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + "allowAny": false, + "allowBoolean": false, + "allowNever": false, + "allowNullish": false, + "allowNumber": false, + "allowRegExp": false, + }, + ], + "@typescript-eslint/return-await": [ + "error", + "error-handling-correctness-only", + ], + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/unified-signatures": "error", + "@typescript-eslint/use-unknown-in-catch-callback-variable": "error", + "no-array-constructor": "off", + "no-implied-eval": "off", + "no-return-await": "off", + "no-throw-literal": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + "no-useless-constructor": "off", + "prefer-promise-reject-errors": "off", + "require-await": "off", + }, + }, + "strict-type-checked-only": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-array-delete": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-confusing-void-expression": "error", + "@typescript-eslint/no-deprecated": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-meaningless-void-operator": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-misused-spread": "error", + "@typescript-eslint/no-mixed-enums": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-unnecessary-template-expression": "error", + "@typescript-eslint/no-unnecessary-type-arguments": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-parameters": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/prefer-promise-reject-errors": "error", + "@typescript-eslint/prefer-reduce-type-parameter": "error", + "@typescript-eslint/prefer-return-this-type": "error", + "@typescript-eslint/related-getter-setter-pairs": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": [ + "error", + { + "allowAny": false, + "allowBoolean": false, + "allowNullish": false, + "allowNumberAndString": false, + "allowRegExp": false, + }, + ], + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + "allowAny": false, + "allowBoolean": false, + "allowNever": false, + "allowNullish": false, + "allowNumber": false, + "allowRegExp": false, + }, + ], + "@typescript-eslint/return-await": [ + "error", + "error-handling-correctness-only", + ], + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/use-unknown-in-catch-callback-variable": "error", + "no-implied-eval": "off", + "no-return-await": "off", + "no-throw-literal": "off", + "prefer-promise-reject-errors": "off", + "require-await": "off", + }, + }, + "stylistic": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/ban-tslint-comment": "error", + "@typescript-eslint/class-literal-property-style": "error", + "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/consistent-indexed-object-style": "error", + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/no-confusing-non-null-assertion": "error", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/prefer-for-of": "error", + "@typescript-eslint/prefer-function-type": "error", + "no-empty-function": "off", + }, + }, + "stylistic-type-checked": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/ban-tslint-comment": "error", + "@typescript-eslint/class-literal-property-style": "error", + "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/consistent-indexed-object-style": "error", + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/no-confusing-non-null-assertion": "error", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/non-nullable-type-assertion-style": "error", + "@typescript-eslint/prefer-find": "error", + "@typescript-eslint/prefer-for-of": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-nullish-coalescing": "error", + "@typescript-eslint/prefer-optional-chain": "error", + "@typescript-eslint/prefer-regexp-exec": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "dot-notation": "off", + "no-empty-function": "off", + }, + }, + "stylistic-type-checked-only": { + "extends": [ + "./configs/base", + "./configs/eslint-recommended", + ], + "rules": { + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/non-nullable-type-assertion-style": "error", + "@typescript-eslint/prefer-find": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-nullish-coalescing": "error", + "@typescript-eslint/prefer-optional-chain": "error", + "@typescript-eslint/prefer-regexp-exec": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "dot-notation": "off", + }, + }, + }, + "meta": { + "name": "@typescript-eslint/eslint-plugin", + "version": "8.27.0", + }, + "rules": { + "adjacent-overload-signatures": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Require that function overload signatures be consecutive", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/adjacent-overload-signatures", + }, + "messages": { + "adjacentSignature": "All {{name}} signatures should be adjacent.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "array-type": { + "create": [Function], + "defaultOptions": [ + { + "default": "array", + }, + ], + "meta": { + "docs": { + "description": "Require consistently using either \`T[]\` or \`Array\` for arrays", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/array-type", + }, + "fixable": "code", + "messages": { + "errorStringArray": "Array type using '{{className}}<{{type}}>' is forbidden. Use '{{readonlyPrefix}}{{type}}[]' instead.", + "errorStringArrayReadonly": "Array type using '{{className}}<{{type}}>' is forbidden. Use '{{readonlyPrefix}}{{type}}' instead.", + "errorStringArraySimple": "Array type using '{{className}}<{{type}}>' is forbidden for simple types. Use '{{readonlyPrefix}}{{type}}[]' instead.", + "errorStringArraySimpleReadonly": "Array type using '{{className}}<{{type}}>' is forbidden for simple types. Use '{{readonlyPrefix}}{{type}}' instead.", + "errorStringGeneric": "Array type using '{{readonlyPrefix}}{{type}}[]' is forbidden. Use '{{className}}<{{type}}>' instead.", + "errorStringGenericSimple": "Array type using '{{readonlyPrefix}}{{type}}[]' is forbidden for non-simple types. Use '{{className}}<{{type}}>' instead.", + }, + "schema": [ + { + "$defs": { + "arrayOption": { + "enum": [ + "array", + "generic", + "array-simple", + ], + "type": "string", + }, + }, + "additionalProperties": false, + "properties": { + "default": { + "$ref": "#/items/0/$defs/arrayOption", + "description": "The array type expected for mutable cases.", + }, + "readonly": { + "$ref": "#/items/0/$defs/arrayOption", + "description": "The array type expected for readonly cases. If omitted, the value for \`default\` will be used.", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "await-thenable": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow awaiting a value that is not a Thenable", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/await-thenable", + }, + "hasSuggestions": true, + "messages": { + "await": "Unexpected \`await\` of a non-Promise (non-"Thenable") value.", + "awaitUsingOfNonAsyncDisposable": "Unexpected \`await using\` of a value that is not async disposable.", + "convertToOrdinaryFor": "Convert to an ordinary \`for...of\` loop.", + "forAwaitOfNonAsyncIterable": "Unexpected \`for await...of\` of a value that is not async iterable.", + "removeAwait": "Remove unnecessary \`await\`.", + }, + "schema": [], + "type": "problem", + }, + }, + "ban-ts-comment": { + "create": [Function], + "defaultOptions": [ + { + "minimumDescriptionLength": 3, + "ts-check": false, + "ts-expect-error": "allow-with-description", + "ts-ignore": true, + "ts-nocheck": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow \`@ts-\` comments or require descriptions after directives", + "recommended": { + "recommended": true, + "strict": [ + { + "minimumDescriptionLength": 10, + }, + ], + }, + "url": "https://typescript-eslint.io/rules/ban-ts-comment", + }, + "hasSuggestions": true, + "messages": { + "replaceTsIgnoreWithTsExpectError": "Replace "@ts-ignore" with "@ts-expect-error".", + "tsDirectiveComment": "Do not use "@ts-{{directive}}" because it alters compilation errors.", + "tsDirectiveCommentDescriptionNotMatchPattern": "The description for the "@ts-{{directive}}" directive must match the {{format}} format.", + "tsDirectiveCommentRequiresDescription": "Include a description after the "@ts-{{directive}}" directive to explain why the @ts-{{directive}} is necessary. The description must be {{minimumDescriptionLength}} characters or longer.", + "tsIgnoreInsteadOfExpectError": "Use "@ts-expect-error" instead of "@ts-ignore", as "@ts-ignore" will do nothing if the following line is error-free.", + }, + "schema": [ + { + "$defs": { + "directiveConfigSchema": { + "oneOf": [ + { + "default": true, + "type": "boolean", + }, + { + "enum": [ + "allow-with-description", + ], + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "descriptionFormat": { + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + }, + "additionalProperties": false, + "properties": { + "minimumDescriptionLength": { + "default": 3, + "description": "A minimum character length for descriptions when \`allow-with-description\` is enabled.", + "type": "number", + }, + "ts-check": { + "$ref": "#/items/0/$defs/directiveConfigSchema", + }, + "ts-expect-error": { + "$ref": "#/items/0/$defs/directiveConfigSchema", + }, + "ts-ignore": { + "$ref": "#/items/0/$defs/directiveConfigSchema", + }, + "ts-nocheck": { + "$ref": "#/items/0/$defs/directiveConfigSchema", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "ban-tslint-comment": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow \`// tslint:\` comments", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/ban-tslint-comment", + }, + "fixable": "code", + "messages": { + "commentDetected": "tslint comment detected: "{{ text }}"", + }, + "schema": [], + "type": "suggestion", + }, + }, + "class-literal-property-style": { + "create": [Function], + "defaultOptions": [ + "fields", + ], + "meta": { + "docs": { + "description": "Enforce that literals on classes are exposed in a consistent style", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/class-literal-property-style", + }, + "hasSuggestions": true, + "messages": { + "preferFieldStyle": "Literals should be exposed using readonly fields.", + "preferFieldStyleSuggestion": "Replace the literals with readonly fields.", + "preferGetterStyle": "Literals should be exposed using getters.", + "preferGetterStyleSuggestion": "Replace the literals with getters.", + }, + "schema": [ + { + "description": "Which literal class member syntax to prefer.", + "enum": [ + "fields", + "getters", + ], + "type": "string", + }, + ], + "type": "problem", + }, + }, + "class-methods-use-this": { + "create": [Function], + "defaultOptions": [ + { + "enforceForClassFields": true, + "exceptMethods": [], + "ignoreClassesThatImplementAnInterface": false, + "ignoreOverrideMethods": false, + }, + ], + "meta": { + "docs": { + "description": "Enforce that class methods utilize \`this\`", + "extendsBaseRule": true, + "requiresTypeChecking": false, + "url": "https://typescript-eslint.io/rules/class-methods-use-this", + }, + "messages": { + "missingThis": "Expected 'this' to be used by class {{name}}.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "enforceForClassFields": { + "default": true, + "description": "Enforces that functions used as instance field initializers utilize \`this\`.", + "type": "boolean", + }, + "exceptMethods": { + "description": "Allows specified method names to be ignored with this rule.", + "items": { + "type": "string", + }, + "type": "array", + }, + "ignoreClassesThatImplementAnInterface": { + "description": "Whether to ignore class members that are defined within a class that \`implements\` a type.", + "oneOf": [ + { + "description": "Ignore all classes that implement an interface", + "type": "boolean", + }, + { + "description": "Ignore only the public fields of classes that implement an interface", + "enum": [ + "public-fields", + ], + "type": "string", + }, + ], + }, + "ignoreOverrideMethods": { + "description": "Whether to ignore members marked with the \`override\` modifier.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "consistent-generic-constructors": { + "create": [Function], + "defaultOptions": [ + "constructor", + ], + "meta": { + "docs": { + "description": "Enforce specifying generic type arguments on type annotation or constructor name of a constructor call", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/consistent-generic-constructors", + }, + "fixable": "code", + "messages": { + "preferConstructor": "The generic type arguments should be specified as part of the constructor type arguments.", + "preferTypeAnnotation": "The generic type arguments should be specified as part of the type annotation.", + }, + "schema": [ + { + "description": "Which constructor call syntax to prefer.", + "enum": [ + "type-annotation", + "constructor", + ], + "type": "string", + }, + ], + "type": "suggestion", + }, + }, + "consistent-indexed-object-style": { + "create": [Function], + "defaultOptions": [ + "record", + ], + "meta": { + "docs": { + "description": "Require or disallow the \`Record\` type", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/consistent-indexed-object-style", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "preferIndexSignature": "An index signature is preferred over a record.", + "preferIndexSignatureSuggestion": "Change into an index signature instead of a record.", + "preferRecord": "A record is preferred over an index signature.", + }, + "schema": [ + { + "description": "Which indexed object syntax to prefer.", + "enum": [ + "record", + "index-signature", + ], + "type": "string", + }, + ], + "type": "suggestion", + }, + }, + "consistent-return": { + "create": [Function], + "defaultOptions": [ + { + "treatUndefinedAsUnspecified": false, + }, + ], + "meta": { + "defaultOptions": [ + { + "treatUndefinedAsUnspecified": false, + }, + ], + "docs": { + "description": "Require \`return\` statements to either always or never specify values", + "extendsBaseRule": true, + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/consistent-return", + }, + "hasSuggestions": undefined, + "messages": { + "missingReturn": "Expected to return a value at the end of {{name}}.", + "missingReturnValue": "{{name}} expected a return value.", + "unexpectedReturnValue": "{{name}} expected no return value.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "treatUndefinedAsUnspecified": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "consistent-type-assertions": { + "create": [Function], + "defaultOptions": [ + { + "arrayLiteralTypeAssertions": "allow", + "assertionStyle": "as", + "objectLiteralTypeAssertions": "allow", + }, + ], + "meta": { + "docs": { + "description": "Enforce consistent usage of type assertions", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/consistent-type-assertions", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "angle-bracket": "Use '<{{cast}}>' instead of 'as {{cast}}'.", + "as": "Use 'as {{cast}}' instead of '<{{cast}}>'.", + "never": "Do not use any type assertions.", + "replaceArrayTypeAssertionWithAnnotation": "Use const x: {{cast}} = [ ... ] instead.", + "replaceArrayTypeAssertionWithSatisfies": "Use const x = [ ... ] satisfies {{cast}} instead.", + "replaceObjectTypeAssertionWithAnnotation": "Use const x: {{cast}} = { ... } instead.", + "replaceObjectTypeAssertionWithSatisfies": "Use const x = { ... } satisfies {{cast}} instead.", + "unexpectedArrayTypeAssertion": "Always prefer const x: T[] = [ ... ].", + "unexpectedObjectTypeAssertion": "Always prefer const x: T = { ... }.", + }, + "schema": [ + { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "assertionStyle": { + "description": "The expected assertion style to enforce.", + "enum": [ + "never", + ], + "type": "string", + }, + }, + "required": [ + "assertionStyle", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "arrayLiteralTypeAssertions": { + "description": "Whether to always prefer type declarations for array literals used as variable initializers, rather than type assertions.", + "enum": [ + "allow", + "allow-as-parameter", + "never", + ], + "type": "string", + }, + "assertionStyle": { + "description": "The expected assertion style to enforce.", + "enum": [ + "as", + "angle-bracket", + ], + "type": "string", + }, + "objectLiteralTypeAssertions": { + "description": "Whether to always prefer type declarations for object literals used as variable initializers, rather than type assertions.", + "enum": [ + "allow", + "allow-as-parameter", + "never", + ], + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + ], + "type": "suggestion", + }, + }, + "consistent-type-definitions": { + "create": [Function], + "defaultOptions": [ + "interface", + ], + "meta": { + "docs": { + "description": "Enforce type definitions to consistently use either \`interface\` or \`type\`", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/consistent-type-definitions", + }, + "fixable": "code", + "messages": { + "interfaceOverType": "Use an \`interface\` instead of a \`type\`.", + "typeOverInterface": "Use a \`type\` instead of an \`interface\`.", + }, + "schema": [ + { + "description": "Which type definition syntax to prefer.", + "enum": [ + "interface", + "type", + ], + "type": "string", + }, + ], + "type": "suggestion", + }, + }, + "consistent-type-exports": { + "create": [Function], + "defaultOptions": [ + { + "fixMixedExportsWithInlineTypeSpecifier": false, + }, + ], + "meta": { + "docs": { + "description": "Enforce consistent usage of type exports", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/consistent-type-exports", + }, + "fixable": "code", + "messages": { + "multipleExportsAreTypes": "Type exports {{exportNames}} are not values and should be exported using \`export type\`.", + "singleExportIsType": "Type export {{exportNames}} is not a value and should be exported using \`export type\`.", + "typeOverValue": "All exports in the declaration are only used as types. Use \`export type\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "fixMixedExportsWithInlineTypeSpecifier": { + "description": "Whether the rule will autofix "mixed" export cases using TS inline type specifiers.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "consistent-type-imports": { + "create": [Function], + "defaultOptions": [ + { + "disallowTypeAnnotations": true, + "fixStyle": "separate-type-imports", + "prefer": "type-imports", + }, + ], + "meta": { + "docs": { + "description": "Enforce consistent usage of type imports", + "url": "https://typescript-eslint.io/rules/consistent-type-imports", + }, + "fixable": "code", + "messages": { + "avoidImportType": "Use an \`import\` instead of an \`import type\`.", + "noImportTypeAnnotations": "\`import()\` type annotations are forbidden.", + "someImportsAreOnlyTypes": "Imports {{typeImports}} are only used as type.", + "typeOverValue": "All imports in the declaration are only used as types. Use \`import type\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "disallowTypeAnnotations": { + "description": "Whether to disallow type imports in type annotations (\`import()\`).", + "type": "boolean", + }, + "fixStyle": { + "description": "The expected type modifier to be added when an import is detected as used only in the type position.", + "enum": [ + "separate-type-imports", + "inline-type-imports", + ], + "type": "string", + }, + "prefer": { + "description": "The expected import kind for type-only imports.", + "enum": [ + "type-imports", + "no-type-imports", + ], + "type": "string", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "default-param-last": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce default parameters to be last", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/default-param-last", + }, + "messages": { + "shouldBeLast": "Default parameters should be last.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "dot-notation": { + "create": [Function], + "defaultOptions": [ + { + "allowIndexSignaturePropertyAccess": false, + "allowKeywords": true, + "allowPattern": "", + "allowPrivateClassPropertyAccess": false, + "allowProtectedClassPropertyAccess": false, + }, + ], + "meta": { + "defaultOptions": [ + { + "allowIndexSignaturePropertyAccess": false, + "allowKeywords": true, + "allowPattern": "", + "allowPrivateClassPropertyAccess": false, + "allowProtectedClassPropertyAccess": false, + }, + ], + "docs": { + "description": "Enforce dot notation whenever possible", + "extendsBaseRule": true, + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/dot-notation", + }, + "fixable": "code", + "hasSuggestions": undefined, + "messages": { + "useBrackets": ".{{key}} is a syntax error.", + "useDot": "[{{key}}] is better written in dot notation.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowIndexSignaturePropertyAccess": { + "default": false, + "description": "Whether to allow accessing properties matching an index signature with array notation.", + "type": "boolean", + }, + "allowKeywords": { + "default": true, + "description": "Whether to allow keywords such as ["class"]\`.", + "type": "boolean", + }, + "allowPattern": { + "default": "", + "description": "Regular expression of names to allow.", + "type": "string", + }, + "allowPrivateClassPropertyAccess": { + "default": false, + "description": "Whether to allow accessing class members marked as \`private\` with array notation.", + "type": "boolean", + }, + "allowProtectedClassPropertyAccess": { + "default": false, + "description": "Whether to allow accessing class members marked as \`protected\` with array notation.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "explicit-function-return-type": { + "create": [Function], + "defaultOptions": [ + { + "allowConciseArrowFunctionExpressionsStartingWithVoid": false, + "allowDirectConstAssertionInArrowFunctions": true, + "allowExpressions": false, + "allowFunctionsWithoutTypeParameters": false, + "allowHigherOrderFunctions": true, + "allowIIFEs": false, + "allowTypedFunctionExpressions": true, + "allowedNames": [], + }, + ], + "meta": { + "docs": { + "description": "Require explicit return types on functions and class methods", + "url": "https://typescript-eslint.io/rules/explicit-function-return-type", + }, + "messages": { + "missingReturnType": "Missing return type on function.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowConciseArrowFunctionExpressionsStartingWithVoid": { + "description": "Whether to allow arrow functions that start with the \`void\` keyword.", + "type": "boolean", + }, + "allowDirectConstAssertionInArrowFunctions": { + "description": "Whether to ignore arrow functions immediately returning a \`as const\` value.", + "type": "boolean", + }, + "allowExpressions": { + "description": "Whether to ignore function expressions (functions which are not part of a declaration).", + "type": "boolean", + }, + "allowFunctionsWithoutTypeParameters": { + "description": "Whether to ignore functions that don't have generic type parameters.", + "type": "boolean", + }, + "allowHigherOrderFunctions": { + "description": "Whether to ignore functions immediately returning another function expression.", + "type": "boolean", + }, + "allowIIFEs": { + "description": "Whether to ignore immediately invoked function expressions (IIFEs).", + "type": "boolean", + }, + "allowTypedFunctionExpressions": { + "description": "Whether to ignore type annotations on the variable of function expressions.", + "type": "boolean", + }, + "allowedNames": { + "description": "An array of function/method names that will not have their arguments or return values checked.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "explicit-member-accessibility": { + "create": [Function], + "defaultOptions": [ + { + "accessibility": "explicit", + }, + ], + "meta": { + "docs": { + "description": "Require explicit accessibility modifiers on class properties and methods", + "url": "https://typescript-eslint.io/rules/explicit-member-accessibility", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "addExplicitAccessibility": "Add '{{ type }}' accessibility modifier", + "missingAccessibility": "Missing accessibility modifier on {{type}} {{name}}.", + "unwantedPublicAccessibility": "Public accessibility modifier on {{type}} {{name}}.", + }, + "schema": [ + { + "$defs": { + "accessibilityLevel": { + "oneOf": [ + { + "description": "Always require an accessor.", + "enum": [ + "explicit", + ], + "type": "string", + }, + { + "description": "Require an accessor except when public.", + "enum": [ + "no-public", + ], + "type": "string", + }, + { + "description": "Never check whether there is an accessor.", + "enum": [ + "off", + ], + "type": "string", + }, + ], + }, + }, + "additionalProperties": false, + "properties": { + "accessibility": { + "$ref": "#/items/0/$defs/accessibilityLevel", + "description": "Which accessibility modifier is required to exist or not exist.", + }, + "ignoredMethodNames": { + "description": "Specific method names that may be ignored.", + "items": { + "type": "string", + }, + "type": "array", + }, + "overrides": { + "additionalProperties": false, + "description": "Changes to required accessibility modifiers for specific kinds of class members.", + "properties": { + "accessors": { + "$ref": "#/items/0/$defs/accessibilityLevel", + }, + "constructors": { + "$ref": "#/items/0/$defs/accessibilityLevel", + }, + "methods": { + "$ref": "#/items/0/$defs/accessibilityLevel", + }, + "parameterProperties": { + "$ref": "#/items/0/$defs/accessibilityLevel", + }, + "properties": { + "$ref": "#/items/0/$defs/accessibilityLevel", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "explicit-module-boundary-types": { + "create": [Function], + "defaultOptions": [ + { + "allowArgumentsExplicitlyTypedAsAny": false, + "allowDirectConstAssertionInArrowFunctions": true, + "allowHigherOrderFunctions": true, + "allowOverloadFunctions": false, + "allowTypedFunctionExpressions": true, + "allowedNames": [], + }, + ], + "meta": { + "docs": { + "description": "Require explicit return and argument types on exported functions' and classes' public class methods", + "url": "https://typescript-eslint.io/rules/explicit-module-boundary-types", + }, + "messages": { + "anyTypedArg": "Argument '{{name}}' should be typed with a non-any type.", + "anyTypedArgUnnamed": "{{type}} argument should be typed with a non-any type.", + "missingArgType": "Argument '{{name}}' should be typed.", + "missingArgTypeUnnamed": "{{type}} argument should be typed.", + "missingReturnType": "Missing return type on function.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowArgumentsExplicitlyTypedAsAny": { + "description": "Whether to ignore arguments that are explicitly typed as \`any\`.", + "type": "boolean", + }, + "allowDirectConstAssertionInArrowFunctions": { + "description": "Whether to ignore return type annotations on body-less arrow functions that return an \`as const\` type assertion. +You must still type the parameters of the function.", + "type": "boolean", + }, + "allowHigherOrderFunctions": { + "description": "Whether to ignore return type annotations on functions immediately returning another function expression. +You must still type the parameters of the function.", + "type": "boolean", + }, + "allowOverloadFunctions": { + "description": "Whether to ignore return type annotations on functions with overload signatures.", + "type": "boolean", + }, + "allowTypedFunctionExpressions": { + "description": "Whether to ignore type annotations on the variable of a function expression.", + "type": "boolean", + }, + "allowedNames": { + "description": "An array of function/method names that will not have their arguments or return values checked.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "init-declarations": { + "create": [Function], + "defaultOptions": [ + "always", + ], + "meta": { + "docs": { + "description": "Require or disallow initialization in variable declarations", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/init-declarations", + }, + "hasSuggestions": undefined, + "messages": { + "initialized": "Variable '{{idName}}' should be initialized on declaration.", + "notInitialized": "Variable '{{idName}}' should not be initialized on declaration.", + }, + "schema": { + "anyOf": [ + { + "items": [ + { + "enum": [ + "always", + ], + }, + ], + "maxItems": 1, + "minItems": 0, + "type": "array", + }, + { + "items": [ + { + "enum": [ + "never", + ], + }, + { + "additionalProperties": false, + "properties": { + "ignoreForLoopInit": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "maxItems": 2, + "minItems": 0, + "type": "array", + }, + ], + }, + "type": "suggestion", + }, + }, + "max-params": { + "create": [Function], + "defaultOptions": [ + { + "countVoidThis": false, + "max": 3, + }, + ], + "meta": { + "docs": { + "description": "Enforce a maximum number of parameters in function definitions", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/max-params", + }, + "messages": { + "exceed": "{{name}} has too many parameters ({{count}}). Maximum allowed is {{max}}.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "countVoidThis": { + "description": "Whether to count a \`this\` declaration when the type is \`void\`.", + "type": "boolean", + }, + "max": { + "description": "A maximum number of parameters in function definitions.", + "minimum": 0, + "type": "integer", + }, + "maximum": { + "description": "(deprecated) A maximum number of parameters in function definitions.", + "minimum": 0, + "type": "integer", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "member-ordering": { + "create": [Function], + "defaultOptions": [ + { + "default": { + "memberTypes": [ + "signature", + "call-signature", + "public-static-field", + "protected-static-field", + "private-static-field", + "#private-static-field", + "public-decorated-field", + "protected-decorated-field", + "private-decorated-field", + "public-instance-field", + "protected-instance-field", + "private-instance-field", + "#private-instance-field", + "public-abstract-field", + "protected-abstract-field", + "public-field", + "protected-field", + "private-field", + "#private-field", + "static-field", + "instance-field", + "abstract-field", + "decorated-field", + "field", + "static-initialization", + "public-constructor", + "protected-constructor", + "private-constructor", + "constructor", + "public-static-accessor", + "protected-static-accessor", + "private-static-accessor", + "#private-static-accessor", + "public-decorated-accessor", + "protected-decorated-accessor", + "private-decorated-accessor", + "public-instance-accessor", + "protected-instance-accessor", + "private-instance-accessor", + "#private-instance-accessor", + "public-abstract-accessor", + "protected-abstract-accessor", + "public-accessor", + "protected-accessor", + "private-accessor", + "#private-accessor", + "static-accessor", + "instance-accessor", + "abstract-accessor", + "decorated-accessor", + "accessor", + "public-static-get", + "protected-static-get", + "private-static-get", + "#private-static-get", + "public-decorated-get", + "protected-decorated-get", + "private-decorated-get", + "public-instance-get", + "protected-instance-get", + "private-instance-get", + "#private-instance-get", + "public-abstract-get", + "protected-abstract-get", + "public-get", + "protected-get", + "private-get", + "#private-get", + "static-get", + "instance-get", + "abstract-get", + "decorated-get", + "get", + "public-static-set", + "protected-static-set", + "private-static-set", + "#private-static-set", + "public-decorated-set", + "protected-decorated-set", + "private-decorated-set", + "public-instance-set", + "protected-instance-set", + "private-instance-set", + "#private-instance-set", + "public-abstract-set", + "protected-abstract-set", + "public-set", + "protected-set", + "private-set", + "#private-set", + "static-set", + "instance-set", + "abstract-set", + "decorated-set", + "set", + "public-static-method", + "protected-static-method", + "private-static-method", + "#private-static-method", + "public-decorated-method", + "protected-decorated-method", + "private-decorated-method", + "public-instance-method", + "protected-instance-method", + "private-instance-method", + "#private-instance-method", + "public-abstract-method", + "protected-abstract-method", + "public-method", + "protected-method", + "private-method", + "#private-method", + "static-method", + "instance-method", + "abstract-method", + "decorated-method", + "method", + ], + }, + }, + ], + "meta": { + "docs": { + "description": "Require a consistent member declaration order", + "url": "https://typescript-eslint.io/rules/member-ordering", + }, + "messages": { + "incorrectGroupOrder": "Member {{name}} should be declared before all {{rank}} definitions.", + "incorrectOrder": "Member {{member}} should be declared before member {{beforeMember}}.", + "incorrectRequiredMembersOrder": "Member {{member}} should be declared after all {{optionalOrRequired}} members.", + }, + "schema": [ + { + "$defs": { + "allItems": { + "enum": [ + "readonly-signature", + "signature", + "readonly-field", + "public-readonly-field", + "public-decorated-readonly-field", + "decorated-readonly-field", + "static-readonly-field", + "public-static-readonly-field", + "instance-readonly-field", + "public-instance-readonly-field", + "abstract-readonly-field", + "public-abstract-readonly-field", + "protected-readonly-field", + "protected-decorated-readonly-field", + "protected-static-readonly-field", + "protected-instance-readonly-field", + "protected-abstract-readonly-field", + "private-readonly-field", + "private-decorated-readonly-field", + "private-static-readonly-field", + "private-instance-readonly-field", + "#private-readonly-field", + "#private-static-readonly-field", + "#private-instance-readonly-field", + "field", + "public-field", + "public-decorated-field", + "decorated-field", + "static-field", + "public-static-field", + "instance-field", + "public-instance-field", + "abstract-field", + "public-abstract-field", + "protected-field", + "protected-decorated-field", + "protected-static-field", + "protected-instance-field", + "protected-abstract-field", + "private-field", + "private-decorated-field", + "private-static-field", + "private-instance-field", + "#private-field", + "#private-static-field", + "#private-instance-field", + "method", + "public-method", + "public-decorated-method", + "decorated-method", + "static-method", + "public-static-method", + "instance-method", + "public-instance-method", + "abstract-method", + "public-abstract-method", + "protected-method", + "protected-decorated-method", + "protected-static-method", + "protected-instance-method", + "protected-abstract-method", + "private-method", + "private-decorated-method", + "private-static-method", + "private-instance-method", + "#private-method", + "#private-static-method", + "#private-instance-method", + "call-signature", + "constructor", + "public-constructor", + "protected-constructor", + "private-constructor", + "accessor", + "public-accessor", + "public-decorated-accessor", + "decorated-accessor", + "static-accessor", + "public-static-accessor", + "instance-accessor", + "public-instance-accessor", + "abstract-accessor", + "public-abstract-accessor", + "protected-accessor", + "protected-decorated-accessor", + "protected-static-accessor", + "protected-instance-accessor", + "protected-abstract-accessor", + "private-accessor", + "private-decorated-accessor", + "private-static-accessor", + "private-instance-accessor", + "#private-accessor", + "#private-static-accessor", + "#private-instance-accessor", + "get", + "public-get", + "public-decorated-get", + "decorated-get", + "static-get", + "public-static-get", + "instance-get", + "public-instance-get", + "abstract-get", + "public-abstract-get", + "protected-get", + "protected-decorated-get", + "protected-static-get", + "protected-instance-get", + "protected-abstract-get", + "private-get", + "private-decorated-get", + "private-static-get", + "private-instance-get", + "#private-get", + "#private-static-get", + "#private-instance-get", + "set", + "public-set", + "public-decorated-set", + "decorated-set", + "static-set", + "public-static-set", + "instance-set", + "public-instance-set", + "abstract-set", + "public-abstract-set", + "protected-set", + "protected-decorated-set", + "protected-static-set", + "protected-instance-set", + "protected-abstract-set", + "private-set", + "private-decorated-set", + "private-static-set", + "private-instance-set", + "#private-set", + "#private-static-set", + "#private-instance-set", + "static-initialization", + "static-static-initialization", + "public-static-static-initialization", + "instance-static-initialization", + "public-instance-static-initialization", + "abstract-static-initialization", + "public-abstract-static-initialization", + "protected-static-static-initialization", + "protected-instance-static-initialization", + "protected-abstract-static-initialization", + "private-static-static-initialization", + "private-instance-static-initialization", + "#private-static-static-initialization", + "#private-instance-static-initialization", + ], + "type": "string", + }, + "baseConfig": { + "oneOf": [ + { + "enum": [ + "never", + ], + "type": "string", + }, + { + "items": { + "oneOf": [ + { + "$ref": "#/items/0/$defs/allItems", + }, + { + "items": { + "$ref": "#/items/0/$defs/allItems", + }, + "type": "array", + }, + ], + }, + "type": "array", + }, + { + "additionalProperties": false, + "properties": { + "memberTypes": { + "oneOf": [ + { + "items": { + "oneOf": [ + { + "$ref": "#/items/0/$defs/allItems", + }, + { + "items": { + "$ref": "#/items/0/$defs/allItems", + }, + "type": "array", + }, + ], + }, + "type": "array", + }, + { + "enum": [ + "never", + ], + "type": "string", + }, + ], + }, + "optionalityOrder": { + "$ref": "#/items/0/$defs/optionalityOrderOptions", + }, + "order": { + "$ref": "#/items/0/$defs/orderOptions", + }, + }, + "type": "object", + }, + ], + }, + "optionalityOrderOptions": { + "enum": [ + "optional-first", + "required-first", + ], + "type": "string", + }, + "orderOptions": { + "enum": [ + "alphabetically", + "alphabetically-case-insensitive", + "as-written", + "natural", + "natural-case-insensitive", + ], + "type": "string", + }, + "typeItems": { + "enum": [ + "readonly-signature", + "signature", + "readonly-field", + "field", + "method", + "constructor", + ], + "type": "string", + }, + "typesConfig": { + "oneOf": [ + { + "enum": [ + "never", + ], + "type": "string", + }, + { + "items": { + "oneOf": [ + { + "$ref": "#/items/0/$defs/typeItems", + }, + { + "items": { + "$ref": "#/items/0/$defs/typeItems", + }, + "type": "array", + }, + ], + }, + "type": "array", + }, + { + "additionalProperties": false, + "properties": { + "memberTypes": { + "oneOf": [ + { + "items": { + "oneOf": [ + { + "$ref": "#/items/0/$defs/typeItems", + }, + { + "items": { + "$ref": "#/items/0/$defs/typeItems", + }, + "type": "array", + }, + ], + }, + "type": "array", + }, + { + "enum": [ + "never", + ], + "type": "string", + }, + ], + }, + "optionalityOrder": { + "$ref": "#/items/0/$defs/optionalityOrderOptions", + }, + "order": { + "$ref": "#/items/0/$defs/orderOptions", + }, + }, + "type": "object", + }, + ], + }, + }, + "additionalProperties": false, + "properties": { + "classExpressions": { + "$ref": "#/items/0/$defs/baseConfig", + }, + "classes": { + "$ref": "#/items/0/$defs/baseConfig", + }, + "default": { + "$ref": "#/items/0/$defs/baseConfig", + }, + "interfaces": { + "$ref": "#/items/0/$defs/typesConfig", + }, + "typeLiterals": { + "$ref": "#/items/0/$defs/typesConfig", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "method-signature-style": { + "create": [Function], + "defaultOptions": [ + "property", + ], + "meta": { + "docs": { + "description": "Enforce using a particular method signature syntax", + "url": "https://typescript-eslint.io/rules/method-signature-style", + }, + "fixable": "code", + "messages": { + "errorMethod": "Shorthand method signature is forbidden. Use a function property instead.", + "errorProperty": "Function property signature is forbidden. Use a method shorthand instead.", + }, + "schema": [ + { + "enum": [ + "property", + "method", + ], + "type": "string", + }, + ], + "type": "suggestion", + }, + }, + "naming-convention": { + "create": [Function], + "defaultOptions": [ + { + "format": [ + "camelCase", + ], + "leadingUnderscore": "allow", + "selector": "default", + "trailingUnderscore": "allow", + }, + { + "format": [ + "camelCase", + "PascalCase", + ], + "selector": "import", + }, + { + "format": [ + "camelCase", + "UPPER_CASE", + ], + "leadingUnderscore": "allow", + "selector": "variable", + "trailingUnderscore": "allow", + }, + { + "format": [ + "PascalCase", + ], + "selector": "typeLike", + }, + ], + "meta": { + "docs": { + "description": "Enforce naming conventions for everything across a codebase", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/naming-convention", + }, + "messages": { + "doesNotMatchFormat": "{{type}} name \`{{name}}\` must match one of the following formats: {{formats}}", + "doesNotMatchFormatTrimmed": "{{type}} name \`{{name}}\` trimmed as \`{{processedName}}\` must match one of the following formats: {{formats}}", + "missingAffix": "{{type}} name \`{{name}}\` must have one of the following {{position}}es: {{affixes}}", + "missingUnderscore": "{{type}} name \`{{name}}\` must have {{count}} {{position}} underscore(s).", + "satisfyCustom": "{{type}} name \`{{name}}\` must {{regexMatch}} the RegExp: {{regex}}", + "unexpectedUnderscore": "{{type}} name \`{{name}}\` must not have a {{position}} underscore.", + }, + "schema": { + "$defs": { + "formatOptionsConfig": { + "oneOf": [ + { + "additionalItems": false, + "items": { + "$ref": "#/$defs/predefinedFormats", + }, + "type": "array", + }, + { + "type": "null", + }, + ], + }, + "matchRegexConfig": { + "additionalProperties": false, + "properties": { + "match": { + "type": "boolean", + }, + "regex": { + "type": "string", + }, + }, + "required": [ + "match", + "regex", + ], + "type": "object", + }, + "predefinedFormats": { + "enum": [ + "camelCase", + "strictCamelCase", + "PascalCase", + "StrictPascalCase", + "snake_case", + "UPPER_CASE", + ], + "type": "string", + }, + "prefixSuffixConfig": { + "additionalItems": false, + "items": { + "minLength": 1, + "type": "string", + }, + "type": "array", + }, + "typeModifiers": { + "enum": [ + "boolean", + "string", + "number", + "function", + "array", + ], + "type": "string", + }, + "underscoreOptions": { + "enum": [ + "forbid", + "allow", + "require", + "requireDouble", + "allowDouble", + "allowSingleOrDouble", + ], + "type": "string", + }, + }, + "additionalItems": false, + "items": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Multiple selectors in one config", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "const", + "readonly", + "static", + "public", + "protected", + "private", + "#private", + "abstract", + "destructured", + "global", + "exported", + "unused", + "requiresQuotes", + "override", + "async", + "default", + "namespace", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "additionalItems": false, + "items": { + "enum": [ + "default", + "variableLike", + "memberLike", + "typeLike", + "method", + "property", + "accessor", + "variable", + "function", + "parameter", + "parameterProperty", + "classicAccessor", + "enumMember", + "classMethod", + "objectLiteralMethod", + "typeMethod", + "classProperty", + "objectLiteralProperty", + "typeProperty", + "autoAccessor", + "class", + "interface", + "typeAlias", + "enum", + "typeParameter", + "import", + ], + "type": "string", + }, + "type": "array", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'default'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "const", + "readonly", + "static", + "public", + "protected", + "private", + "#private", + "abstract", + "destructured", + "global", + "exported", + "unused", + "requiresQuotes", + "override", + "async", + "default", + "namespace", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "default", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'variableLike'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "unused", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "variableLike", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'variable'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "const", + "destructured", + "exported", + "global", + "unused", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "variable", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'function'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "exported", + "global", + "unused", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "function", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'parameter'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "destructured", + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "parameter", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'memberLike'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "#private", + "protected", + "public", + "readonly", + "requiresQuotes", + "static", + "override", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "memberLike", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'classProperty'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "#private", + "protected", + "public", + "readonly", + "requiresQuotes", + "static", + "override", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "classProperty", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'objectLiteralProperty'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "public", + "requiresQuotes", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "objectLiteralProperty", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'typeProperty'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "public", + "readonly", + "requiresQuotes", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "typeProperty", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'parameterProperty'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "private", + "protected", + "public", + "readonly", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "parameterProperty", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'property'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "#private", + "protected", + "public", + "readonly", + "requiresQuotes", + "static", + "override", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "property", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'classMethod'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "#private", + "protected", + "public", + "requiresQuotes", + "static", + "override", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "classMethod", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'objectLiteralMethod'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "public", + "requiresQuotes", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "objectLiteralMethod", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'typeMethod'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "public", + "requiresQuotes", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "typeMethod", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'method'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "#private", + "protected", + "public", + "requiresQuotes", + "static", + "override", + "async", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "method", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'classicAccessor'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "protected", + "public", + "requiresQuotes", + "static", + "override", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "classicAccessor", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'autoAccessor'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "protected", + "public", + "requiresQuotes", + "static", + "override", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "autoAccessor", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'accessor'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "private", + "protected", + "public", + "requiresQuotes", + "static", + "override", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "accessor", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "types": { + "additionalItems": false, + "items": { + "$ref": "#/$defs/typeModifiers", + }, + "type": "array", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'enumMember'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "requiresQuotes", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "enumMember", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'typeLike'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "exported", + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "typeLike", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'class'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "abstract", + "exported", + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "class", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'interface'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "exported", + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "interface", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'typeAlias'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "exported", + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "typeAlias", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'enum'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "exported", + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "enum", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'typeParameter'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "unused", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "typeParameter", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + { + "additionalProperties": false, + "description": "Selector 'import'", + "properties": { + "custom": { + "$ref": "#/$defs/matchRegexConfig", + }, + "failureMessage": { + "type": "string", + }, + "filter": { + "oneOf": [ + { + "minLength": 1, + "type": "string", + }, + { + "$ref": "#/$defs/matchRegexConfig", + }, + ], + }, + "format": { + "$ref": "#/$defs/formatOptionsConfig", + }, + "leadingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + "modifiers": { + "additionalItems": false, + "items": { + "enum": [ + "default", + "namespace", + ], + "type": "string", + }, + "type": "array", + }, + "prefix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "selector": { + "enum": [ + "import", + ], + "type": "string", + }, + "suffix": { + "$ref": "#/$defs/prefixSuffixConfig", + }, + "trailingUnderscore": { + "$ref": "#/$defs/underscoreOptions", + }, + }, + "required": [ + "selector", + "format", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "type": "suggestion", + }, + }, + "no-array-constructor": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow generic \`Array\` constructors", + "extendsBaseRule": true, + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-array-constructor", + }, + "fixable": "code", + "messages": { + "useLiteral": "The array literal notation [] is preferable.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-array-delete": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow using the \`delete\` operator on array values", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-array-delete", + }, + "hasSuggestions": true, + "messages": { + "noArrayDelete": "Using the \`delete\` operator with an array expression is unsafe.", + "useSplice": "Use \`array.splice()\` instead.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-base-to-string": { + "create": [Function], + "defaultOptions": [ + { + "ignoredTypeNames": [ + "Error", + "RegExp", + "URL", + "URLSearchParams", + ], + }, + ], + "meta": { + "docs": { + "description": "Require \`.toString()\` and \`.toLocaleString()\` to only be called on objects which provide useful information when stringified", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-base-to-string", + }, + "messages": { + "baseArrayJoin": "Using \`join()\` for {{name}} {{certainty}} use Object's default stringification format ('[object Object]') when stringified.", + "baseToString": "'{{name}}' {{certainty}} use Object's default stringification format ('[object Object]') when stringified.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoredTypeNames": { + "description": "Stringified regular expressions of type names to ignore.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-confusing-non-null-assertion": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow non-null assertion in locations that may be confusing", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/no-confusing-non-null-assertion", + }, + "hasSuggestions": true, + "messages": { + "confusingAssign": "Confusing combination of non-null assertion and assignment like \`a! = b\`, which looks very similar to \`a != b\`.", + "confusingEqual": "Confusing combination of non-null assertion and equality test like \`a! == b\`, which looks very similar to \`a !== b\`.", + "confusingOperator": "Confusing combination of non-null assertion and \`{{operator}}\` operator like \`a! {{operator}} b\`, which might be misinterpreted as \`!(a {{operator}} b)\`.", + "notNeedInAssign": "Remove unnecessary non-null assertion (!) in assignment left-hand side.", + "notNeedInEqualTest": "Remove unnecessary non-null assertion (!) in equality test.", + "notNeedInOperator": "Remove possibly unnecessary non-null assertion (!) in the left operand of the \`{{operator}}\` operator.", + "wrapUpLeft": "Wrap the left-hand side in parentheses to avoid confusion with "{{operator}}" operator.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-confusing-void-expression": { + "create": [Function], + "defaultOptions": [ + { + "ignoreArrowShorthand": false, + "ignoreVoidOperator": false, + "ignoreVoidReturningFunctions": false, + }, + ], + "meta": { + "docs": { + "description": "Require expressions of type void to appear in statement position", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-confusing-void-expression", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "invalidVoidExpr": "Placing a void expression inside another expression is forbidden. Move it to its own statement instead.", + "invalidVoidExprArrow": "Returning a void expression from an arrow function shorthand is forbidden. Please add braces to the arrow function.", + "invalidVoidExprArrowWrapVoid": "Void expressions returned from an arrow function shorthand must be marked explicitly with the \`void\` operator.", + "invalidVoidExprReturn": "Returning a void expression from a function is forbidden. Please move it before the \`return\` statement.", + "invalidVoidExprReturnLast": "Returning a void expression from a function is forbidden. Please remove the \`return\` statement.", + "invalidVoidExprReturnWrapVoid": "Void expressions returned from a function must be marked explicitly with the \`void\` operator.", + "invalidVoidExprWrapVoid": "Void expressions used inside another expression must be moved to its own statement or marked explicitly with the \`void\` operator.", + "voidExprWrapVoid": "Mark with an explicit \`void\` operator.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreArrowShorthand": { + "description": "Whether to ignore "shorthand" \`() =>\` arrow functions: those without \`{ ... }\` braces.", + "type": "boolean", + }, + "ignoreVoidOperator": { + "description": "Whether to ignore returns that start with the \`void\` operator.", + "type": "boolean", + }, + "ignoreVoidReturningFunctions": { + "description": "Whether to ignore returns from functions with explicit \`void\` return types and functions with contextual \`void\` return types.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-deprecated": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + }, + ], + "meta": { + "docs": { + "description": "Disallow using code marked as \`@deprecated\`", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-deprecated", + }, + "messages": { + "deprecated": "\`{{name}}\` is deprecated.", + "deprecatedWithReason": "\`{{name}}\` is deprecated. {{reason}}", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Type specifiers that can be allowed.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-dupe-class-members": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow duplicate class members", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-dupe-class-members", + }, + "hasSuggestions": undefined, + "messages": { + "unexpected": "Duplicate name '{{name}}'.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-duplicate-enum-values": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow duplicate enum member values", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-duplicate-enum-values", + }, + "hasSuggestions": false, + "messages": { + "duplicateValue": "Duplicate enum member value {{value}}.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-duplicate-type-constituents": { + "create": [Function], + "defaultOptions": [ + { + "ignoreIntersections": false, + "ignoreUnions": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow duplicate constituents of union or intersection types", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-duplicate-type-constituents", + }, + "fixable": "code", + "messages": { + "duplicate": "{{type}} type constituent is duplicated with {{previous}}.", + "unnecessary": "Explicit undefined is unnecessary on an optional parameter.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreIntersections": { + "description": "Whether to ignore \`&\` intersections.", + "type": "boolean", + }, + "ignoreUnions": { + "description": "Whether to ignore \`|\` unions.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-dynamic-delete": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow using the \`delete\` operator on computed key expressions", + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/no-dynamic-delete", + }, + "fixable": "code", + "messages": { + "dynamicDelete": "Do not delete dynamically computed property keys.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-empty-function": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + }, + ], + "meta": { + "defaultOptions": [ + { + "allow": [], + }, + ], + "docs": { + "description": "Disallow empty functions", + "extendsBaseRule": true, + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/no-empty-function", + }, + "hasSuggestions": undefined, + "messages": { + "unexpected": "Unexpected empty {{name}}.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Locations and kinds of functions that are allowed to be empty.", + "items": { + "enum": [ + "functions", + "arrowFunctions", + "generatorFunctions", + "methods", + "generatorMethods", + "getters", + "setters", + "constructors", + "private-constructors", + "protected-constructors", + "asyncFunctions", + "asyncMethods", + "decoratedFunctions", + "overrideMethods", + ], + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-empty-interface": { + "create": [Function], + "defaultOptions": [ + { + "allowSingleExtends": false, + }, + ], + "meta": { + "deprecated": { + "deprecatedSince": "8.0.0", + "replacedBy": [ + { + "rule": { + "name": "@typescript-eslint/no-empty-object-type", + "url": "https://typescript-eslint.io/rules/no-empty-object-type", + }, + }, + ], + "url": "https://github.com/typescript-eslint/typescript-eslint/pull/8977", + }, + "docs": { + "description": "Disallow the declaration of empty interfaces", + "url": "https://typescript-eslint.io/rules/no-empty-interface", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "noEmpty": "An empty interface is equivalent to \`{}\`.", + "noEmptyWithSuper": "An interface declaring no members is equivalent to its supertype.", + }, + "replacedBy": [ + "@typescript-eslint/no-empty-object-type", + ], + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowSingleExtends": { + "description": "Whether to allow empty interfaces that extend a single other interface.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-empty-object-type": { + "create": [Function], + "defaultOptions": [ + { + "allowInterfaces": "never", + "allowObjectTypes": "never", + }, + ], + "meta": { + "docs": { + "description": "Disallow accidentally using the "empty object" type", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-empty-object-type", + }, + "hasSuggestions": true, + "messages": { + "noEmptyInterface": "An empty interface declaration allows any non-nullish value, including literals like \`0\` and \`""\`. +- If that's what you want, disable this lint rule with an inline comment or configure the '{{ option }}' rule option. +- If you want a type meaning "any object", you probably want \`object\` instead. +- If you want a type meaning "any value", you probably want \`unknown\` instead.", + "noEmptyInterfaceWithSuper": "An interface declaring no members is equivalent to its supertype.", + "noEmptyObject": "The \`{}\` ("empty object") type allows any non-nullish value, including literals like \`0\` and \`""\`. +- If that's what you want, disable this lint rule with an inline comment or configure the '{{ option }}' rule option. +- If you want a type meaning "any object", you probably want \`object\` instead. +- If you want a type meaning "any value", you probably want \`unknown\` instead.", + "replaceEmptyInterface": "Replace empty interface with \`{{replacement}}\`.", + "replaceEmptyInterfaceWithSuper": "Replace empty interface with a type alias.", + "replaceEmptyObjectType": "Replace \`{}\` with \`{{replacement}}\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowInterfaces": { + "description": "Whether to allow empty interfaces.", + "enum": [ + "always", + "never", + "with-single-extends", + ], + "type": "string", + }, + "allowObjectTypes": { + "description": "Whether to allow empty object type literals.", + "enum": [ + "always", + "never", + ], + "type": "string", + }, + "allowWithName": { + "description": "A stringified regular expression to allow interfaces and object type aliases with the configured name.", + "type": "string", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-explicit-any": { + "create": [Function], + "defaultOptions": [ + { + "fixToUnknown": false, + "ignoreRestArgs": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow the \`any\` type", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-explicit-any", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "suggestNever": "Use \`never\` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.", + "suggestUnknown": "Use \`unknown\` instead, this will force you to explicitly, and safely assert the type is correct.", + "unexpectedAny": "Unexpected any. Specify a different type.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "fixToUnknown": { + "description": "Whether to enable auto-fixing in which the \`any\` type is converted to the \`unknown\` type.", + "type": "boolean", + }, + "ignoreRestArgs": { + "description": "Whether to ignore rest parameter arrays.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-extra-non-null-assertion": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow extra non-null assertions", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-extra-non-null-assertion", + }, + "fixable": "code", + "messages": { + "noExtraNonNullAssertion": "Forbidden extra non-null assertion.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-extraneous-class": { + "create": [Function], + "defaultOptions": [ + { + "allowConstructorOnly": false, + "allowEmpty": false, + "allowStaticOnly": false, + "allowWithDecorator": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow classes used as namespaces", + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/no-extraneous-class", + }, + "messages": { + "empty": "Unexpected empty class.", + "onlyConstructor": "Unexpected class with only a constructor.", + "onlyStatic": "Unexpected class with only static properties.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowConstructorOnly": { + "description": "Whether to allow extraneous classes that contain only a constructor.", + "type": "boolean", + }, + "allowEmpty": { + "description": "Whether to allow extraneous classes that have no body (i.e. are empty).", + "type": "boolean", + }, + "allowStaticOnly": { + "description": "Whether to allow extraneous classes that only contain static members.", + "type": "boolean", + }, + "allowWithDecorator": { + "description": "Whether to allow extraneous classes that include a decorator.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-floating-promises": { + "create": [Function], + "defaultOptions": [ + { + "allowForKnownSafeCalls": [], + "allowForKnownSafePromises": [], + "checkThenables": false, + "ignoreIIFE": false, + "ignoreVoid": true, + }, + ], + "meta": { + "docs": { + "description": "Require Promise-like statements to be handled appropriately", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-floating-promises", + }, + "hasSuggestions": true, + "messages": { + "floating": "Promises must be awaited, end with a call to .catch, or end with a call to .then with a rejection handler.", + "floatingFixAwait": "Add await operator.", + "floatingFixVoid": "Add void operator to ignore.", + "floatingPromiseArray": "An array of Promises may be unintentional. Consider handling the promises' fulfillment or rejection with Promise.all or similar.", + "floatingPromiseArrayVoid": "An array of Promises may be unintentional. Consider handling the promises' fulfillment or rejection with Promise.all or similar, or explicitly marking the expression as ignored with the \`void\` operator.", + "floatingUselessRejectionHandler": "Promises must be awaited, end with a call to .catch, or end with a call to .then with a rejection handler. A rejection handler that is not a function will be ignored.", + "floatingUselessRejectionHandlerVoid": "Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler or be explicitly marked as ignored with the \`void\` operator. A rejection handler that is not a function will be ignored.", + "floatingVoid": "Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler or be explicitly marked as ignored with the \`void\` operator.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowForKnownSafeCalls": { + "description": "Type specifiers of functions whose calls are safe to float.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "allowForKnownSafePromises": { + "description": "Type specifiers that are known to be safe to float.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "checkThenables": { + "description": "Whether to check all "Thenable"s, not just the built-in Promise type.", + "type": "boolean", + }, + "ignoreIIFE": { + "description": "Whether to ignore async IIFEs (Immediately Invoked Function Expressions).", + "type": "boolean", + }, + "ignoreVoid": { + "description": "Whether to ignore \`void\` expressions.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-for-in-array": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow iterating over an array with a for-in loop", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-for-in-array", + }, + "messages": { + "forInViolation": "For-in loops over arrays skips holes, returns indices as strings, and may visit the prototype chain or other enumerable properties. Use a more robust iteration method such as for-of or array.forEach instead.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-implied-eval": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow the use of \`eval()\`-like functions", + "extendsBaseRule": true, + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-implied-eval", + }, + "messages": { + "noFunctionConstructor": "Implied eval. Do not use the Function constructor to create functions.", + "noImpliedEvalError": "Implied eval. Consider passing a function.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-import-type-side-effects": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers", + "url": "https://typescript-eslint.io/rules/no-import-type-side-effects", + }, + "fixable": "code", + "messages": { + "useTopLevelQualifier": "TypeScript will only remove the inline type specifiers which will leave behind a side effect import at runtime. Convert this to a top-level type qualifier to properly remove the entire import.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-inferrable-types": { + "create": [Function], + "defaultOptions": [ + { + "ignoreParameters": false, + "ignoreProperties": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/no-inferrable-types", + }, + "fixable": "code", + "messages": { + "noInferrableType": "Type {{type}} trivially inferred from a {{type}} literal, remove type annotation.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreParameters": { + "description": "Whether to ignore function parameters.", + "type": "boolean", + }, + "ignoreProperties": { + "description": "Whether to ignore class properties.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-invalid-this": { + "create": [Function], + "defaultOptions": [ + { + "capIsConstructor": true, + }, + ], + "meta": { + "defaultOptions": [ + { + "capIsConstructor": true, + }, + ], + "docs": { + "description": "Disallow \`this\` keywords outside of classes or class-like objects", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-invalid-this", + }, + "hasSuggestions": undefined, + "messages": { + "unexpectedThis": "Unexpected 'this'.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "capIsConstructor": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-invalid-void-type": { + "create": [Function], + "defaultOptions": [ + { + "allowAsThisParameter": false, + "allowInGenericTypeArguments": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow \`void\` type outside of generic or return types", + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/no-invalid-void-type", + }, + "messages": { + "invalidVoidForGeneric": "{{ generic }} may not have void as a type argument.", + "invalidVoidNotReturn": "void is only valid as a return type.", + "invalidVoidNotReturnOrGeneric": "void is only valid as a return type or generic type argument.", + "invalidVoidNotReturnOrThisParam": "void is only valid as return type or type of \`this\` parameter.", + "invalidVoidNotReturnOrThisParamOrGeneric": "void is only valid as a return type or generic type argument or the type of a \`this\` parameter.", + "invalidVoidUnionConstituent": "void is not valid as a constituent in a union type", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowAsThisParameter": { + "description": "Whether a \`this\` parameter of a function may be \`void\`.", + "type": "boolean", + }, + "allowInGenericTypeArguments": { + "description": "Whether \`void\` can be used as a valid value for generic type parameters.", + "oneOf": [ + { + "description": "Whether \`void\` can be used as a valid value for all generic type parameters.", + "type": "boolean", + }, + { + "description": "Allowlist of types that may accept \`void\` as a generic type parameter.", + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + }, + ], + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-loop-func": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow function declarations that contain unsafe references inside loop statements", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-loop-func", + }, + "hasSuggestions": undefined, + "messages": { + "unsafeRefs": "Function declared in a loop contains unsafe references to variable(s) {{ varNames }}.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-loss-of-precision": { + "create": [Function], + "defaultOptions": [], + "meta": { + "deprecated": { + "deprecatedSince": "8.0.0", + "replacedBy": [ + { + "rule": { + "name": "no-loss-of-precision", + "url": "https://eslint.org/docs/latest/rules/no-loss-of-precision", + }, + }, + ], + "url": "https://github.com/typescript-eslint/typescript-eslint/pull/8832", + }, + "docs": { + "description": "Disallow literal numbers that lose precision", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-loss-of-precision", + }, + "hasSuggestions": undefined, + "messages": { + "noLossOfPrecision": "This number literal will lose precision at runtime.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-magic-numbers": { + "create": [Function], + "defaultOptions": [ + { + "detectObjects": false, + "enforceConst": false, + "ignore": [], + "ignoreArrayIndexes": false, + "ignoreEnums": false, + "ignoreNumericLiteralTypes": false, + "ignoreReadonlyClassProperties": false, + "ignoreTypeIndexes": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow magic numbers", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-magic-numbers", + }, + "messages": { + "noMagic": "No magic number: {{raw}}.", + "useConst": "Number constants declarations must use 'const'.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "detectObjects": { + "default": false, + "type": "boolean", + }, + "enforceConst": { + "default": false, + "type": "boolean", + }, + "ignore": { + "items": { + "anyOf": [ + { + "type": "number", + }, + { + "pattern": "^[+-]?(?:0|[1-9][0-9]*)n$", + "type": "string", + }, + ], + }, + "type": "array", + "uniqueItems": true, + }, + "ignoreArrayIndexes": { + "default": false, + "type": "boolean", + }, + "ignoreClassFieldInitialValues": { + "default": false, + "type": "boolean", + }, + "ignoreDefaultValues": { + "default": false, + "type": "boolean", + }, + "ignoreEnums": { + "description": "Whether enums used in TypeScript are considered okay.", + "type": "boolean", + }, + "ignoreNumericLiteralTypes": { + "description": "Whether numbers used in TypeScript numeric literal types are considered okay.", + "type": "boolean", + }, + "ignoreReadonlyClassProperties": { + "description": "Whether \`readonly\` class properties are considered okay.", + "type": "boolean", + }, + "ignoreTypeIndexes": { + "description": "Whether numbers used to index types are okay.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-meaningless-void-operator": { + "create": [Function], + "defaultOptions": [ + { + "checkNever": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow the \`void\` operator except when used to discard a value", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-meaningless-void-operator", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "meaninglessVoidOperator": "void operator shouldn't be used on {{type}}; it should convey that a return value is being ignored", + "removeVoid": "Remove 'void'", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "checkNever": { + "default": false, + "description": "Whether to suggest removing \`void\` when the argument has type \`never\`.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-misused-new": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce valid definition of \`new\` and \`constructor\`", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-misused-new", + }, + "messages": { + "errorMessageClass": "Class cannot have method named \`new\`.", + "errorMessageInterface": "Interfaces cannot be constructed, only classes.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-misused-promises": { + "create": [Function], + "defaultOptions": [ + { + "checksConditionals": true, + "checksSpreads": true, + "checksVoidReturn": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow Promises in places not designed to handle them", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-misused-promises", + }, + "messages": { + "conditional": "Expected non-Promise value in a boolean conditional.", + "predicate": "Expected a non-Promise value to be returned.", + "spread": "Expected a non-Promise value to be spreaded in an object.", + "voidReturnArgument": "Promise returned in function argument where a void return was expected.", + "voidReturnAttribute": "Promise-returning function provided to attribute where a void return was expected.", + "voidReturnInheritedMethod": "Promise-returning method provided where a void return was expected by extended/implemented type '{{ heritageTypeName }}'.", + "voidReturnProperty": "Promise-returning function provided to property where a void return was expected.", + "voidReturnReturnValue": "Promise-returning function provided to return value where a void return was expected.", + "voidReturnVariable": "Promise-returning function provided to variable where a void return was expected.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "checksConditionals": { + "description": "Whether to warn when a Promise is provided to conditional statements.", + "type": "boolean", + }, + "checksSpreads": { + "description": "Whether to warn when \`...\` spreading a \`Promise\`.", + "type": "boolean", + }, + "checksVoidReturn": { + "description": "Whether to warn when a Promise is returned from a function typed as returning \`void\`.", + "oneOf": [ + { + "description": "Whether to disable checking all asynchronous functions.", + "type": "boolean", + }, + { + "additionalProperties": false, + "description": "Which forms of functions may have checking disabled.", + "properties": { + "arguments": { + "description": "Disables checking an asynchronous function passed as argument where the parameter type expects a function that returns \`void\`.", + "type": "boolean", + }, + "attributes": { + "description": "Disables checking an asynchronous function passed as a JSX attribute expected to be a function that returns \`void\`.", + "type": "boolean", + }, + "inheritedMethods": { + "description": "Disables checking an asynchronous method in a type that extends or implements another type expecting that method to return \`void\`.", + "type": "boolean", + }, + "properties": { + "description": "Disables checking an asynchronous function passed as an object property expected to be a function that returns \`void\`.", + "type": "boolean", + }, + "returns": { + "description": "Disables checking an asynchronous function returned in a function whose return type is a function that returns \`void\`.", + "type": "boolean", + }, + "variables": { + "description": "Disables checking an asynchronous function used as a variable whose return type is a function that returns \`void\`.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-misused-spread": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + }, + ], + "meta": { + "docs": { + "description": "Disallow using the spread operator when it might cause unexpected behavior", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-misused-spread", + }, + "hasSuggestions": true, + "messages": { + "addAwait": "Add await operator.", + "noArraySpreadInObject": "Using the spread operator on an array in an object will result in a list of indices.", + "noClassDeclarationSpreadInObject": "Using the spread operator on class declarations will spread only their static properties, and will lose their class prototype.", + "noClassInstanceSpreadInObject": "Using the spread operator on class instances will lose their class prototype.", + "noFunctionSpreadInObject": "Using the spread operator on a function without additional properties can cause unexpected behavior. Did you forget to call the function?", + "noIterableSpreadInObject": "Using the spread operator on an Iterable in an object can cause unexpected behavior.", + "noMapSpreadInObject": "Using the spread operator on a Map in an object will result in an empty object. Did you mean to use \`Object.fromEntries(map)\` instead?", + "noPromiseSpreadInObject": "Using the spread operator on Promise in an object can cause unexpected behavior. Did you forget to await the promise?", + "noStringSpread": "Using the spread operator on a string can mishandle special characters, as can \`.split("")\`. +- \`...\` produces Unicode code points, which will decompose complex emojis into individual emojis +- .split("") produces UTF-16 code units, which breaks rich characters in many languages +Consider using \`Intl.Segmenter\` for locale-aware string decomposition. +Otherwise, if you don't need to preserve emojis or other non-Ascii characters, disable this lint rule on this line or configure the 'allow' rule option.", + "replaceMapSpreadInObject": "Replace map spread in object with \`Object.fromEntries()\`", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "An array of type specifiers that are known to be safe to spread.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-mixed-enums": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow enums from having both number and string members", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-mixed-enums", + }, + "messages": { + "mixed": "Mixing number and string enums can be confusing.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-namespace": { + "create": [Function], + "defaultOptions": [ + { + "allowDeclarations": false, + "allowDefinitionFiles": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow TypeScript namespaces", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-namespace", + }, + "messages": { + "moduleSyntaxIsPreferred": "ES2015 module syntax is preferred over namespaces.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowDeclarations": { + "description": "Whether to allow \`declare\` with custom TypeScript namespaces.", + "type": "boolean", + }, + "allowDefinitionFiles": { + "description": "Whether to allow \`declare\` with custom TypeScript namespaces inside definition files.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-non-null-asserted-nullish-coalescing": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow non-null assertions in the left operand of a nullish coalescing operator", + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing", + }, + "hasSuggestions": true, + "messages": { + "noNonNullAssertedNullishCoalescing": "The nullish coalescing operator is designed to handle undefined and null - using a non-null assertion is not needed.", + "suggestRemovingNonNull": "Remove the non-null assertion.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-non-null-asserted-optional-chain": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow non-null assertions after an optional chain expression", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain", + }, + "hasSuggestions": true, + "messages": { + "noNonNullOptionalChain": "Optional chain expressions can return undefined by design - using a non-null assertion is unsafe and wrong.", + "suggestRemovingNonNull": "You should remove the non-null assertion.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-non-null-assertion": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow non-null assertions using the \`!\` postfix operator", + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/no-non-null-assertion", + }, + "hasSuggestions": true, + "messages": { + "noNonNull": "Forbidden non-null assertion.", + "suggestOptionalChain": "Consider using the optional chain operator \`?.\` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-redeclare": { + "create": [Function], + "defaultOptions": [ + { + "builtinGlobals": true, + "ignoreDeclarationMerge": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow variable redeclaration", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-redeclare", + }, + "messages": { + "redeclared": "'{{id}}' is already defined.", + "redeclaredAsBuiltin": "'{{id}}' is already defined as a built-in global variable.", + "redeclaredBySyntax": "'{{id}}' is already defined by a variable declaration.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "builtinGlobals": { + "description": "Whether to report shadowing of built-in global variables.", + "type": "boolean", + }, + "ignoreDeclarationMerge": { + "description": "Whether to ignore declaration merges between certain TypeScript declaration types.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-redundant-type-constituents": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow members of unions and intersections that do nothing or override type information", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-redundant-type-constituents", + }, + "messages": { + "errorTypeOverrides": "'{{typeName}}' is an 'error' type that acts as 'any' and overrides all other types in this {{container}} type.", + "literalOverridden": "{{literal}} is overridden by {{primitive}} in this union type.", + "overridden": "'{{typeName}}' is overridden by other types in this {{container}} type.", + "overrides": "'{{typeName}}' overrides all other types in this {{container}} type.", + "primitiveOverridden": "{{primitive}} is overridden by the {{literal}} in this intersection type.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-require-imports": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + "allowAsImport": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow invocation of \`require()\`", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-require-imports", + }, + "messages": { + "noRequireImports": "A \`require()\` style import is forbidden.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Patterns of import paths to allow requiring from.", + "items": { + "type": "string", + }, + "type": "array", + }, + "allowAsImport": { + "description": "Allows \`require\` statements in import declarations.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-restricted-imports": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow specified modules when loaded by \`import\`", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-restricted-imports", + }, + "fixable": undefined, + "messages": { + "allowedImportName": "'{{importName}}' import from '{{importSource}}' is restricted because only '{{allowedImportNames}}' import(s) is/are allowed.", + "allowedImportNamePattern": "'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'.", + "allowedImportNamePatternWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'. {{customMessage}}", + "allowedImportNameWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted because only '{{allowedImportNames}}' import(s) is/are allowed. {{customMessage}}", + "everything": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted.", + "everythingWithAllowImportNames": "* import is invalid because only '{{allowedImportNames}}' from '{{importSource}}' is/are allowed.", + "everythingWithAllowImportNamesAndCustomMessage": "* import is invalid because only '{{allowedImportNames}}' from '{{importSource}}' is/are allowed. {{customMessage}}", + "everythingWithAllowedImportNamePattern": "* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed.", + "everythingWithAllowedImportNamePatternWithCustomMessage": "* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed. {{customMessage}}", + "everythingWithCustomMessage": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted. {{customMessage}}", + "importName": "'{{importName}}' import from '{{importSource}}' is restricted.", + "importNameWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted. {{customMessage}}", + "path": "'{{importSource}}' import is restricted from being used.", + "pathWithCustomMessage": "'{{importSource}}' import is restricted from being used. {{customMessage}}", + "patternAndEverything": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern.", + "patternAndEverythingWithCustomMessage": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}", + "patternAndEverythingWithRegexImportName": "* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used.", + "patternAndEverythingWithRegexImportNameAndCustomMessage": "* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used. {{customMessage}}", + "patternAndImportName": "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern.", + "patternAndImportNameWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}", + "patternWithCustomMessage": "'{{importSource}}' import is restricted from being used by a pattern. {{customMessage}}", + "patterns": "'{{importSource}}' import is restricted from being used by a pattern.", + }, + "schema": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "allowImportNames": { + "items": { + "type": "string", + }, + "type": "array", + }, + "allowTypeImports": { + "description": "Whether to allow type-only imports for a path.", + "type": "boolean", + }, + "importNames": { + "items": { + "type": "string", + }, + "type": "array", + }, + "message": { + "minLength": 1, + "type": "string", + }, + "name": { + "type": "string", + }, + }, + "required": [ + "name", + ], + "type": "object", + }, + ], + }, + "type": "array", + "uniqueItems": true, + }, + { + "additionalItems": false, + "items": [ + { + "additionalProperties": false, + "properties": { + "paths": { + "items": { + "anyOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "allowImportNames": { + "items": { + "type": "string", + }, + "type": "array", + }, + "allowTypeImports": { + "description": "Whether to allow type-only imports for a path.", + "type": "boolean", + }, + "importNames": { + "items": { + "type": "string", + }, + "type": "array", + }, + "message": { + "minLength": 1, + "type": "string", + }, + "name": { + "type": "string", + }, + }, + "required": [ + "name", + ], + "type": "object", + }, + ], + }, + "type": "array", + "uniqueItems": true, + }, + "patterns": { + "anyOf": [ + { + "items": { + "type": "string", + }, + "type": "array", + "uniqueItems": true, + }, + { + "items": { + "additionalProperties": false, + "properties": { + "allowImportNamePattern": { + "type": "string", + }, + "allowImportNames": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "allowTypeImports": { + "description": "Whether to allow type-only imports for a path.", + "type": "boolean", + }, + "caseSensitive": { + "type": "boolean", + }, + "group": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "importNamePattern": { + "type": "string", + }, + "importNames": { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + "message": { + "minLength": 1, + "type": "string", + }, + "regex": { + "type": "string", + }, + }, + "required": undefined, + "type": "object", + }, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + ], + }, + "type": "suggestion", + }, + }, + "no-restricted-types": { + "create": [Function], + "defaultOptions": [ + {}, + ], + "meta": { + "docs": { + "description": "Disallow certain types", + "url": "https://typescript-eslint.io/rules/no-restricted-types", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "bannedTypeMessage": "Don't use \`{{name}}\` as a type.{{customMessage}}", + "bannedTypeReplacement": "Replace \`{{name}}\` with \`{{replacement}}\`.", + }, + "schema": [ + { + "$defs": { + "banConfig": { + "oneOf": [ + { + "description": "Bans the type with the default message.", + "enum": [ + true, + ], + "type": "boolean", + }, + { + "description": "Bans the type with a custom message.", + "type": "string", + }, + { + "additionalProperties": false, + "description": "Bans a type.", + "properties": { + "fixWith": { + "description": "Type to autofix replace with. Note that autofixers can be applied automatically - so you need to be careful with this option.", + "type": "string", + }, + "message": { + "description": "Custom error message.", + "type": "string", + }, + "suggest": { + "description": "Types to suggest replacing with.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + }, + "additionalProperties": false, + "properties": { + "types": { + "additionalProperties": { + "$ref": "#/items/0/$defs/banConfig", + }, + "description": "An object whose keys are the types you want to ban, and the values are error messages.", + "type": "object", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-shadow": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + "builtinGlobals": false, + "hoist": "functions-and-types", + "ignoreFunctionTypeParameterNameValueShadow": true, + "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow variable declarations from shadowing variables declared in the outer scope", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-shadow", + }, + "messages": { + "noShadow": "'{{name}}' is already declared in the upper scope on line {{shadowedLine}} column {{shadowedColumn}}.", + "noShadowGlobal": "'{{name}}' is already a global variable.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Identifier names for which shadowing is allowed.", + "items": { + "type": "string", + }, + "type": "array", + }, + "builtinGlobals": { + "description": "Whether to report shadowing of built-in global variables.", + "type": "boolean", + }, + "hoist": { + "description": "Whether to report shadowing before outer functions or variables are defined.", + "enum": [ + "all", + "functions", + "functions-and-types", + "never", + "types", + ], + "type": "string", + }, + "ignoreFunctionTypeParameterNameValueShadow": { + "description": "Whether to ignore function parameters named the same as a variable.", + "type": "boolean", + }, + "ignoreOnInitialization": { + "description": "Whether to ignore the variable initializers when the shadowed variable is presumably still unitialized.", + "type": "boolean", + }, + "ignoreTypeValueShadow": { + "description": "Whether to ignore types named the same as a variable.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-this-alias": { + "create": [Function], + "defaultOptions": [ + { + "allowDestructuring": true, + "allowedNames": [], + }, + ], + "meta": { + "docs": { + "description": "Disallow aliasing \`this\`", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-this-alias", + }, + "messages": { + "thisAssignment": "Unexpected aliasing of 'this' to local variable.", + "thisDestructure": "Unexpected aliasing of members of 'this' to local variables.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowDestructuring": { + "description": "Whether to ignore destructurings, such as \`const { props, state } = this\`.", + "type": "boolean", + }, + "allowedNames": { + "description": "Names to ignore, such as ["self"] for \`const self = this;\`.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-type-alias": { + "create": [Function], + "defaultOptions": [ + { + "allowAliases": "never", + "allowCallbacks": "never", + "allowConditionalTypes": "never", + "allowConstructors": "never", + "allowGenerics": "never", + "allowLiterals": "never", + "allowMappedTypes": "never", + "allowTupleTypes": "never", + }, + ], + "meta": { + "deprecated": { + "deprecatedSince": "6.0.0", + "replacedBy": [ + { + "rule": { + "name": "@typescript-eslint/consistent-type-definitions", + "url": "https://typescript-eslint.io/rules/consistent-type-definitions", + }, + }, + ], + "url": "https://github.com/typescript-eslint/typescript-eslint/pull/6229", + }, + "docs": { + "description": "Disallow type aliases", + "url": "https://typescript-eslint.io/rules/no-type-alias", + }, + "messages": { + "noCompositionAlias": "{{typeName}} in {{compositionType}} types are not allowed.", + "noTypeAlias": "Type {{alias}} are not allowed.", + }, + "schema": [ + { + "$defs": { + "expandedOptions": { + "enum": [ + "always", + "never", + "in-unions", + "in-intersections", + "in-unions-and-intersections", + ], + "type": "string", + }, + "simpleOptions": { + "enum": [ + "always", + "never", + ], + "type": "string", + }, + }, + "additionalProperties": false, + "properties": { + "allowAliases": { + "$ref": "#/items/0/$defs/expandedOptions", + "description": "Whether to allow direct one-to-one type aliases.", + }, + "allowCallbacks": { + "$ref": "#/items/0/$defs/simpleOptions", + "description": "Whether to allow type aliases for callbacks.", + }, + "allowConditionalTypes": { + "$ref": "#/items/0/$defs/simpleOptions", + "description": "Whether to allow type aliases for conditional types.", + }, + "allowConstructors": { + "$ref": "#/items/0/$defs/simpleOptions", + "description": "Whether to allow type aliases with constructors.", + }, + "allowGenerics": { + "$ref": "#/items/0/$defs/simpleOptions", + "description": "Whether to allow type aliases with generic types.", + }, + "allowLiterals": { + "$ref": "#/items/0/$defs/expandedOptions", + "description": "Whether to allow type aliases with object literal types.", + }, + "allowMappedTypes": { + "$ref": "#/items/0/$defs/expandedOptions", + "description": "Whether to allow type aliases with mapped types.", + }, + "allowTupleTypes": { + "$ref": "#/items/0/$defs/expandedOptions", + "description": "Whether to allow type aliases with tuple types.", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-unnecessary-boolean-literal-compare": { + "create": [Function], + "defaultOptions": [ + { + "allowComparingNullableBooleansToFalse": true, + "allowComparingNullableBooleansToTrue": true, + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow unnecessary equality comparisons against boolean literals", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare", + }, + "fixable": "code", + "messages": { + "comparingNullableToFalse": "This expression unnecessarily compares a nullable boolean value to false instead of using the ?? operator to provide a default.", + "comparingNullableToTrueDirect": "This expression unnecessarily compares a nullable boolean value to true instead of using it directly.", + "comparingNullableToTrueNegated": "This expression unnecessarily compares a nullable boolean value to true instead of negating it.", + "direct": "This expression unnecessarily compares a boolean value to a boolean instead of using it directly.", + "negated": "This expression unnecessarily compares a boolean value to a boolean instead of negating it.", + "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowComparingNullableBooleansToFalse": { + "description": "Whether to allow comparisons between nullable boolean variables and \`false\`.", + "type": "boolean", + }, + "allowComparingNullableBooleansToTrue": { + "description": "Whether to allow comparisons between nullable boolean variables and \`true\`.", + "type": "boolean", + }, + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { + "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-unnecessary-condition": { + "create": [Function], + "defaultOptions": [ + { + "allowConstantLoopConditions": "never", + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, + "checkTypePredicates": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow conditionals where the type is always truthy or always falsy", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-condition", + }, + "fixable": "code", + "messages": { + "alwaysFalsy": "Unnecessary conditional, value is always falsy.", + "alwaysFalsyFunc": "This callback should return a conditional, but return is always falsy.", + "alwaysNullish": "Unnecessary conditional, left-hand side of \`??\` operator is always \`null\` or \`undefined\`.", + "alwaysTruthy": "Unnecessary conditional, value is always truthy.", + "alwaysTruthyFunc": "This callback should return a conditional, but return is always truthy.", + "comparisonBetweenLiteralTypes": "Unnecessary conditional, comparison is always {{trueOrFalse}}, since \`{{left}} {{operator}} {{right}}\` is {{trueOrFalse}}.", + "never": "Unnecessary conditional, value is \`never\`.", + "neverNullish": "Unnecessary conditional, expected left-hand side of \`??\` operator to be possibly null or undefined.", + "neverOptionalChain": "Unnecessary optional chain on a non-nullish value.", + "noOverlapBooleanExpression": "Unnecessary conditional, the types have no overlap.", + "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", + "typeGuardAlreadyIsType": "Unnecessary conditional, expression already has the type being checked by the {{typeGuardOrAssertionFunction}}.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowConstantLoopConditions": { + "description": "Whether to ignore constant loop conditions, such as \`while (true)\`.", + "oneOf": [ + { + "type": "boolean", + }, + { + "enum": [ + "always", + "never", + "only-allowed-literals", + ], + "type": "string", + }, + ], + }, + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { + "description": "Whether to not error when running with a tsconfig that has strictNullChecks turned.", + "type": "boolean", + }, + "checkTypePredicates": { + "description": "Whether to check the asserted argument of a type predicate function for unnecessary conditions", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-unnecessary-parameter-property-assignment": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow unnecessary assignment of constructor property parameter", + "url": "https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment", + }, + "messages": { + "unnecessaryAssign": "This assignment is unnecessary since it is already assigned by a parameter property.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-unnecessary-qualifier": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow unnecessary namespace qualifiers", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-qualifier", + }, + "fixable": "code", + "messages": { + "unnecessaryQualifier": "Qualifier is unnecessary since '{{ name }}' is in scope.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-unnecessary-template-expression": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow unnecessary template expressions", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-template-expression", + }, + "fixable": "code", + "messages": { + "noUnnecessaryTemplateExpression": "Template literal expression is unnecessary and can be simplified.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-unnecessary-type-arguments": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow type arguments that are equal to the default", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-type-arguments", + }, + "fixable": "code", + "messages": { + "unnecessaryTypeParameter": "This is the default value for this type parameter, so it can be omitted.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-unnecessary-type-assertion": { + "create": [Function], + "defaultOptions": [ + {}, + ], + "meta": { + "docs": { + "description": "Disallow type assertions that do not change the type of an expression", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-type-assertion", + }, + "fixable": "code", + "messages": { + "contextuallyUnnecessary": "This assertion is unnecessary since the receiver accepts the original type of the expression.", + "unnecessaryAssertion": "This assertion is unnecessary since it does not change the type of the expression.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "typesToIgnore": { + "description": "A list of type names to ignore.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-unnecessary-type-constraint": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow unnecessary constraints on generic types", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-unnecessary-type-constraint", + }, + "hasSuggestions": true, + "messages": { + "removeUnnecessaryConstraint": "Remove the unnecessary \`{{constraint}}\` constraint.", + "unnecessaryConstraint": "Constraining the generic type \`{{name}}\` to \`{{constraint}}\` does nothing and is unnecessary.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-unnecessary-type-parameters": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow type parameters that aren't used multiple times", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unnecessary-type-parameters", + }, + "hasSuggestions": true, + "messages": { + "replaceUsagesWithConstraint": "Replace all usages of type parameter with its constraint.", + "sole": "Type parameter {{name}} is {{uses}} in the {{descriptor}} signature.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-argument": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow calling a function with a value with type \`any\`", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-argument", + }, + "messages": { + "unsafeArgument": "Unsafe argument of type {{sender}} assigned to a parameter of type {{receiver}}.", + "unsafeArraySpread": "Unsafe spread of an {{sender}} array type.", + "unsafeSpread": "Unsafe spread of an {{sender}} type.", + "unsafeTupleSpread": "Unsafe spread of a tuple type. The argument is {{sender}} and is assigned to a parameter of type {{receiver}}.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-assignment": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow assigning a value with type \`any\` to variables and properties", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-assignment", + }, + "messages": { + "anyAssignment": "Unsafe assignment of an {{sender}} value.", + "anyAssignmentThis": "Unsafe assignment of an {{sender}} value. \`this\` is typed as \`any\`. +You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", + "unsafeArrayPattern": "Unsafe array destructuring of an {{sender}} array value.", + "unsafeArrayPatternFromTuple": "Unsafe array destructuring of a tuple element with an {{sender}} value.", + "unsafeArraySpread": "Unsafe spread of an {{sender}} value in an array.", + "unsafeAssignment": "Unsafe assignment of type {{sender}} to a variable of type {{receiver}}.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-call": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow calling a value with type \`any\`", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-call", + }, + "messages": { + "unsafeCall": "Unsafe call of a(n) {{type}} typed value.", + "unsafeCallThis": "Unsafe call of a(n) {{type}} typed value. \`this\` is typed as {{type}}. +You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", + "unsafeNew": "Unsafe construction of a(n) {{type}} typed value.", + "unsafeTemplateTag": "Unsafe use of a(n) {{type}} typed template tag.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-declaration-merging": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow unsafe declaration merging", + "recommended": "recommended", + "requiresTypeChecking": false, + "url": "https://typescript-eslint.io/rules/no-unsafe-declaration-merging", + }, + "messages": { + "unsafeMerging": "Unsafe declaration merging between classes and interfaces.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-enum-comparison": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow comparing an enum value with a non-enum value", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-enum-comparison", + }, + "hasSuggestions": true, + "messages": { + "mismatchedCase": "The case statement does not have a shared enum type with the switch predicate.", + "mismatchedCondition": "The two values in this comparison do not have a shared enum type.", + "replaceValueWithEnum": "Replace with an enum value comparison.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-unsafe-function-type": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow using the unsafe built-in Function type", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-unsafe-function-type", + }, + "fixable": "code", + "messages": { + "bannedFunctionType": "The \`Function\` type accepts any function-like value. +Prefer explicitly defining any function parameters and return type.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-member-access": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow member access on a value with type \`any\`", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-member-access", + }, + "messages": { + "unsafeComputedMemberAccess": "Computed name {{property}} resolves to an {{type}} value.", + "unsafeMemberExpression": "Unsafe member access {{property}} on an {{type}} value.", + "unsafeThisMemberExpression": "Unsafe member access {{property}} on an \`any\` value. \`this\` is typed as \`any\`. +You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-return": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow returning a value with type \`any\` from a function", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-return", + }, + "messages": { + "unsafeReturn": "Unsafe return of a value of type {{type}}.", + "unsafeReturnAssignment": "Unsafe return of type \`{{sender}}\` from function with return type \`{{receiver}}\`.", + "unsafeReturnThis": "Unsafe return of a value of type \`{{type}}\`. \`this\` is typed as \`any\`. +You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-type-assertion": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow type assertions that narrow a type", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-type-assertion", + }, + "messages": { + "unsafeOfAnyTypeAssertion": "Unsafe assertion from {{type}} detected: consider using type guards or a safer assertion.", + "unsafeToAnyTypeAssertion": "Unsafe assertion to {{type}} detected: consider using a more specific type to ensure safety.", + "unsafeToUnconstrainedTypeAssertion": "Unsafe type assertion: '{{type}}' could be instantiated with an arbitrary type which could be unrelated to the original type.", + "unsafeTypeAssertion": "Unsafe type assertion: type '{{type}}' is more narrow than the original type.", + "unsafeTypeAssertionAssignableToConstraint": "Unsafe type assertion: the original type is assignable to the constraint of type '{{type}}', but '{{type}}' could be instantiated with a different subtype of its constraint.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unsafe-unary-minus": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Require unary negation to take a number", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/no-unsafe-unary-minus", + }, + "messages": { + "unaryMinus": "Argument of unary negation should be assignable to number | bigint but is {{type}} instead.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unused-expressions": { + "create": [Function], + "defaultOptions": [ + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + }, + ], + "meta": { + "defaultOptions": [ + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + }, + ], + "docs": { + "description": "Disallow unused expressions", + "extendsBaseRule": true, + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-unused-expressions", + }, + "hasSuggestions": undefined, + "messages": { + "unusedExpression": "Expected an assignment or function call and instead saw an expression.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowShortCircuit": { + "type": "boolean", + }, + "allowTaggedTemplates": { + "type": "boolean", + }, + "allowTernary": { + "type": "boolean", + }, + "enforceForJSX": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "no-unused-vars": { + "create": [Function], + "defaultOptions": [ + {}, + ], + "meta": { + "docs": { + "description": "Disallow unused variables", + "extendsBaseRule": true, + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-unused-vars", + }, + "messages": { + "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", + "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", + "usedOnlyAsType": "'{{varName}}' is {{action}} but only used as a type{{additional}}.", + }, + "schema": [ + { + "oneOf": [ + { + "enum": [ + "all", + "local", + ], + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "args": { + "description": "Whether to check all, some, or no arguments.", + "enum": [ + "all", + "after-used", + "none", + ], + "type": "string", + }, + "argsIgnorePattern": { + "description": "Regular expressions of argument names to not check for usage.", + "type": "string", + }, + "caughtErrors": { + "description": "Whether to check catch block arguments.", + "enum": [ + "all", + "none", + ], + "type": "string", + }, + "caughtErrorsIgnorePattern": { + "description": "Regular expressions of catch block argument names to not check for usage.", + "type": "string", + }, + "destructuredArrayIgnorePattern": { + "description": "Regular expressions of destructured array variable names to not check for usage.", + "type": "string", + }, + "ignoreClassWithStaticInitBlock": { + "description": "Whether to ignore classes with at least one static initialization block.", + "type": "boolean", + }, + "ignoreRestSiblings": { + "description": "Whether to ignore sibling properties in \`...\` destructurings.", + "type": "boolean", + }, + "reportUsedIgnorePattern": { + "description": "Whether to report variables that match any of the valid ignore pattern options if they have been used.", + "type": "boolean", + }, + "vars": { + "description": "Whether to check all variables or only locally-declared variables.", + "enum": [ + "all", + "local", + ], + "type": "string", + }, + "varsIgnorePattern": { + "description": "Regular expressions of variable names to not check for usage.", + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + ], + "type": "problem", + }, + }, + "no-use-before-define": { + "create": [Function], + "defaultOptions": [ + { + "allowNamedExports": false, + "classes": true, + "enums": true, + "functions": true, + "ignoreTypeReferences": true, + "typedefs": true, + "variables": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow the use of variables before they are defined", + "extendsBaseRule": true, + "url": "https://typescript-eslint.io/rules/no-use-before-define", + }, + "messages": { + "noUseBeforeDefine": "'{{name}}' was used before it was defined.", + }, + "schema": [ + { + "oneOf": [ + { + "enum": [ + "nofunc", + ], + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "allowNamedExports": { + "description": "Whether to ignore named exports.", + "type": "boolean", + }, + "classes": { + "description": "Whether to ignore references to class declarations.", + "type": "boolean", + }, + "enums": { + "description": "Whether to check references to enums.", + "type": "boolean", + }, + "functions": { + "description": "Whether to ignore references to function declarations.", + "type": "boolean", + }, + "ignoreTypeReferences": { + "description": "Whether to ignore type references, such as in type annotations and assertions.", + "type": "boolean", + }, + "typedefs": { + "description": "Whether to check references to types.", + "type": "boolean", + }, + "variables": { + "description": "Whether to ignore references to variables.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + ], + "type": "problem", + }, + }, + "no-useless-constructor": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow unnecessary constructors", + "extendsBaseRule": true, + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/no-useless-constructor", + }, + "hasSuggestions": true, + "messages": { + "noUselessConstructor": "Useless constructor.", + "removeConstructor": "Remove the constructor.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-useless-empty-export": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow empty exports that don't change anything in a module file", + "url": "https://typescript-eslint.io/rules/no-useless-empty-export", + }, + "fixable": "code", + "hasSuggestions": false, + "messages": { + "uselessExport": "Empty export does nothing and can be removed.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "no-var-requires": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + }, + ], + "meta": { + "deprecated": { + "deprecatedSince": "8.0.0", + "replacedBy": [ + { + "rule": { + "name": "@typescript-eslint/no-require-imports", + "url": "https://typescript-eslint.io/rules/no-require-imports", + }, + }, + ], + "url": "https://github.com/typescript-eslint/typescript-eslint/pull/8334", + }, + "docs": { + "description": "Disallow \`require\` statements except in import statements", + "url": "https://typescript-eslint.io/rules/no-var-requires", + }, + "messages": { + "noVarReqs": "Require statement not part of import statement.", + }, + "replacedBy": [ + "@typescript-eslint/no-require-imports", + ], + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Patterns of import paths to allow requiring from.", + "items": { + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "no-wrapper-object-types": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow using confusing built-in primitive class wrappers", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/no-wrapper-object-types", + }, + "fixable": "code", + "messages": { + "bannedClassType": "Prefer using the primitive \`{{preferred}}\` as a type name, rather than the upper-cased \`{{typeName}}\`.", + }, + "schema": [], + "type": "problem", + }, + }, + "non-nullable-type-assertion-style": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce non-null assertions over explicit type assertions", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/non-nullable-type-assertion-style", + }, + "fixable": "code", + "messages": { + "preferNonNullAssertion": "Use a ! assertion to more succinctly remove null and undefined from the type.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "only-throw-error": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + "allowThrowingAny": true, + "allowThrowingUnknown": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow throwing non-\`Error\` values as exceptions", + "extendsBaseRule": "no-throw-literal", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/only-throw-error", + }, + "messages": { + "object": "Expected an error object to be thrown.", + "undef": "Do not throw undefined.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Type specifiers that can be thrown.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "allowThrowingAny": { + "description": "Whether to always allow throwing values typed as \`any\`.", + "type": "boolean", + }, + "allowThrowingUnknown": { + "description": "Whether to always allow throwing values typed as \`unknown\`.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "parameter-properties": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + "prefer": "class-property", + }, + ], + "meta": { + "docs": { + "description": "Require or disallow parameter properties in class constructors", + "url": "https://typescript-eslint.io/rules/parameter-properties", + }, + "messages": { + "preferClassProperty": "Property {{parameter}} should be declared as a class property.", + "preferParameterProperty": "Property {{parameter}} should be declared as a parameter property.", + }, + "schema": [ + { + "$defs": { + "modifier": { + "enum": [ + "readonly", + "private", + "protected", + "public", + "private readonly", + "protected readonly", + "public readonly", + ], + "type": "string", + }, + }, + "additionalProperties": false, + "properties": { + "allow": { + "description": "Whether to allow certain kinds of properties to be ignored.", + "items": { + "$ref": "#/items/0/$defs/modifier", + }, + "type": "array", + }, + "prefer": { + "description": "Whether to prefer class properties or parameter properties.", + "enum": [ + "class-property", + "parameter-property", + ], + "type": "string", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "prefer-as-const": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce the use of \`as const\` over literal type", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/prefer-as-const", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "preferConstAssertion": "Expected a \`const\` instead of a literal type assertion.", + "variableConstAssertion": "Expected a \`const\` assertion instead of a literal type annotation.", + "variableSuggest": "You should use \`as const\` instead of type annotation.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-destructuring": { + "create": [Function], + "defaultOptions": [ + { + "AssignmentExpression": { + "array": true, + "object": true, + }, + "VariableDeclarator": { + "array": true, + "object": true, + }, + }, + {}, + ], + "meta": { + "docs": { + "description": "Require destructuring from arrays and/or objects", + "extendsBaseRule": true, + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-destructuring", + }, + "fixable": "code", + "hasSuggestions": undefined, + "messages": { + "preferDestructuring": "Use {{type}} destructuring.", + }, + "schema": [ + { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AssignmentExpression": { + "additionalProperties": false, + "properties": { + "array": { + "type": "boolean", + }, + "object": { + "type": "boolean", + }, + }, + "type": "object", + }, + "VariableDeclarator": { + "additionalProperties": false, + "properties": { + "array": { + "type": "boolean", + }, + "object": { + "type": "boolean", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "array": { + "type": "boolean", + }, + "object": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + }, + { + "properties": { + "enforceForDeclarationWithTypeAnnotation": { + "description": "Whether to enforce destructuring on variable declarations with type annotations.", + "type": "boolean", + }, + "enforceForRenamedProperties": { + "description": "Whether to enforce destructuring that use a different variable name than the property name.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-enum-initializers": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Require each enum member value to be explicitly initialized", + "url": "https://typescript-eslint.io/rules/prefer-enum-initializers", + }, + "hasSuggestions": true, + "messages": { + "defineInitializer": "The value of the member '{{ name }}' should be explicitly defined.", + "defineInitializerSuggestion": "Can be fixed to {{ name }} = {{ suggested }}", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-find": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-find", + }, + "hasSuggestions": true, + "messages": { + "preferFind": "Prefer .find(...) instead of .filter(...)[0].", + "preferFindSuggestion": "Use .find(...) instead of .filter(...)[0].", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-for-of": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce the use of \`for-of\` loop over the standard \`for\` loop where possible", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/prefer-for-of", + }, + "messages": { + "preferForOf": "Expected a \`for-of\` loop instead of a \`for\` loop with this simple iteration.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-function-type": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce using function types instead of interfaces with call signatures", + "recommended": "stylistic", + "url": "https://typescript-eslint.io/rules/prefer-function-type", + }, + "fixable": "code", + "messages": { + "functionTypeOverCallableType": "{{ literalOrInterface }} only has a call signature, you should use a function type instead.", + "unexpectedThisOnFunctionOnlyInterface": "\`this\` refers to the function type '{{ interfaceName }}', did you intend to use a generic \`this\` parameter like \`(this: Self, ...) => Self\` instead?", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-includes": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce \`includes\` method over \`indexOf\` method", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-includes", + }, + "fixable": "code", + "messages": { + "preferIncludes": "Use 'includes()' method instead.", + "preferStringIncludes": "Use \`String#includes()\` method with a string instead.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-literal-enum-member": { + "create": [Function], + "defaultOptions": [ + { + "allowBitwiseExpressions": false, + }, + ], + "meta": { + "docs": { + "description": "Require all enum members to be literal values", + "recommended": "strict", + "requiresTypeChecking": false, + "url": "https://typescript-eslint.io/rules/prefer-literal-enum-member", + }, + "messages": { + "notLiteral": "Explicit enum value must only be a literal value (string or number).", + "notLiteralOrBitwiseExpression": "Explicit enum value must only be a literal value (string or number) or a bitwise expression.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowBitwiseExpressions": { + "description": "Whether to allow using bitwise expressions in enum initializers.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-namespace-keyword": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Require using \`namespace\` keyword over \`module\` keyword to declare custom TypeScript modules", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/prefer-namespace-keyword", + }, + "fixable": "code", + "messages": { + "useNamespace": "Use 'namespace' instead of 'module' to declare custom TypeScript modules.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-nullish-coalescing": { + "create": [Function], + "defaultOptions": [ + { + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, + "ignoreBooleanCoercion": false, + "ignoreConditionalTests": true, + "ignoreMixedLogicalExpressions": false, + "ignorePrimitives": { + "bigint": false, + "boolean": false, + "number": false, + "string": false, + }, + "ignoreTernaryTests": false, + }, + ], + "meta": { + "docs": { + "description": "Enforce using the nullish coalescing operator instead of logical assignments or chaining", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-nullish-coalescing", + }, + "hasSuggestions": true, + "messages": { + "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", + "preferNullishOverOr": "Prefer using nullish coalescing operator (\`??{{ equals }}\`) instead of a logical {{ description }} (\`||{{ equals }}\`), as it is a safer operator.", + "preferNullishOverTernary": "Prefer using nullish coalescing operator (\`??{{ equals }}\`) instead of a ternary expression, as it is simpler to read.", + "suggestNullish": "Fix to nullish coalescing operator (\`??{{ equals }}\`).", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { + "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.", + "type": "boolean", + }, + "ignoreBooleanCoercion": { + "description": "Whether to ignore arguments to the \`Boolean\` constructor", + "type": "boolean", + }, + "ignoreConditionalTests": { + "description": "Whether to ignore cases that are located within a conditional test.", + "type": "boolean", + }, + "ignoreMixedLogicalExpressions": { + "description": "Whether to ignore any logical or expressions that are part of a mixed logical expression (with \`&&\`).", + "type": "boolean", + }, + "ignorePrimitives": { + "description": "Whether to ignore all (\`true\`) or some (an object with properties) primitive types.", + "oneOf": [ + { + "description": "Which primitives types may be ignored.", + "properties": { + "bigint": { + "description": "Ignore bigint primitive types.", + "type": "boolean", + }, + "boolean": { + "description": "Ignore boolean primitive types.", + "type": "boolean", + }, + "number": { + "description": "Ignore number primitive types.", + "type": "boolean", + }, + "string": { + "description": "Ignore string primitive types.", + "type": "boolean", + }, + }, + "type": "object", + }, + { + "description": "Ignore all primitive types.", + "enum": [ + true, + ], + "type": "boolean", + }, + ], + }, + "ignoreTernaryTests": { + "description": "Whether to ignore any ternary expressions that could be simplified by using the nullish coalescing operator.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-optional-chain": { + "create": [Function], + "defaultOptions": [ + { + "allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing": false, + "checkAny": true, + "checkBigInt": true, + "checkBoolean": true, + "checkNumber": true, + "checkString": true, + "checkUnknown": true, + "requireNullish": false, + }, + ], + "meta": { + "docs": { + "description": "Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-optional-chain", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "optionalChainSuggest": "Change to an optional chain.", + "preferOptionalChain": "Prefer using an optional chain expression instead, as it's more concise and easier to read.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing": { + "description": "Allow autofixers that will change the return type of the expression. This option is considered unsafe as it may break the build.", + "type": "boolean", + }, + "checkAny": { + "description": "Check operands that are typed as \`any\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + "checkBigInt": { + "description": "Check operands that are typed as \`bigint\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + "checkBoolean": { + "description": "Check operands that are typed as \`boolean\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + "checkNumber": { + "description": "Check operands that are typed as \`number\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + "checkString": { + "description": "Check operands that are typed as \`string\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + "checkUnknown": { + "description": "Check operands that are typed as \`unknown\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + "requireNullish": { + "description": "Skip operands that are not typed with \`null\` and/or \`undefined\` when inspecting "loose boolean" operands.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-promise-reject-errors": { + "create": [Function], + "defaultOptions": [ + { + "allowEmptyReject": false, + "allowThrowingAny": false, + "allowThrowingUnknown": false, + }, + ], + "meta": { + "docs": { + "description": "Require using Error objects as Promise rejection reasons", + "extendsBaseRule": true, + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-promise-reject-errors", + }, + "messages": { + "rejectAnError": "Expected the Promise rejection reason to be an Error.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowEmptyReject": { + "description": "Whether to allow calls to \`Promise.reject()\` with no arguments.", + "type": "boolean", + }, + "allowThrowingAny": { + "description": "Whether to always allow throwing values typed as \`any\`.", + "type": "boolean", + }, + "allowThrowingUnknown": { + "description": "Whether to always allow throwing values typed as \`unknown\`.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-readonly": { + "create": [Function], + "defaultOptions": [ + { + "onlyInlineLambdas": false, + }, + ], + "meta": { + "docs": { + "description": "Require private members to be marked as \`readonly\` if they're never modified outside of the constructor", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-readonly", + }, + "fixable": "code", + "messages": { + "preferReadonly": "Member '{{name}}' is never reassigned; mark it as \`readonly\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "onlyInlineLambdas": { + "description": "Whether to restrict checking only to members immediately assigned a lambda value.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-readonly-parameter-types": { + "create": [Function], + "defaultOptions": [ + { + "allow": [], + "checkParameterProperties": true, + "ignoreInferredTypes": false, + "treatMethodsAsReadonly": false, + }, + ], + "meta": { + "docs": { + "description": "Require function parameters to be typed as \`readonly\` to prevent accidental mutation of inputs", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-readonly-parameter-types", + }, + "messages": { + "shouldBeReadonly": "Parameter should be a read only type.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "An array of type specifiers to ignore.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "checkParameterProperties": { + "description": "Whether to check class parameter properties.", + "type": "boolean", + }, + "ignoreInferredTypes": { + "description": "Whether to ignore parameters which don't explicitly specify a type.", + "type": "boolean", + }, + "treatMethodsAsReadonly": { + "description": "Whether to treat all mutable methods as though they are readonly.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-reduce-type-parameter": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce using type parameter when calling \`Array#reduce\` instead of using a type assertion", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-reduce-type-parameter", + }, + "fixable": "code", + "messages": { + "preferTypeParameter": "Unnecessary assertion: Array#reduce accepts a type parameter for the default value.", + }, + "schema": [], + "type": "problem", + }, + }, + "prefer-regexp-exec": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce \`RegExp#exec\` over \`String#match\` if no global flag is provided", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-regexp-exec", + }, + "fixable": "code", + "messages": { + "regExpExecOverStringMatch": "Use the \`RegExp#exec()\` method instead.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-return-this-type": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce that \`this\` is used when only \`this\` type is returned", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-return-this-type", + }, + "fixable": "code", + "messages": { + "useThisType": "Use \`this\` type instead.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "prefer-string-starts-ends-with": { + "create": [Function], + "defaultOptions": [ + { + "allowSingleElementEquality": "never", + }, + ], + "meta": { + "docs": { + "description": "Enforce using \`String#startsWith\` and \`String#endsWith\` over other equivalent methods of checking substrings", + "recommended": "stylistic", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/prefer-string-starts-ends-with", + }, + "fixable": "code", + "messages": { + "preferEndsWith": "Use the 'String#endsWith' method instead.", + "preferStartsWith": "Use 'String#startsWith' method instead.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowSingleElementEquality": { + "description": "Whether to allow equality checks against the first or last element of a string.", + "enum": [ + "always", + "never", + ], + "type": "string", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "prefer-ts-expect-error": { + "create": [Function], + "defaultOptions": [], + "meta": { + "deprecated": { + "deprecatedSince": "7.11.0", + "replacedBy": [ + { + "rule": { + "name": "@typescript-eslint/ban-ts-comment", + "url": "https://typescript-eslint.io/rules/ban-ts-comment", + }, + }, + ], + "url": "https://github.com/typescript-eslint/typescript-eslint/pull/9081", + }, + "docs": { + "description": "Enforce using \`@ts-expect-error\` over \`@ts-ignore\`", + "url": "https://typescript-eslint.io/rules/prefer-ts-expect-error", + }, + "fixable": "code", + "messages": { + "preferExpectErrorComment": "Use "@ts-expect-error" to ensure an error is actually being suppressed.", + }, + "replacedBy": [ + "@typescript-eslint/ban-ts-comment", + ], + "schema": [], + "type": "problem", + }, + }, + "promise-function-async": { + "create": [Function], + "defaultOptions": [ + { + "allowAny": true, + "allowedPromiseNames": [], + "checkArrowFunctions": true, + "checkFunctionDeclarations": true, + "checkFunctionExpressions": true, + "checkMethodDeclarations": true, + }, + ], + "meta": { + "docs": { + "description": "Require any function or method that returns a Promise to be marked async", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/promise-function-async", + }, + "fixable": "code", + "messages": { + "missingAsync": "Functions that return promises must be async.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowAny": { + "description": "Whether to consider \`any\` and \`unknown\` to be Promises.", + "type": "boolean", + }, + "allowedPromiseNames": { + "description": "Any extra names of classes or interfaces to be considered Promises.", + "items": { + "type": "string", + }, + "type": "array", + }, + "checkArrowFunctions": { + "description": "Whether to check arrow functions.", + "type": "boolean", + }, + "checkFunctionDeclarations": { + "description": "Whether to check standalone function declarations.", + "type": "boolean", + }, + "checkFunctionExpressions": { + "description": "Whether to check inline function expressions", + "type": "boolean", + }, + "checkMethodDeclarations": { + "description": "Whether to check methods on classes and object literals.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "related-getter-setter-pairs": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce that \`get()\` types should be assignable to their equivalent \`set()\` type", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/related-getter-setter-pairs", + }, + "messages": { + "mismatch": "\`get()\` type should be assignable to its equivalent \`set()\` type.", + }, + "schema": [], + "type": "problem", + }, + }, + "require-array-sort-compare": { + "create": [Function], + "defaultOptions": [ + { + "ignoreStringArrays": true, + }, + ], + "meta": { + "docs": { + "description": "Require \`Array#sort\` and \`Array#toSorted\` calls to always provide a \`compareFunction\`", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/require-array-sort-compare", + }, + "messages": { + "requireCompare": "Require 'compare' argument.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreStringArrays": { + "description": "Whether to ignore arrays in which all elements are strings.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "require-await": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow async functions which do not return promises and have no \`await\` expression", + "extendsBaseRule": true, + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/require-await", + }, + "hasSuggestions": true, + "messages": { + "missingAwait": "{{name}} has no 'await' expression.", + "removeAsync": "Remove 'async'.", + }, + "schema": [], + "type": "suggestion", + }, + }, + "restrict-plus-operands": { + "create": [Function], + "defaultOptions": [ + { + "allowAny": true, + "allowBoolean": true, + "allowNullish": true, + "allowNumberAndString": true, + "allowRegExp": true, + "skipCompoundAssignments": false, + }, + ], + "meta": { + "docs": { + "description": "Require both operands of addition to be the same type and be \`bigint\`, \`number\`, or \`string\`", + "recommended": { + "recommended": true, + "strict": [ + { + "allowAny": false, + "allowBoolean": false, + "allowNullish": false, + "allowNumberAndString": false, + "allowRegExp": false, + }, + ], + }, + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/restrict-plus-operands", + }, + "messages": { + "bigintAndNumber": "Numeric '+' operations must either be both bigints or both numbers. Got \`{{left}}\` + \`{{right}}\`.", + "invalid": "Invalid operand for a '+' operation. Operands must each be a number or {{stringLike}}. Got \`{{type}}\`.", + "mismatched": "Operands of '+' operations must be a number or {{stringLike}}. Got \`{{left}}\` + \`{{right}}\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowAny": { + "description": "Whether to allow \`any\` typed values.", + "type": "boolean", + }, + "allowBoolean": { + "description": "Whether to allow \`boolean\` typed values.", + "type": "boolean", + }, + "allowNullish": { + "description": "Whether to allow potentially \`null\` or \`undefined\` typed values.", + "type": "boolean", + }, + "allowNumberAndString": { + "description": "Whether to allow \`bigint\`/\`number\` typed values and \`string\` typed values to be added together.", + "type": "boolean", + }, + "allowRegExp": { + "description": "Whether to allow \`regexp\` typed values.", + "type": "boolean", + }, + "skipCompoundAssignments": { + "description": "Whether to skip compound assignments such as \`+=\`.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "restrict-template-expressions": { + "create": [Function], + "defaultOptions": [ + { + "allow": [ + { + "from": "lib", + "name": [ + "Error", + "URL", + "URLSearchParams", + ], + }, + ], + "allowAny": true, + "allowBoolean": true, + "allowNullish": true, + "allowNumber": true, + "allowRegExp": true, + }, + ], + "meta": { + "docs": { + "description": "Enforce template literal expressions to be of \`string\` type", + "recommended": { + "recommended": true, + "strict": [ + { + "allowAny": false, + "allowBoolean": false, + "allowNever": false, + "allowNullish": false, + "allowNumber": false, + "allowRegExp": false, + }, + ], + }, + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/restrict-template-expressions", + }, + "messages": { + "invalidType": "Invalid type "{{type}}" of template literal expression.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allow": { + "description": "Types to allow in template expressions.", + "items": { + "oneOf": [ + { + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "file", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "path": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "lib", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + }, + "required": [ + "from", + "name", + ], + "type": "object", + }, + { + "additionalProperties": false, + "properties": { + "from": { + "enum": [ + "package", + ], + "type": "string", + }, + "name": { + "oneOf": [ + { + "type": "string", + }, + { + "items": { + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + }, + ], + }, + "package": { + "type": "string", + }, + }, + "required": [ + "from", + "name", + "package", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "allowAny": { + "description": "Whether to allow \`any\` typed values in template expressions.", + "type": "boolean", + }, + "allowArray": { + "description": "Whether to allow \`array\` typed values in template expressions.", + "type": "boolean", + }, + "allowBoolean": { + "description": "Whether to allow \`boolean\` typed values in template expressions.", + "type": "boolean", + }, + "allowNever": { + "description": "Whether to allow \`never\` typed values in template expressions.", + "type": "boolean", + }, + "allowNullish": { + "description": "Whether to allow \`nullish\` typed values in template expressions.", + "type": "boolean", + }, + "allowNumber": { + "description": "Whether to allow \`number\` typed values in template expressions.", + "type": "boolean", + }, + "allowRegExp": { + "description": "Whether to allow \`regexp\` typed values in template expressions.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "return-await": { + "create": [Function], + "defaultOptions": [ + "in-try-catch", + ], + "meta": { + "docs": { + "description": "Enforce consistent awaiting of returned promises", + "recommended": { + "strict": [ + "error-handling-correctness-only", + ], + }, + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/return-await", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "disallowedPromiseAwait": "Returning an awaited promise is not allowed in this context.", + "disallowedPromiseAwaitSuggestion": "Remove \`await\` before the expression. Use caution as this may impact control flow.", + "nonPromiseAwait": "Returning an awaited value that is not a promise is not allowed.", + "requiredPromiseAwait": "Returning an awaited promise is required in this context.", + "requiredPromiseAwaitSuggestion": "Add \`await\` before the expression. Use caution as this may impact control flow.", + }, + "schema": [ + { + "oneOf": [ + { + "description": "Requires that all returned promises be awaited.", + "enum": [ + "always", + ], + "type": "string", + }, + { + "description": "In error-handling contexts, the rule enforces that returned promises must be awaited. In ordinary contexts, the rule does not enforce any particular behavior around whether returned promises are awaited.", + "enum": [ + "error-handling-correctness-only", + ], + "type": "string", + }, + { + "description": "In error-handling contexts, the rule enforces that returned promises must be awaited. In ordinary contexts, the rule enforces that returned promises _must not_ be awaited.", + "enum": [ + "in-try-catch", + ], + "type": "string", + }, + { + "description": "Disallows awaiting any returned promises.", + "enum": [ + "never", + ], + "type": "string", + }, + ], + "type": "string", + }, + ], + "type": "problem", + }, + }, + "sort-type-constituents": { + "create": [Function], + "defaultOptions": [ + { + "caseSensitive": false, + "checkIntersections": true, + "checkUnions": true, + "groupOrder": [ + "named", + "keyword", + "operator", + "literal", + "function", + "import", + "conditional", + "object", + "tuple", + "intersection", + "union", + "nullish", + ], + }, + ], + "meta": { + "deprecated": { + "deprecatedSince": "7.13.0", + "replacedBy": [ + { + "plugin": { + "name": "eslint-plugin-perfectionist", + "url": "https://perfectionist.dev", + }, + "rule": { + "name": "perfectionist/sort-intersection-types", + "url": "https://perfectionist.dev/rules/sort-intersection-types", + }, + }, + { + "plugin": { + "name": "eslint-plugin-perfectionist", + "url": "https://perfectionist.dev", + }, + "rule": { + "name": "perfectionist/sort-union-types", + "url": "https://perfectionist.dev/rules/sort-union-types", + }, + }, + ], + "url": "https://github.com/typescript-eslint/typescript-eslint/pull/9253", + }, + "docs": { + "description": "Enforce constituents of a type union/intersection to be sorted alphabetically", + "url": "https://typescript-eslint.io/rules/sort-type-constituents", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "notSorted": "{{type}} type constituents must be sorted.", + "notSortedNamed": "{{type}} type {{name}} constituents must be sorted.", + "suggestFix": "Sort constituents of type (removes all comments).", + }, + "replacedBy": [ + "perfectionist/sort-intersection-types", + "perfectionist/sort-union-types", + ], + "schema": [ + { + "additionalProperties": false, + "properties": { + "caseSensitive": { + "description": "Whether to sort using case sensitive string comparisons.", + "type": "boolean", + }, + "checkIntersections": { + "description": "Whether to check intersection types (\`&\`).", + "type": "boolean", + }, + "checkUnions": { + "description": "Whether to check union types (\`|\`).", + "type": "boolean", + }, + "groupOrder": { + "description": "Ordering of the groups.", + "items": { + "enum": [ + "conditional", + "function", + "import", + "intersection", + "keyword", + "nullish", + "literal", + "named", + "object", + "operator", + "tuple", + "union", + ], + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "strict-boolean-expressions": { + "create": [Function], + "defaultOptions": [ + { + "allowAny": false, + "allowNullableBoolean": false, + "allowNullableEnum": false, + "allowNullableNumber": false, + "allowNullableObject": true, + "allowNullableString": false, + "allowNumber": true, + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, + "allowString": true, + }, + ], + "meta": { + "docs": { + "description": "Disallow certain types in boolean expressions", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/strict-boolean-expressions", + }, + "hasSuggestions": true, + "messages": { + "conditionErrorAny": "Unexpected any value in {{context}}. An explicit comparison or type conversion is required.", + "conditionErrorNullableBoolean": "Unexpected nullable boolean value in {{context}}. Please handle the nullish case explicitly.", + "conditionErrorNullableEnum": "Unexpected nullable enum value in {{context}}. Please handle the nullish/zero/NaN cases explicitly.", + "conditionErrorNullableNumber": "Unexpected nullable number value in {{context}}. Please handle the nullish/zero/NaN cases explicitly.", + "conditionErrorNullableObject": "Unexpected nullable object value in {{context}}. An explicit null check is required.", + "conditionErrorNullableString": "Unexpected nullable string value in {{context}}. Please handle the nullish/empty cases explicitly.", + "conditionErrorNullish": "Unexpected nullish value in conditional. The condition is always false.", + "conditionErrorNumber": "Unexpected number value in {{context}}. An explicit zero/NaN check is required.", + "conditionErrorObject": "Unexpected object value in {{context}}. The condition is always true.", + "conditionErrorOther": "Unexpected value in conditional. A boolean expression is required.", + "conditionErrorString": "Unexpected string value in {{context}}. An explicit empty string check is required.", + "conditionFixCastBoolean": "Explicitly convert value to a boolean (\`Boolean(value)\`)", + "conditionFixCompareArrayLengthNonzero": "Change condition to check array's length (\`value.length > 0\`)", + "conditionFixCompareArrayLengthZero": "Change condition to check array's length (\`value.length === 0\`)", + "conditionFixCompareEmptyString": "Change condition to check for empty string (\`value !== ""\`)", + "conditionFixCompareFalse": "Change condition to check if false (\`value === false\`)", + "conditionFixCompareNaN": "Change condition to check for NaN (\`!Number.isNaN(value)\`)", + "conditionFixCompareNullish": "Change condition to check for null/undefined (\`value != null\`)", + "conditionFixCompareStringLength": "Change condition to check string's length (\`value.length !== 0\`)", + "conditionFixCompareTrue": "Change condition to check if true (\`value === true\`)", + "conditionFixCompareZero": "Change condition to check for 0 (\`value !== 0\`)", + "conditionFixDefaultEmptyString": "Explicitly treat nullish value the same as an empty string (\`value ?? ""\`)", + "conditionFixDefaultFalse": "Explicitly treat nullish value the same as false (\`value ?? false\`)", + "conditionFixDefaultZero": "Explicitly treat nullish value the same as 0 (\`value ?? 0\`)", + "explicitBooleanReturnType": "Add an explicit \`boolean\` return type annotation.", + "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", + "predicateCannotBeAsync": "Predicate function should not be 'async'; expected a boolean return type.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowAny": { + "description": "Whether to allow \`any\`s in a boolean context.", + "type": "boolean", + }, + "allowNullableBoolean": { + "description": "Whether to allow nullable \`boolean\`s in a boolean context.", + "type": "boolean", + }, + "allowNullableEnum": { + "description": "Whether to allow nullable \`enum\`s in a boolean context.", + "type": "boolean", + }, + "allowNullableNumber": { + "description": "Whether to allow nullable \`number\`s in a boolean context.", + "type": "boolean", + }, + "allowNullableObject": { + "description": "Whether to allow nullable \`object\`s, \`symbol\`s, and functions in a boolean context.", + "type": "boolean", + }, + "allowNullableString": { + "description": "Whether to allow nullable \`string\`s in a boolean context.", + "type": "boolean", + }, + "allowNumber": { + "description": "Whether to allow \`number\`s in a boolean context.", + "type": "boolean", + }, + "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { + "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.", + "type": "boolean", + }, + "allowString": { + "description": "Whether to allow \`string\`s in a boolean context.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "switch-exhaustiveness-check": { + "create": [Function], + "defaultOptions": [ + { + "allowDefaultCaseForExhaustiveSwitch": true, + "considerDefaultExhaustiveForUnions": false, + "requireDefaultForNonUnion": false, + }, + ], + "meta": { + "docs": { + "description": "Require switch-case statements to be exhaustive", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/switch-exhaustiveness-check", + }, + "hasSuggestions": true, + "messages": { + "addMissingCases": "Add branches for missing cases.", + "dangerousDefaultCase": "The switch statement is exhaustive, so the default case is unnecessary.", + "switchIsNotExhaustive": "Switch is not exhaustive. Cases not matched: {{missingBranches}}", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "allowDefaultCaseForExhaustiveSwitch": { + "description": "If 'true', allow 'default' cases on switch statements with exhaustive cases.", + "type": "boolean", + }, + "considerDefaultExhaustiveForUnions": { + "description": "If 'true', the 'default' clause is used to determine whether the switch statement is exhaustive for union type", + "type": "boolean", + }, + "defaultCaseCommentPattern": { + "description": "Regular expression for a comment that can indicate an intentionally omitted default case.", + "type": "string", + }, + "requireDefaultForNonUnion": { + "description": "If 'true', require a 'default' clause for switches on non-union types.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "triple-slash-reference": { + "create": [Function], + "defaultOptions": [ + { + "lib": "always", + "path": "never", + "types": "prefer-import", + }, + ], + "meta": { + "docs": { + "description": "Disallow certain triple slash directives in favor of ES6-style import declarations", + "recommended": "recommended", + "url": "https://typescript-eslint.io/rules/triple-slash-reference", + }, + "messages": { + "tripleSlashReference": "Do not use a triple slash reference for {{module}}, use \`import\` style instead.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "lib": { + "description": "What to enforce for \`/// \` references.", + "enum": [ + "always", + "never", + ], + "type": "string", + }, + "path": { + "description": "What to enforce for \`/// \` references.", + "enum": [ + "always", + "never", + ], + "type": "string", + }, + "types": { + "description": "What to enforce for \`/// \` references.", + "enum": [ + "always", + "never", + "prefer-import", + ], + "type": "string", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "typedef": { + "create": [Function], + "defaultOptions": [ + { + "arrayDestructuring": false, + "arrowParameter": false, + "memberVariableDeclaration": false, + "objectDestructuring": false, + "parameter": false, + "propertyDeclaration": false, + "variableDeclaration": false, + "variableDeclarationIgnoreFunction": false, + }, + ], + "meta": { + "docs": { + "description": "Require type annotations in certain places", + "url": "https://typescript-eslint.io/rules/typedef", + }, + "messages": { + "expectedTypedef": "Expected a type annotation.", + "expectedTypedefNamed": "Expected {{name}} to have a type annotation.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "arrayDestructuring": { + "description": "Whether to enforce type annotations on variables declared using array destructuring.", + "type": "boolean", + }, + "arrowParameter": { + "description": "Whether to enforce type annotations for parameters of arrow functions.", + "type": "boolean", + }, + "memberVariableDeclaration": { + "description": "Whether to enforce type annotations on member variables of classes.", + "type": "boolean", + }, + "objectDestructuring": { + "description": "Whether to enforce type annotations on variables declared using object destructuring.", + "type": "boolean", + }, + "parameter": { + "description": "Whether to enforce type annotations for parameters of functions and methods.", + "type": "boolean", + }, + "propertyDeclaration": { + "description": "Whether to enforce type annotations for properties of interfaces and types.", + "type": "boolean", + }, + "variableDeclaration": { + "description": "Whether to enforce type annotations for variable declarations, excluding array and object destructuring.", + "type": "boolean", + }, + "variableDeclarationIgnoreFunction": { + "description": "Whether to ignore variable declarations for non-arrow and arrow functions.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "unbound-method": { + "create": [Function], + "defaultOptions": [ + { + "ignoreStatic": false, + }, + ], + "meta": { + "docs": { + "description": "Enforce unbound methods are called with their expected scope", + "recommended": "recommended", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/unbound-method", + }, + "messages": { + "unbound": "Avoid referencing unbound methods which may cause unintentional scoping of \`this\`.", + "unboundWithoutThisAnnotation": "Avoid referencing unbound methods which may cause unintentional scoping of \`this\`. +If your function does not access \`this\`, you can annotate it with \`this: void\`, or consider using an arrow function instead.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreStatic": { + "description": "Whether to skip checking whether \`static\` methods are correctly bound.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "problem", + }, + }, + "unified-signatures": { + "create": [Function], + "defaultOptions": [ + { + "ignoreDifferentlyNamedParameters": false, + "ignoreOverloadsWithDifferentJSDoc": false, + }, + ], + "meta": { + "docs": { + "description": "Disallow two overloads that could be unified into one with a union or an optional/rest parameter", + "recommended": "strict", + "url": "https://typescript-eslint.io/rules/unified-signatures", + }, + "messages": { + "omittingRestParameter": "{{failureStringStart}} with a rest parameter.", + "omittingSingleParameter": "{{failureStringStart}} with an optional parameter.", + "singleParameterDifference": "{{failureStringStart}} taking \`{{type1}} | {{type2}}\`.", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "ignoreDifferentlyNamedParameters": { + "description": "Whether two parameters with different names at the same index should be considered different even if their types are the same.", + "type": "boolean", + }, + "ignoreOverloadsWithDifferentJSDoc": { + "description": "Whether two overloads with different JSDoc comments should be considered different even if their parameter and return types are the same.", + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "use-unknown-in-catch-callback-variable": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Enforce typing arguments in Promise rejection callbacks as \`unknown\`", + "recommended": "strict", + "requiresTypeChecking": true, + "url": "https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "addUnknownRestTypeAnnotationSuggestion": "Add an explicit \`: [unknown]\` type annotation to the rejection callback rest variable.", + "addUnknownTypeAnnotationSuggestion": "Add an explicit \`: unknown\` type annotation to the rejection callback variable.", + "useUnknown": "Prefer the safe \`: unknown\` for a \`{{method}}\`{{append}} callback variable.", + "useUnknownArrayDestructuringPattern": "Prefer the safe \`: unknown\` for a \`{{method}}\`{{append}} callback variable. The thrown error may not be iterable.", + "useUnknownObjectDestructuringPattern": "Prefer the safe \`: unknown\` for a \`{{method}}\`{{append}} callback variable. The thrown error may be nullable, or may not have the expected shape.", + "wrongRestTypeAnnotationSuggestion": "Change existing type annotation to \`: [unknown]\`.", + "wrongTypeAnnotationSuggestion": "Change existing type annotation to \`: unknown\`.", + }, + "schema": [], + "type": "suggestion", + }, + }, + }, + }, + }, + }, + { + "files": [ + "**/*.ts", + "**/*.tsx", + "**/*.mts", + "**/*.cts", + ], + "name": "typescript-eslint/eslint-recommended", + "rules": { + "constructor-super": "off", + "getter-return": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-args": "off", + "no-dupe-class-members": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-new-native-nonconstructor": "off", + "no-new-symbol": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-undef": "off", + "no-unreachable": "off", + "no-unsafe-negation": "off", + "no-var": "error", + "prefer-const": "error", + "prefer-rest-params": "error", + "prefer-spread": "error", + }, + }, + { + "name": "typescript-eslint/recommended", + "rules": { + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/triple-slash-reference": "error", + "no-array-constructor": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + }, + }, + { + "name": "tanstack/query/flat/recommended", + "plugins": { + "@tanstack/query": { + "configs": { + "flat/recommended": [ + { + "name": "tanstack/query/flat/recommended", + "plugins": [Circular], + "rules": { + "@tanstack/query/exhaustive-deps": "error", + "@tanstack/query/infinite-query-property-order": "error", + "@tanstack/query/no-rest-destructuring": "warn", + "@tanstack/query/no-unstable-deps": "error", + "@tanstack/query/stable-query-client": "error", + }, + }, + ], + "recommended": { + "plugins": [ + "@tanstack/query", + ], + "rules": { + "@tanstack/query/exhaustive-deps": "error", + "@tanstack/query/infinite-query-property-order": "error", + "@tanstack/query/no-rest-destructuring": "warn", + "@tanstack/query/no-unstable-deps": "error", + "@tanstack/query/stable-query-client": "error", + }, + }, + }, + "meta": { + "name": "@tanstack/eslint-plugin-query", + }, + "rules": { + "exhaustive-deps": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Exhaustive deps rule for useQuery", + "recommended": "error", + "url": "https://tanstack.com/query/latest/docs/eslint/exhaustive-deps", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "fixTo": "Fix to {{result}}", + "missingDeps": "The following dependencies are missing in your queryKey: {{deps}}", + }, + "schema": [], + "type": "problem", + }, + }, + "infinite-query-property-order": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Ensure correct order of inference sensitive properties for infinite queries", + "recommended": "error", + "url": "https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "invalidOrder": "Invalid order of properties for \`{{function}}\`.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-rest-destructuring": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallows rest destructuring in queries", + "recommended": "warn", + "url": "https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring", + }, + "messages": { + "objectRestDestructure": "Object rest destructuring on a query will observe all changes to the query, leading to excessive re-renders.", + }, + "schema": [], + "type": "problem", + }, + }, + "no-unstable-deps": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Disallow putting the result of query hooks directly in a React hook dependency array", + "recommended": "error", + "url": "https://tanstack.com/query/latest/docs/eslint/no-unstable-deps", + }, + "messages": { + "noUnstableDeps": "The result of {{queryHook}} is not referentially stable, so don't pass it directly into the dependencies array of {{reactHook}}. Instead, destructure the return value of {{queryHook}} and pass the destructured values into the dependency array of {{reactHook}}.", + }, + "schema": [], + "type": "problem", + }, + }, + "stable-query-client": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Makes sure that QueryClient is stable", + "recommended": "error", + "url": "https://tanstack.com/query/latest/docs/eslint/stable-query-client", + }, + "fixable": "code", + "hasSuggestions": true, + "messages": { + "fixTo": "Fix to {{result}}", + "unstable": "QueryClient is not stable. It should be either extracted from the component or wrapped in React.useState. +See https://tkdodo.eu/blog/react-query-fa-qs#2-the-queryclient-is-not-stable", + }, + "schema": [], + "type": "problem", + }, + }, + }, + }, + }, + "rules": { + "@tanstack/query/exhaustive-deps": "error", + "@tanstack/query/infinite-query-property-order": "error", + "@tanstack/query/no-rest-destructuring": "warn", + "@tanstack/query/no-unstable-deps": "error", + "@tanstack/query/stable-query-client": "error", + }, + }, + { + "plugins": { + "@devup": { + "rules": { + "app-page": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "required 페이지나 레이아웃 컴포넌트는 반드시 export default로 내보내야 합니다.", + "url": "https://github.com/dev-five-git/devup/tree/main/packages/eslint-plugin/src/rules/app-page", + }, + "fixable": "code", + "messages": { + "nameOfPageOrLayoutComponentShouldHaveSuffix": "페이지나 레이아웃 컴포넌트의 이름은 반드시 \`Page\`나 \`Layout\`으로 끝나야 합니다.", + "pageOrLayoutComponentShouldDefaultExport": "페이지나 레이아웃 컴포넌트는 반드시 \`export default\`로 내보내야 합니다.", + "pathParamsShouldExist": "경로 변수를 사용할 수 있을 경우 \`params\`는 반드시 존재해야 합니다.", + }, + "schema": [], + "type": "problem", + }, + }, + "component": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "required 컴포넌트 이름은 디렉터리 혹은 파일명을 따라야 합니다.", + "url": "https://github.com/dev-five-git/devup/tree/main/packages/eslint-plugin/src/rules/component", + }, + "fixable": "code", + "messages": { + "componentFileShouldExportComponent": "컴포넌트 파일은 컴포넌트를 내보내야 합니다.", + "componentNameShouldBeFollowDirectoryStructure": "컴포넌트 이름은 디렉토리명 혹은 파일명을 따라야 합니다.", + }, + "schema": [], + "type": "problem", + }, + }, + "component-interface": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "required type annotation for component props when empty object pattern", + "url": "https://github.com/dev-five-git/devup/tree/main/packages/eslint-plugin/src/rules/component-interface", + }, + "fixable": "code", + "messages": { + "componentPropsShouldHaveTypeAnnotationWhenEmptyObjectPattern": "컴포넌트의 \`props\`가 비어있고 타입이 없을 경우 반드시 타입을 명시해야 합니다.", + }, + "schema": [], + "type": "problem", + }, + }, + "rsc-api": { + "create": [Function], + "meta": { + "docs": { + "description": "required 서버 컴포넌트에서는 반드시 cache 버전을 사용해야 합니다.", + "recommended": true, + }, + "fixable": "code", + "messages": { + "apiShouldBeCached": "\`{{ api }}\`는 서버 컴포넌트에서는 반드시 cache 버전을 사용해야 합니다.", + }, + "schema": [], + "type": "problem", + }, + }, + }, + }, + "react-hooks": { + "configs": { + "recommended": { + "plugins": [ + "react-hooks", + ], + "rules": { + "react-hooks/exhaustive-deps": "warn", + "react-hooks/rules-of-hooks": "error", + }, + }, + "recommended-latest": { + "name": "react-hooks/recommended", + "plugins": { + "react-hooks": { + "configs": [Circular], + "meta": { + "name": "eslint-plugin-react-hooks", + }, + "rules": { + "exhaustive-deps": { + "create": [Function], + "meta": { + "docs": { + "description": "verifies the list of dependencies for Hooks like useEffect and similar", + "recommended": true, + "url": "https://github.com/facebook/react/issues/14920", + }, + "fixable": "code", + "hasSuggestions": true, + "schema": [ + { + "additionalProperties": false, + "enableDangerousAutofixThisMayCauseInfiniteLoops": false, + "properties": { + "additionalHooks": { + "type": "string", + }, + "enableDangerousAutofixThisMayCauseInfiniteLoops": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "rules-of-hooks": { + "create": [Function], + "meta": { + "docs": { + "description": "enforces the Rules of Hooks", + "recommended": true, + "url": "https://reactjs.org/docs/hooks-rules.html", + }, + "type": "problem", + }, + }, + }, + }, + }, + "rules": { + "react-hooks/exhaustive-deps": "warn", + "react-hooks/rules-of-hooks": "error", + }, + }, + "recommended-legacy": { + "plugins": [ + "react-hooks", + ], + "rules": { + "react-hooks/exhaustive-deps": "warn", + "react-hooks/rules-of-hooks": "error", + }, + }, + }, + "meta": { + "name": "eslint-plugin-react-hooks", + }, + "rules": { + "exhaustive-deps": { + "create": [Function], + "meta": { + "docs": { + "description": "verifies the list of dependencies for Hooks like useEffect and similar", + "recommended": true, + "url": "https://github.com/facebook/react/issues/14920", + }, + "fixable": "code", + "hasSuggestions": true, + "schema": [ + { + "additionalProperties": false, + "enableDangerousAutofixThisMayCauseInfiniteLoops": false, + "properties": { + "additionalHooks": { + "type": "string", + }, + "enableDangerousAutofixThisMayCauseInfiniteLoops": { + "type": "boolean", + }, + }, + "type": "object", + }, + ], + "type": "suggestion", + }, + }, + "rules-of-hooks": { + "create": [Function], + "meta": { + "docs": { + "description": "enforces the Rules of Hooks", + "recommended": true, + "url": "https://reactjs.org/docs/hooks-rules.html", + }, + "type": "problem", + }, + }, + }, + }, + "simple-import-sort": { + "meta": { + "name": "eslint-plugin-simple-import-sort", + "version": "12.1.1", + }, + "rules": { + "exports": { + "create": [Function], + "meta": { + "docs": { + "description": "Automatically sort exports.", + "url": "https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order", + }, + "fixable": "code", + "messages": { + "sort": "Run autofix to sort these exports!", + }, + "schema": [], + "type": "layout", + }, + }, + "imports": { + "create": [Function], + "meta": { + "docs": { + "description": "Automatically sort imports.", + "url": "https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order", + }, + "fixable": "code", + "messages": { + "sort": "Run autofix to sort these imports!", + }, + "schema": [ + { + "additionalProperties": false, + "properties": { + "groups": { + "items": { + "items": { + "type": "string", + }, + "type": "array", + }, + "type": "array", + }, + }, + "type": "object", + }, + ], + "type": "layout", + }, + }, + }, + }, + "unused-imports": { + "meta": { + "name": "unused-imports", + }, + "rules": { + "no-unused-imports": { + "create": [Function], + "defaultOptions": [ + {}, + ], + "meta": { + "docs": { + "description": "Disallow unused variables", + "extendsBaseRule": true, + "recommended": "recommended", + "url": "https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md", + }, + "fixable": "code", + "messages": { + "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", + "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", + "usedOnlyAsType": "'{{varName}}' is {{action}} but only used as a type{{additional}}.", + }, + "schema": [ + { + "oneOf": [ + { + "enum": [ + "all", + "local", + ], + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "args": { + "description": "Whether to check all, some, or no arguments.", + "enum": [ + "all", + "after-used", + "none", + ], + "type": "string", + }, + "argsIgnorePattern": { + "description": "Regular expressions of argument names to not check for usage.", + "type": "string", + }, + "caughtErrors": { + "description": "Whether to check catch block arguments.", + "enum": [ + "all", + "none", + ], + "type": "string", + }, + "caughtErrorsIgnorePattern": { + "description": "Regular expressions of catch block argument names to not check for usage.", + "type": "string", + }, + "destructuredArrayIgnorePattern": { + "description": "Regular expressions of destructured array variable names to not check for usage.", + "type": "string", + }, + "ignoreClassWithStaticInitBlock": { + "description": "Whether to ignore classes with at least one static initialization block.", + "type": "boolean", + }, + "ignoreRestSiblings": { + "description": "Whether to ignore sibling properties in \`...\` destructurings.", + "type": "boolean", + }, + "reportUsedIgnorePattern": { + "description": "Whether to report variables that match any of the valid ignore pattern options if they have been used.", + "type": "boolean", + }, + "vars": { + "description": "Whether to check all variables or only locally-declared variables.", + "enum": [ + "all", + "local", + ], + "type": "string", + }, + "varsIgnorePattern": { + "description": "Regular expressions of variable names to not check for usage.", + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + ], + "type": "problem", + }, + }, + "no-unused-vars": { + "create": [Function], + "defaultOptions": [ + {}, + ], + "meta": { + "docs": { + "description": "Disallow unused variables", + "extendsBaseRule": true, + "recommended": "recommended", + "url": "https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-vars.md", + }, + "fixable": "code", + "messages": { + "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", + "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", + "usedOnlyAsType": "'{{varName}}' is {{action}} but only used as a type{{additional}}.", + }, + "schema": [ + { + "oneOf": [ + { + "enum": [ + "all", + "local", + ], + "type": "string", + }, + { + "additionalProperties": false, + "properties": { + "args": { + "description": "Whether to check all, some, or no arguments.", + "enum": [ + "all", + "after-used", + "none", + ], + "type": "string", + }, + "argsIgnorePattern": { + "description": "Regular expressions of argument names to not check for usage.", + "type": "string", + }, + "caughtErrors": { + "description": "Whether to check catch block arguments.", + "enum": [ + "all", + "none", + ], + "type": "string", + }, + "caughtErrorsIgnorePattern": { + "description": "Regular expressions of catch block argument names to not check for usage.", + "type": "string", + }, + "destructuredArrayIgnorePattern": { + "description": "Regular expressions of destructured array variable names to not check for usage.", + "type": "string", + }, + "ignoreClassWithStaticInitBlock": { + "description": "Whether to ignore classes with at least one static initialization block.", + "type": "boolean", + }, + "ignoreRestSiblings": { + "description": "Whether to ignore sibling properties in \`...\` destructurings.", + "type": "boolean", + }, + "reportUsedIgnorePattern": { + "description": "Whether to report variables that match any of the valid ignore pattern options if they have been used.", + "type": "boolean", + }, + "vars": { + "description": "Whether to check all variables or only locally-declared variables.", + "enum": [ + "all", + "local", + ], + "type": "string", + }, + "varsIgnorePattern": { + "description": "Regular expressions of variable names to not check for usage.", + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + ], + "type": "problem", + }, + }, + }, + }, + }, + "rules": { + "@devup/app-page": "error", + "@devup/component": "error", + "@devup/component-interface": "error", + "@devup/rsc-api": "error", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-expressions": [ + "error", + { + "allowShortCircuit": true, + "allowTernary": true, + }, + ], + "@typescript-eslint/no-unused-vars": [ + "error", + { + "args": "all", + "argsIgnorePattern": "^_", + "caughtErrors": "all", + "caughtErrorsIgnorePattern": "^_", + "destructuredArrayIgnorePattern": "^_", + "ignoreRestSiblings": true, + "varsIgnorePattern": "^_", + }, + ], + "@typescript-eslint/no-var-requires": "off", + "camelcase": "off", + "comma-dangle": "off", + "no-console": [ + "error", + { + "allow": [ + "info", + "debug", + "warn", + "error", + ], + }, + ], + "no-constant-condition": [ + "error", + { + "checkLoops": false, + }, + ], + "no-trailing-spaces": "error", + "prettier/prettier": [ + "error", + { + "endOfLine": "auto", + "semi": false, + "singleQuote": true, + "trailingComma": "all", + }, + ], + "react-hooks/exhaustive-deps": [ + "warn", + { + "additionalHooks": "useSafeEffect", + }, + ], + "react-hooks/rules-of-hooks": "error", + "react/jsx-curly-brace-presence": "error", + "react/jsx-sort-props": [ + "error", + { + "callbacksLast": false, + "ignoreCase": false, + "noSortAlphabetically": false, + "reservedFirst": true, + "shorthandFirst": false, + "shorthandLast": false, + }, + ], + "react/prop-types": "off", + "react/react-in-jsx-scope": "off", + "react/sort-default-props": "error", + "require-jsdoc": "off", + "simple-import-sort/exports": "error", + "simple-import-sort/imports": "error", + "spaced-comment": [ + "error", + "always", + { + "markers": [ + "/", + ], + }, + ], + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": "off", + "valid-jsdoc": "off", + }, + "settings": { + "react": { + "version": "detect", + }, + }, + }, + { + "files": [ + "**/*.test-d.{ts,tsx}", + ], + "rules": { + "@typescript-eslint/no-unused-expressions": "off", + }, + }, +] +`; diff --git a/packages/eslint-plugin/src/configs/__tests__/recommended.test.ts b/packages/eslint-plugin/src/configs/__tests__/recommended.test.ts new file mode 100644 index 00000000..38a93c49 --- /dev/null +++ b/packages/eslint-plugin/src/configs/__tests__/recommended.test.ts @@ -0,0 +1,6 @@ +import recommended from '../recommended' +describe('recommended', () => { + it('export recommended config', () => { + expect(recommended).toMatchSnapshot() + }) +}) diff --git a/packages/eslint-plugin/src/configs/recommended.ts b/packages/eslint-plugin/src/configs/recommended.ts new file mode 100644 index 00000000..0e2a5f5a --- /dev/null +++ b/packages/eslint-plugin/src/configs/recommended.ts @@ -0,0 +1,33 @@ +import { noUselessTailingNulls } from 'src/rules/no-useless-tailing-nulls' + +export default [ + { + ignores: [ + '**/node_modules/', + '**/build/', + '**/__snapshots__/', + '!**/src/**', + '!vite.config.ts', + '!**/.storybook/**', + '**/storybook-static/', + '**/dist/', + '**/next-env.d.ts', + '**/out/', + '**/.next/', + '**/public/', + '**/.df/', + ], + }, + { + plugins: { + '@devup-ui': { + rules: { + 'no-useless-tailing-nulls': noUselessTailingNulls, + }, + }, + }, + rules: { + '@devup-ui/no-useless-tailing-nulls': 'error', + }, + }, +] diff --git a/packages/eslint-plugin/src/index.ts b/packages/eslint-plugin/src/index.ts new file mode 100644 index 00000000..5ce6fd5a --- /dev/null +++ b/packages/eslint-plugin/src/index.ts @@ -0,0 +1,6 @@ +import recommended from './configs/recommended' +export * as rules from './rules' + +export const configs = { + recommended, +} diff --git a/packages/eslint-plugin/src/rules/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/__tests__/index.test.ts new file mode 100644 index 00000000..04d32c17 --- /dev/null +++ b/packages/eslint-plugin/src/rules/__tests__/index.test.ts @@ -0,0 +1,8 @@ +import * as index from '../index' +describe('export index', () => { + it('export', () => { + expect({ ...index }).toEqual({ + noUselessTailingNulls: expect.any(Object), + }) + }) +}) diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/README.md b/packages/eslint-plugin/src/rules/css-utils-literal-only/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts new file mode 100644 index 00000000..116129ca --- /dev/null +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts @@ -0,0 +1,88 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' + +import { cssUtilsLiteralOnly } from '../index' + +describe('css-utils-literal-only rule', () => { + const ruleTester = new RuleTester({ + languageOptions: { + ecmaVersion: 'latest', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + }) + it.each(['css', 'globalCss'])('should pass', (code) => { + ruleTester.run('css-utils-literal-only rule', cssUtilsLiteralOnly, { + valid: [ + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: 1})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: "1"})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} } from "other-package";\n${code}({w: [1][0]})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: [1]})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: ["1"]})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({w: ["1"]})`, + filename: 'src/app/page.tsx', + }, + ], + invalid: [ + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: v})`, + output: `import { ${code} } from "@devup-ui/react";\n${code}({w: v})`, + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'cssUtilsLiteralOnly', + }, + ], + }, + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: [v]})`, + output: `import { ${code} } from "@devup-ui/react";\n${code}({w: [v]})`, + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'cssUtilsLiteralOnly', + }, + ], + }, + { + code: `import { ${code} } from "@devup-ui/react";\n${code}({w: [1, null, v]})`, + output: `import { ${code} } from "@devup-ui/react";\n${code}({w: [1, null, v]})`, + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'cssUtilsLiteralOnly', + }, + ], + }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({w: [1, null, v]})`, + output: `import { ${code} as B } from "@devup-ui/react";\nB({w: [1, null, v]})`, + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'cssUtilsLiteralOnly', + }, + ], + }, + ], + }) + }) +}) diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts new file mode 100644 index 00000000..50602b8d --- /dev/null +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts @@ -0,0 +1,25 @@ +import { ESLintUtils } from '@typescript-eslint/utils' + +const createRule = ESLintUtils.RuleCreator( + (name) => + `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, +) + +export const cssUtilsLiteralOnly = createRule({ + name: 'css-utils-literal-only', + defaultOptions: [], + meta: { + schema: [], + messages: { + cssUtilsLiteralOnly: 'CSS utils should only be used with literal values.', + }, + type: 'problem', + fixable: 'code', + docs: { + description: 'CSS utils should only be used with literal values.', + }, + }, + create(_context) { + return {} + }, +}) diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts new file mode 100644 index 00000000..9b1a6e10 --- /dev/null +++ b/packages/eslint-plugin/src/rules/index.ts @@ -0,0 +1 @@ +export * from './no-useless-tailing-nulls' diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/README.md b/packages/eslint-plugin/src/rules/no-useless-responsive/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts new file mode 100644 index 00000000..b9b7e5f6 --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts @@ -0,0 +1,56 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' + +import { noUselessResponsive } from '../index' + +describe('no-useless-responsive rule', () => { + const ruleTester = new RuleTester({ + languageOptions: { + ecmaVersion: 'latest', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + }) + ruleTester.run('no-useless-responsive rule', noUselessResponsive, { + valid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "other-package";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({w: 1})', + filename: 'src/app/page.tsx', + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({w: "1"})', + filename: 'src/app/page.tsx', + }, + { + code: 'import { css } from "other-package";\ncss({w: [1][0]})', + filename: 'src/app/page.tsx', + }, + ], + invalid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + output: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, + ], + }) +}) diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts b/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts new file mode 100644 index 00000000..3c1150e2 --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts @@ -0,0 +1,25 @@ +import { ESLintUtils } from '@typescript-eslint/utils' + +const createRule = ESLintUtils.RuleCreator( + (name) => + `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, +) + +export const noUselessResponsive = createRule({ + name: 'no-useless-responsive', + defaultOptions: [], + meta: { + schema: [], + messages: { + uselessResponsive: 'Responsive are useless. Remove them.', + }, + type: 'problem', + fixable: 'code', + docs: { + description: 'No useless responsive.', + }, + }, + create(_context) { + return {} + }, +}) diff --git a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts new file mode 100644 index 00000000..cc7df679 --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts @@ -0,0 +1,64 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' + +import { noUselessTailingNulls } from '../index' + +describe('no-useless-tailing-nulls rule', () => { + const ruleTester = new RuleTester({ + languageOptions: { + ecmaVersion: 'latest', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + }) + ruleTester.run('no-useless-tailing-nulls rule', noUselessTailingNulls, { + valid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "other-package";\n', + filename: 'src/app/page.tsx', + }, + ], + invalid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + output: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessTailingNulls', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + output: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'uselessTailingNulls', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({w: [1, 2, null, null]})', + output: 'import { css } from "@devup-ui/react";\ncss({w: [1, 2]})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'uselessTailingNulls', + }, + ], + }, + ], + }) +}) diff --git a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts new file mode 100644 index 00000000..0153c6d4 --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts @@ -0,0 +1,25 @@ +import { ESLintUtils } from '@typescript-eslint/utils' + +const createRule = ESLintUtils.RuleCreator( + (name) => + `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, +) + +export const noUselessTailingNulls = createRule({ + name: 'no-useless-tailing-nulls', + defaultOptions: [], + meta: { + schema: [], + messages: { + uselessTailingNulls: 'Trailing nulls are useless. Remove them.', + }, + type: 'problem', + fixable: 'code', + docs: { + description: 'No useless tailing nulls.', + }, + }, + create(_context) { + return {} + }, +}) diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json new file mode 100644 index 00000000..4c6e75be --- /dev/null +++ b/packages/eslint-plugin/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "types": ["vite/client", "vitest/importMeta", "vitest/globals"], + "strict": true, + "target": "ESNext", + "declaration": true, + "declarationMap": true, + "removeComments": true, + "sourceMap": true, + "useDefineForClassFields": true, + "allowJs": false, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strictFunctionTypes": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "baseUrl": ".", + "jsx": "react-jsx" + } +} diff --git a/packages/eslint-plugin/vite.config.ts b/packages/eslint-plugin/vite.config.ts new file mode 100644 index 00000000..a1d1f0f0 --- /dev/null +++ b/packages/eslint-plugin/vite.config.ts @@ -0,0 +1,63 @@ +import dts from 'vite-plugin-dts' +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + globals: true, + coverage: { + all: true, + thresholds: { + '100': true, + }, + }, + }, + plugins: [ + dts({ + entryRoot: 'src', + staticImport: true, + pathsToAliases: false, + exclude: [ + '**/__tests__/**/*', + '**/*.test.(tsx|ts|js|jsx)', + '**/*.test-d.(tsx|ts|js|jsx)', + 'vite.config.ts', + ], + include: ['**/src/**/*.ts'], + copyDtsFiles: true, + compilerOptions: { + isolatedModules: false, + declaration: true, + }, + }) as any, + ], + build: { + rollupOptions: { + onwarn: (warning) => { + if (warning.code === 'MODULE_LEVEL_DIRECTIVE') { + return + } + }, + external: (source) => { + return !(source.includes('src') || source.startsWith('.')) + }, + + output: { + dir: 'dist', + preserveModules: true, + preserveModulesRoot: 'src', + + exports: 'named', + assetFileNames({ name }) { + return name?.replace(/^src\//g, '') ?? '' + }, + }, + }, + lib: { + formats: ['es', 'cjs'], + entry: { + index: 'src/index.ts', + }, + }, + outDir: 'dist', + }, +}) diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index 292a6f4e..29e3e7b7 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -46,7 +46,7 @@ "browserslist": "latest" }, "devDependencies": { - "vite": "^7.1.6", + "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4", "typescript": "^5.9.2", diff --git a/packages/react/package.json b/packages/react/package.json index 55253f0a..1112356a 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "rollup-plugin-preserve-directives": "^0.4.0", - "vite": "^7.1.6", + "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "typescript": "^5.9.2", "@types/react": "^19" diff --git a/packages/reset-css/package.json b/packages/reset-css/package.json index 4dabf3a2..e0da71f5 100644 --- a/packages/reset-css/package.json +++ b/packages/reset-css/package.json @@ -43,7 +43,7 @@ }, "devDependencies": { "typescript": "^5.9.2", - "vite": "^7.1.6", + "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "rollup-plugin-preserve-directives": "^0.4.0" }, diff --git a/packages/rsbuild-plugin/package.json b/packages/rsbuild-plugin/package.json index 5714c89b..3eef9e6e 100644 --- a/packages/rsbuild-plugin/package.json +++ b/packages/rsbuild-plugin/package.json @@ -56,8 +56,8 @@ "@rsbuild/core": "*" }, "devDependencies": { - "@rsbuild/core": "^1.5.10", - "vite": "^7.1.6", + "@rsbuild/core": "^1.5.12", + "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4", "typescript": "^5.9.2" diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3c622629..960d2ca8 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -55,7 +55,7 @@ "@devup-ui/wasm": "*" }, "devDependencies": { - "vite": "^7.1.6", + "vite": "^7.1.7", "@types/webpack": "^5.28.5", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7a28a73..c23adae7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 6.8.0 '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -31,34 +31,34 @@ importers: version: 24.5.2 '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) eslint: - specifier: ^9.35.0 - version: 9.36.0(jiti@2.5.1) + specifier: ^9.36.0 + version: 9.36.0(jiti@2.6.0) eslint-plugin-devup: specifier: ^2.0.5 - version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) eslint-plugin-jsonc: specifier: ^2.20.1 - version: 2.20.1(eslint@9.36.0(jiti@2.5.1)) + version: 2.20.1(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-mdx: specifier: ^3.6.2 - version: 3.6.2(eslint@9.36.0(jiti@2.5.1)) + version: 3.6.2(eslint@9.36.0(jiti@2.6.0)) globals: specifier: ^16.4.0 version: 16.4.0 happy-dom: - specifier: ^18.0.1 - version: 18.0.1 + specifier: ^19.0.1 + version: 19.0.1 husky: specifier: ^9.1.7 version: 9.1.7 lint-staged: - specifier: ^16.1.6 - version: 16.1.6 + specifier: ^16.2.3 + version: 16.2.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) apps/landing: dependencies: @@ -78,8 +78,8 @@ importers: specifier: ^3.1.1 version: 3.1.1(@types/react@19.1.13)(react@19.1.1) '@next/mdx': - specifier: ^15.5.3 - version: 15.5.3(@mdx-js/loader@3.1.1(webpack@5.101.3))(@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1)) + specifier: ^15.5.4 + version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.101.3))(@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1)) '@types/mdx': specifier: ^2.0.13 version: 2.0.13 @@ -93,8 +93,8 @@ importers: specifier: 1.3.11 version: 1.3.11(react@19.1.1) next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -145,8 +145,8 @@ importers: specifier: workspace:* version: link:../../packages/react next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -186,11 +186,11 @@ importers: specifier: workspace:* version: link:../../packages/rsbuild-plugin '@rsbuild/core': - specifier: ^1.5.10 - version: 1.5.10 + specifier: ^1.5.12 + version: 1.5.12 '@rsbuild/plugin-react': - specifier: ^1.4.0 - version: 1.4.0(@rsbuild/core@1.5.10) + specifier: ^1.4.1 + version: 1.4.1(@rsbuild/core@1.5.12) apps/vite: dependencies: @@ -220,14 +220,14 @@ importers: specifier: ^19 version: 19.1.9(@types/react@19.1.13) '@vitejs/plugin-react': - specifier: ^5.0.3 - version: 5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^5.0.4 + version: 5.0.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) apps/vite-lib: dependencies: @@ -248,17 +248,17 @@ importers: specifier: ^19 version: 19.1.13 '@vitejs/plugin-react': - specifier: ^5.0.3 - version: 5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^5.0.4 + version: 5.0.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) benchmark/next-chakra-ui: dependencies: @@ -269,8 +269,8 @@ importers: specifier: ^11.14.0 version: 11.14.0(@types/react@19.1.13)(react@19.1.1) next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -303,8 +303,8 @@ importers: specifier: workspace:* version: link:../../packages/react next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -334,8 +334,8 @@ importers: specifier: workspace:* version: link:../../packages/react next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -363,10 +363,10 @@ importers: dependencies: '@kuma-ui/core': specifier: ^1.5.9 - version: 1.5.9(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + version: 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -376,7 +376,7 @@ importers: devDependencies: '@kuma-ui/next-plugin': specifier: ^1.3.3 - version: 1.3.3(@babel/core@7.28.4)(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3) + version: 1.3.3(@babel/core@7.28.4)(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3) '@types/node': specifier: ^24 version: 24.5.2 @@ -402,8 +402,8 @@ importers: specifier: 7.3.2 version: 7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -430,8 +430,8 @@ importers: benchmark/next-panda-css: dependencies: next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -440,8 +440,8 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@pandacss/dev': - specifier: ^1.3 - version: 1.3.1(typescript@5.9.2) + specifier: ^1.4 + version: 1.4.0(typescript@5.9.2) '@types/node': specifier: ^24 version: 24.5.2 @@ -461,14 +461,14 @@ importers: specifier: ^0.11.1 version: 0.11.1 '@stylexjs/stylex': - specifier: ^0.15.4 - version: 0.15.4 + specifier: ^0.16.0 + version: 0.16.0 bright: specifier: ^1.0.0 version: 1.0.0(react@19.1.1) next: - specifier: 15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: 19.1.1 version: 19.1.1 @@ -489,32 +489,32 @@ importers: specifier: ^7.27.1 version: 7.27.1(@babel/core@7.28.4) '@stylexjs/babel-plugin': - specifier: ^0.15.4 - version: 0.15.4 + specifier: ^0.16.0 + version: 0.16.0 '@stylexjs/eslint-plugin': - specifier: ^0.15.4 - version: 0.15.4 + specifier: ^0.16.0 + version: 0.16.0 '@stylexjs/nextjs-plugin': specifier: ^0.11.1 - version: 0.11.1(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) + version: 0.11.1(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) '@types/node': specifier: 24.5.2 version: 24.5.2 '@types/react': - specifier: 19.1.13 - version: 19.1.13 + specifier: 19.1.15 + version: 19.1.15 '@types/react-dom': specifier: 19.1.9 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.15) '@types/react-test-renderer': specifier: ^19.1.0 version: 19.1.0 eslint: specifier: 9.36.0 - version: 9.36.0(jiti@2.5.1) + version: 9.36.0(jiti@2.6.0) eslint-config-next: - specifier: 15.5.3 - version: 15.5.3(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + specifier: 15.5.4 + version: 15.5.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -534,8 +534,8 @@ importers: benchmark/next-tailwind: dependencies: next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -574,8 +574,8 @@ importers: specifier: ^1.17.4 version: 1.17.4(babel-plugin-macros@3.1.0) next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^15.5.4 + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -597,7 +597,7 @@ importers: version: 19.1.9(@types/react@19.1.13) '@vanilla-extract/next-plugin': specifier: ^2.4.14 - version: 2.4.14(babel-plugin-macros@3.1.0)(next@15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.101.3) + version: 2.4.14(babel-plugin-macros@3.1.0)(next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.101.3) typescript: specifier: ^5 version: 5.9.2 @@ -623,38 +623,75 @@ importers: specifier: workspace:* version: link:../vite-plugin '@storybook/addon-docs': - specifier: ^9.1.7 - version: 9.1.7(@types/react@19.1.13)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + specifier: ^9.1.8 + version: 9.1.8(@types/react@19.1.15)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/addon-onboarding': - specifier: ^9.1.7 - version: 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + specifier: ^9.1.8 + version: 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/react-vite': - specifier: ^9.1.7 - version: 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^9.1.8 + version: 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@types/react': - specifier: ^19.1.13 - version: 19.1.13 + specifier: ^19.1.15 + version: 19.1.15 eslint-plugin-storybook: - specifier: ^9.1.7 - version: 9.1.7(eslint@9.36.0(jiti@2.5.1))(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) + specifier: ^9.1.8 + version: 9.1.8(eslint@9.36.0(jiti@2.6.0))(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) rollup-plugin-preserve-directives: specifier: ^0.4.0 version: 0.4.0(rollup@4.51.0) storybook: - specifier: ^9.1.7 - version: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^9.1.8 + version: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + typescript: + specifier: ^5.9.2 + version: 5.9.2 + vite: + specifier: ^6 + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite-plugin-dts: + specifier: ^4.5.4 + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + + packages/eslint-plugin: + dependencies: + typescript-eslint: + specifier: ^8.44 + version: 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + devDependencies: + '@types/eslint': + specifier: ^9.6 + version: 9.6.1 + '@types/eslint__js': + specifier: ^9.14 + version: 9.14.0 + '@typescript-eslint/rule-tester': + specifier: ^8.44 + version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': + specifier: ^8.44 + version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@vitest/coverage-v8': + specifier: 3.2.4 + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + eslint-plugin-eslint-plugin: + specifier: ^7.0.0 + version: 7.0.0(eslint@9.36.0(jiti@2.6.0)) typescript: specifier: ^5.9.2 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/next-plugin: dependencies: @@ -666,7 +703,7 @@ importers: version: 4.26.2 next: specifier: ^15.5 - version: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 15.5.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) devDependencies: '@types/webpack': specifier: ^5.28.5 @@ -676,13 +713,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/react: dependencies: @@ -704,10 +741,10 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/reset-css: dependencies: @@ -723,10 +760,10 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/rsbuild-plugin: dependencies: @@ -735,20 +772,20 @@ importers: version: link:../../bindings/devup-ui-wasm devDependencies: '@rsbuild/core': - specifier: ^1.5.10 - version: 1.5.10 + specifier: ^1.5.12 + version: 1.5.12 typescript: specifier: ^5.9.2 version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/vite-plugin: dependencies: @@ -757,14 +794,14 @@ importers: version: link:../../bindings/devup-ui-wasm vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) devDependencies: typescript: specifier: ^5.9.2 version: 5.9.2 vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/webpack-plugin: dependencies: @@ -780,13 +817,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages: @@ -2257,11 +2294,14 @@ packages: '@next/env@15.5.3': resolution: {integrity: sha512-RSEDTRqyihYXygx/OJXwvVupfr9m04+0vH8vyy0HfZ7keRto6VX9BbEk0J2PUk0VGy6YhklJUSrgForov5F9pw==} - '@next/eslint-plugin-next@15.5.3': - resolution: {integrity: sha512-SdhaKdko6dpsSr0DldkESItVrnPYB1NS2NpShCSX5lc7SSQmLZt5Mug6t2xbiuVWEVDLZSuIAoQyYVBYp0dR5g==} + '@next/env@15.5.4': + resolution: {integrity: sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==} + + '@next/eslint-plugin-next@15.5.4': + resolution: {integrity: sha512-SR1vhXNNg16T4zffhJ4TS7Xn7eq4NfKfcOsRwea7RIAHrjRpI9ALYbamqIJqkAhowLlERffiwk0FMvTLNdnVtw==} - '@next/mdx@15.5.3': - resolution: {integrity: sha512-tpD3sdWfAiqjqD1WXL4ZEpxswXdbeoTQjlgvDzbQOxDr37qaAo9bFkpMVb3P3pgAJAQ9Q6w1Yql6YtOsmgZrzg==} + '@next/mdx@15.5.4': + resolution: {integrity: sha512-QUc14KkswCau2/Lul13t13v8QYRiEh3aeyUMUix5mK/Zd8c/J9NQuVvLGhxS7fxGPU+fOcv0GaXqZshkvNaX7A==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -2277,48 +2317,96 @@ packages: cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@15.5.4': + resolution: {integrity: sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@15.5.3': resolution: {integrity: sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@15.5.4': + resolution: {integrity: sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-linux-arm64-gnu@15.5.3': resolution: {integrity: sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@15.5.4': + resolution: {integrity: sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@15.5.3': resolution: {integrity: sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@15.5.4': + resolution: {integrity: sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@15.5.3': resolution: {integrity: sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@15.5.4': + resolution: {integrity: sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@15.5.3': resolution: {integrity: sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@15.5.4': + resolution: {integrity: sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@15.5.3': resolution: {integrity: sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@15.5.4': + resolution: {integrity: sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-x64-msvc@15.5.3': resolution: {integrity: sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@15.5.4': + resolution: {integrity: sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2359,57 +2447,57 @@ packages: resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} engines: {node: ^16.14.0 || >=18.0.0} - '@pandacss/config@1.3.1': - resolution: {integrity: sha512-Q58Q40JvVyZSruX3jthoJMsUv80Q0g2Aug0Q4OKSaqxLV3MXh3gW8KN0qztVp4kSS+sURShh8qPd6Ucjp5YXPA==} + '@pandacss/config@1.4.0': + resolution: {integrity: sha512-g/9t1V6k44rVqfQvsHBwB6D+GPUYRffHd1dnCh+OXIt/sYofmEwiVVoSmc1C0ohFimyNxMe2aPn7BctIRZWrqg==} - '@pandacss/core@1.3.1': - resolution: {integrity: sha512-NxRnZnz+kftf4iBJwNdoR/cjDIXT7x5f43teQoSDklcB+5CghAoN8Q5xqJS3pQ8PPZDQnB2Ek+sncTWBfITlgg==} + '@pandacss/core@1.4.0': + resolution: {integrity: sha512-BTMFFwaTCOAOxt27OQZwBErECtr4wUc/ZSM8ANi0AWryGJGx0jb4xmKhAu5B85B2zpxt9BkyNs8QC6UOt6DWgA==} - '@pandacss/dev@1.3.1': - resolution: {integrity: sha512-ddoVOsbb39sp6TTZQtrQRBlxsPKJWsnZvr3bKucRXa6xvjUEuWHgA0pP2qmx1XruIj+i4Tj8T2gHzZWhCT9r/g==} + '@pandacss/dev@1.4.0': + resolution: {integrity: sha512-/aS6WQHUjeoa1V+tW/bykZPqJ1jLIWz4gRgkRxCxpaS/ziSdYptZYVmcASsTWVtFamr8uEotB3hZejuLw6B9IA==} hasBin: true - '@pandacss/extractor@1.3.1': - resolution: {integrity: sha512-6UCPexBqvqJ0+He/yOwIZprPoRs/Gpt9n2Whf57NIceozhOpnFsCwrtgOQZLZlx7x9OdKf44g5ZBxM9wvRzCdw==} + '@pandacss/extractor@1.4.0': + resolution: {integrity: sha512-4JBZMyAH9T1HJPtEUQyzZH2GNi/qqCHHUdr+yY0v1BegUJvQgDXp/TNBFZuiGrfxUbd5Up6MqsLwKL3//e+KMg==} - '@pandacss/generator@1.3.1': - resolution: {integrity: sha512-xQQX2NNNVBYYq+wkcY3fk4UVAsAF+Y2YSfsxskLRMkPXFUzESphEv6mOadYQl7sTkxdpUriFYA3jL2Z9aiCb8Q==} + '@pandacss/generator@1.4.0': + resolution: {integrity: sha512-HSZ3LRVTb35lgB6fBrkeU2hil8wTp/mkzQEn0cqiEzlS0dHbilGQrFYmZOjcPZWD/gK2YKcFBuwNISWFZkLiKQ==} '@pandacss/is-valid-prop@0.54.0': resolution: {integrity: sha512-UhRgg1k9VKRCBAHl+XUK3lvN0k9bYifzYGZOqajDid4L1DyU813A1L0ZwN4iV9WX5TX3PfUugqtgG9LnIeFGBQ==} - '@pandacss/is-valid-prop@1.3.1': - resolution: {integrity: sha512-HT4U2GkVsdoESpN21DhzlgN32EfTki7Nd1vddhO4TGw4q0z1oaIuOozMH3/g6fFcN+Jo3fLOX+ZmbToLA/CPXw==} + '@pandacss/is-valid-prop@1.4.0': + resolution: {integrity: sha512-c3FX90/ogkhBEXcjkKdeICM+cg3w4gvJ9Urkoy+Ien+IJNCrPwjesX82k+ystY/teTzMF9B9g4sGAjkkRsd3ug==} - '@pandacss/logger@1.3.1': - resolution: {integrity: sha512-dY7I5+cAwPoYD5WblO9OjKd+RPZy3MUSZEk+fjM6KZsyl0GShdWery2246DxvpKCJnBLcYFp0UZErANt5gkllQ==} + '@pandacss/logger@1.4.0': + resolution: {integrity: sha512-d3FZVyPGIk87uWCMegtiGZSHAI7IA4MC3nUFpkCzBPaJgZfkVSwJjBr8Qz/Hz3S219i66a3vy3UxyCgc7omiHg==} - '@pandacss/node@1.3.1': - resolution: {integrity: sha512-2Qa6fjcpemaIVru4SBbNca5eDqeKOzIlIzXFlrdOOFD4ZWXDVaFqiCX6XeibeoHTHX+ACjtInv0GUrE8RNoCXw==} + '@pandacss/node@1.4.0': + resolution: {integrity: sha512-67axJaUcGDzvCOL5OTbMzSqrxLgM4t3JJNnSFKLeseaCAXqx7G97cJxP/sCXVWXoE47J/O7Sd4xaCQMMu4D2zA==} - '@pandacss/parser@1.3.1': - resolution: {integrity: sha512-vXYaZQD/9h5n/hOr8OCLLvMaY+ng/LchiFqXo5sHaA/fThTMeglipCjuK94rExbJ3PwqNTwcs8zQu0TrOpf/Gg==} + '@pandacss/parser@1.4.0': + resolution: {integrity: sha512-rEOaCI3cgoIs1vqTS8YH3L+Ex8WsW1deGmBo3Hl90mXDcqfkVJxBEAiTzFOCQAYpTUwX+lXzHiCGZQLPvBIFqQ==} - '@pandacss/postcss@1.3.1': - resolution: {integrity: sha512-QuJI31oQMXbtlDPNRENfqVs1VaTTVq6zGOOuz3BDDj++6x165IIEs3KgRmnKPnUNyRHTkQxOMoQZgKQ1wAsU9A==} + '@pandacss/postcss@1.4.0': + resolution: {integrity: sha512-t8BhJeNNV5H5PhqGrA6eER5Yc+Ph45yxZZewZ1YaanuRAWJqBja63x+s4by8aAk6PCe9+czM04BKfafZ3dXZCQ==} - '@pandacss/preset-base@1.3.1': - resolution: {integrity: sha512-3/Q1WlfIrxFLTbRo7Va1EBSgMgDOsvDxill26FWl2CIztKlQtRgeBg4ez8m7LM3elGth6jkTdBTRIry1MXNw1g==} + '@pandacss/preset-base@1.4.0': + resolution: {integrity: sha512-3qo/HdDezCqa6eItZypYiSnm+Sr7SxQtYST4n0UvLYCo3+crvR4q4CwaQG7UNq48abeVIHbN9Ux8kBVP6jFSmA==} - '@pandacss/preset-panda@1.3.1': - resolution: {integrity: sha512-ReLsoXIHIgXLSy0o+trdZpeMwvliL+9lNcpNtlkZrTrzLbrahJwBU0fOeCGxgOemu/3ZfHCTmw2LKWcj942A2w==} + '@pandacss/preset-panda@1.4.0': + resolution: {integrity: sha512-ZumZ7mQBqjpne1GrhqSuIW8/9KY02xI4N8vtD1F8poorVG2JC97QF+5FRtUH8hir7f94xR08G33wTe8qefSP7A==} - '@pandacss/reporter@1.3.1': - resolution: {integrity: sha512-1JovCGuvf+mL86QpIhBVF/s08MeaRwS5FLzoC4Qd0cjlTCE7nrReyfwNhQuMsvKGCPLjZ4OlWl2wpXn0NZ6p8g==} + '@pandacss/reporter@1.4.0': + resolution: {integrity: sha512-ofk6WVhG/nf8t4d7kE9lcLcI0gQDhG8Qedtf+tHncRkVPN9iRpwb2zCXbcg5qjB4q3k5mlTcA+2mj1fLssvnKA==} - '@pandacss/shared@1.3.1': - resolution: {integrity: sha512-B/dVrOpeXbD4RYkdjGoYsvL7YMBQlV/zZ0Vk096a++c0qtgxnIs0nY1scCcL+UeLcKDvCEUF+Q7uzZfDjipPYg==} + '@pandacss/shared@1.4.0': + resolution: {integrity: sha512-84XTuJbsjEvOTQty3MnAQsF0STG54Mwnwhx/pvbvKbXcisLAw/xjn5Z07zo7EBgqbyf3vZxK1+yeIWCwvHhj0g==} - '@pandacss/token-dictionary@1.3.1': - resolution: {integrity: sha512-Y5LgQ+wOZD6fayx4schMBE8YhXJjvGnYxusZrLmTDSLsrvFWigpkAFBog1Tq/1ic0DWRPdjPAqoz1oOjCCAWZA==} + '@pandacss/token-dictionary@1.4.0': + resolution: {integrity: sha512-9hTH1Y3SiXZN0LI5KmLMsT7AZjgvL+JcuOhNTCD5lKOe9Z1sbVDEbQFeg99vm/I99z385w9qOQXw8EfDLlLazQ==} - '@pandacss/types@1.3.1': - resolution: {integrity: sha512-U5r2P36u97KHqJcMSmDb7rWKrrquO+Q0PImKOTVQ/PRZ1bFpVPLYpHEt5KngEYsNM7gU+EuLFuGZuSkkFYUlKw==} + '@pandacss/types@1.4.0': + resolution: {integrity: sha512-lXN3GiPDSjBNXze9LUGEIHtbH8/e/xhb0i4BBDCQAjbt1+My0VHe4OTE1Bg/dD8X2oKAQIB0VsRl4Wf2DRDm7g==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -2422,8 +2510,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rolldown/pluginutils@1.0.0-beta.35': - resolution: {integrity: sha512-slYrCpoxJUqzFDDNlvrOYRazQUNRvWPjXA17dAOISY3rDMxX6k8K4cj2H+hEYMHF81HO3uNd5rHVigAWRM5dSg==} + '@rolldown/pluginutils@1.0.0-beta.38': + resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} @@ -2539,70 +2627,70 @@ packages: cpu: [x64] os: [win32] - '@rsbuild/core@1.5.10': - resolution: {integrity: sha512-8FDZhtw18XRfCDEZjzt6Xi9ZR+oYpIj7d1AfGX+BVDzLpDCoAHJ/4dWy0ryl8ADssZeezY9JPqKWfTfVJEpc9Q==} + '@rsbuild/core@1.5.12': + resolution: {integrity: sha512-DpinE1If6WRTwQYqH+PRtJo3zshkDYHfIcWq4lTtfsPfPLrXshmRXBam3BS1RRu4v2gGT+LCNiUefftsmcmL0A==} engines: {node: '>=18.12.0'} hasBin: true - '@rsbuild/plugin-react@1.4.0': - resolution: {integrity: sha512-YhhOUOonJBjnKpUf7E4iXKidldPWAGmYBRtDjQgcSmW4tbW0DasFpNCqLn5870Q2Ly6oCU06sLv+8G597I36+w==} + '@rsbuild/plugin-react@1.4.1': + resolution: {integrity: sha512-kahvnfRPQTsG0tReR6h0KuVfyjKJfpv/PoU5qW5SDkON7vmbGn8Jx7l3fI+yU3lR/7qDiAO19QnNjkqxPsFT3Q==} peerDependencies: '@rsbuild/core': 1.x - '@rspack/binding-darwin-arm64@1.5.5': - resolution: {integrity: sha512-Kg3ywEZHLX+aROfTQ5tMOv+Ud+8b4jk8ruUgsi0W8oBkEkR5xBdhFa9vcf6pzy+gfoLCnEI68U9i8ttm+G0csA==} + '@rspack/binding-darwin-arm64@1.5.7': + resolution: {integrity: sha512-prQ/vgJxOPdlYiR4gVeOEKofTCEOu70JQIQApqFnw8lKM7rd9ag8ogDNqmc2L/GGXGHLAqds28oeKXRlzYf7+Q==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.5.5': - resolution: {integrity: sha512-uoGTYnlYW8m47yiDCKvXOehhAOH12wlePJq4sbUbBoHmG07vbDw7fUqnvy2k8319NTVEpMJWGoKyisgI09/uMQ==} + '@rspack/binding-darwin-x64@1.5.7': + resolution: {integrity: sha512-FPqiWSbEEerqfJrGnYe68svvl6NyuQFAb3qqFe/Q0MqFhBYmAZwa0R2/ylugCdgFLZxmkFuWqpDgItpvJb/E3Q==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.5.5': - resolution: {integrity: sha512-KgVN3TeUJ3iNwwOX3JGY4arvoLHX94eItJ4TeOSyetRiSJUrQI0evP16i5kIh+n+p7mVnXmfUS944Gl+uNsJmg==} + '@rspack/binding-linux-arm64-gnu@1.5.7': + resolution: {integrity: sha512-fwy+NY+0CHrZqqzDrjPBlTuK53W4dG5EEg/QQFAE7KVM+okRqPk8tg45bJ5628rCNLe13GDmPIE107LmgspNqA==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.5.5': - resolution: {integrity: sha512-1gKthlCQinXtWar6Hl9Il6BQ/NgYBH0NVuUsjjf85ejD/cTPQENKyIpGvVa1rSIHSfnG/XujUbruHAeY9mEHCA==} + '@rspack/binding-linux-arm64-musl@1.5.7': + resolution: {integrity: sha512-576u/0F4ZUzpHckFme4vQ0sSxjE+B/gVP4tNJ+P6bJaclXLFXV4icbjTUQwOIgmA1EQz/JFeKGGJZ4p6mowpBQ==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.5.5': - resolution: {integrity: sha512-haPFg4M9GwpSI5g9BQhKUNdzCKDvFexIUkLiAHBjFU9iWQTEcI9VfYPixestOIwzUv7E34rHM+jAsmRGWdgmXw==} + '@rspack/binding-linux-x64-gnu@1.5.7': + resolution: {integrity: sha512-brSHywXjjeuWkv0ywgxS4VgDgquarEb4XGr+eXhOaPcc8x2rNefyc4hErplrI7+oxPXVuGK5VE4ZH5bj3Yknvg==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.5.5': - resolution: {integrity: sha512-oUny56JEkCZvIu4n8/P7IPLPNtJnL89EDhxHINH87XLBY3OOgo8JHELR11Zj9SFWiGNsRcLqi+Q78tWa0ligBQ==} + '@rspack/binding-linux-x64-musl@1.5.7': + resolution: {integrity: sha512-HcS0DzbLlWCwVfYcWMbTgILh4GELD6m4CZoFEhIr4fJCJi0p8NgLYycy1QtDhaUjs8TKalmyMwHrJwGnD141JA==} cpu: [x64] os: [linux] - '@rspack/binding-wasm32-wasi@1.5.5': - resolution: {integrity: sha512-tRgxBgIXaBKBH/0KlwvyqbIMqQrg8jKOyFOEQseEE7Oqs2M9KkJ7Vp5QN11u3NvZ9nz5GbZxmVGBMkdj9Gth1w==} + '@rspack/binding-wasm32-wasi@1.5.7': + resolution: {integrity: sha512-uTRUEuK+TVlvUBSWXVoxD+6JTN+rvtRqVlO+A7I7VnOY7p9Rpvk1sXcHtEwg/XuDCq4DALnvlzbFLh7G3zILvw==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.5.5': - resolution: {integrity: sha512-wGWd2yluoFdQgtkIbny6FoHnzahTk+o9RzrptjeS1u/NV1lKrWzmWhwZojMGOUqPiaukZKaziOEo7gpRn2XbEQ==} + '@rspack/binding-win32-arm64-msvc@1.5.7': + resolution: {integrity: sha512-dFHrXRUmMTkxEn/Uw2RLbIckKfi0Zmn2NnEXwedWdyRgZW4Vhk7+VBxM22O/CHZmAGt12Ol25yTuVv58ANLEKA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.5.5': - resolution: {integrity: sha512-Ikml8AQkzjPCG24vTO4pG2bpJ8vp93jVEgo9X9uYjO2vQbIp5QSOmeZOTM7tXCf8AfTfHEF/yAdE/pR/+tXXGQ==} + '@rspack/binding-win32-ia32-msvc@1.5.7': + resolution: {integrity: sha512-PNtnOIUzE9p/Fbl6l/1Zs7bhn8ccTlaHTgZgQq0sO/QxjLlbU0WPjRl+YLo27cAningSOAbANuYlN8vAcuimrw==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.5.5': - resolution: {integrity: sha512-m2059ms0i/GIQGWTlZ5GI6SWpuMFAPMsWlhXLk2LZRIydhi+N/YPkmc33lFRTlDA3QpKDCvowvCvIIA7g6WSlg==} + '@rspack/binding-win32-x64-msvc@1.5.7': + resolution: {integrity: sha512-22gTaYkwaIUvyXRxf1RVnFTJPqF2hD1pgAQNBIz7kYybe6vvSZ6KInW4WyG4vjYKrJg/cbS4QvtlLn0lYXrdIw==} cpu: [x64] os: [win32] - '@rspack/binding@1.5.5': - resolution: {integrity: sha512-JkB943uBU0lABnKG/jdO+gg3/eeO9CEQMR/1dL6jSU9GTxaNf3XIVc05RhRC7qoVsiXuhSMMFxWyV0hyHxp2bA==} + '@rspack/binding@1.5.7': + resolution: {integrity: sha512-/fFrf4Yu8Tc0yXBw33g2++turdld1MDphLiLg05bx92fOVI1MafocwPvm35e3y1z7CtlQJ2Bmvzhi6APJShKxg==} - '@rspack/core@1.5.5': - resolution: {integrity: sha512-AOIuMktK6X/xHAjJ/0QJ2kbSkILXj641GCPE+EOfWO27ODA8fHPArKbyz5AVGVePV3aUfEo2VFcsNzP67VBEPA==} + '@rspack/core@1.5.7': + resolution: {integrity: sha512-57ey3wafK/g+B9zLdCiIrX3eTK8rFEM3yvxBUb2ro3ZtAaCGm4y7xERcXZJNn4D01pjzzCJ/u1ezpQmsZYLP7A==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -2651,26 +2739,26 @@ packages: '@rushstack/ts-command-line@5.0.3': resolution: {integrity: sha512-bgPhQEqLVv/2hwKLYv/XvsTWNZ9B/+X1zJ7WgQE9rO5oiLzrOZvkIW4pk13yOQBhHyjcND5qMOa6p83t+Z66iQ==} - '@storybook/addon-docs@9.1.7': - resolution: {integrity: sha512-ZwD25QBWOeZS2T/JSHl6iqMx7w2yCxREnZIQaLpyOoGl2mRUk2NHcsGfdXQ4sL0zd7YT7CTfzH5tbwQfLIiEog==} + '@storybook/addon-docs@9.1.8': + resolution: {integrity: sha512-GVrNVEdNRRo6r1hawfgyy6x+HJqPx1oOHm0U0wz0SGAxgS/Xh6SQVZL+RDoh7NpXkNi1GbezVlT931UsHQTyvQ==} peerDependencies: - storybook: ^9.1.7 + storybook: ^9.1.8 - '@storybook/addon-onboarding@9.1.7': - resolution: {integrity: sha512-GCD/5ichFZWlLzEy7YWGL0G2DMZMDU1HXOFODGOgVP7bL3Y7x2eC4tmLN0umzZY2PL5o5go2P2htYhvQI7cLLw==} + '@storybook/addon-onboarding@9.1.8': + resolution: {integrity: sha512-fydnYy2NZ2ZuoIncsN6PdeRUJthFyR8LZchFFrSqy/s9ahWjQ+XRrDevcm9Y6w4d6qTwsgRC3CDPRIJLj/9dgg==} peerDependencies: - storybook: ^9.1.7 + storybook: ^9.1.8 - '@storybook/builder-vite@9.1.7': - resolution: {integrity: sha512-9nflIekC220TSKprN/dDW+tAZSxwkRaq0C6mc5UCgXKjgq4oXditpdwrAcoH0v91RC/bN7LW9Xu5IbvnLNiqLQ==} + '@storybook/builder-vite@9.1.8': + resolution: {integrity: sha512-JjvBag0nM1N51O3VF5++op9Ly5OC8Q+y4PrWLgi2dKhMxJFs8fD9D4PeI/v41PUiQcI0suQxN9BoYoKn2QxUZw==} peerDependencies: - storybook: ^9.1.7 + storybook: ^9.1.8 vite: ^6 - '@storybook/csf-plugin@9.1.7': - resolution: {integrity: sha512-xrPKWt16hBXvyHliuIEzPLvHdRbEe5Oubk/NIPibFVG4cxhEmNxMeHo3uFua3wgtEXyp4UErRWteviNjYSzjUA==} + '@storybook/csf-plugin@9.1.8': + resolution: {integrity: sha512-KnrXPz87bn+8ZGkzFEBc7TT5HkWpR1Xz7ojxPclSvkKxTfzazuaw0JlOQMzJoI1+wHXDAIw/4MIsO8HEiaWyfQ==} peerDependencies: - storybook: ^9.1.7 + storybook: ^9.1.8 '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -2682,29 +2770,29 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - '@storybook/react-dom-shim@9.1.7': - resolution: {integrity: sha512-ktjCuZ42g3TAF6nMiSdLbJu/EcvC039hYrmVltKpfF7krf+0xHkK3dCuYqSBp5nv3fS+IemrqmzJwREu5BJLuQ==} + '@storybook/react-dom-shim@9.1.8': + resolution: {integrity: sha512-OepccjVZh/KQugTH8/RL2CIyf1g5Lwc5ESC8x8BH3iuYc82WMQBwMJzRI5EofQdirau63NGrqkWCgQASoVreEA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.7 + storybook: ^9.1.8 - '@storybook/react-vite@9.1.7': - resolution: {integrity: sha512-552jMY5eKnP/rWKpcEjyE4ppyGmO+r9IoYNIJQBWA4DpXAQ8NjhsygCFhdDPFGfCxx7+KmfRgOBPcXeywWNgtQ==} + '@storybook/react-vite@9.1.8': + resolution: {integrity: sha512-DIxp76vcelyFOUJupeQEIHXDrSPP6KDXj6Z+Z9thS1HH7JY+OdGtcMLy4fbiD77Zyc8TV9RRZ1D33z2Ot/v9Vw==} engines: {node: '>=20.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.7 + storybook: ^9.1.8 vite: ^6 - '@storybook/react@9.1.7': - resolution: {integrity: sha512-GxuA2Eh3LlkEF4HHDKFGP+bqQ1+7VtABVacSXukMu82WV4VAOXhhHEDII8R9AVl2Fbs/iPJnNVj06wnkDeUZhA==} + '@storybook/react@9.1.8': + resolution: {integrity: sha512-EULkwHroJ4IDYcjIBj9VpGhaZ9E5b8LI84hlfBkJ9rnK44a/GrK1yFRIusukO58qTJSh2Y7zfAFKNuiaWh3Sfw==} engines: {node: '>=20.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.7 + storybook: ^9.1.8 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: @@ -2713,11 +2801,11 @@ packages: '@stylexjs/babel-plugin@0.11.1': resolution: {integrity: sha512-hQ02pz6VLjr/yC21NyVu5Lv1djQNiYkUI/vGAawv/TYly8SGI/N2ba7ea6E7vtkdE5K4idh8o3EhY2IA28xzsg==} - '@stylexjs/babel-plugin@0.15.4': - resolution: {integrity: sha512-QfL2j3VCU+KTyIEoPBhdwq8KW1Gv0FVvwSzfjjdQ0J2Ei/DJBx2AXVsDYzBcVw0WI+KsEfQUHFZ1Fk2t1U/9Iw==} + '@stylexjs/babel-plugin@0.16.0': + resolution: {integrity: sha512-GCmhsrjJtsa222e+iiySXtQhWUVvVxkVehjeghvl0z+ibMuJhaeUUpXRWqsR8vn5BWHmuA1QJoFng1hYqlV+Kw==} - '@stylexjs/eslint-plugin@0.15.4': - resolution: {integrity: sha512-P33h+QdudEI3oSzIvVXhNHeAfbUzG4xGYW7tt4hdMizAl+bwIj58+8TK7fxQPV01yBMMNGrBlA/aCmzfQOP8Gw==} + '@stylexjs/eslint-plugin@0.16.0': + resolution: {integrity: sha512-Ci9qzHQFJbcCnsV9qMoYP8f4DoVpAeArIYBMu/HCo9OL9J0DP2KN1pJGXAje34DXRAzDxT1qujuKgX7fTCyU8Q==} '@stylexjs/nextjs-plugin@0.11.1': resolution: {integrity: sha512-42mJGw9W3i9cRrChv25JCMGvWhCVVcmt1EqgOgRMy3XTH45Ehd9TkwDiVmhknvSEDKxw+ib3AiSPjZ1ehZ9d6A==} @@ -2736,8 +2824,8 @@ packages: '@stylexjs/stylex@0.11.1': resolution: {integrity: sha512-1OofsiCP2DYV+Cw/iIuHYTAJRy34TtxQt0FDuQGTnNH915hb6NkPmX6iPa++9t4KP3HWR9oVRmAHkpP58BIYbw==} - '@stylexjs/stylex@0.15.4': - resolution: {integrity: sha512-UQT75p3qxwCIsVpH87YfgHvzWGDyMbQcFKhguj4noBZCc+npEh5h7J4BIHMgrxpyJa9mislLfXv+M5TmP2YH5A==} + '@stylexjs/stylex@0.16.0': + resolution: {integrity: sha512-IWwucXiK8LN9i6DenRS+aAJp9zLez0/2NGu5rkobMuoReCrhjnRLwJGzSxIBPkcGSitVyg5f7IRDNzr4RyuGCw==} '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -2918,6 +3006,10 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/eslint__js@9.14.0': + resolution: {integrity: sha512-s0jepCjOJWB/GKcuba4jISaVpBudw3ClXJ3fUK4tugChUMQsp6kSwuA8Dcx6wFd/JsJqcY8n4rEpa5RTHs5ypA==} + deprecated: This is a stub types definition. @eslint/js provides its own type definitions, so you do not need this installed. + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -2988,6 +3080,9 @@ packages: '@types/react@19.1.13': resolution: {integrity: sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==} + '@types/react@19.1.15': + resolution: {integrity: sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==} + '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -3024,22 +3119,51 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.44.1': + resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.44.0': resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.44.1': + resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/rule-tester@8.44.1': + resolution: {integrity: sha512-yzqJhTLrbXCdEZhO9cuasGLZixWWx11/uFn6Leuu0p1PeW97wDy9JhiaAOl45TFrv5f67qwWdrzM5PMIuIu4vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/scope-manager@8.44.0': resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.44.1': + resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.44.0': resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.44.1': + resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.44.0': resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3051,12 +3175,22 @@ packages: resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.44.1': + resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.44.0': resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.44.1': + resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.44.0': resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3064,10 +3198,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.44.1': + resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.44.0': resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.44.1': + resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -3188,8 +3333,8 @@ packages: peerDependencies: webpack: ^4.30.0 || ^5.20.2 - '@vitejs/plugin-react@5.0.3': - resolution: {integrity: sha512-PFVHhosKkofGH0Yzrw1BipSedTH68BFF8ZWy1kfUpCtJcouXXY0+racG8sExw7hw0HoX36813ga5o3LTWZ4FUg==} + '@vitejs/plugin-react@5.0.4': + resolution: {integrity: sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^6 @@ -3850,10 +3995,6 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -4275,8 +4416,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-next@15.5.3: - resolution: {integrity: sha512-e6j+QhQFOr5pfsc8VJbuTD9xTXJaRvMHYjEeLPA2pFkheNlgPLCkxdvhxhfuM4KGcqSZj2qEnpHisdTVs3BxuQ==} + eslint-config-next@15.5.4: + resolution: {integrity: sha512-BzgVVuT3kfJes8i2GHenC1SRJ+W3BTML11lAOYFOOPzrk2xp66jBOAGEFRw+3LkYCln5UzvFsLhojrshb5Zfaw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -4353,6 +4494,12 @@ packages: peerDependencies: eslint: '*' + eslint-plugin-eslint-plugin@7.0.0: + resolution: {integrity: sha512-EgiW9zf4PbqA+yN9T6Z8bHx46+fWtAIXFrYkL4nSTnI84LnTKmzjh+cIJaVAyFVZveKUSG8LcVe1suGG78qZPw==} + engines: {node: ^20.19.0 || ^22.13.1 || >=24.0.0} + peerDependencies: + eslint: '>=9.0.0' + eslint-plugin-import@2.32.0: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} @@ -4412,12 +4559,12 @@ packages: peerDependencies: eslint: '>=5.0.0' - eslint-plugin-storybook@9.1.7: - resolution: {integrity: sha512-Bq9VNutFGX7T0jw7luWt5eEyRFInIsE0+FSaXdayqBNW6NPaGuE+hoBhhTowvohNqEqn5DXwIkPHiI1GhONE9g==} + eslint-plugin-storybook@9.1.8: + resolution: {integrity: sha512-mEn5EVc7DAEvuwKMqUrIYUFZQJiQD3i5egLi1UJERQm91mDOMr5RdC4hjUF3tNE+WxQYD7QzH2j1qf36ML7V3g==} engines: {node: '>=20.0.0'} peerDependencies: eslint: '>=8' - storybook: ^9.1.7 + storybook: ^9.1.8 eslint-plugin-unused-imports@4.2.0: resolution: {integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==} @@ -4737,8 +4884,8 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - happy-dom@18.0.1: - resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==} + happy-dom@19.0.1: + resolution: {integrity: sha512-Rr1H/mvgdCGoIq+jjaGxE/y+ZB+O2DhUBXk9vqoRVc5zsZ/Ne6Fssb8fXaAjPFh3Ajmbx+kfDDf946PHiUbC6Q==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -5100,6 +5247,10 @@ packages: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true + jiti@2.6.0: + resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -5326,10 +5477,6 @@ packages: resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -5337,8 +5484,8 @@ packages: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@16.1.6: - resolution: {integrity: sha512-U4kuulU3CKIytlkLlaHcGgKscNfJPNTiDF2avIUGFCv7K95/DCYQ7Ra62ydeRWmgQGg9zJYw2dzdbztwJlqrow==} + lint-staged@16.2.3: + resolution: {integrity: sha512-1OnJEESB9zZqsp61XHH2fvpS1es3hRCxMplF/AJUDa8Ho8VrscYDIuxGrj3m8KPXbcWZ8fT9XTMUhEQmOVKpKw==} engines: {node: '>=20.17'} hasBin: true @@ -5749,6 +5896,27 @@ packages: sass: optional: true + next@15.5.4: + resolution: {integrity: sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + node-eval@2.0.0: resolution: {integrity: sha512-Ap+L9HznXAVeJj3TJ1op6M6bg5xtTq8L5CU/PJxtkhea/DrIxdTknGKIECKd/v/Lgql95iuMAYvIzBNd0pmcMg==} engines: {node: '>= 4'} @@ -6527,8 +6695,8 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - storybook@9.1.7: - resolution: {integrity: sha512-X8YSQMNuqV9DklQLZH6mLKpDn15Z5tuUUTAIYsiGqx5BwsjtXnv5K04fXgl3jqTZyUauzV/ii8KdT04NVLtMwQ==} + storybook@9.1.8: + resolution: {integrity: sha512-/iP+DvieJ6Mnixy4PFY/KXnhsg/IHIDlTbZqly3EDbveuhsCuIUELfGnj+QSRGf9C6v/f4sZf9sZ3r80ZnKuEA==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -8450,9 +8618,9 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -8643,12 +8811,12 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: glob: 10.4.5 magic-string: 0.30.19 react-docgen-typescript: 2.4.0(typescript@5.9.2) - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) optionalDependencies: typescript: 5.9.2 @@ -8676,10 +8844,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@kuma-ui/babel-plugin@1.2.3(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@kuma-ui/babel-plugin@1.2.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': dependencies: '@babel/core': 7.28.4 - '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 transitivePeerDependencies: @@ -8688,11 +8856,11 @@ snapshots: - react - supports-color - '@kuma-ui/compiler@1.3.3(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@kuma-ui/compiler@1.3.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': dependencies: '@babel/core': 7.28.4 - '@kuma-ui/babel-plugin': 1.2.3(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) - '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/babel-plugin': 1.2.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 '@kuma-ui/wasm': 1.0.3 @@ -8703,7 +8871,7 @@ snapshots: - react - supports-color - '@kuma-ui/core@1.5.9(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@kuma-ui/core@1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': dependencies: '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 @@ -8712,18 +8880,18 @@ snapshots: stylis: 4.3.6 optionalDependencies: '@types/react': 19.1.13 - next: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@kuma-ui/next-plugin@1.3.3(@babel/core@7.28.4)(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3)': + '@kuma-ui/next-plugin@1.3.3(@babel/core@7.28.4)(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3)': dependencies: '@babel/preset-env': 7.28.3(@babel/core@7.28.4) '@babel/preset-react': 7.27.1(@babel/core@7.28.4) '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) - '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) - '@kuma-ui/webpack-plugin': 1.4.3(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3) + '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/webpack-plugin': 1.4.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3) babel-loader: 9.2.1(@babel/core@7.28.4)(webpack@5.101.3) browserslist: 4.21.5 - next: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 webpack: 5.101.3 optionalDependencies: @@ -8743,9 +8911,9 @@ snapshots: '@kuma-ui/wasm@1.0.3': {} - '@kuma-ui/webpack-plugin@1.4.3(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3)': + '@kuma-ui/webpack-plugin@1.4.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3)': dependencies: - '@kuma-ui/compiler': 1.3.3(@types/react@19.1.13)(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/compiler': 1.3.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 esbuild: 0.18.20 @@ -8818,6 +8986,12 @@ snapshots: '@types/react': 19.1.13 react: 19.1.1 + '@mdx-js/react@3.1.1(@types/react@19.1.15)(react@19.1.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.1.15 + react: 19.1.1 + '@microsoft/api-extractor-model@7.30.7(@types/node@24.5.2)': dependencies: '@microsoft/tsdoc': 0.15.1 @@ -8973,11 +9147,13 @@ snapshots: '@next/env@15.5.3': {} - '@next/eslint-plugin-next@15.5.3': + '@next/env@15.5.4': {} + + '@next/eslint-plugin-next@15.5.4': dependencies: fast-glob: 3.3.1 - '@next/mdx@15.5.3(@mdx-js/loader@3.1.1(webpack@5.101.3))(@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1))': + '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.101.3))(@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1))': dependencies: source-map: 0.7.6 optionalDependencies: @@ -8987,27 +9163,51 @@ snapshots: '@next/swc-darwin-arm64@15.5.3': optional: true + '@next/swc-darwin-arm64@15.5.4': + optional: true + '@next/swc-darwin-x64@15.5.3': optional: true + '@next/swc-darwin-x64@15.5.4': + optional: true + '@next/swc-linux-arm64-gnu@15.5.3': optional: true + '@next/swc-linux-arm64-gnu@15.5.4': + optional: true + '@next/swc-linux-arm64-musl@15.5.3': optional: true + '@next/swc-linux-arm64-musl@15.5.4': + optional: true + '@next/swc-linux-x64-gnu@15.5.3': optional: true + '@next/swc-linux-x64-gnu@15.5.4': + optional: true + '@next/swc-linux-x64-musl@15.5.3': optional: true + '@next/swc-linux-x64-musl@15.5.4': + optional: true + '@next/swc-win32-arm64-msvc@15.5.3': optional: true + '@next/swc-win32-arm64-msvc@15.5.4': + optional: true + '@next/swc-win32-x64-msvc@15.5.3': optional: true + '@next/swc-win32-x64-msvc@15.5.4': + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -9074,27 +9274,27 @@ snapshots: dependencies: which: 4.0.0 - '@pandacss/config@1.3.1': + '@pandacss/config@1.4.0': dependencies: - '@pandacss/logger': 1.3.1 - '@pandacss/preset-base': 1.3.1 - '@pandacss/preset-panda': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/logger': 1.4.0 + '@pandacss/preset-base': 1.4.0 + '@pandacss/preset-panda': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/types': 1.4.0 bundle-n-require: 1.1.2 escalade: 3.1.2 merge-anything: 5.1.7 microdiff: 1.3.2 typescript: 5.8.3 - '@pandacss/core@1.3.1': + '@pandacss/core@1.4.0': dependencies: '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.4.49) - '@pandacss/is-valid-prop': 1.3.1 - '@pandacss/logger': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/token-dictionary': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/is-valid-prop': 1.4.0 + '@pandacss/logger': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/token-dictionary': 1.4.0 + '@pandacss/types': 1.4.0 browserslist: 4.23.3 hookable: 5.5.3 lightningcss: 1.25.1 @@ -9110,39 +9310,39 @@ snapshots: postcss-selector-parser: 6.1.2 ts-pattern: 5.8.0 - '@pandacss/dev@1.3.1(typescript@5.9.2)': + '@pandacss/dev@1.4.0(typescript@5.9.2)': dependencies: '@clack/prompts': 0.9.1 - '@pandacss/config': 1.3.1 - '@pandacss/logger': 1.3.1 - '@pandacss/node': 1.3.1(typescript@5.9.2) - '@pandacss/postcss': 1.3.1(typescript@5.9.2) - '@pandacss/preset-panda': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/token-dictionary': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/config': 1.4.0 + '@pandacss/logger': 1.4.0 + '@pandacss/node': 1.4.0(typescript@5.9.2) + '@pandacss/postcss': 1.4.0(typescript@5.9.2) + '@pandacss/preset-panda': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/token-dictionary': 1.4.0 + '@pandacss/types': 1.4.0 cac: 6.7.14 transitivePeerDependencies: - jsdom - typescript - '@pandacss/extractor@1.3.1(typescript@5.9.2)': + '@pandacss/extractor@1.4.0(typescript@5.9.2)': dependencies: - '@pandacss/shared': 1.3.1 + '@pandacss/shared': 1.4.0 ts-evaluator: 1.2.0(typescript@5.9.2) ts-morph: 26.0.0 transitivePeerDependencies: - jsdom - typescript - '@pandacss/generator@1.3.1': + '@pandacss/generator@1.4.0': dependencies: - '@pandacss/core': 1.3.1 - '@pandacss/is-valid-prop': 1.3.1 - '@pandacss/logger': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/token-dictionary': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/core': 1.4.0 + '@pandacss/is-valid-prop': 1.4.0 + '@pandacss/logger': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/token-dictionary': 1.4.0 + '@pandacss/types': 1.4.0 javascript-stringify: 2.1.0 outdent: 0.8.0 pluralize: 8.0.0 @@ -9151,24 +9351,24 @@ snapshots: '@pandacss/is-valid-prop@0.54.0': {} - '@pandacss/is-valid-prop@1.3.1': {} + '@pandacss/is-valid-prop@1.4.0': {} - '@pandacss/logger@1.3.1': + '@pandacss/logger@1.4.0': dependencies: - '@pandacss/types': 1.3.1 + '@pandacss/types': 1.4.0 kleur: 4.1.5 - '@pandacss/node@1.3.1(typescript@5.9.2)': - dependencies: - '@pandacss/config': 1.3.1 - '@pandacss/core': 1.3.1 - '@pandacss/generator': 1.3.1 - '@pandacss/logger': 1.3.1 - '@pandacss/parser': 1.3.1(typescript@5.9.2) - '@pandacss/reporter': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/token-dictionary': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/node@1.4.0(typescript@5.9.2)': + dependencies: + '@pandacss/config': 1.4.0 + '@pandacss/core': 1.4.0 + '@pandacss/generator': 1.4.0 + '@pandacss/logger': 1.4.0 + '@pandacss/parser': 1.4.0(typescript@5.9.2) + '@pandacss/reporter': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/token-dictionary': 1.4.0 + '@pandacss/types': 1.4.0 browserslist: 4.23.3 chokidar: 4.0.3 fast-glob: 3.3.3 @@ -9192,14 +9392,14 @@ snapshots: - jsdom - typescript - '@pandacss/parser@1.3.1(typescript@5.9.2)': + '@pandacss/parser@1.4.0(typescript@5.9.2)': dependencies: - '@pandacss/config': 1.3.1 - '@pandacss/core': 1.3.1 - '@pandacss/extractor': 1.3.1(typescript@5.9.2) - '@pandacss/logger': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/config': 1.4.0 + '@pandacss/core': 1.4.0 + '@pandacss/extractor': 1.4.0(typescript@5.9.2) + '@pandacss/logger': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/types': 1.4.0 '@vue/compiler-sfc': 3.4.19 magic-string: 0.30.17 ts-morph: 26.0.0 @@ -9208,42 +9408,42 @@ snapshots: - jsdom - typescript - '@pandacss/postcss@1.3.1(typescript@5.9.2)': + '@pandacss/postcss@1.4.0(typescript@5.9.2)': dependencies: - '@pandacss/node': 1.3.1(typescript@5.9.2) + '@pandacss/node': 1.4.0(typescript@5.9.2) postcss: 8.4.49 transitivePeerDependencies: - jsdom - typescript - '@pandacss/preset-base@1.3.1': + '@pandacss/preset-base@1.4.0': dependencies: - '@pandacss/types': 1.3.1 + '@pandacss/types': 1.4.0 - '@pandacss/preset-panda@1.3.1': + '@pandacss/preset-panda@1.4.0': dependencies: - '@pandacss/types': 1.3.1 + '@pandacss/types': 1.4.0 - '@pandacss/reporter@1.3.1': + '@pandacss/reporter@1.4.0': dependencies: - '@pandacss/core': 1.3.1 - '@pandacss/generator': 1.3.1 - '@pandacss/logger': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/core': 1.4.0 + '@pandacss/generator': 1.4.0 + '@pandacss/logger': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/types': 1.4.0 table: 6.9.0 wordwrapjs: 5.1.0 - '@pandacss/shared@1.3.1': {} + '@pandacss/shared@1.4.0': {} - '@pandacss/token-dictionary@1.3.1': + '@pandacss/token-dictionary@1.4.0': dependencies: - '@pandacss/logger': 1.3.1 - '@pandacss/shared': 1.3.1 - '@pandacss/types': 1.3.1 + '@pandacss/logger': 1.4.0 + '@pandacss/shared': 1.4.0 + '@pandacss/types': 1.4.0 ts-pattern: 5.8.0 - '@pandacss/types@1.3.1': {} + '@pandacss/types@1.4.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -9252,7 +9452,7 @@ snapshots: '@popperjs/core@2.11.8': {} - '@rolldown/pluginutils@1.0.0-beta.35': {} + '@rolldown/pluginutils@1.0.0-beta.38': {} '@rollup/pluginutils@5.3.0(rollup@4.51.0)': dependencies: @@ -9325,71 +9525,71 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.51.0': optional: true - '@rsbuild/core@1.5.10': + '@rsbuild/core@1.5.12': dependencies: - '@rspack/core': 1.5.5(@swc/helpers@0.5.17) + '@rspack/core': 1.5.7(@swc/helpers@0.5.17) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 core-js: 3.45.1 - jiti: 2.5.1 + jiti: 2.6.0 - '@rsbuild/plugin-react@1.4.0(@rsbuild/core@1.5.10)': + '@rsbuild/plugin-react@1.4.1(@rsbuild/core@1.5.12)': dependencies: - '@rsbuild/core': 1.5.10 + '@rsbuild/core': 1.5.12 '@rspack/plugin-react-refresh': 1.5.1(react-refresh@0.17.0) react-refresh: 0.17.0 transitivePeerDependencies: - webpack-hot-middleware - '@rspack/binding-darwin-arm64@1.5.5': + '@rspack/binding-darwin-arm64@1.5.7': optional: true - '@rspack/binding-darwin-x64@1.5.5': + '@rspack/binding-darwin-x64@1.5.7': optional: true - '@rspack/binding-linux-arm64-gnu@1.5.5': + '@rspack/binding-linux-arm64-gnu@1.5.7': optional: true - '@rspack/binding-linux-arm64-musl@1.5.5': + '@rspack/binding-linux-arm64-musl@1.5.7': optional: true - '@rspack/binding-linux-x64-gnu@1.5.5': + '@rspack/binding-linux-x64-gnu@1.5.7': optional: true - '@rspack/binding-linux-x64-musl@1.5.5': + '@rspack/binding-linux-x64-musl@1.5.7': optional: true - '@rspack/binding-wasm32-wasi@1.5.5': + '@rspack/binding-wasm32-wasi@1.5.7': dependencies: '@napi-rs/wasm-runtime': 1.0.5 optional: true - '@rspack/binding-win32-arm64-msvc@1.5.5': + '@rspack/binding-win32-arm64-msvc@1.5.7': optional: true - '@rspack/binding-win32-ia32-msvc@1.5.5': + '@rspack/binding-win32-ia32-msvc@1.5.7': optional: true - '@rspack/binding-win32-x64-msvc@1.5.5': + '@rspack/binding-win32-x64-msvc@1.5.7': optional: true - '@rspack/binding@1.5.5': + '@rspack/binding@1.5.7': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.5.5 - '@rspack/binding-darwin-x64': 1.5.5 - '@rspack/binding-linux-arm64-gnu': 1.5.5 - '@rspack/binding-linux-arm64-musl': 1.5.5 - '@rspack/binding-linux-x64-gnu': 1.5.5 - '@rspack/binding-linux-x64-musl': 1.5.5 - '@rspack/binding-wasm32-wasi': 1.5.5 - '@rspack/binding-win32-arm64-msvc': 1.5.5 - '@rspack/binding-win32-ia32-msvc': 1.5.5 - '@rspack/binding-win32-x64-msvc': 1.5.5 - - '@rspack/core@1.5.5(@swc/helpers@0.5.17)': + '@rspack/binding-darwin-arm64': 1.5.7 + '@rspack/binding-darwin-x64': 1.5.7 + '@rspack/binding-linux-arm64-gnu': 1.5.7 + '@rspack/binding-linux-arm64-musl': 1.5.7 + '@rspack/binding-linux-x64-gnu': 1.5.7 + '@rspack/binding-linux-x64-musl': 1.5.7 + '@rspack/binding-wasm32-wasi': 1.5.7 + '@rspack/binding-win32-arm64-msvc': 1.5.7 + '@rspack/binding-win32-ia32-msvc': 1.5.7 + '@rspack/binding-win32-x64-msvc': 1.5.7 + + '@rspack/core@1.5.7(@swc/helpers@0.5.17)': dependencies: '@module-federation/runtime-tools': 0.18.0 - '@rspack/binding': 1.5.5 + '@rspack/binding': 1.5.7 '@rspack/lite-tapable': 1.0.1 optionalDependencies: '@swc/helpers': 0.5.17 @@ -9440,33 +9640,33 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@storybook/addon-docs@9.1.7(@types/react@19.1.13)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/addon-docs@9.1.8(@types/react@19.1.15)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - '@mdx-js/react': 3.1.1(@types/react@19.1.13)(react@19.1.1) - '@storybook/csf-plugin': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@mdx-js/react': 3.1.1(@types/react@19.1.15)(react@19.1.1) + '@storybook/csf-plugin': 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/icons': 1.6.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@storybook/react-dom-shim': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/react-dom-shim': 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-onboarding@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/addon-onboarding@9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/builder-vite@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@storybook/builder-vite@9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: - '@storybook/csf-plugin': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/csf-plugin': 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) - '@storybook/csf-plugin@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/csf-plugin@9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -9476,39 +9676,39 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/react-dom-shim@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/react-dom-shim@9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/react-vite@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@storybook/react-vite@9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@rollup/pluginutils': 5.3.0(rollup@4.51.0) - '@storybook/builder-vite': 9.1.7(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/react': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) + '@storybook/builder-vite': 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/react': 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) find-up: 7.0.0 magic-string: 0.30.19 react: 19.1.1 react-docgen: 8.0.1 react-dom: 19.1.1(react@19.1.1) resolve: 1.22.10 - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) tsconfig-paths: 4.2.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)': + '@storybook/react@9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/react-dom-shim': 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) optionalDependencies: typescript: 5.9.2 @@ -9524,31 +9724,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@stylexjs/babel-plugin@0.15.4': + '@stylexjs/babel-plugin@0.16.0': dependencies: '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/traverse': 7.28.4 '@babel/types': 7.28.4 '@dual-bundle/import-meta-resolve': 4.2.1 - '@stylexjs/stylex': 0.15.4 + '@stylexjs/stylex': 0.16.0 postcss-value-parser: 4.2.0 transitivePeerDependencies: - supports-color - '@stylexjs/eslint-plugin@0.15.4': + '@stylexjs/eslint-plugin@0.16.0': dependencies: css-shorthand-expand: 1.2.0 micromatch: 4.0.8 + postcss-value-parser: 4.2.0 - '@stylexjs/nextjs-plugin@0.11.1(next@15.5.3(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))': + '@stylexjs/nextjs-plugin@0.11.1(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) '@stylexjs/babel-plugin': 0.11.1 - next: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) transitivePeerDependencies: - supports-color @@ -9566,7 +9767,7 @@ snapshots: invariant: 2.2.4 styleq: 0.2.1 - '@stylexjs/stylex@0.15.4': + '@stylexjs/stylex@0.16.0': dependencies: css-mediaquery: 0.1.2 invariant: 2.2.4 @@ -9652,10 +9853,10 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.13 - '@tanstack/eslint-plugin-query@5.89.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@tanstack/eslint-plugin-query@5.89.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) transitivePeerDependencies: - supports-color - typescript @@ -9680,15 +9881,15 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.13 - '@types/react-dom': 19.1.9(@types/react@19.1.13) + '@types/react': 19.1.15 + '@types/react-dom': 19.1.9(@types/react@19.1.15) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: @@ -9765,6 +9966,10 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + '@types/eslint__js@9.14.0': + dependencies: + '@eslint/js': 9.36.0 + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 @@ -9817,13 +10022,17 @@ snapshots: dependencies: '@types/react': 19.1.13 + '@types/react-dom@19.1.9(@types/react@19.1.15)': + dependencies: + '@types/react': 19.1.15 + '@types/react-syntax-highlighter@15.5.13': dependencies: '@types/react': 19.1.13 '@types/react-test-renderer@19.1.0': dependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.15 '@types/react-transition-group@4.4.12(@types/react@19.1.13)': dependencies: @@ -9833,6 +10042,10 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/react@19.1.15': + dependencies: + csstype: 3.1.3 + '@types/resolve@1.20.6': {} '@types/stylis@4.2.7': {} @@ -9856,15 +10069,15 @@ snapshots: '@types/whatwg-mimetype@3.0.2': {} - '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.44.0 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -9873,14 +10086,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 + eslint: 9.36.0(jiti@2.6.0) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + optional: true + + '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.44.0 '@typescript-eslint/types': 8.44.0 '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.3 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.1 + debug: 4.4.3 + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -9888,28 +10131,60 @@ snapshots: '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/types': 8.44.1 + debug: 4.4.3 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/rule-tester@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + dependencies: + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + ajv: 6.12.6 + eslint: 9.36.0(jiti@2.6.0) + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/scope-manager@8.44.0': dependencies: '@typescript-eslint/types': 8.44.0 '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/scope-manager@8.44.1': + dependencies: + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 + + '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.44.0 '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) debug: 4.4.3 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -9917,6 +10192,8 @@ snapshots: '@typescript-eslint/types@8.44.0': {} + '@typescript-eslint/types@8.44.1': {} + '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) @@ -9933,13 +10210,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) + '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@typescript-eslint/scope-manager': 8.44.0 '@typescript-eslint/types': 8.44.0 '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -9949,6 +10253,11 @@ snapshots: '@typescript-eslint/types': 8.44.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.44.1': + dependencies: + '@typescript-eslint/types': 8.44.1 + eslint-visitor-keys: 4.2.1 + '@ungap/structured-clone@1.3.0': {} '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -10049,10 +10358,10 @@ snapshots: - babel-plugin-macros - supports-color - '@vanilla-extract/next-plugin@2.4.14(babel-plugin-macros@3.1.0)(next@15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.101.3)': + '@vanilla-extract/next-plugin@2.4.14(babel-plugin-macros@3.1.0)(next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.101.3)': dependencies: '@vanilla-extract/webpack-plugin': 2.3.22(babel-plugin-macros@3.1.0)(webpack@5.101.3) - next: 15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10071,19 +10380,19 @@ snapshots: - babel-plugin-macros - supports-color - '@vitejs/plugin-react@5.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@vitejs/plugin-react@5.0.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) - '@rolldown/pluginutils': 1.0.0-beta.35 + '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -10098,7 +10407,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -10110,13 +10419,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -11140,8 +11449,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.2: {} - character-entities-html4@2.1.0: {} character-entities-legacy@1.1.4: {} @@ -11614,24 +11921,24 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.6.5(eslint@9.36.0(jiti@2.5.1)): + eslint-compat-utils@0.6.5(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) semver: 7.7.2 - eslint-config-next@15.5.3(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2): + eslint-config-next@15.5.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: - '@next/eslint-plugin-next': 15.5.3 + '@next/eslint-plugin-next': 15.5.4 '@rushstack/eslint-patch': 1.12.0 - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.0)) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: @@ -11639,9 +11946,9 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -11651,32 +11958,32 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.5.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)) transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@9.36.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.1): + eslint-json-compat-utils@0.2.1(eslint@9.36.0(jiti@2.6.0))(jsonc-eslint-parser@2.4.1): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) esquery: 1.6.0 jsonc-eslint-parser: 2.4.1 - eslint-mdx@3.6.2(eslint@9.36.0(jiti@2.5.1)): + eslint-mdx@3.6.2(eslint@9.36.0(jiti@2.6.0)): dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) espree: 10.4.0 estree-util-visit: 2.0.0 remark-mdx: 3.1.1 @@ -11692,37 +11999,43 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)) transitivePeerDependencies: - supports-color - eslint-plugin-devup@2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2): + eslint-plugin-devup@2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: '@eslint/js': 9.35.0 - '@tanstack/eslint-plugin-query': 5.89.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) - eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.5.1)))(eslint@9.36.0(jiti@2.5.1))(prettier@3.6.2) - eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-simple-import-sort: 12.1.1(eslint@9.36.0(jiti@2.5.1)) - eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)) + '@tanstack/eslint-plugin-query': 5.89.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) + eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) + eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-simple-import-sort: 12.1.1(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) prettier: 3.6.2 - typescript-eslint: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + typescript-eslint: 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) transitivePeerDependencies: - '@types/eslint' - '@typescript-eslint/eslint-plugin' - supports-color - typescript - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-eslint-plugin@7.0.0(eslint@9.36.0(jiti@2.6.0)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + eslint: 9.36.0(jiti@2.6.0) + estraverse: 5.3.0 + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -11731,9 +12044,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11745,18 +12058,18 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsonc@2.20.1(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-jsonc@2.20.1(eslint@9.36.0(jiti@2.6.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) - eslint: 9.36.0(jiti@2.5.1) - eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.5.1)) - eslint-json-compat-utils: 0.2.1(eslint@9.36.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + eslint: 9.36.0(jiti@2.6.0) + eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.6.0)) + eslint-json-compat-utils: 0.2.1(eslint@9.36.0(jiti@2.6.0))(jsonc-eslint-parser@2.4.1) espree: 10.4.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.1 @@ -11765,7 +12078,7 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.36.0(jiti@2.6.0)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -11775,7 +12088,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -11784,10 +12097,10 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-mdx@3.6.2(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-mdx@3.6.2(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) - eslint-mdx: 3.6.2(eslint@9.36.0(jiti@2.5.1)) + eslint: 9.36.0(jiti@2.6.0) + eslint-mdx: 3.6.2(eslint@9.36.0(jiti@2.6.0)) mdast-util-from-markdown: 2.0.2 mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -11802,21 +12115,21 @@ snapshots: - remark-lint-file-extension - supports-color - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.5.1)))(eslint@9.36.0(jiti@2.5.1))(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.5.1)) + eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.0)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -11824,7 +12137,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -11838,24 +12151,24 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-storybook@9.1.7(eslint@9.36.0(jiti@2.5.1))(storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2): + eslint-plugin-storybook@9.1.8(eslint@9.36.0(jiti@2.6.0))(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2): dependencies: - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) - storybook: 9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) + storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) eslint-scope@5.1.1: dependencies: @@ -11871,9 +12184,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.36.0(jiti@2.5.1): + eslint@9.36.0(jiti@2.6.0): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -11909,7 +12222,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.0 transitivePeerDependencies: - supports-color @@ -12224,7 +12537,7 @@ snapshots: graphemer@1.4.0: {} - happy-dom@18.0.1: + happy-dom@19.0.1: dependencies: '@types/node': 20.19.17 '@types/whatwg-mimetype': 3.0.2 @@ -12598,6 +12911,8 @@ snapshots: jiti@2.5.1: {} + jiti@2.6.0: {} + jju@1.4.0: {} js-tokens@4.0.0: {} @@ -12768,26 +13083,19 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.1 lightningcss-win32-x64-msvc: 1.30.1 - lilconfig@3.1.3: {} - lines-and-columns@1.2.4: {} lines-and-columns@2.0.4: {} - lint-staged@16.1.6: + lint-staged@16.2.3: dependencies: - chalk: 5.6.2 commander: 14.0.1 - debug: 4.4.3 - lilconfig: 3.1.3 listr2: 9.0.4 micromatch: 4.0.8 nano-spawn: 1.0.3 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.8.1 - transitivePeerDependencies: - - supports-color listr2@9.0.4: dependencies: @@ -13422,7 +13730,7 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - next@15.5.3(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next@15.5.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@next/env': 15.5.3 '@swc/helpers': 0.5.15 @@ -13445,6 +13753,29 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + '@next/env': 15.5.4 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001743 + postcss: 8.4.31 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + styled-jsx: 5.1.6(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@19.1.1) + optionalDependencies: + '@next/swc-darwin-arm64': 15.5.4 + '@next/swc-darwin-x64': 15.5.4 + '@next/swc-linux-arm64-gnu': 15.5.4 + '@next/swc-linux-arm64-musl': 15.5.4 + '@next/swc-linux-x64-gnu': 15.5.4 + '@next/swc-linux-x64-musl': 15.5.4 + '@next/swc-win32-arm64-msvc': 15.5.4 + '@next/swc-win32-x64-msvc': 15.5.4 + sharp: 0.34.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + node-eval@2.0.0: dependencies: path-is-absolute: 1.0.1 @@ -14366,13 +14697,13 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@9.1.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): + storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.8.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.10 @@ -14703,13 +15034,13 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -14920,13 +15251,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -14941,7 +15272,7 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.52.13(@types/node@24.5.2) '@rollup/pluginutils': 5.3.0(rollup@4.51.0) @@ -14954,13 +15285,13 @@ snapshots: magic-string: 0.30.19 typescript: 5.9.2 optionalDependencies: - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -14971,16 +15302,16 @@ snapshots: optionalDependencies: '@types/node': 24.5.2 fsevents: 2.3.3 - jiti: 2.5.1 + jiti: 2.6.0 lightningcss: 1.30.1 terser: 5.44.0 yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -14998,13 +15329,13 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 24.5.2 - happy-dom: 18.0.1 + happy-dom: 19.0.1 transitivePeerDependencies: - jiti - less From e0783f6385875d747e5db776eeef2a03080383ff Mon Sep 17 00:00:00 2001 From: belltalion Date: Tue, 30 Sep 2025 10:38:02 +0900 Subject: [PATCH 27/59] Fix bench --- apps/landing/src/app/Bench.tsx | 14 +++++++------- apps/landing/src/app/DevupUICard.tsx | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/landing/src/app/Bench.tsx b/apps/landing/src/app/Bench.tsx index d5014d12..c9646644 100644 --- a/apps/landing/src/app/Bench.tsx +++ b/apps/landing/src/app/Bench.tsx @@ -8,49 +8,49 @@ const OTHER_CARDS = [ title: 'Chakra UI', version: '3.27.0', buildTime: '29.99s', - buildSize: '200.4MB', + buildSize: '200.39MB', url: 'https://chakra-ui.com', }, { title: 'Mui', version: '7.3.2', buildTime: '22.21s', - buildSize: '89.9MB', + buildSize: '89.87MB', url: 'https://mui.com', }, { title: 'Kuma UI', version: '1.5.9', buildTime: '21.61s', - buildSize: '64.3MB', + buildSize: '64.30MB', url: 'https://kuma-ui.com', }, { title: 'Tailwindcss', version: '4.1.13', buildTime: '20.22s', - buildSize: '54.8MB', + buildSize: '54.76MB', url: 'https://tailwindcss.com', }, { title: 'panda CSS', version: '1.3.1', buildTime: '22.01s', - buildSize: '59.5MB', + buildSize: '59.53MB', url: 'https://panda-css.com', }, { title: 'styleX', version: '0.15.4', buildTime: '38.97s', - buildSize: '54.7MB', + buildSize: '72.72MB', url: 'https://stylexjs.com', }, { title: 'vanilla extract', version: '1.17.4', buildTime: '20.09s', - buildSize: '56.6MB', + buildSize: '56.61MB', url: 'https://vanilla-extract.style', }, ] diff --git a/apps/landing/src/app/DevupUICard.tsx b/apps/landing/src/app/DevupUICard.tsx index 75f60965..8d131212 100644 --- a/apps/landing/src/app/DevupUICard.tsx +++ b/apps/landing/src/app/DevupUICard.tsx @@ -76,7 +76,7 @@ export function DevupUICard() { color="transparent" typography="h4" > - 54.8MB + 54.75MB
From 8e8cd3198ef837efb26958a292a8333584ab3f22 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Tue, 30 Sep 2025 23:10:18 +0900 Subject: [PATCH 28/59] Implement eslint rules --- .changeset/config.json | 6 +- .changeset/wise-impalas-jump.md | 5 + apps/landing/devup.json | 1180 +- eslint.config.mjs | 14 + package.json | 5 +- packages/eslint-plugin/package.json | 11 +- .../__snapshots__/recommended.test.ts.snap | 14425 +--------------- .../eslint-plugin/src/configs/recommended.ts | 30 +- .../src/rules/__tests__/index.test.ts | 3 + .../rules/css-utils-literal-only/README.md | 98 + .../__tests__/index.test.ts | 29 +- .../src/rules/css-utils-literal-only/index.ts | 50 +- packages/eslint-plugin/src/rules/index.ts | 3 + .../src/rules/no-duplicate-value/README.md | 71 + .../__tests__/index.test.ts | 77 + .../src/rules/no-duplicate-value/index.ts | 96 + .../src/rules/no-useless-responsive/README.md | 79 + .../__tests__/index.test.ts | 88 + .../src/rules/no-useless-responsive/index.ts | 65 +- .../rules/no-useless-tailing-nulls/README.md | 63 + .../__tests__/index.test.ts | 12 +- .../rules/no-useless-tailing-nulls/index.ts | 82 +- .../eslint-plugin/src/utils/import-storage.ts | 87 + pnpm-lock.yaml | 32 +- tsconfig.json | 2 +- 25 files changed, 1532 insertions(+), 15081 deletions(-) create mode 100644 .changeset/wise-impalas-jump.md create mode 100644 packages/eslint-plugin/src/rules/no-duplicate-value/README.md create mode 100644 packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/rules/no-duplicate-value/index.ts create mode 100644 packages/eslint-plugin/src/utils/import-storage.ts diff --git a/.changeset/config.json b/.changeset/config.json index 1c6921f1..bd8889c9 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -10,9 +10,5 @@ "access": "restricted", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": [ - "*-example", - "*-benchmark", - "landing" - ] + "ignore": ["*-example", "*-benchmark", "landing"] } diff --git a/.changeset/wise-impalas-jump.md b/.changeset/wise-impalas-jump.md new file mode 100644 index 00000000..0db2316f --- /dev/null +++ b/.changeset/wise-impalas-jump.md @@ -0,0 +1,5 @@ +--- +'@devup-ui/eslint-plugin': major +--- + +Implement rules diff --git a/apps/landing/devup.json b/apps/landing/devup.json index bb2cabc3..df27821b 100644 --- a/apps/landing/devup.json +++ b/apps/landing/devup.json @@ -1,592 +1,592 @@ { - "theme": { - "colors": { - "light": { - "primary": "#5A44FF", - "secondary": "#85A5F2", - "link": "#006BFF", - "text": "#2F2F2F", - "background": "#FFF", - "containerBackground": "#FFF", - "border": "#E0E0E0", - "success": "#4CAF50", - "warning": "#FF9800", - "error": "#F44336", - "info": "#2196F3", - "base": "#FFF", - "negativeBase": "#000", - "title": "#1A1A1A", - "caption": "#A9A8B4", - "shadow": "#87878740", - "codeBg": "#3E3B41", - "cardBg": "#F8F8F8", - "buttonBlue": "#266CCD", - "joinBg": "#CDE2FA", - "third": "#918AE9", - "buttonBlueHover": "#1453AC", - "buttonBlueActive": "#19498B", - "textReverse": "#FFF", - "footerTitle": "#A3A4B4", - "footerBg": "#F4F4F6", - "footerText": "#51575F", - "menuHover": "#F6F4FF", - "menuActive": "#EAE8FC", - "captionBold": "#7C7B8E", - "search": "#9C50FF", - "kakaoButton": "#DE9800", - "kakaoButtonHover": "#C98900", - "kakaoButtonActive": "#B77D00", - "imageBorder": "#C8C7D1", - "imageDropdown": "#ECECEC", - "imagePlaceholder": "#999", - "imageDate": "#C9C9C9", - "imageDateNone": "#F2F2F2", - "imageProgress": "#DADADA", - "imageMenuBg": "#FBFBFB", - "imageMenuSelect": "#EDECF7", - "starBg": "#F7F8FF" - }, - "dark": { - "primary": "#9086FF", - "secondary": "#2A4586", - "link": "#006BFF", - "text": "#EDEDED", - "background": "#131313", - "containerBackground": "#373639", - "border": "#333", - "success": "#4CAF50", - "warning": "#FF9800", - "error": "#F44336", - "info": "#2196F3", - "base": "#000", - "negativeBase": "#FFF", - "title": "#FAFAFA", - "caption": "#787878", - "shadow": "#62626240", - "codeBg": "#2E303C", - "cardBg": "#28272B", - "buttonBlue": "#0867AF", - "joinBg": "#2F363E", - "third": "#737FE4", - "buttonBlueHover": "#1453AC", - "buttonBlueActive": "#19498B", - "textReverse": "#2F2F2F", - "footerTitle": "#A3A4B4", - "footerBg": "#2E303C", - "footerText": "#FFF", - "menuHover": "#3C404B", - "menuActive": "#283259", - "captionBold": "#9C9BA9", - "search": "#6FA4FF", - "kakaoButton": "#A3740D", - "kakaoButtonHover": "#C98900", - "kakaoButtonActive": "#E09900", - "imageBorder": "#4D4C53", - "imageDropdown": "#3A3A3A", - "imagePlaceholder": "#4C4C4C", - "imageDate": "#636363", - "imageDateNone": "#343333", - "imageProgress": "#444", - "imageMenuBg": "#262626", - "imageMenuSelect": "#3F3F3F", - "starBg": "#232323" - } - }, - "typography": { - "h1": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "38px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "52px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "h6Reg": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "18px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "24px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "buttonL": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "17px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "20px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "code": [ - { - "fontFamily": "D2Coding", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "13px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "D2Coding", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - }, - null - ], - "buttonM": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "17px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "h4": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "28px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "36px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "body": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "16px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - }, - null - ], - "h6": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "18px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "24px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "textS": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "15px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - "buttonLbold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "17px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "18px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "buttonLsemiB": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "17px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "18px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "h2": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "36px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "48px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "h3": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "32px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "42px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "h5": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "24px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "30px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "buttonS": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "14px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "caption": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - "small": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "11px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "12px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - null - ], - "buttonSmid": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "captionBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "13px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null - ], - "textSbold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "13px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - null - ], - "textL": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "16px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "18px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - }, - null - ], - "footerMenu": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "13px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - null - ], - "bodyReg": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "16px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - }, - null - ], - "smallBold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 800, - "fontSize": "12px", - "lineHeight": 1.4, - "letterSpacing": "-0.03em" - }, - "bodyBold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.5, - "letterSpacing": "-0.03em" - } - } + "theme": { + "colors": { + "light": { + "primary": "#5A44FF", + "secondary": "#85A5F2", + "link": "#006BFF", + "text": "#2F2F2F", + "background": "#FFF", + "containerBackground": "#FFF", + "border": "#E0E0E0", + "success": "#4CAF50", + "warning": "#FF9800", + "error": "#F44336", + "info": "#2196F3", + "base": "#FFF", + "negativeBase": "#000", + "title": "#1A1A1A", + "caption": "#A9A8B4", + "shadow": "#87878740", + "codeBg": "#3E3B41", + "cardBg": "#F8F8F8", + "buttonBlue": "#266CCD", + "joinBg": "#CDE2FA", + "third": "#918AE9", + "buttonBlueHover": "#1453AC", + "buttonBlueActive": "#19498B", + "textReverse": "#FFF", + "footerTitle": "#A3A4B4", + "footerBg": "#F4F4F6", + "footerText": "#51575F", + "menuHover": "#F6F4FF", + "menuActive": "#EAE8FC", + "captionBold": "#7C7B8E", + "search": "#9C50FF", + "kakaoButton": "#DE9800", + "kakaoButtonHover": "#C98900", + "kakaoButtonActive": "#B77D00", + "imageBorder": "#C8C7D1", + "imageDropdown": "#ECECEC", + "imagePlaceholder": "#999", + "imageDate": "#C9C9C9", + "imageDateNone": "#F2F2F2", + "imageProgress": "#DADADA", + "imageMenuBg": "#FBFBFB", + "imageMenuSelect": "#EDECF7", + "starBg": "#F7F8FF" + }, + "dark": { + "primary": "#9086FF", + "secondary": "#2A4586", + "link": "#006BFF", + "text": "#EDEDED", + "background": "#131313", + "containerBackground": "#373639", + "border": "#333", + "success": "#4CAF50", + "warning": "#FF9800", + "error": "#F44336", + "info": "#2196F3", + "base": "#000", + "negativeBase": "#FFF", + "title": "#FAFAFA", + "caption": "#787878", + "shadow": "#62626240", + "codeBg": "#2E303C", + "cardBg": "#28272B", + "buttonBlue": "#0867AF", + "joinBg": "#2F363E", + "third": "#737FE4", + "buttonBlueHover": "#1453AC", + "buttonBlueActive": "#19498B", + "textReverse": "#2F2F2F", + "footerTitle": "#A3A4B4", + "footerBg": "#2E303C", + "footerText": "#FFF", + "menuHover": "#3C404B", + "menuActive": "#283259", + "captionBold": "#9C9BA9", + "search": "#6FA4FF", + "kakaoButton": "#A3740D", + "kakaoButtonHover": "#C98900", + "kakaoButtonActive": "#E09900", + "imageBorder": "#4D4C53", + "imageDropdown": "#3A3A3A", + "imagePlaceholder": "#4C4C4C", + "imageDate": "#636363", + "imageDateNone": "#343333", + "imageProgress": "#444", + "imageMenuBg": "#262626", + "imageMenuSelect": "#3F3F3F", + "starBg": "#232323" + } + }, + "typography": { + "h1": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "38px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "52px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "h6Reg": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "18px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "24px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "buttonL": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "17px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "20px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "code": [ + { + "fontFamily": "D2Coding", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "13px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "D2Coding", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + }, + null + ], + "buttonM": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "17px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "h4": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "28px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "36px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "body": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "16px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + }, + null + ], + "h6": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "18px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "24px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "textS": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "15px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + "buttonLbold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "17px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "18px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "buttonLsemiB": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "17px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "18px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "h2": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "36px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "48px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "h3": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "32px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "42px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "h5": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "24px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "30px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "buttonS": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "14px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "caption": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + "small": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "11px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "12px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + null + ], + "buttonSmid": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "captionBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "13px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "textSbold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "13px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + null + ], + "textL": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "16px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "18px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + }, + null + ], + "footerMenu": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "13px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + null + ], + "bodyReg": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "16px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + }, + null + ], + "smallBold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 800, + "fontSize": "12px", + "lineHeight": 1.4, + "letterSpacing": "-0.03em" + }, + "bodyBold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.5, + "letterSpacing": "-0.03em" + } } -} \ No newline at end of file + } +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 7f6b5494..73066a39 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,9 +1,18 @@ import { configs } from 'eslint-plugin-devup' +import eslintPlugin from 'eslint-plugin-eslint-plugin' import jsonc from 'eslint-plugin-jsonc' import * as mdx from 'eslint-plugin-mdx' import globals from 'globals' export default [ + { + ignores: [ + 'coverage', + 'target', + 'benchmark/next-panda-css/styled-system', + 'bindings/devup-ui-wasm/pkg', + ], + }, // eslint-plugin-devup ...configs.recommended, // eslint-plugin-jsonc @@ -61,4 +70,9 @@ export default [ 'react/jsx-tag-spacing': ['error', { beforeClosing: 'never' }], }, }, + // eslint-plugin rule + { + ...eslintPlugin.configs.recommended, + // files: ['packages/eslint-plugin/**/*.{js,jsx,ts,tsx}'], + }, ] diff --git a/package.json b/package.json index eedcf8ad..3f133b4b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "description": "devup-ui", "type": "module", "scripts": { - "lint": "pnpm -F @devup-ui/* lint && cargo fmt --all -- --check && cargo clippy --all-targets --all-features -- -D warnings", + "lint": "pnpm -F @devup-ui/* lint && cargo fmt --all -- --check && cargo clippy --all-targets --all-features -- -D warnings && eslint", "pretest": "pnpm -F @devup-ui/vite-plugin build", "test": "cargo tarpaulin --out xml --out stdout --out html --all-targets && vitest test --coverage --run && pnpm -r test", "build": "pnpm -F wasm build && pnpm -F @devup-ui/* -F !wasm build", @@ -29,7 +29,8 @@ "happy-dom": "^19.0.1", "husky": "^9.1.7", "lint-staged": "^16.2.3", - "vitest": "^3.2.4" + "vitest": "^3.2.4", + "eslint-plugin-eslint-plugin": "^7.0.0" }, "author": "devfive", "packageManager": "pnpm@10.17.1", diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index c314c37d..61c09fd7 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -25,18 +25,13 @@ "author": "devfive", "license": "ISC", "dependencies": { - "typescript-eslint": "^8.44" + "typescript-eslint": "^8.44", + "@typescript-eslint/utils": "^8.44" }, "devDependencies": { - "@types/eslint": "^9.6", - "@types/eslint__js": "^9.14", "@typescript-eslint/rule-tester": "^8.44", - "@typescript-eslint/utils": "^8.44", - "@vitest/coverage-v8": "3.2.4", - "eslint-plugin-eslint-plugin": "^7.0.0", "typescript": "^5.9.2", "vite": "^7.1.7", - "vite-plugin-dts": "^4.5.4", - "vitest": "^3.2.4" + "vite-plugin-dts": "^4.5.4" } } diff --git a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap index f1ac655a..36f591bf 100644 --- a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap +++ b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap @@ -3,14350 +3,69 @@ exports[`recommended > export recommended config 1`] = ` [ { - "ignores": [ - "**/node_modules/", - "**/build/", - "**/__snapshots__/", - "!**/src/**", - "!vite.config.ts", - "!**/.storybook/**", - "**/storybook-static/", - "**/dist/", - "**/next-env.d.ts", - "**/out/", - "**/.next/", - "**/public/", - "**/.df/", - ], - }, - { - "languageOptions": { - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - }, - }, - "plugins": { - "react": { - "configs": { - "all": { - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - }, - "plugins": [ - "react", - ], - "rules": { - "react/boolean-prop-naming": 2, - "react/button-has-type": 2, - "react/checked-requires-onchange-or-readonly": 2, - "react/default-props-match-prop-types": 2, - "react/destructuring-assignment": 2, - "react/display-name": 2, - "react/forbid-component-props": 2, - "react/forbid-dom-props": 2, - "react/forbid-elements": 2, - "react/forbid-foreign-prop-types": 2, - "react/forbid-prop-types": 2, - "react/forward-ref-uses-ref": 2, - "react/function-component-definition": 2, - "react/hook-use-state": 2, - "react/iframe-missing-sandbox": 2, - "react/jsx-boolean-value": 2, - "react/jsx-child-element-spacing": 2, - "react/jsx-closing-bracket-location": 2, - "react/jsx-closing-tag-location": 2, - "react/jsx-curly-brace-presence": 2, - "react/jsx-curly-newline": 2, - "react/jsx-curly-spacing": 2, - "react/jsx-equals-spacing": 2, - "react/jsx-filename-extension": 2, - "react/jsx-first-prop-new-line": 2, - "react/jsx-fragments": 2, - "react/jsx-handler-names": 2, - "react/jsx-indent": 2, - "react/jsx-indent-props": 2, - "react/jsx-key": 2, - "react/jsx-max-depth": 2, - "react/jsx-max-props-per-line": 2, - "react/jsx-newline": 2, - "react/jsx-no-bind": 2, - "react/jsx-no-comment-textnodes": 2, - "react/jsx-no-constructed-context-values": 2, - "react/jsx-no-duplicate-props": 2, - "react/jsx-no-leaked-render": 2, - "react/jsx-no-literals": 2, - "react/jsx-no-script-url": 2, - "react/jsx-no-target-blank": 2, - "react/jsx-no-undef": 2, - "react/jsx-no-useless-fragment": 2, - "react/jsx-one-expression-per-line": 2, - "react/jsx-pascal-case": 2, - "react/jsx-props-no-multi-spaces": 2, - "react/jsx-props-no-spread-multi": 2, - "react/jsx-props-no-spreading": 2, - "react/jsx-sort-props": 2, - "react/jsx-tag-spacing": 2, - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "react/jsx-wrap-multilines": 2, - "react/no-access-state-in-setstate": 2, - "react/no-adjacent-inline-elements": 2, - "react/no-array-index-key": 2, - "react/no-arrow-function-lifecycle": 2, - "react/no-children-prop": 2, - "react/no-danger": 2, - "react/no-danger-with-children": 2, - "react/no-deprecated": 2, - "react/no-did-mount-set-state": 2, - "react/no-did-update-set-state": 2, - "react/no-direct-mutation-state": 2, - "react/no-find-dom-node": 2, - "react/no-invalid-html-attribute": 2, - "react/no-is-mounted": 2, - "react/no-multi-comp": 2, - "react/no-namespace": 2, - "react/no-object-type-as-default-prop": 2, - "react/no-redundant-should-component-update": 2, - "react/no-render-return-value": 2, - "react/no-set-state": 2, - "react/no-string-refs": 2, - "react/no-this-in-sfc": 2, - "react/no-typos": 2, - "react/no-unescaped-entities": 2, - "react/no-unknown-property": 2, - "react/no-unsafe": 2, - "react/no-unstable-nested-components": 2, - "react/no-unused-class-component-methods": 2, - "react/no-unused-prop-types": 2, - "react/no-unused-state": 2, - "react/no-will-update-set-state": 2, - "react/prefer-es6-class": 2, - "react/prefer-exact-props": 2, - "react/prefer-read-only-props": 2, - "react/prefer-stateless-function": 2, - "react/prop-types": 2, - "react/react-in-jsx-scope": 2, - "react/require-default-props": 2, - "react/require-optimization": 2, - "react/require-render-return": 2, - "react/self-closing-comp": 2, - "react/sort-comp": 2, - "react/sort-default-props": 2, - "react/sort-prop-types": 2, - "react/state-in-constructor": 2, - "react/static-property-placement": 2, - "react/style-prop-object": 2, - "react/void-dom-elements-no-children": 2, - }, - }, - "flat": { - "all": { - "languageOptions": { - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - }, - }, - "plugins": { - "react": [Circular], - }, - "rules": { - "react/boolean-prop-naming": 2, - "react/button-has-type": 2, - "react/checked-requires-onchange-or-readonly": 2, - "react/default-props-match-prop-types": 2, - "react/destructuring-assignment": 2, - "react/display-name": 2, - "react/forbid-component-props": 2, - "react/forbid-dom-props": 2, - "react/forbid-elements": 2, - "react/forbid-foreign-prop-types": 2, - "react/forbid-prop-types": 2, - "react/forward-ref-uses-ref": 2, - "react/function-component-definition": 2, - "react/hook-use-state": 2, - "react/iframe-missing-sandbox": 2, - "react/jsx-boolean-value": 2, - "react/jsx-child-element-spacing": 2, - "react/jsx-closing-bracket-location": 2, - "react/jsx-closing-tag-location": 2, - "react/jsx-curly-brace-presence": 2, - "react/jsx-curly-newline": 2, - "react/jsx-curly-spacing": 2, - "react/jsx-equals-spacing": 2, - "react/jsx-filename-extension": 2, - "react/jsx-first-prop-new-line": 2, - "react/jsx-fragments": 2, - "react/jsx-handler-names": 2, - "react/jsx-indent": 2, - "react/jsx-indent-props": 2, - "react/jsx-key": 2, - "react/jsx-max-depth": 2, - "react/jsx-max-props-per-line": 2, - "react/jsx-newline": 2, - "react/jsx-no-bind": 2, - "react/jsx-no-comment-textnodes": 2, - "react/jsx-no-constructed-context-values": 2, - "react/jsx-no-duplicate-props": 2, - "react/jsx-no-leaked-render": 2, - "react/jsx-no-literals": 2, - "react/jsx-no-script-url": 2, - "react/jsx-no-target-blank": 2, - "react/jsx-no-undef": 2, - "react/jsx-no-useless-fragment": 2, - "react/jsx-one-expression-per-line": 2, - "react/jsx-pascal-case": 2, - "react/jsx-props-no-multi-spaces": 2, - "react/jsx-props-no-spread-multi": 2, - "react/jsx-props-no-spreading": 2, - "react/jsx-sort-props": 2, - "react/jsx-tag-spacing": 2, - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "react/jsx-wrap-multilines": 2, - "react/no-access-state-in-setstate": 2, - "react/no-adjacent-inline-elements": 2, - "react/no-array-index-key": 2, - "react/no-arrow-function-lifecycle": 2, - "react/no-children-prop": 2, - "react/no-danger": 2, - "react/no-danger-with-children": 2, - "react/no-deprecated": 2, - "react/no-did-mount-set-state": 2, - "react/no-did-update-set-state": 2, - "react/no-direct-mutation-state": 2, - "react/no-find-dom-node": 2, - "react/no-invalid-html-attribute": 2, - "react/no-is-mounted": 2, - "react/no-multi-comp": 2, - "react/no-namespace": 2, - "react/no-object-type-as-default-prop": 2, - "react/no-redundant-should-component-update": 2, - "react/no-render-return-value": 2, - "react/no-set-state": 2, - "react/no-string-refs": 2, - "react/no-this-in-sfc": 2, - "react/no-typos": 2, - "react/no-unescaped-entities": 2, - "react/no-unknown-property": 2, - "react/no-unsafe": 2, - "react/no-unstable-nested-components": 2, - "react/no-unused-class-component-methods": 2, - "react/no-unused-prop-types": 2, - "react/no-unused-state": 2, - "react/no-will-update-set-state": 2, - "react/prefer-es6-class": 2, - "react/prefer-exact-props": 2, - "react/prefer-read-only-props": 2, - "react/prefer-stateless-function": 2, - "react/prop-types": 2, - "react/react-in-jsx-scope": 2, - "react/require-default-props": 2, - "react/require-optimization": 2, - "react/require-render-return": 2, - "react/self-closing-comp": 2, - "react/sort-comp": 2, - "react/sort-default-props": 2, - "react/sort-prop-types": 2, - "react/state-in-constructor": 2, - "react/static-property-placement": 2, - "react/style-prop-object": 2, - "react/void-dom-elements-no-children": 2, - }, - }, - "jsx-runtime": { - "languageOptions": { - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - "jsxPragma": null, - }, - }, - "plugins": { - "react": [Circular], - }, - "rules": { - "react/jsx-uses-react": 0, - "react/react-in-jsx-scope": 0, - }, - }, - "recommended": [Circular], - }, - "jsx-runtime": { - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - "jsxPragma": null, - }, - "plugins": [ - "react", - ], - "rules": { - "react/jsx-uses-react": 0, - "react/react-in-jsx-scope": 0, - }, - }, - "recommended": { - "parserOptions": { - "ecmaFeatures": { - "jsx": true, - }, - }, - "plugins": [ - "react", - ], - "rules": { - "react/display-name": 2, - "react/jsx-key": 2, - "react/jsx-no-comment-textnodes": 2, - "react/jsx-no-duplicate-props": 2, - "react/jsx-no-target-blank": 2, - "react/jsx-no-undef": 2, - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "react/no-children-prop": 2, - "react/no-danger-with-children": 2, - "react/no-deprecated": 2, - "react/no-direct-mutation-state": 2, - "react/no-find-dom-node": 2, - "react/no-is-mounted": 2, - "react/no-render-return-value": 2, - "react/no-string-refs": 2, - "react/no-unescaped-entities": 2, - "react/no-unknown-property": 2, - "react/no-unsafe": 0, - "react/prop-types": 2, - "react/react-in-jsx-scope": 2, - "react/require-render-return": 2, - }, - }, - }, - "deprecatedRules": { - "jsx-sort-default-props": { - "create": [Function], - "meta": { - "deprecated": true, - "docs": { - "category": "Stylistic Issues", - "description": "Enforce defaultProps declarations alphabetical sorting", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md", - }, - "messages": { - "propsNotSorted": "Default prop types declarations should be sorted alphabetically", - }, - "replacedBy": [ - "sort-default-props", - ], - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreCase": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-space-before-closing": { - "create": [Function], - "meta": { - "deprecated": true, - "docs": { - "category": "Stylistic Issues", - "description": "Enforce spacing before closing bracket in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md", - }, - "fixable": "code", - "messages": { - "needSpaceBeforeClose": "A space is required before closing bracket", - "noSpaceBeforeClose": "A space is forbidden before closing bracket", - }, - "replacedBy": [ - "jsx-tag-spacing", - ], - "schema": [ - { - "enum": [ - "always", - "never", - ], - }, - ], - }, - }, - }, - "rules": { - "boolean-prop-naming": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforces consistent naming for boolean props", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md", - }, - "messages": { - "patternMismatch": "Prop name \`{{propName}}\` doesn’t match rule \`{{pattern}}\`", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "message": { - "minLength": 1, - "type": "string", - }, - "propTypeNames": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "rule": { - "default": "^(is|has)[A-Z]([A-Za-z0-9]?)+", - "minLength": 1, - "type": "string", - }, - "validateNested": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "button-has-type": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow usage of \`button\` elements without an explicit \`type\` attribute", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md", - }, - "messages": { - "complexType": "The button type attribute must be specified by a static string or a trivial ternary expression", - "forbiddenValue": ""{{value}}" is an invalid value for button type attribute", - "invalidValue": ""{{value}}" is an invalid value for button type attribute", - "missingType": "Missing an explicit type attribute for button", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "button": { - "default": true, - "type": "boolean", - }, - "reset": { - "default": true, - "type": "boolean", - }, - "submit": { - "default": true, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "checked-requires-onchange-or-readonly": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Enforce using \`onChange\` or \`readonly\` attribute when \`checked\` is used", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md", - }, - "messages": { - "exclusiveCheckedAttribute": "Use either \`checked\` or \`defaultChecked\`, but not both.", - "missingProperty": "\`checked\` should be used with either \`onChange\` or \`readOnly\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreExclusiveCheckedAttribute": { - "type": "boolean", - }, - "ignoreMissingProperties": { - "type": "boolean", - }, - }, - }, - ], - }, - }, - "default-props-match-prop-types": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Enforce all defaultProps have a corresponding non-required PropType", - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md", - }, - "messages": { - "defaultHasNoType": "defaultProp "{{name}}" has no corresponding propTypes declaration.", - "requiredHasDefault": "defaultProp "{{name}}" defined for isRequired propType.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowRequiredDefaults": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "destructuring-assignment": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce consistent usage of destructuring assignment of props, state, and context", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md", - }, - "fixable": "code", - "messages": { - "destructureInSignature": "Must destructure props in the function signature.", - "noDestructAssignment": "Must never use destructuring {{type}} assignment", - "noDestructContextInSFCArg": "Must never use destructuring context assignment in SFC argument", - "noDestructPropsInSFCArg": "Must never use destructuring props assignment in SFC argument", - "useDestructAssignment": "Must use destructuring {{type}} assignment", - }, - "schema": [ - { - "enum": [ - "always", - "never", - ], - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "destructureInSignature": { - "enum": [ - "always", - "ignore", - ], - "type": "string", - }, - "ignoreClassFields": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "display-name": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow missing displayName in a React component definition", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md", - }, - "messages": { - "noContextDisplayName": "Context definition is missing display name", - "noDisplayName": "Component definition is missing display name", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "checkContextObjects": { - "type": "boolean", - }, - "ignoreTranspilerName": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "forbid-component-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow certain props on components", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md", - }, - "messages": { - "propIsForbidden": "Prop "{{prop}}" is forbidden on Components", - }, - "schema": [ - { - "properties": { - "forbid": { - "items": { - "anyOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "allowedFor": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "allowedForPatterns": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "message": { - "type": "string", - }, - "propName": { - "type": "string", - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "disallowedFor", - ], - }, - { - "required": [ - "disallowedForPatterns", - ], - }, - ], - "properties": { - "disallowedFor": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "disallowedForPatterns": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "message": { - "type": "string", - }, - "propName": { - "type": "string", - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "allowedFor": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "allowedForPatterns": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "message": { - "type": "string", - }, - "propNamePattern": { - "type": "string", - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "disallowedFor", - ], - }, - { - "required": [ - "disallowedForPatterns", - ], - }, - ], - "properties": { - "disallowedFor": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "disallowedForPatterns": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "message": { - "type": "string", - }, - "propNamePattern": { - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "forbid-dom-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow certain props on DOM Nodes", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md", - }, - "messages": { - "propIsForbidden": "Prop "{{prop}}" is forbidden on DOM Nodes", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "forbid": { - "items": { - "anyOf": [ - { - "type": "string", - }, - { - "properties": { - "disallowedFor": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "message": { - "type": "string", - }, - "propName": { - "type": "string", - }, - }, - "type": "object", - }, - ], - "minLength": 1, - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - }, - }, - "forbid-elements": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow certain elements", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md", - }, - "messages": { - "forbiddenElement": "<{{element}}> is forbidden", - "forbiddenElement_message": "<{{element}}> is forbidden, {{message}}", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "forbid": { - "items": { - "anyOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "element": { - "type": "string", - }, - "message": { - "type": "string", - }, - }, - "required": [ - "element", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "forbid-foreign-prop-types": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow using another component's propTypes", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md", - }, - "messages": { - "forbiddenPropType": "Using propTypes from another component is not safe because they may be removed in production builds", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowInPropTypes": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "forbid-prop-types": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow certain propTypes", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md", - }, - "messages": { - "forbiddenPropType": "Prop type "{{target}}" is forbidden", - }, - "schema": [ - { - "additionalProperties": true, - "properties": { - "checkChildContextTypes": { - "type": "boolean", - }, - "checkContextTypes": { - "type": "boolean", - }, - "forbid": { - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "forward-ref-uses-ref": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Require all forwardRef components include a ref parameter", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md", - }, - "hasSuggestions": true, - "messages": { - "addRefParameter": "Add a ref parameter", - "missingRefParameter": "forwardRef is used with this component but no ref parameter is set", - "removeForwardRef": "Remove forwardRef wrapper", - }, - "schema": [], - "type": "suggestion", - }, - }, - "function-component-definition": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce a specific function type for function components", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md", - }, - "fixable": "code", - "messages": { - "arrow-function": "Function component is not an arrow function", - "function-declaration": "Function component is not a function declaration", - "function-expression": "Function component is not a function expression", - }, - "schema": [ - { - "properties": { - "namedComponents": { - "anyOf": [ - { - "enum": [ - "function-declaration", - "arrow-function", - "function-expression", - ], - }, - { - "items": { - "enum": [ - "function-declaration", - "arrow-function", - "function-expression", - ], - "type": "string", - }, - "type": "array", - }, - ], - }, - "unnamedComponents": { - "anyOf": [ - { - "enum": [ - "arrow-function", - "function-expression", - ], - }, - { - "items": { - "enum": [ - "arrow-function", - "function-expression", - ], - "type": "string", - }, - "type": "array", - }, - ], - }, - }, - "type": "object", - }, - ], - }, - }, - "hook-use-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Ensure destructuring and symmetric naming of useState hook value and setter variables", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md", - }, - "hasSuggestions": true, - "messages": { - "suggestMemo": "Replace useState call with useMemo", - "suggestPair": "Destructure useState call into value + setter pair", - "useStateErrorMessage": "useState call is not destructured into value + setter pair", - "useStateErrorMessageOrAddOption": "useState call is not destructured into value + setter pair (you can allow destructuring by enabling "allowDestructuredState" option)", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowDestructuredState": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "iframe-missing-sandbox": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Enforce sandbox attribute on iframe elements", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md", - }, - "messages": { - "attributeMissing": "An iframe element is missing a sandbox attribute", - "invalidCombination": "An iframe element defines a sandbox attribute with both allow-scripts and allow-same-origin which is invalid", - "invalidValue": "An iframe element defines a sandbox attribute with invalid value "{{ value }}"", - }, - "schema": [], - }, - }, - "jsx-boolean-value": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce boolean attributes notation in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md", - }, - "fixable": "code", - "messages": { - "omitBoolean": "Value must be omitted for boolean attribute \`{{propName}}\`", - "omitPropAndBoolean": "Value must be omitted for \`false\` attribute: \`{{propName}}\`", - "setBoolean": "Value must be set for boolean attribute \`{{propName}}\`", - }, - "schema": { - "anyOf": [ - { - "additionalItems": false, - "items": [ - { - "enum": [ - "always", - "never", - ], - }, - ], - "type": "array", - }, - { - "additionalItems": false, - "items": [ - { - "enum": [ - "always", - ], - }, - { - "additionalProperties": false, - "properties": { - "assumeUndefinedIsFalse": { - "type": "boolean", - }, - "never": { - "items": { - "minLength": 1, - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - "type": "array", - }, - { - "additionalItems": false, - "items": [ - { - "enum": [ - "never", - ], - }, - { - "additionalProperties": false, - "properties": { - "always": { - "items": { - "minLength": 1, - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "assumeUndefinedIsFalse": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "array", - }, - ], - }, - }, - }, - "jsx-child-element-spacing": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce or disallow spaces inside of curly braces in JSX attributes and expressions", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md", - }, - "fixable": null, - "messages": { - "spacingAfterPrev": "Ambiguous spacing after previous element {{element}}", - "spacingBeforeNext": "Ambiguous spacing before next element {{element}}", - }, - "schema": [], - }, - }, - "jsx-closing-bracket-location": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce closing bracket location in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md", - }, - "fixable": "code", - "messages": { - "bracketLocation": "The closing bracket must be {{location}}{{details}}", - }, - "schema": [ - { - "anyOf": [ - { - "enum": [ - "after-props", - "props-aligned", - "tag-aligned", - "line-aligned", - ], - }, - { - "additionalProperties": false, - "properties": { - "location": { - "enum": [ - "after-props", - "props-aligned", - "tag-aligned", - "line-aligned", - ], - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "nonEmpty": { - "enum": [ - "after-props", - "props-aligned", - "tag-aligned", - "line-aligned", - false, - ], - }, - "selfClosing": { - "enum": [ - "after-props", - "props-aligned", - "tag-aligned", - "line-aligned", - false, - ], - }, - }, - "type": "object", - }, - ], - }, - ], - }, - }, - "jsx-closing-tag-location": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce closing tag location for multiline JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md", - }, - "fixable": "whitespace", - "messages": { - "alignWithOpening": "Expected closing tag to be aligned with the line containing the opening tag", - "matchIndent": "Expected closing tag to match indentation of opening.", - "onOwnLine": "Closing tag of a multiline JSX expression must be on its own line.", - }, - "schema": [ - { - "anyOf": [ - { - "enum": [ - "tag-aligned", - "line-aligned", - ], - }, - { - "additionalProperties": false, - "properties": { - "location": { - "enum": [ - "tag-aligned", - "line-aligned", - ], - }, - }, - "type": "object", - }, - ], - }, - ], - }, - }, - "jsx-curly-brace-presence": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md", - }, - "fixable": "code", - "messages": { - "missingCurly": "Need to wrap this literal in a JSX expression.", - "unnecessaryCurly": "Curly braces are unnecessary here.", - }, - "schema": [ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "children": { - "enum": [ - "always", - "never", - "ignore", - ], - }, - "propElementValues": { - "enum": [ - "always", - "never", - "ignore", - ], - }, - "props": { - "enum": [ - "always", - "never", - "ignore", - ], - }, - }, - "type": "object", - }, - { - "enum": [ - "always", - "never", - "ignore", - ], - }, - ], - }, - ], - }, - }, - "jsx-curly-newline": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce consistent linebreaks in curly braces in JSX attributes and expressions", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md", - }, - "fixable": "whitespace", - "messages": { - "expectedAfter": "Expected newline after '{'.", - "expectedBefore": "Expected newline before '}'.", - "unexpectedAfter": "Unexpected newline after '{'.", - "unexpectedBefore": "Unexpected newline before '}'.", - }, - "schema": [ - { - "anyOf": [ - { - "enum": [ - "consistent", - "never", - ], - }, - { - "additionalProperties": false, - "properties": { - "multiline": { - "enum": [ - "consistent", - "require", - "forbid", - ], - }, - "singleline": { - "enum": [ - "consistent", - "require", - "forbid", - ], - }, - }, - "type": "object", - }, - ], - }, - ], - "type": "layout", - }, - }, - "jsx-curly-spacing": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce or disallow spaces inside of curly braces in JSX attributes and expressions", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md", - }, - "fixable": "code", - "messages": { - "noNewlineAfter": "There should be no newline after '{{token}}'", - "noNewlineBefore": "There should be no newline before '{{token}}'", - "noSpaceAfter": "There should be no space after '{{token}}'", - "noSpaceBefore": "There should be no space before '{{token}}'", - "spaceNeededAfter": "A space is required after '{{token}}'", - "spaceNeededBefore": "A space is required before '{{token}}'", - }, - "schema": { - "definitions": { - "basicConfig": { - "properties": { - "allowMultiline": { - "type": "boolean", - }, - "spacing": { - "properties": { - "objectLiterals": { - "enum": [ - "always", - "never", - ], - }, - }, - "type": "object", - }, - "when": { - "enum": [ - "always", - "never", - ], - }, - }, - "type": "object", - }, - "basicConfigOrBoolean": { - "anyOf": [ - { - "$ref": "#/definitions/basicConfig", - }, - { - "type": "boolean", - }, - ], - }, - }, - "items": [ - { - "anyOf": [ - { - "allOf": [ - { - "$ref": "#/definitions/basicConfig", - }, - { - "properties": { - "attributes": { - "$ref": "#/definitions/basicConfigOrBoolean", - }, - "children": { - "$ref": "#/definitions/basicConfigOrBoolean", - }, - }, - "type": "object", - }, - ], - }, - { - "enum": [ - "always", - "never", - ], - }, - ], - }, - { - "additionalProperties": false, - "properties": { - "allowMultiline": { - "type": "boolean", - }, - "spacing": { - "properties": { - "objectLiterals": { - "enum": [ - "always", - "never", - ], - }, - }, - "type": "object", - }, - }, - "type": "object", - }, - ], - "type": "array", - }, - }, - }, - "jsx-equals-spacing": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce or disallow spaces around equal signs in JSX attributes", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md", - }, - "fixable": "code", - "messages": { - "needSpaceAfter": "A space is required after '='", - "needSpaceBefore": "A space is required before '='", - "noSpaceAfter": "There should be no space after '='", - "noSpaceBefore": "There should be no space before '='", - }, - "schema": [ - { - "enum": [ - "always", - "never", - ], - }, - ], - }, - }, - "jsx-filename-extension": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow file extensions that may contain JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md", - }, - "messages": { - "extensionOnlyForJSX": "Only files containing JSX may use the extension '{{ext}}'", - "noJSXWithExtension": "JSX not allowed in files with extension '{{ext}}'", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "enum": [ - "always", - "as-needed", - ], - }, - "extensions": { - "items": { - "type": "string", - }, - "type": "array", - }, - "ignoreFilesWithoutCode": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-first-prop-new-line": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce proper position of the first property in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md", - }, - "fixable": "code", - "messages": { - "propOnNewLine": "Property should be placed on a new line", - "propOnSameLine": "Property should be placed on the same line as the component declaration", - }, - "schema": [ - { - "enum": [ - "always", - "never", - "multiline", - "multiline-multiprop", - "multiprop", - ], - }, - ], - }, - }, - "jsx-fragments": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce shorthand or standard form for React fragments", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md", - }, - "fixable": "code", - "messages": { - "fragmentsNotSupported": "Fragments are only supported starting from React v16.2. Please disable the \`react/jsx-fragments\` rule in \`eslint\` settings or upgrade your version of React.", - "preferFragment": "Prefer fragment shorthand over {{react}}.{{fragment}}", - "preferPragma": "Prefer {{react}}.{{fragment}} over fragment shorthand", - }, - "schema": [ - { - "enum": [ - "syntax", - "element", - ], - }, - ], - }, - }, - "jsx-handler-names": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce event handler naming conventions in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md", - }, - "messages": { - "badHandlerName": "Handler function for {{propKey}} prop key must be a camelCase name beginning with '{{handlerPrefix}}' only", - "badPropKey": "Prop key for {{propValue}} must begin with '{{handlerPropPrefix}}'", - }, - "schema": [ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "checkInlineFunction": { - "type": "boolean", - }, - "checkLocalVariables": { - "type": "boolean", - }, - "eventHandlerPrefix": { - "type": "string", - }, - "eventHandlerPropPrefix": { - "type": "string", - }, - "ignoreComponentNames": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "checkInlineFunction": { - "type": "boolean", - }, - "checkLocalVariables": { - "type": "boolean", - }, - "eventHandlerPrefix": { - "type": "string", - }, - "eventHandlerPropPrefix": { - "enum": [ - false, - ], - "type": "boolean", - }, - "ignoreComponentNames": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "checkInlineFunction": { - "type": "boolean", - }, - "checkLocalVariables": { - "type": "boolean", - }, - "eventHandlerPrefix": { - "enum": [ - false, - ], - "type": "boolean", - }, - "eventHandlerPropPrefix": { - "type": "string", - }, - "ignoreComponentNames": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "checkLocalVariables": { - "type": "boolean", - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "checkInlineFunction": { - "type": "boolean", - }, - }, - "type": "object", - }, - { - "properties": { - "ignoreComponentNames": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - }, - ], - }, - }, - "jsx-indent": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce JSX indentation", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md", - }, - "fixable": "whitespace", - "messages": { - "wrongIndent": "Expected indentation of {{needed}} {{type}} {{characters}} but found {{gotten}}.", - }, - "schema": [ - { - "anyOf": [ - { - "enum": [ - "tab", - ], - }, - { - "type": "integer", - }, - ], - }, - { - "additionalProperties": false, - "properties": { - "checkAttributes": { - "type": "boolean", - }, - "indentLogicalExpressions": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-indent-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce props indentation in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md", - }, - "fixable": "code", - "messages": { - "wrongIndent": "Expected indentation of {{needed}} {{type}} {{characters}} but found {{gotten}}.", - }, - "schema": [ - { - "anyOf": [ - { - "enum": [ - "tab", - "first", - ], - }, - { - "type": "integer", - }, - { - "properties": { - "ignoreTernaryOperator": { - "type": "boolean", - }, - "indentMode": { - "anyOf": [ - { - "enum": [ - "tab", - "first", - ], - }, - { - "type": "integer", - }, - ], - }, - }, - "type": "object", - }, - ], - }, - ], - }, - }, - "jsx-key": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow missing \`key\` props in iterators/collection literals", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md", - }, - "messages": { - "keyBeforeSpread": "\`key\` prop must be placed before any \`{...spread}, to avoid conflicting with React’s new JSX transform: https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html\`", - "missingArrayKey": "Missing "key" prop for element in array", - "missingArrayKeyUsePrag": "Missing "key" prop for element in array. Shorthand fragment syntax does not support providing keys. Use {{reactPrag}}.{{fragPrag}} instead", - "missingIterKey": "Missing "key" prop for element in iterator", - "missingIterKeyUsePrag": "Missing "key" prop for element in iterator. Shorthand fragment syntax does not support providing keys. Use {{reactPrag}}.{{fragPrag}} instead", - "nonUniqueKeys": "\`key\` prop must be unique", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "checkFragmentShorthand": { - "default": false, - "type": "boolean", - }, - "checkKeyMustBeforeSpread": { - "default": false, - "type": "boolean", - }, - "warnOnDuplicates": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-max-depth": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce JSX maximum depth", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md", - }, - "messages": { - "wrongDepth": "Expected the depth of nested jsx elements to be <= {{needed}}, but found {{found}}.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "max": { - "minimum": 0, - "type": "integer", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-max-props-per-line": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce maximum of props on a single line in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md", - }, - "fixable": "code", - "messages": { - "newLine": "Prop \`{{prop}}\` must be placed on a new line", - }, - "schema": [ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "maximum": { - "properties": { - "multi": { - "minimum": 1, - "type": "integer", - }, - "single": { - "minimum": 1, - "type": "integer", - }, - }, - "type": "object", - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "maximum": { - "minimum": 1, - "type": "number", - }, - "when": { - "enum": [ - "always", - "multiline", - ], - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - ], - }, - }, - "jsx-newline": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Require or prevent a new line after jsx elements and expressions.", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md", - }, - "fixable": "code", - "messages": { - "allowMultilines": "Multiline JSX elements should start in a new line", - "prevent": "JSX element should not start in a new line", - "require": "JSX element should start in a new line", - }, - "schema": [ - { - "additionalProperties": false, - "if": { - "properties": { - "allowMultilines": { - "const": true, - }, - }, - }, - "properties": { - "allowMultilines": { - "default": false, - "type": "boolean", - }, - "prevent": { - "default": false, - "type": "boolean", - }, - }, - "then": { - "properties": { - "prevent": { - "const": true, - }, - }, - "required": [ - "prevent", - ], - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-bind": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow \`.bind()\` or arrow functions in JSX props", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md", - }, - "messages": { - "arrowFunc": "JSX props should not use arrow functions", - "bindCall": "JSX props should not use .bind()", - "bindExpression": "JSX props should not use ::", - "func": "JSX props should not use functions", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowArrowFunctions": { - "default": false, - "type": "boolean", - }, - "allowBind": { - "default": false, - "type": "boolean", - }, - "allowFunctions": { - "default": false, - "type": "boolean", - }, - "ignoreDOMComponents": { - "default": false, - "type": "boolean", - }, - "ignoreRefs": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-comment-textnodes": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow comments from being inserted as text nodes", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md", - }, - "messages": { - "putCommentInBraces": "Comments inside children section of tag should be placed inside braces", - }, - "schema": [], - }, - }, - "jsx-no-constructed-context-values": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallows JSX context provider values from taking values that will cause needless rerenders", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md", - }, - "messages": { - "defaultMsg": "The {{type}} passed as the value prop to the Context provider (at line {{nodeLine}}) changes every render. To fix this consider wrapping it in a useMemo hook.", - "defaultMsgFunc": "The {{type}} passed as the value prop to the Context provider (at line {{nodeLine}}) changes every render. To fix this consider wrapping it in a useCallback hook.", - "withIdentifierMsg": "The '{{variableName}}' {{type}} (at line {{nodeLine}}) passed as the value prop to the Context provider (at line {{usageLine}}) changes every render. To fix this consider wrapping it in a useMemo hook.", - "withIdentifierMsgFunc": "The '{{variableName}}' {{type}} (at line {{nodeLine}}) passed as the value prop to the Context provider (at line {{usageLine}}) changes every render. To fix this consider wrapping it in a useCallback hook.", - }, - "schema": false, - }, - }, - "jsx-no-duplicate-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow duplicate properties in JSX", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md", - }, - "messages": { - "noDuplicateProps": "No duplicate props allowed", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreCase": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-leaked-render": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow problematic leaked values from being rendered", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md", - }, - "fixable": "code", - "messages": { - "noPotentialLeakedRender": "Potential leaked value that might cause unintentionally rendered values or rendering crashes", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "validStrategies": { - "default": [ - "ternary", - "coerce", - ], - "items": { - "enum": [ - "ternary", - "coerce", - ], - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-literals": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow usage of string literals in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md", - }, - "messages": { - "invalidPropValue": "Invalid prop value: "{{text}}"", - "invalidPropValueInElement": "Invalid prop value: "{{text}}" in {{element}}", - "literalNotInJSXExpression": "Missing JSX expression container around literal string: "{{text}}"", - "literalNotInJSXExpressionInElement": "Missing JSX expression container around literal string: "{{text}}" in {{element}}", - "noStringsInAttributes": "Strings not allowed in attributes: "{{text}}"", - "noStringsInAttributesInElement": "Strings not allowed in attributes: "{{text}}" in {{element}}", - "noStringsInJSX": "Strings not allowed in JSX files: "{{text}}"", - "noStringsInJSXInElement": "Strings not allowed in JSX files: "{{text}}" in {{element}}", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowedStrings": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "elementOverrides": { - "patternProperties": { - "^[A-Z][\\w.]*$": { - "properties": { - "allowedStrings": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "applyToNestedElements": { - "type": "boolean", - }, - "ignoreProps": { - "type": "boolean", - }, - "noAttributeStrings": { - "type": "boolean", - }, - "noStrings": { - "type": "boolean", - }, - }, - "type": "object", - }, - }, - "type": "object", - }, - "ignoreProps": { - "type": "boolean", - }, - "noAttributeStrings": { - "type": "boolean", - }, - "noStrings": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-script-url": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of \`javascript:\` URLs", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md", - }, - "messages": { - "noScriptURL": "A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML, try using dangerouslySetInnerHTML instead.", - }, - "schema": { - "anyOf": [ - { - "additionalItems": false, - "items": [ - { - "items": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - }, - "props": { - "items": { - "type": "string", - "uniqueItems": true, - }, - "type": "array", - }, - }, - "required": [ - "name", - "props", - ], - "type": "object", - }, - "type": "array", - "uniqueItems": true, - }, - { - "additionalItems": false, - "properties": { - "includeFromSettings": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "array", - }, - { - "additionalItems": false, - "items": [ - { - "additionalItems": false, - "properties": { - "includeFromSettings": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "array", - }, - ], - }, - }, - }, - "jsx-no-target-blank": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow \`target="_blank"\` attribute without \`rel="noreferrer"\`", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md", - }, - "fixable": "code", - "messages": { - "noTargetBlankWithoutNoopener": "Using target="_blank" without rel="noreferrer" or rel="noopener" (the former implies the latter and is preferred due to wider support) is a security risk: see https://mathiasbynens.github.io/rel-noopener/#recommendations", - "noTargetBlankWithoutNoreferrer": "Using target="_blank" without rel="noreferrer" (which implies rel="noopener") is a security risk in older browsers: see https://mathiasbynens.github.io/rel-noopener/#recommendations", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowReferrer": { - "type": "boolean", - }, - "enforceDynamicLinks": { - "enum": [ - "always", - "never", - ], - }, - "forms": { - "default": false, - "type": "boolean", - }, - "links": { - "default": true, - "type": "boolean", - }, - "warnOnSpreadAttributes": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-undef": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow undeclared variables in JSX", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md", - }, - "messages": { - "undefined": "'{{identifier}}' is not defined.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowGlobals": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-no-useless-fragment": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow unnecessary fragments", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md", - }, - "fixable": "code", - "messages": { - "ChildOfHtmlElement": "Passing a fragment to an HTML element is useless.", - "NeedsMoreChildren": "Fragments should contain more than one child - otherwise, there’s no need for a Fragment at all.", - }, - "schema": [ - { - "properties": { - "allowExpressions": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "jsx-one-expression-per-line": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Require one JSX element per line", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md", - }, - "fixable": "whitespace", - "messages": { - "moveToNewLine": "\`{{descriptor}}\` must be placed on a new line", - }, - "schema": [ - { - "additionalProperties": false, - "default": { - "allow": "none", - }, - "properties": { - "allow": { - "enum": [ - "none", - "literal", - "single-child", - "non-jsx", - ], - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-pascal-case": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce PascalCase for user-defined JSX components", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md", - }, - "messages": { - "usePascalCase": "Imported JSX component {{name}} must be in PascalCase", - "usePascalOrSnakeCase": "Imported JSX component {{name}} must be in PascalCase or SCREAMING_SNAKE_CASE", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowAllCaps": { - "type": "boolean", - }, - "allowLeadingUnderscore": { - "type": "boolean", - }, - "allowNamespace": { - "type": "boolean", - }, - "ignore": { - "items": [ - { - "type": "string", - }, - ], - "minItems": 0, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-props-no-multi-spaces": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow multiple spaces between inline JSX props", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md", - }, - "fixable": "code", - "messages": { - "noLineGap": "Expected no line gap between “{{prop1}}” and “{{prop2}}”", - "onlyOneSpace": "Expected only one space between “{{prop1}}” and “{{prop2}}”", - }, - "schema": [], - }, - }, - "jsx-props-no-spread-multi": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow JSX prop spreading the same identifier multiple times", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md", - }, - "messages": { - "noMultiSpreading": "Spreading the same expression multiple times is forbidden", - }, - }, - }, - "jsx-props-no-spreading": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow JSX prop spreading", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md", - }, - "messages": { - "noSpreading": "Prop spreading is forbidden", - }, - "schema": [ - { - "allOf": [ - { - "properties": { - "custom": { - "enum": [ - "enforce", - "ignore", - ], - }, - "exceptions": { - "items": { - "type": "string", - "uniqueItems": true, - }, - "type": "array", - }, - "explicitSpread": { - "enum": [ - "enforce", - "ignore", - ], - }, - "html": { - "enum": [ - "enforce", - "ignore", - ], - }, - }, - "type": "object", - }, - { - "not": { - "properties": { - "custom": { - "enum": [ - "ignore", - ], - }, - "exceptions": { - "maxItems": 0, - "minItems": 0, - "type": "array", - }, - "html": { - "enum": [ - "ignore", - ], - }, - }, - "required": [ - "html", - "custom", - ], - "type": "object", - }, - }, - ], - }, - ], - }, - }, - "jsx-sort-default-props": { - "create": [Function], - "meta": { - "deprecated": true, - "docs": { - "category": "Stylistic Issues", - "description": "Enforce defaultProps declarations alphabetical sorting", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md", - }, - "messages": { - "propsNotSorted": "Default prop types declarations should be sorted alphabetically", - }, - "replacedBy": [ - "sort-default-props", - ], - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreCase": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-sort-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce props alphabetical sorting", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md", - }, - "fixable": "code", - "messages": { - "listCallbacksLast": "Callbacks must be listed after all other props", - "listIsEmpty": "A customized reserved first list must not be empty", - "listMultilineFirst": "Multiline props must be listed before all other props", - "listMultilineLast": "Multiline props must be listed after all other props", - "listReservedPropsFirst": "Reserved props must be listed before all other props", - "listShorthandFirst": "Shorthand props must be listed before all other props", - "listShorthandLast": "Shorthand props must be listed after all other props", - "noUnreservedProps": "A customized reserved first list must only contain a subset of React reserved props. Remove: {{unreservedWords}}", - "sortPropsByAlpha": "Props should be sorted alphabetically", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "callbacksLast": { - "type": "boolean", - }, - "ignoreCase": { - "type": "boolean", - }, - "locale": { - "default": "auto", - "type": "string", - }, - "multiline": { - "default": "ignore", - "enum": [ - "ignore", - "first", - "last", - ], - }, - "noSortAlphabetically": { - "type": "boolean", - }, - "reservedFirst": { - "type": [ - "array", - "boolean", - ], - }, - "shorthandFirst": { - "type": "boolean", - }, - "shorthandLast": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-space-before-closing": { - "create": [Function], - "meta": { - "deprecated": true, - "docs": { - "category": "Stylistic Issues", - "description": "Enforce spacing before closing bracket in JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md", - }, - "fixable": "code", - "messages": { - "needSpaceBeforeClose": "A space is required before closing bracket", - "noSpaceBeforeClose": "A space is forbidden before closing bracket", - }, - "replacedBy": [ - "jsx-tag-spacing", - ], - "schema": [ - { - "enum": [ - "always", - "never", - ], - }, - ], - }, - }, - "jsx-tag-spacing": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce whitespace in and around the JSX opening and closing brackets", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md", - }, - "fixable": "whitespace", - "messages": { - "afterOpenNeedSpace": "A space is required after opening bracket", - "afterOpenNoSpace": "A space is forbidden after opening bracket", - "beforeCloseNeedNewline": "A newline is required before closing bracket", - "beforeCloseNeedSpace": "Whitespace is required before closing bracket", - "beforeCloseNoSpace": "A space is forbidden before closing bracket", - "beforeSelfCloseNeedNewline": "A newline is required before closing bracket", - "beforeSelfCloseNeedSpace": "A space is required before closing bracket", - "beforeSelfCloseNoSpace": "A space is forbidden before closing bracket", - "closeSlashNeedSpace": "Whitespace is required between \`<\` and \`/\`; write \`< /\`", - "closeSlashNoSpace": "Whitespace is forbidden between \`<\` and \`/\`; write \`\`; write \`/ >\`", - "selfCloseSlashNoSpace": "Whitespace is forbidden between \`/\` and \`>\`; write \`/>\`", - }, - "schema": [ - { - "additionalProperties": false, - "default": { - "afterOpening": "never", - "beforeClosing": "allow", - "beforeSelfClosing": "always", - "closingSlash": "never", - }, - "properties": { - "afterOpening": { - "enum": [ - "always", - "allow-multiline", - "never", - "allow", - ], - }, - "beforeClosing": { - "enum": [ - "always", - "proportional-always", - "never", - "allow", - ], - }, - "beforeSelfClosing": { - "enum": [ - "always", - "proportional-always", - "never", - "allow", - ], - }, - "closingSlash": { - "enum": [ - "always", - "never", - "allow", - ], - }, - }, - "type": "object", - }, - ], - }, - }, - "jsx-uses-react": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow React to be incorrectly marked as unused", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md", - }, - "schema": [], - }, - }, - "jsx-uses-vars": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow variables used in JSX to be incorrectly marked as unused", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md", - }, - "schema": [], - }, - }, - "jsx-wrap-multilines": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow missing parentheses around multiline JSX", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md", - }, - "fixable": "code", - "messages": { - "extraParens": "Expected no parentheses around multilines JSX", - "missingParens": "Missing parentheses around multilines JSX", - "parensOnNewLines": "Parentheses around JSX should be on separate lines", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "arrow": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - "assignment": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - "condition": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - "declaration": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - "logical": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - "prop": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - "return": { - "enum": [ - true, - false, - "ignore", - "parens", - "parens-new-line", - "never", - ], - }, - }, - "type": "object", - }, - ], - }, - }, - "no-access-state-in-setstate": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow when this.state is accessed within setState", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md", - }, - "messages": { - "useCallback": "Use callback in setState when referencing the previous state.", - }, - }, - }, - "no-adjacent-inline-elements": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow adjacent inline elements not separated by whitespace.", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md", - }, - "messages": { - "inlineElement": "Child elements which render as inline HTML elements should be separated by a space or wrapped in block level elements.", - }, - "schema": [], - }, - }, - "no-array-index-key": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of Array index in keys", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md", - }, - "messages": { - "noArrayIndex": "Do not use Array index in keys", - }, - "schema": [], - }, - }, - "no-arrow-function-lifecycle": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Lifecycle methods should be methods on the prototype, not class fields", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md", - }, - "fixable": "code", - "messages": { - "lifecycle": "{{propertyName}} is a React lifecycle method, and should not be an arrow function or in a class field. Use an instance method instead.", - }, - "schema": [], - }, - }, - "no-children-prop": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow passing of children as props", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md", - }, - "messages": { - "nestChildren": "Do not pass children as props. Instead, nest children between the opening and closing tags.", - "nestFunction": "Do not nest a function between the opening and closing tags. Instead, pass it as a prop.", - "passChildrenAsArgs": "Do not pass children as props. Instead, pass them as additional arguments to React.createElement.", - "passFunctionAsArgs": "Do not pass a function as an additional argument to React.createElement. Instead, pass it as a prop.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowFunctions": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-danger": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of dangerous JSX properties", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md", - }, - "messages": { - "dangerousProp": "Dangerous property '{{name}}' found", - }, - "schema": [ - { - "properties": { - "customComponentNames": { - "items": { - "type": "string", - }, - "minItems": 0, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - }, - }, - "no-danger-with-children": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow when a DOM element is using both children and dangerouslySetInnerHTML", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md", - }, - "messages": { - "dangerWithChildren": "Only set one of \`children\` or \`props.dangerouslySetInnerHTML\`", - }, - "schema": [], - }, - }, - "no-deprecated": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of deprecated methods", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md", - }, - "messages": { - "deprecated": "{{oldMethod}} is deprecated since React {{version}}{{newMethod}}{{refs}}", - }, - "schema": [], - }, - }, - "no-did-mount-set-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of setState in componentDidMount", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md", - }, - "messages": { - "noSetState": "Do not use setState in {{name}}", - }, - "schema": [ - { - "enum": [ - "disallow-in-func", - ], - }, - ], - }, - }, - "no-did-update-set-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of setState in componentDidUpdate", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md", - }, - "messages": { - "noSetState": "Do not use setState in {{name}}", - }, - "schema": [ - { - "enum": [ - "disallow-in-func", - ], - }, - ], - }, - }, - "no-direct-mutation-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow direct mutation of this.state", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md", - }, - "messages": { - "noDirectMutation": "Do not mutate state directly. Use setState().", - }, - }, - }, - "no-find-dom-node": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of findDOMNode", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md", - }, - "messages": { - "noFindDOMNode": "Do not use findDOMNode. It doesn’t work with function components and is deprecated in StrictMode. See https://reactjs.org/docs/react-dom.html#finddomnode", - }, - "schema": [], - }, - }, - "no-invalid-html-attribute": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow usage of invalid attributes", - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md", - }, - "hasSuggestions": true, - "messages": { - "emptyIsMeaningless": "An empty “{{attributeName}}” attribute is meaningless.", - "neverValid": "“{{reportingValue}}” is never a valid “{{attributeName}}” attribute value.", - "noEmpty": "An empty “{{attributeName}}” attribute is meaningless.", - "noMethod": "The ”{{attributeName}}“ attribute cannot be a method.", - "notAlone": "“{{reportingValue}}” must be directly followed by “{{missingValue}}”.", - "notPaired": "“{{reportingValue}}” can not be directly followed by “{{secondValue}}” without “{{missingValue}}”.", - "notValidFor": "“{{reportingValue}}” is not a valid “{{attributeName}}” attribute value for <{{elementName}}>.", - "onlyMeaningfulFor": "The ”{{attributeName}}“ attribute only has meaning on the tags: {{tagNames}}", - "onlyStrings": "“{{attributeName}}” attribute only supports strings.", - "spaceDelimited": "”{{attributeName}}“ attribute values should be space delimited.", - "suggestRemoveDefault": ""remove {{attributeName}}"", - "suggestRemoveEmpty": ""remove empty attribute {{attributeName}}"", - "suggestRemoveInvalid": "“remove invalid attribute {{reportingValue}}”", - "suggestRemoveNonString": "remove non-string value in “{{attributeName}}”", - "suggestRemoveWhitespaces": "remove whitespaces in “{{attributeName}}”", - }, - "schema": [ - { - "items": { - "enum": [ - "rel", - ], - }, - "type": "array", - "uniqueItems": true, - }, - ], - "type": "suggestion", - }, - }, - "no-is-mounted": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of isMounted", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md", - }, - "messages": { - "noIsMounted": "Do not use isMounted", - }, - "schema": [], - }, - }, - "no-multi-comp": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow multiple component definition per file", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md", - }, - "messages": { - "onlyOneComponent": "Declare only one React component per file", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreStateless": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-namespace": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Enforce that namespaces are not used in React elements", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md", - }, - "messages": { - "noNamespace": "React component {{name}} must not be in a namespace, as React does not support them", - }, - "schema": [], - }, - }, - "no-object-type-as-default-prop": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of referential-type variables as default param in functional component", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md", - }, - "messages": { - "forbiddenTypeDefaultParam": "{{propName}} has a/an {{forbiddenType}} as default prop. This could lead to potential infinite render loop in React. Use a variable reference instead of {{forbiddenType}}.", - }, - }, - }, - "no-redundant-should-component-update": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow usage of shouldComponentUpdate when extending React.PureComponent", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md", - }, - "messages": { - "noShouldCompUpdate": "{{component}} does not need shouldComponentUpdate when extending React.PureComponent.", - }, - "schema": [], - }, - }, - "no-render-return-value": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of the return value of ReactDOM.render", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md", - }, - "messages": { - "noReturnValue": "Do not depend on the return value from {{node}}.render", - }, - "schema": [], - }, - }, - "no-set-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow usage of setState", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md", - }, - "messages": { - "noSetState": "Do not use setState", - }, - "schema": [], - }, - }, - "no-string-refs": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow using string references", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md", - }, - "messages": { - "stringInRefDeprecated": "Using string literals in ref attributes is deprecated.", - "thisRefsDeprecated": "Using this.refs is deprecated.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "noTemplateLiterals": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-this-in-sfc": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow \`this\` from being used in stateless functional components", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md", - }, - "messages": { - "noThisInSFC": "Stateless functional components should not use \`this\`", - }, - "schema": [], - }, - }, - "no-typos": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow common typos", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md", - }, - "messages": { - "noPropTypesBinding": "\`'prop-types'\` imported without a local \`PropTypes\` binding.", - "noReactBinding": "\`'react'\` imported without a local \`React\` binding.", - "staticLifecycleMethod": "Lifecycle method should be static: {{method}}", - "typoLifecycleMethod": "Typo in component lifecycle method declaration: {{actual}} should be {{expected}}", - "typoPropDeclaration": "Typo in property declaration", - "typoPropType": "Typo in declared prop type: {{name}}", - "typoPropTypeChain": "Typo in prop type chain qualifier: {{name}}", - "typoStaticClassProp": "Typo in static class property declaration", - }, - "schema": [], - }, - }, - "no-unescaped-entities": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow unescaped HTML entities from appearing in markup", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md", - }, - "hasSuggestions": true, - "messages": { - "replaceWithAlt": "Replace with \`{{alt}}\`.", - "unescapedEntity": "HTML entity, \`{{entity}}\` , must be escaped.", - "unescapedEntityAlts": "\`{{entity}}\` can be escaped with {{alts}}.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "forbid": { - "items": { - "anyOf": [ - { - "type": "string", - }, - { - "properties": { - "alternatives": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "char": { - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-unknown-property": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow usage of unknown DOM property", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md", - }, - "fixable": "code", - "messages": { - "dataLowercaseRequired": "React does not recognize data-* props with uppercase characters on a DOM element. Found '{{name}}', use '{{lowerCaseName}}' instead", - "invalidPropOnTag": "Invalid property '{{name}}' found on tag '{{tagName}}', but it is only allowed on: {{allowedTags}}", - "unknownProp": "Unknown property '{{name}}' found", - "unknownPropWithStandardName": "Unknown property '{{name}}' found, use '{{standardName}}' instead", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignore": { - "items": { - "type": "string", - }, - "type": "array", - }, - "requireDataLowercase": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-unsafe": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of unsafe lifecycle methods", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md", - }, - "messages": { - "unsafeMethod": "{{method}} is unsafe for use in async rendering. Update the component to use {{newMethod}} instead. {{details}}", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "checkAliases": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-unstable-nested-components": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow creating unstable components inside components", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowAsProps": { - "type": "boolean", - }, - "customValidators": { - "items": { - "type": "string", - }, - "type": "array", - }, - "propNamePattern": { - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-unused-class-component-methods": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow declaring unused methods of component class", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md", - }, - "messages": { - "unused": "Unused method or property "{{name}}"", - "unusedWithClass": "Unused method or property "{{name}}" of class "{{className}}"", - }, - "schema": [], - }, - }, - "no-unused-prop-types": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow definitions of unused propTypes", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md", - }, - "messages": { - "unusedPropType": "'{{name}}' PropType is defined but prop is never used", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "customValidators": { - "items": { - "type": "string", - }, - "type": "array", - }, - "ignore": { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - "skipShapeProps": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "no-unused-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow definitions of unused state", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md", - }, - "messages": { - "unusedStateField": "Unused state field: '{{name}}'", - }, - "schema": [], - }, - }, - "no-will-update-set-state": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow usage of setState in componentWillUpdate", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md", - }, - "messages": { - "noSetState": "Do not use setState in {{name}}", - }, - "schema": [ - { - "enum": [ - "disallow-in-func", - ], - }, - ], - }, - }, - "prefer-es6-class": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce ES5 or ES6 class for React Components", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md", - }, - "messages": { - "shouldUseCreateClass": "Component should use createClass instead of es6 class", - "shouldUseES6Class": "Component should use es6 class instead of createClass", - }, - "schema": [ - { - "enum": [ - "always", - "never", - ], - }, - ], - }, - }, - "prefer-exact-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Prefer exact proptype definitions", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md", - }, - "messages": { - "flow": "Component flow props should be set with exact objects.", - "propTypes": "Component propTypes should be exact by using {{exactPropWrappers}}.", - }, - "schema": [], - }, - }, - "prefer-read-only-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce that props are read-only", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md", - }, - "fixable": "code", - "messages": { - "readOnlyProp": "Prop '{{name}}' should be read-only.", - }, - "schema": [], - }, - }, - "prefer-stateless-function": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce stateless components to be written as a pure function", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md", - }, - "messages": { - "componentShouldBePure": "Component should be written as a pure function", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignorePureComponents": { - "default": false, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "prop-types": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow missing props validation in a React component definition", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md", - }, - "messages": { - "missingPropType": "'{{name}}' is missing in props validation", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "customValidators": { - "items": { - "type": "string", - }, - "type": "array", - }, - "ignore": { - "items": { - "type": "string", - }, - "type": "array", - }, - "skipUndeclared": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "react-in-jsx-scope": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Disallow missing React when using JSX", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md", - }, - "messages": { - "notInScope": "'{{name}}' must be in scope when using JSX", - }, - "schema": [], - }, - }, - "require-default-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Enforce a defaultProps definition for every prop that is not a required prop", - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md", - }, - "messages": { - "destructureInSignature": "Must destructure props in the function signature to initialize an optional prop.", - "noDefaultPropsWithFunction": "Don’t use defaultProps with function components.", - "noDefaultWithRequired": "propType "{{name}}" is required and should not have a defaultProps declaration.", - "shouldAssignObjectDefault": "propType "{{name}}" is not required, but has no corresponding default argument value.", - "shouldHaveDefault": "propType "{{name}}" is not required, but has no corresponding defaultProps declaration.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "classes": { - "enum": [ - "defaultProps", - "ignore", - ], - }, - "forbidDefaultForRequired": { - "type": "boolean", - }, - "functions": { - "enum": [ - "defaultArguments", - "defaultProps", - "ignore", - ], - }, - "ignoreFunctionalComponents": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "require-optimization": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Enforce React components to have a shouldComponentUpdate method", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md", - }, - "messages": { - "noShouldComponentUpdate": "Component is not optimized. Please add a shouldComponentUpdate method.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowDecorators": { - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "require-render-return": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Enforce ES5 or ES6 class for returning value in render function", - "recommended": true, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md", - }, - "messages": { - "noRenderReturn": "Your render method should have a return statement", - }, - "schema": [], - }, - }, - "self-closing-comp": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Disallow extra closing tags for components without children", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md", - }, - "fixable": "code", - "messages": { - "notSelfClosing": "Empty components are self-closing", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "component": { - "default": true, - "type": "boolean", - }, - "html": { - "default": true, - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "sort-comp": { - "create": [Function], - "defaultConfig": { - "groups": { - "lifecycle": [ - "displayName", - "propTypes", - "contextTypes", - "childContextTypes", - "mixins", - "statics", - "defaultProps", - "constructor", - "getDefaultProps", - "state", - "getInitialState", - "getChildContext", - "getDerivedStateFromProps", - "componentWillMount", - "UNSAFE_componentWillMount", - "componentDidMount", - "componentWillReceiveProps", - "UNSAFE_componentWillReceiveProps", - "shouldComponentUpdate", - "componentWillUpdate", - "UNSAFE_componentWillUpdate", - "getSnapshotBeforeUpdate", - "componentDidUpdate", - "componentDidCatch", - "componentWillUnmount", - ], - }, - "order": [ - "static-methods", - "lifecycle", - "everything-else", - "render", - ], - }, - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce component methods order", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md", - }, - "messages": { - "unsortedProps": "{{propA}} should be placed {{position}} {{propB}}", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "groups": { - "patternProperties": { - "^.*$": { - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - "order": { - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "sort-default-props": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce defaultProps declarations alphabetical sorting", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md", - }, - "messages": { - "propsNotSorted": "Default prop types declarations should be sorted alphabetically", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreCase": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "sort-prop-types": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce propTypes declarations alphabetical sorting", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md", - }, - "fixable": "code", - "messages": { - "callbackPropsLast": "Callback prop types must be listed after all other prop types", - "propsNotSorted": "Prop types declarations should be sorted alphabetically", - "requiredPropsFirst": "Required prop types must be listed before all other prop types", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "callbacksLast": { - "type": "boolean", - }, - "checkTypes": { - "type": "boolean", - }, - "ignoreCase": { - "type": "boolean", - }, - "noSortAlphabetically": { - "type": "boolean", - }, - "requiredFirst": { - "type": "boolean", - }, - "sortShapeProp": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "state-in-constructor": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforce class component state initialization style", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md", - }, - "messages": { - "stateInitClassProp": "State initialization should be in a class property", - "stateInitConstructor": "State initialization should be in a constructor", - }, - "schema": [ - { - "enum": [ - "always", - "never", - ], - }, - ], - }, - }, - "static-property-placement": { - "create": [Function], - "meta": { - "docs": { - "category": "Stylistic Issues", - "description": "Enforces where React component static properties should be positioned.", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md", - }, - "fixable": null, - "messages": { - "declareOutsideClass": "'{{name}}' should be declared outside the class body.", - "notGetterClassFunc": "'{{name}}' should be declared as a static getter class function.", - "notStaticClassProp": "'{{name}}' should be declared as a static class property.", - }, - "schema": [ - { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - { - "additionalProperties": false, - "properties": { - "childContextTypes": { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - "contextType": { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - "contextTypes": { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - "defaultProps": { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - "displayName": { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - "propTypes": { - "enum": [ - "static public field", - "static getter", - "property assignment", - ], - }, - }, - "type": "object", - }, - ], - }, - }, - "style-prop-object": { - "create": [Function], - "meta": { - "docs": { - "category": "Possible Errors", - "description": "Enforce style prop value is an object", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md", - }, - "messages": { - "stylePropNotObject": "Style prop value must be an object", - }, - "schema": [ - { - "properties": { - "allow": { - "additionalItems": false, - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - }, - }, - "void-dom-elements-no-children": { - "create": [Function], - "meta": { - "docs": { - "category": "Best Practices", - "description": "Disallow void DOM elements (e.g. \`\`, \`
\`) from receiving children", - "recommended": false, - "url": "https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md", - }, - "messages": { - "noChildrenInVoidEl": "Void DOM element <{{element}} /> cannot receive children.", - }, - "schema": [], - }, - }, - }, - }, - }, - "rules": { - "react/display-name": 2, - "react/jsx-key": 2, - "react/jsx-no-comment-textnodes": 2, - "react/jsx-no-duplicate-props": 2, - "react/jsx-no-target-blank": 2, - "react/jsx-no-undef": 2, - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "react/no-children-prop": 2, - "react/no-danger-with-children": 2, - "react/no-deprecated": 2, - "react/no-direct-mutation-state": 2, - "react/no-find-dom-node": 2, - "react/no-is-mounted": 2, - "react/no-render-return-value": 2, - "react/no-string-refs": 2, - "react/no-unescaped-entities": 2, - "react/no-unknown-property": 2, - "react/no-unsafe": 0, - "react/prop-types": 2, - "react/react-in-jsx-scope": 2, - "react/require-render-return": 2, - }, - }, - { - "rules": { - "constructor-super": "error", - "for-direction": "error", - "getter-return": "error", - "no-async-promise-executor": "error", - "no-case-declarations": "error", - "no-class-assign": "error", - "no-compare-neg-zero": "error", - "no-cond-assign": "error", - "no-const-assign": "error", - "no-constant-binary-expression": "error", - "no-constant-condition": "error", - "no-control-regex": "error", - "no-debugger": "error", - "no-delete-var": "error", - "no-dupe-args": "error", - "no-dupe-class-members": "error", - "no-dupe-else-if": "error", - "no-dupe-keys": "error", - "no-duplicate-case": "error", - "no-empty": "error", - "no-empty-character-class": "error", - "no-empty-pattern": "error", - "no-empty-static-block": "error", - "no-ex-assign": "error", - "no-extra-boolean-cast": "error", - "no-fallthrough": "error", - "no-func-assign": "error", - "no-global-assign": "error", - "no-import-assign": "error", - "no-invalid-regexp": "error", - "no-irregular-whitespace": "error", - "no-loss-of-precision": "error", - "no-misleading-character-class": "error", - "no-new-native-nonconstructor": "error", - "no-nonoctal-decimal-escape": "error", - "no-obj-calls": "error", - "no-octal": "error", - "no-prototype-builtins": "error", - "no-redeclare": "error", - "no-regex-spaces": "error", - "no-self-assign": "error", - "no-setter-return": "error", - "no-shadow-restricted-names": "error", - "no-sparse-arrays": "error", - "no-this-before-super": "error", - "no-undef": "error", - "no-unexpected-multiline": "error", - "no-unreachable": "error", - "no-unsafe-finally": "error", - "no-unsafe-negation": "error", - "no-unsafe-optional-chaining": "error", - "no-unused-labels": "error", - "no-unused-private-class-members": "error", - "no-unused-vars": "error", - "no-useless-backreference": "error", - "no-useless-catch": "error", - "no-useless-escape": "error", - "no-with": "error", - "require-yield": "error", - "use-isnan": "error", - "valid-typeof": "error", - }, - }, - { - "name": "eslint-plugin-prettier/recommended", - "plugins": { - "prettier": { - "configs": { - "recommended": { - "extends": [ - "prettier", - ], - "plugins": [ - "prettier", - ], - "rules": { - "arrow-body-style": "off", - "prefer-arrow-callback": "off", - "prettier/prettier": "error", - }, - }, - }, - "meta": { - "name": "eslint-plugin-prettier", - "version": "5.2.3", - }, - "rules": { - "prettier": { - "create": [Function], - "meta": { - "docs": { - "url": "https://github.com/prettier/eslint-plugin-prettier#options", - }, - "fixable": "code", - "messages": { - "delete": "Delete \`{{ deleteText }}\`", - "insert": "Insert \`{{ insertText }}\`", - "replace": "Replace \`{{ deleteText }}\` with \`{{ insertText }}\`", - }, - "schema": [ - { - "additionalProperties": true, - "properties": {}, - "type": "object", - }, - { - "additionalProperties": true, - "properties": { - "fileInfoOptions": { - "additionalProperties": true, - "properties": {}, - "type": "object", - }, - "usePrettierrc": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "layout", - }, - }, - }, - }, - }, - "rules": { - "@babel/object-curly-spacing": "off", - "@babel/semi": "off", - "@stylistic/array-bracket-newline": "off", - "@stylistic/array-bracket-spacing": "off", - "@stylistic/array-element-newline": "off", - "@stylistic/arrow-parens": "off", - "@stylistic/arrow-spacing": "off", - "@stylistic/block-spacing": "off", - "@stylistic/brace-style": "off", - "@stylistic/comma-dangle": "off", - "@stylistic/comma-spacing": "off", - "@stylistic/comma-style": "off", - "@stylistic/computed-property-spacing": "off", - "@stylistic/dot-location": "off", - "@stylistic/eol-last": "off", - "@stylistic/func-call-spacing": "off", - "@stylistic/function-call-argument-newline": "off", - "@stylistic/function-call-spacing": "off", - "@stylistic/function-paren-newline": "off", - "@stylistic/generator-star-spacing": "off", - "@stylistic/implicit-arrow-linebreak": "off", - "@stylistic/indent": "off", - "@stylistic/indent-binary-ops": "off", - "@stylistic/js/array-bracket-newline": "off", - "@stylistic/js/array-bracket-spacing": "off", - "@stylistic/js/array-element-newline": "off", - "@stylistic/js/arrow-parens": "off", - "@stylistic/js/arrow-spacing": "off", - "@stylistic/js/block-spacing": "off", - "@stylistic/js/brace-style": "off", - "@stylistic/js/comma-dangle": "off", - "@stylistic/js/comma-spacing": "off", - "@stylistic/js/comma-style": "off", - "@stylistic/js/computed-property-spacing": "off", - "@stylistic/js/dot-location": "off", - "@stylistic/js/eol-last": "off", - "@stylistic/js/func-call-spacing": "off", - "@stylistic/js/function-call-argument-newline": "off", - "@stylistic/js/function-call-spacing": "off", - "@stylistic/js/function-paren-newline": "off", - "@stylistic/js/generator-star-spacing": "off", - "@stylistic/js/implicit-arrow-linebreak": "off", - "@stylistic/js/indent": "off", - "@stylistic/js/jsx-quotes": "off", - "@stylistic/js/key-spacing": "off", - "@stylistic/js/keyword-spacing": "off", - "@stylistic/js/linebreak-style": "off", - "@stylistic/js/lines-around-comment": 0, - "@stylistic/js/max-len": 0, - "@stylistic/js/max-statements-per-line": "off", - "@stylistic/js/multiline-ternary": "off", - "@stylistic/js/new-parens": "off", - "@stylistic/js/newline-per-chained-call": "off", - "@stylistic/js/no-confusing-arrow": 0, - "@stylistic/js/no-extra-parens": "off", - "@stylistic/js/no-extra-semi": "off", - "@stylistic/js/no-floating-decimal": "off", - "@stylistic/js/no-mixed-operators": 0, - "@stylistic/js/no-mixed-spaces-and-tabs": "off", - "@stylistic/js/no-multi-spaces": "off", - "@stylistic/js/no-multiple-empty-lines": "off", - "@stylistic/js/no-tabs": 0, - "@stylistic/js/no-trailing-spaces": "off", - "@stylistic/js/no-whitespace-before-property": "off", - "@stylistic/js/nonblock-statement-body-position": "off", - "@stylistic/js/object-curly-newline": "off", - "@stylistic/js/object-curly-spacing": "off", - "@stylistic/js/object-property-newline": "off", - "@stylistic/js/one-var-declaration-per-line": "off", - "@stylistic/js/operator-linebreak": "off", - "@stylistic/js/padded-blocks": "off", - "@stylistic/js/quote-props": "off", - "@stylistic/js/quotes": 0, - "@stylistic/js/rest-spread-spacing": "off", - "@stylistic/js/semi": "off", - "@stylistic/js/semi-spacing": "off", - "@stylistic/js/semi-style": "off", - "@stylistic/js/space-before-blocks": "off", - "@stylistic/js/space-before-function-paren": "off", - "@stylistic/js/space-in-parens": "off", - "@stylistic/js/space-infix-ops": "off", - "@stylistic/js/space-unary-ops": "off", - "@stylistic/js/switch-colon-spacing": "off", - "@stylistic/js/template-curly-spacing": "off", - "@stylistic/js/template-tag-spacing": "off", - "@stylistic/js/wrap-iife": "off", - "@stylistic/js/wrap-regex": "off", - "@stylistic/js/yield-star-spacing": "off", - "@stylistic/jsx-child-element-spacing": "off", - "@stylistic/jsx-closing-bracket-location": "off", - "@stylistic/jsx-closing-tag-location": "off", - "@stylistic/jsx-curly-newline": "off", - "@stylistic/jsx-curly-spacing": "off", - "@stylistic/jsx-equals-spacing": "off", - "@stylistic/jsx-first-prop-new-line": "off", - "@stylistic/jsx-indent": "off", - "@stylistic/jsx-indent-props": "off", - "@stylistic/jsx-max-props-per-line": "off", - "@stylistic/jsx-newline": "off", - "@stylistic/jsx-one-expression-per-line": "off", - "@stylistic/jsx-props-no-multi-spaces": "off", - "@stylistic/jsx-quotes": "off", - "@stylistic/jsx-tag-spacing": "off", - "@stylistic/jsx-wrap-multilines": "off", - "@stylistic/jsx/jsx-child-element-spacing": "off", - "@stylistic/jsx/jsx-closing-bracket-location": "off", - "@stylistic/jsx/jsx-closing-tag-location": "off", - "@stylistic/jsx/jsx-curly-newline": "off", - "@stylistic/jsx/jsx-curly-spacing": "off", - "@stylistic/jsx/jsx-equals-spacing": "off", - "@stylistic/jsx/jsx-first-prop-new-line": "off", - "@stylistic/jsx/jsx-indent": "off", - "@stylistic/jsx/jsx-indent-props": "off", - "@stylistic/jsx/jsx-max-props-per-line": "off", - "@stylistic/key-spacing": "off", - "@stylistic/keyword-spacing": "off", - "@stylistic/linebreak-style": "off", - "@stylistic/lines-around-comment": 0, - "@stylistic/max-len": 0, - "@stylistic/max-statements-per-line": "off", - "@stylistic/member-delimiter-style": "off", - "@stylistic/multiline-ternary": "off", - "@stylistic/new-parens": "off", - "@stylistic/newline-per-chained-call": "off", - "@stylistic/no-confusing-arrow": 0, - "@stylistic/no-extra-parens": "off", - "@stylistic/no-extra-semi": "off", - "@stylistic/no-floating-decimal": "off", - "@stylistic/no-mixed-operators": 0, - "@stylistic/no-mixed-spaces-and-tabs": "off", - "@stylistic/no-multi-spaces": "off", - "@stylistic/no-multiple-empty-lines": "off", - "@stylistic/no-tabs": 0, - "@stylistic/no-trailing-spaces": "off", - "@stylistic/no-whitespace-before-property": "off", - "@stylistic/nonblock-statement-body-position": "off", - "@stylistic/object-curly-newline": "off", - "@stylistic/object-curly-spacing": "off", - "@stylistic/object-property-newline": "off", - "@stylistic/one-var-declaration-per-line": "off", - "@stylistic/operator-linebreak": "off", - "@stylistic/padded-blocks": "off", - "@stylistic/quote-props": "off", - "@stylistic/quotes": 0, - "@stylistic/rest-spread-spacing": "off", - "@stylistic/semi": "off", - "@stylistic/semi-spacing": "off", - "@stylistic/semi-style": "off", - "@stylistic/space-before-blocks": "off", - "@stylistic/space-before-function-paren": "off", - "@stylistic/space-in-parens": "off", - "@stylistic/space-infix-ops": "off", - "@stylistic/space-unary-ops": "off", - "@stylistic/switch-colon-spacing": "off", - "@stylistic/template-curly-spacing": "off", - "@stylistic/template-tag-spacing": "off", - "@stylistic/ts/block-spacing": "off", - "@stylistic/ts/brace-style": "off", - "@stylistic/ts/comma-dangle": "off", - "@stylistic/ts/comma-spacing": "off", - "@stylistic/ts/func-call-spacing": "off", - "@stylistic/ts/function-call-spacing": "off", - "@stylistic/ts/indent": "off", - "@stylistic/ts/key-spacing": "off", - "@stylistic/ts/keyword-spacing": "off", - "@stylistic/ts/lines-around-comment": 0, - "@stylistic/ts/member-delimiter-style": "off", - "@stylistic/ts/no-extra-parens": "off", - "@stylistic/ts/no-extra-semi": "off", - "@stylistic/ts/object-curly-spacing": "off", - "@stylistic/ts/quotes": 0, - "@stylistic/ts/semi": "off", - "@stylistic/ts/space-before-blocks": "off", - "@stylistic/ts/space-before-function-paren": "off", - "@stylistic/ts/space-infix-ops": "off", - "@stylistic/ts/type-annotation-spacing": "off", - "@stylistic/type-annotation-spacing": "off", - "@stylistic/type-generic-spacing": "off", - "@stylistic/type-named-tuple-spacing": "off", - "@stylistic/wrap-iife": "off", - "@stylistic/wrap-regex": "off", - "@stylistic/yield-star-spacing": "off", - "@typescript-eslint/block-spacing": "off", - "@typescript-eslint/brace-style": "off", - "@typescript-eslint/comma-dangle": "off", - "@typescript-eslint/comma-spacing": "off", - "@typescript-eslint/func-call-spacing": "off", - "@typescript-eslint/indent": "off", - "@typescript-eslint/key-spacing": "off", - "@typescript-eslint/keyword-spacing": "off", - "@typescript-eslint/lines-around-comment": 0, - "@typescript-eslint/member-delimiter-style": "off", - "@typescript-eslint/no-extra-parens": "off", - "@typescript-eslint/no-extra-semi": "off", - "@typescript-eslint/object-curly-spacing": "off", - "@typescript-eslint/quotes": 0, - "@typescript-eslint/semi": "off", - "@typescript-eslint/space-before-blocks": "off", - "@typescript-eslint/space-before-function-paren": "off", - "@typescript-eslint/space-infix-ops": "off", - "@typescript-eslint/type-annotation-spacing": "off", - "array-bracket-newline": "off", - "array-bracket-spacing": "off", - "array-element-newline": "off", - "arrow-body-style": "off", - "arrow-parens": "off", - "arrow-spacing": "off", - "babel/object-curly-spacing": "off", - "babel/quotes": 0, - "babel/semi": "off", - "block-spacing": "off", - "brace-style": "off", - "comma-dangle": "off", - "comma-spacing": "off", - "comma-style": "off", - "computed-property-spacing": "off", - "curly": 0, - "dot-location": "off", - "eol-last": "off", - "flowtype/boolean-style": "off", - "flowtype/delimiter-dangle": "off", - "flowtype/generic-spacing": "off", - "flowtype/object-type-curly-spacing": "off", - "flowtype/object-type-delimiter": "off", - "flowtype/quotes": "off", - "flowtype/semi": "off", - "flowtype/space-after-type-colon": "off", - "flowtype/space-before-generic-bracket": "off", - "flowtype/space-before-type-colon": "off", - "flowtype/union-intersection-spacing": "off", - "func-call-spacing": "off", - "function-call-argument-newline": "off", - "function-paren-newline": "off", - "generator-star": "off", - "generator-star-spacing": "off", - "implicit-arrow-linebreak": "off", - "indent": "off", - "indent-legacy": "off", - "jsx-quotes": "off", - "key-spacing": "off", - "keyword-spacing": "off", - "linebreak-style": "off", - "lines-around-comment": 0, - "max-len": 0, - "max-statements-per-line": "off", - "multiline-ternary": "off", - "new-parens": "off", - "newline-per-chained-call": "off", - "no-arrow-condition": "off", - "no-comma-dangle": "off", - "no-confusing-arrow": 0, - "no-extra-parens": "off", - "no-extra-semi": "off", - "no-floating-decimal": "off", - "no-mixed-operators": 0, - "no-mixed-spaces-and-tabs": "off", - "no-multi-spaces": "off", - "no-multiple-empty-lines": "off", - "no-reserved-keys": "off", - "no-space-before-semi": "off", - "no-spaced-func": "off", - "no-tabs": 0, - "no-trailing-spaces": "off", - "no-unexpected-multiline": 0, - "no-whitespace-before-property": "off", - "no-wrap-func": "off", - "nonblock-statement-body-position": "off", - "object-curly-newline": "off", - "object-curly-spacing": "off", - "object-property-newline": "off", - "one-var-declaration-per-line": "off", - "operator-linebreak": "off", - "padded-blocks": "off", - "prefer-arrow-callback": "off", - "prettier/prettier": "error", - "quote-props": "off", - "quotes": 0, - "react/jsx-child-element-spacing": "off", - "react/jsx-closing-bracket-location": "off", - "react/jsx-closing-tag-location": "off", - "react/jsx-curly-newline": "off", - "react/jsx-curly-spacing": "off", - "react/jsx-equals-spacing": "off", - "react/jsx-first-prop-new-line": "off", - "react/jsx-indent": "off", - "react/jsx-indent-props": "off", - "react/jsx-max-props-per-line": "off", - "react/jsx-newline": "off", - "react/jsx-one-expression-per-line": "off", - "react/jsx-props-no-multi-spaces": "off", - "react/jsx-space-before-closing": "off", - "react/jsx-tag-spacing": "off", - "react/jsx-wrap-multilines": "off", - "rest-spread-spacing": "off", - "semi": "off", - "semi-spacing": "off", - "semi-style": "off", - "space-after-function-name": "off", - "space-after-keywords": "off", - "space-before-blocks": "off", - "space-before-function-paren": "off", - "space-before-function-parentheses": "off", - "space-before-keywords": "off", - "space-in-brackets": "off", - "space-in-parens": "off", - "space-infix-ops": "off", - "space-return-throw-case": "off", - "space-unary-ops": "off", - "space-unary-word-ops": "off", - "standard/array-bracket-even-spacing": "off", - "standard/computed-property-even-spacing": "off", - "standard/object-curly-even-spacing": "off", - "switch-colon-spacing": "off", - "template-curly-spacing": "off", - "template-tag-spacing": "off", - "unicorn/empty-brace-spaces": "off", - "unicorn/no-nested-ternary": "off", - "unicorn/number-literal-case": "off", - "unicorn/template-indent": 0, - "vue/array-bracket-newline": "off", - "vue/array-bracket-spacing": "off", - "vue/array-element-newline": "off", - "vue/arrow-spacing": "off", - "vue/block-spacing": "off", - "vue/block-tag-newline": "off", - "vue/brace-style": "off", - "vue/comma-dangle": "off", - "vue/comma-spacing": "off", - "vue/comma-style": "off", - "vue/dot-location": "off", - "vue/func-call-spacing": "off", - "vue/html-closing-bracket-newline": "off", - "vue/html-closing-bracket-spacing": "off", - "vue/html-end-tags": "off", - "vue/html-indent": "off", - "vue/html-quotes": "off", - "vue/html-self-closing": 0, - "vue/key-spacing": "off", - "vue/keyword-spacing": "off", - "vue/max-attributes-per-line": "off", - "vue/max-len": 0, - "vue/multiline-html-element-content-newline": "off", - "vue/multiline-ternary": "off", - "vue/mustache-interpolation-spacing": "off", - "vue/no-extra-parens": "off", - "vue/no-multi-spaces": "off", - "vue/no-spaces-around-equal-signs-in-attribute": "off", - "vue/object-curly-newline": "off", - "vue/object-curly-spacing": "off", - "vue/object-property-newline": "off", - "vue/operator-linebreak": "off", - "vue/quote-props": "off", - "vue/script-indent": "off", - "vue/singleline-html-element-content-newline": "off", - "vue/space-in-parens": "off", - "vue/space-infix-ops": "off", - "vue/space-unary-ops": "off", - "vue/template-curly-spacing": "off", - "wrap-iife": "off", - "wrap-regex": "off", - "yield-star-spacing": "off", - }, - }, - { - "languageOptions": { - "parser": { - "meta": { - "name": "typescript-eslint/parser", - "version": "8.27.0", - }, - "parseForESLint": [Function], - }, - "sourceType": "module", - }, - "name": "typescript-eslint/base", - "plugins": { - "@typescript-eslint": { - "configs": { - "all": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-comment": "error", - "@typescript-eslint/ban-tslint-comment": "error", - "@typescript-eslint/class-literal-property-style": "error", - "@typescript-eslint/class-methods-use-this": "error", - "@typescript-eslint/consistent-generic-constructors": "error", - "@typescript-eslint/consistent-indexed-object-style": "error", - "@typescript-eslint/consistent-return": "error", - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/consistent-type-exports": "error", - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/default-param-last": "error", - "@typescript-eslint/dot-notation": "error", - "@typescript-eslint/explicit-function-return-type": "error", - "@typescript-eslint/explicit-member-accessibility": "error", - "@typescript-eslint/explicit-module-boundary-types": "error", - "@typescript-eslint/init-declarations": "error", - "@typescript-eslint/max-params": "error", - "@typescript-eslint/member-ordering": "error", - "@typescript-eslint/method-signature-style": "error", - "@typescript-eslint/naming-convention": "error", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-array-delete": "error", - "@typescript-eslint/no-base-to-string": "error", - "@typescript-eslint/no-confusing-non-null-assertion": "error", - "@typescript-eslint/no-confusing-void-expression": "error", - "@typescript-eslint/no-deprecated": "error", - "@typescript-eslint/no-dupe-class-members": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", - "@typescript-eslint/no-dynamic-delete": "error", - "@typescript-eslint/no-empty-function": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-extraneous-class": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-implied-eval": "error", - "@typescript-eslint/no-import-type-side-effects": "error", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/no-invalid-this": "error", - "@typescript-eslint/no-invalid-void-type": "error", - "@typescript-eslint/no-loop-func": "error", - "@typescript-eslint/no-magic-numbers": "error", - "@typescript-eslint/no-meaningless-void-operator": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-misused-spread": "error", - "@typescript-eslint/no-mixed-enums": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-redeclare": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-restricted-imports": "error", - "@typescript-eslint/no-restricted-types": "error", - "@typescript-eslint/no-shadow": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", - "@typescript-eslint/no-unnecessary-condition": "error", - "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error", - "@typescript-eslint/no-unnecessary-qualifier": "error", - "@typescript-eslint/no-unnecessary-template-expression": "error", - "@typescript-eslint/no-unnecessary-type-arguments": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unnecessary-type-parameters": "error", - "@typescript-eslint/no-unsafe-argument": "error", - "@typescript-eslint/no-unsafe-assignment": "error", - "@typescript-eslint/no-unsafe-call": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-enum-comparison": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unsafe-member-access": "error", - "@typescript-eslint/no-unsafe-return": "error", - "@typescript-eslint/no-unsafe-type-assertion": "error", - "@typescript-eslint/no-unsafe-unary-minus": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-use-before-define": "error", - "@typescript-eslint/no-useless-constructor": "error", - "@typescript-eslint/no-useless-empty-export": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/non-nullable-type-assertion-style": "error", - "@typescript-eslint/only-throw-error": "error", - "@typescript-eslint/parameter-properties": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-destructuring": "error", - "@typescript-eslint/prefer-enum-initializers": "error", - "@typescript-eslint/prefer-find": "error", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/prefer-function-type": "error", - "@typescript-eslint/prefer-includes": "error", - "@typescript-eslint/prefer-literal-enum-member": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/prefer-nullish-coalescing": "error", - "@typescript-eslint/prefer-optional-chain": "error", - "@typescript-eslint/prefer-promise-reject-errors": "error", - "@typescript-eslint/prefer-readonly": "error", - "@typescript-eslint/prefer-readonly-parameter-types": "error", - "@typescript-eslint/prefer-reduce-type-parameter": "error", - "@typescript-eslint/prefer-regexp-exec": "error", - "@typescript-eslint/prefer-return-this-type": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "@typescript-eslint/promise-function-async": "error", - "@typescript-eslint/related-getter-setter-pairs": "error", - "@typescript-eslint/require-array-sort-compare": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "@typescript-eslint/restrict-template-expressions": "error", - "@typescript-eslint/return-await": "error", - "@typescript-eslint/strict-boolean-expressions": "error", - "@typescript-eslint/switch-exhaustiveness-check": "error", - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/typedef": "error", - "@typescript-eslint/unbound-method": "error", - "@typescript-eslint/unified-signatures": "error", - "@typescript-eslint/use-unknown-in-catch-callback-variable": "error", - "class-methods-use-this": "off", - "consistent-return": "off", - "default-param-last": "off", - "dot-notation": "off", - "init-declarations": "off", - "max-params": "off", - "no-array-constructor": "off", - "no-dupe-class-members": "off", - "no-empty-function": "off", - "no-implied-eval": "off", - "no-invalid-this": "off", - "no-loop-func": "off", - "no-magic-numbers": "off", - "no-redeclare": "off", - "no-restricted-imports": "off", - "no-return-await": "off", - "no-shadow": "off", - "no-throw-literal": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "no-use-before-define": "off", - "no-useless-constructor": "off", - "prefer-destructuring": "off", - "prefer-promise-reject-errors": "off", - "require-await": "off", - }, - }, - "base": { - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - }, - "plugins": [ - "@typescript-eslint", - ], - }, - "disable-type-checked": { - "parserOptions": { - "program": null, - "project": false, - "projectService": false, - }, - "rules": { - "@typescript-eslint/await-thenable": "off", - "@typescript-eslint/consistent-return": "off", - "@typescript-eslint/consistent-type-exports": "off", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/naming-convention": "off", - "@typescript-eslint/no-array-delete": "off", - "@typescript-eslint/no-base-to-string": "off", - "@typescript-eslint/no-confusing-void-expression": "off", - "@typescript-eslint/no-deprecated": "off", - "@typescript-eslint/no-duplicate-type-constituents": "off", - "@typescript-eslint/no-floating-promises": "off", - "@typescript-eslint/no-for-in-array": "off", - "@typescript-eslint/no-implied-eval": "off", - "@typescript-eslint/no-meaningless-void-operator": "off", - "@typescript-eslint/no-misused-promises": "off", - "@typescript-eslint/no-misused-spread": "off", - "@typescript-eslint/no-mixed-enums": "off", - "@typescript-eslint/no-redundant-type-constituents": "off", - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", - "@typescript-eslint/no-unnecessary-condition": "off", - "@typescript-eslint/no-unnecessary-qualifier": "off", - "@typescript-eslint/no-unnecessary-template-expression": "off", - "@typescript-eslint/no-unnecessary-type-arguments": "off", - "@typescript-eslint/no-unnecessary-type-assertion": "off", - "@typescript-eslint/no-unnecessary-type-parameters": "off", - "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-enum-comparison": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-return": "off", - "@typescript-eslint/no-unsafe-type-assertion": "off", - "@typescript-eslint/no-unsafe-unary-minus": "off", - "@typescript-eslint/non-nullable-type-assertion-style": "off", - "@typescript-eslint/only-throw-error": "off", - "@typescript-eslint/prefer-destructuring": "off", - "@typescript-eslint/prefer-find": "off", - "@typescript-eslint/prefer-includes": "off", - "@typescript-eslint/prefer-nullish-coalescing": "off", - "@typescript-eslint/prefer-optional-chain": "off", - "@typescript-eslint/prefer-promise-reject-errors": "off", - "@typescript-eslint/prefer-readonly": "off", - "@typescript-eslint/prefer-readonly-parameter-types": "off", - "@typescript-eslint/prefer-reduce-type-parameter": "off", - "@typescript-eslint/prefer-regexp-exec": "off", - "@typescript-eslint/prefer-return-this-type": "off", - "@typescript-eslint/prefer-string-starts-ends-with": "off", - "@typescript-eslint/promise-function-async": "off", - "@typescript-eslint/related-getter-setter-pairs": "off", - "@typescript-eslint/require-array-sort-compare": "off", - "@typescript-eslint/require-await": "off", - "@typescript-eslint/restrict-plus-operands": "off", - "@typescript-eslint/restrict-template-expressions": "off", - "@typescript-eslint/return-await": "off", - "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/switch-exhaustiveness-check": "off", - "@typescript-eslint/unbound-method": "off", - "@typescript-eslint/use-unknown-in-catch-callback-variable": "off", - }, - }, - "eslint-recommended": { - "overrides": [ - { - "files": [ - "*.ts", - "*.tsx", - "*.mts", - "*.cts", - ], - "rules": { - "constructor-super": "off", - "getter-return": "off", - "no-class-assign": "off", - "no-const-assign": "off", - "no-dupe-args": "off", - "no-dupe-class-members": "off", - "no-dupe-keys": "off", - "no-func-assign": "off", - "no-import-assign": "off", - "no-new-native-nonconstructor": "off", - "no-new-symbol": "off", - "no-obj-calls": "off", - "no-redeclare": "off", - "no-setter-return": "off", - "no-this-before-super": "off", - "no-undef": "off", - "no-unreachable": "off", - "no-unsafe-negation": "off", - "no-var": "error", - "prefer-const": "error", - "prefer-rest-params": "error", - "prefer-spread": "error", - }, - }, - ], - }, - "recommended": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/ban-ts-comment": "error", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/triple-slash-reference": "error", - "no-array-constructor": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - }, - }, - "recommended-requiring-type-checking": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-comment": "error", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-array-delete": "error", - "@typescript-eslint/no-base-to-string": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-implied-eval": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-argument": "error", - "@typescript-eslint/no-unsafe-assignment": "error", - "@typescript-eslint/no-unsafe-call": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-enum-comparison": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unsafe-member-access": "error", - "@typescript-eslint/no-unsafe-return": "error", - "@typescript-eslint/no-unsafe-unary-minus": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/only-throw-error": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/prefer-promise-reject-errors": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "@typescript-eslint/restrict-template-expressions": "error", - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/unbound-method": "error", - "no-array-constructor": "off", - "no-implied-eval": "off", - "no-throw-literal": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "prefer-promise-reject-errors": "off", - "require-await": "off", - }, - }, - "recommended-type-checked": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-comment": "error", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-array-delete": "error", - "@typescript-eslint/no-base-to-string": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-implied-eval": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-argument": "error", - "@typescript-eslint/no-unsafe-assignment": "error", - "@typescript-eslint/no-unsafe-call": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-enum-comparison": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unsafe-member-access": "error", - "@typescript-eslint/no-unsafe-return": "error", - "@typescript-eslint/no-unsafe-unary-minus": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/only-throw-error": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/prefer-promise-reject-errors": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "@typescript-eslint/restrict-template-expressions": "error", - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/unbound-method": "error", - "no-array-constructor": "off", - "no-implied-eval": "off", - "no-throw-literal": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "prefer-promise-reject-errors": "off", - "require-await": "off", - }, - }, - "recommended-type-checked-only": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/no-array-delete": "error", - "@typescript-eslint/no-base-to-string": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-implied-eval": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unsafe-argument": "error", - "@typescript-eslint/no-unsafe-assignment": "error", - "@typescript-eslint/no-unsafe-call": "error", - "@typescript-eslint/no-unsafe-enum-comparison": "error", - "@typescript-eslint/no-unsafe-member-access": "error", - "@typescript-eslint/no-unsafe-return": "error", - "@typescript-eslint/no-unsafe-unary-minus": "error", - "@typescript-eslint/only-throw-error": "error", - "@typescript-eslint/prefer-promise-reject-errors": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "@typescript-eslint/restrict-template-expressions": "error", - "@typescript-eslint/unbound-method": "error", - "no-implied-eval": "off", - "no-throw-literal": "off", - "prefer-promise-reject-errors": "off", - "require-await": "off", - }, - }, - "strict": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/ban-ts-comment": [ - "error", - { - "minimumDescriptionLength": 10, - }, - ], - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-dynamic-delete": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-extraneous-class": "error", - "@typescript-eslint/no-invalid-void-type": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-useless-constructor": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-literal-enum-member": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/unified-signatures": "error", - "no-array-constructor": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "no-useless-constructor": "off", - }, - }, - "strict-type-checked": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-comment": [ - "error", - { - "minimumDescriptionLength": 10, - }, - ], - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-array-delete": "error", - "@typescript-eslint/no-base-to-string": "error", - "@typescript-eslint/no-confusing-void-expression": "error", - "@typescript-eslint/no-deprecated": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", - "@typescript-eslint/no-dynamic-delete": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-extraneous-class": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-implied-eval": "error", - "@typescript-eslint/no-invalid-void-type": "error", - "@typescript-eslint/no-meaningless-void-operator": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-misused-spread": "error", - "@typescript-eslint/no-mixed-enums": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", - "@typescript-eslint/no-unnecessary-condition": "error", - "@typescript-eslint/no-unnecessary-template-expression": "error", - "@typescript-eslint/no-unnecessary-type-arguments": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unnecessary-type-parameters": "error", - "@typescript-eslint/no-unsafe-argument": "error", - "@typescript-eslint/no-unsafe-assignment": "error", - "@typescript-eslint/no-unsafe-call": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-enum-comparison": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unsafe-member-access": "error", - "@typescript-eslint/no-unsafe-return": "error", - "@typescript-eslint/no-unsafe-unary-minus": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-useless-constructor": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/only-throw-error": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-literal-enum-member": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/prefer-promise-reject-errors": "error", - "@typescript-eslint/prefer-reduce-type-parameter": "error", - "@typescript-eslint/prefer-return-this-type": "error", - "@typescript-eslint/related-getter-setter-pairs": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": [ - "error", - { - "allowAny": false, - "allowBoolean": false, - "allowNullish": false, - "allowNumberAndString": false, - "allowRegExp": false, - }, - ], - "@typescript-eslint/restrict-template-expressions": [ - "error", - { - "allowAny": false, - "allowBoolean": false, - "allowNever": false, - "allowNullish": false, - "allowNumber": false, - "allowRegExp": false, - }, - ], - "@typescript-eslint/return-await": [ - "error", - "error-handling-correctness-only", - ], - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/unbound-method": "error", - "@typescript-eslint/unified-signatures": "error", - "@typescript-eslint/use-unknown-in-catch-callback-variable": "error", - "no-array-constructor": "off", - "no-implied-eval": "off", - "no-return-await": "off", - "no-throw-literal": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "no-useless-constructor": "off", - "prefer-promise-reject-errors": "off", - "require-await": "off", - }, - }, - "strict-type-checked-only": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/no-array-delete": "error", - "@typescript-eslint/no-base-to-string": "error", - "@typescript-eslint/no-confusing-void-expression": "error", - "@typescript-eslint/no-deprecated": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-implied-eval": "error", - "@typescript-eslint/no-meaningless-void-operator": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-misused-spread": "error", - "@typescript-eslint/no-mixed-enums": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", - "@typescript-eslint/no-unnecessary-condition": "error", - "@typescript-eslint/no-unnecessary-template-expression": "error", - "@typescript-eslint/no-unnecessary-type-arguments": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-unnecessary-type-parameters": "error", - "@typescript-eslint/no-unsafe-argument": "error", - "@typescript-eslint/no-unsafe-assignment": "error", - "@typescript-eslint/no-unsafe-call": "error", - "@typescript-eslint/no-unsafe-enum-comparison": "error", - "@typescript-eslint/no-unsafe-member-access": "error", - "@typescript-eslint/no-unsafe-return": "error", - "@typescript-eslint/no-unsafe-unary-minus": "error", - "@typescript-eslint/only-throw-error": "error", - "@typescript-eslint/prefer-promise-reject-errors": "error", - "@typescript-eslint/prefer-reduce-type-parameter": "error", - "@typescript-eslint/prefer-return-this-type": "error", - "@typescript-eslint/related-getter-setter-pairs": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": [ - "error", - { - "allowAny": false, - "allowBoolean": false, - "allowNullish": false, - "allowNumberAndString": false, - "allowRegExp": false, - }, - ], - "@typescript-eslint/restrict-template-expressions": [ - "error", - { - "allowAny": false, - "allowBoolean": false, - "allowNever": false, - "allowNullish": false, - "allowNumber": false, - "allowRegExp": false, - }, - ], - "@typescript-eslint/return-await": [ - "error", - "error-handling-correctness-only", - ], - "@typescript-eslint/unbound-method": "error", - "@typescript-eslint/use-unknown-in-catch-callback-variable": "error", - "no-implied-eval": "off", - "no-return-await": "off", - "no-throw-literal": "off", - "prefer-promise-reject-errors": "off", - "require-await": "off", - }, - }, - "stylistic": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/ban-tslint-comment": "error", - "@typescript-eslint/class-literal-property-style": "error", - "@typescript-eslint/consistent-generic-constructors": "error", - "@typescript-eslint/consistent-indexed-object-style": "error", - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/no-confusing-non-null-assertion": "error", - "@typescript-eslint/no-empty-function": "error", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/prefer-function-type": "error", - "no-empty-function": "off", - }, - }, - "stylistic-type-checked": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/ban-tslint-comment": "error", - "@typescript-eslint/class-literal-property-style": "error", - "@typescript-eslint/consistent-generic-constructors": "error", - "@typescript-eslint/consistent-indexed-object-style": "error", - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/dot-notation": "error", - "@typescript-eslint/no-confusing-non-null-assertion": "error", - "@typescript-eslint/no-empty-function": "error", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/non-nullable-type-assertion-style": "error", - "@typescript-eslint/prefer-find": "error", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/prefer-function-type": "error", - "@typescript-eslint/prefer-includes": "error", - "@typescript-eslint/prefer-nullish-coalescing": "error", - "@typescript-eslint/prefer-optional-chain": "error", - "@typescript-eslint/prefer-regexp-exec": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "dot-notation": "off", - "no-empty-function": "off", - }, - }, - "stylistic-type-checked-only": { - "extends": [ - "./configs/base", - "./configs/eslint-recommended", - ], - "rules": { - "@typescript-eslint/dot-notation": "error", - "@typescript-eslint/non-nullable-type-assertion-style": "error", - "@typescript-eslint/prefer-find": "error", - "@typescript-eslint/prefer-includes": "error", - "@typescript-eslint/prefer-nullish-coalescing": "error", - "@typescript-eslint/prefer-optional-chain": "error", - "@typescript-eslint/prefer-regexp-exec": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "dot-notation": "off", - }, - }, - }, - "meta": { - "name": "@typescript-eslint/eslint-plugin", - "version": "8.27.0", - }, - "rules": { - "adjacent-overload-signatures": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Require that function overload signatures be consecutive", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/adjacent-overload-signatures", - }, - "messages": { - "adjacentSignature": "All {{name}} signatures should be adjacent.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "array-type": { - "create": [Function], - "defaultOptions": [ - { - "default": "array", - }, - ], - "meta": { - "docs": { - "description": "Require consistently using either \`T[]\` or \`Array\` for arrays", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/array-type", - }, - "fixable": "code", - "messages": { - "errorStringArray": "Array type using '{{className}}<{{type}}>' is forbidden. Use '{{readonlyPrefix}}{{type}}[]' instead.", - "errorStringArrayReadonly": "Array type using '{{className}}<{{type}}>' is forbidden. Use '{{readonlyPrefix}}{{type}}' instead.", - "errorStringArraySimple": "Array type using '{{className}}<{{type}}>' is forbidden for simple types. Use '{{readonlyPrefix}}{{type}}[]' instead.", - "errorStringArraySimpleReadonly": "Array type using '{{className}}<{{type}}>' is forbidden for simple types. Use '{{readonlyPrefix}}{{type}}' instead.", - "errorStringGeneric": "Array type using '{{readonlyPrefix}}{{type}}[]' is forbidden. Use '{{className}}<{{type}}>' instead.", - "errorStringGenericSimple": "Array type using '{{readonlyPrefix}}{{type}}[]' is forbidden for non-simple types. Use '{{className}}<{{type}}>' instead.", - }, - "schema": [ - { - "$defs": { - "arrayOption": { - "enum": [ - "array", - "generic", - "array-simple", - ], - "type": "string", - }, - }, - "additionalProperties": false, - "properties": { - "default": { - "$ref": "#/items/0/$defs/arrayOption", - "description": "The array type expected for mutable cases.", - }, - "readonly": { - "$ref": "#/items/0/$defs/arrayOption", - "description": "The array type expected for readonly cases. If omitted, the value for \`default\` will be used.", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "await-thenable": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow awaiting a value that is not a Thenable", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/await-thenable", - }, - "hasSuggestions": true, - "messages": { - "await": "Unexpected \`await\` of a non-Promise (non-"Thenable") value.", - "awaitUsingOfNonAsyncDisposable": "Unexpected \`await using\` of a value that is not async disposable.", - "convertToOrdinaryFor": "Convert to an ordinary \`for...of\` loop.", - "forAwaitOfNonAsyncIterable": "Unexpected \`for await...of\` of a value that is not async iterable.", - "removeAwait": "Remove unnecessary \`await\`.", - }, - "schema": [], - "type": "problem", - }, - }, - "ban-ts-comment": { - "create": [Function], - "defaultOptions": [ - { - "minimumDescriptionLength": 3, - "ts-check": false, - "ts-expect-error": "allow-with-description", - "ts-ignore": true, - "ts-nocheck": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow \`@ts-\` comments or require descriptions after directives", - "recommended": { - "recommended": true, - "strict": [ - { - "minimumDescriptionLength": 10, - }, - ], - }, - "url": "https://typescript-eslint.io/rules/ban-ts-comment", - }, - "hasSuggestions": true, - "messages": { - "replaceTsIgnoreWithTsExpectError": "Replace "@ts-ignore" with "@ts-expect-error".", - "tsDirectiveComment": "Do not use "@ts-{{directive}}" because it alters compilation errors.", - "tsDirectiveCommentDescriptionNotMatchPattern": "The description for the "@ts-{{directive}}" directive must match the {{format}} format.", - "tsDirectiveCommentRequiresDescription": "Include a description after the "@ts-{{directive}}" directive to explain why the @ts-{{directive}} is necessary. The description must be {{minimumDescriptionLength}} characters or longer.", - "tsIgnoreInsteadOfExpectError": "Use "@ts-expect-error" instead of "@ts-ignore", as "@ts-ignore" will do nothing if the following line is error-free.", - }, - "schema": [ - { - "$defs": { - "directiveConfigSchema": { - "oneOf": [ - { - "default": true, - "type": "boolean", - }, - { - "enum": [ - "allow-with-description", - ], - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "descriptionFormat": { - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - }, - "additionalProperties": false, - "properties": { - "minimumDescriptionLength": { - "default": 3, - "description": "A minimum character length for descriptions when \`allow-with-description\` is enabled.", - "type": "number", - }, - "ts-check": { - "$ref": "#/items/0/$defs/directiveConfigSchema", - }, - "ts-expect-error": { - "$ref": "#/items/0/$defs/directiveConfigSchema", - }, - "ts-ignore": { - "$ref": "#/items/0/$defs/directiveConfigSchema", - }, - "ts-nocheck": { - "$ref": "#/items/0/$defs/directiveConfigSchema", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "ban-tslint-comment": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow \`// tslint:\` comments", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/ban-tslint-comment", - }, - "fixable": "code", - "messages": { - "commentDetected": "tslint comment detected: "{{ text }}"", - }, - "schema": [], - "type": "suggestion", - }, - }, - "class-literal-property-style": { - "create": [Function], - "defaultOptions": [ - "fields", - ], - "meta": { - "docs": { - "description": "Enforce that literals on classes are exposed in a consistent style", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/class-literal-property-style", - }, - "hasSuggestions": true, - "messages": { - "preferFieldStyle": "Literals should be exposed using readonly fields.", - "preferFieldStyleSuggestion": "Replace the literals with readonly fields.", - "preferGetterStyle": "Literals should be exposed using getters.", - "preferGetterStyleSuggestion": "Replace the literals with getters.", - }, - "schema": [ - { - "description": "Which literal class member syntax to prefer.", - "enum": [ - "fields", - "getters", - ], - "type": "string", - }, - ], - "type": "problem", - }, - }, - "class-methods-use-this": { - "create": [Function], - "defaultOptions": [ - { - "enforceForClassFields": true, - "exceptMethods": [], - "ignoreClassesThatImplementAnInterface": false, - "ignoreOverrideMethods": false, - }, - ], - "meta": { - "docs": { - "description": "Enforce that class methods utilize \`this\`", - "extendsBaseRule": true, - "requiresTypeChecking": false, - "url": "https://typescript-eslint.io/rules/class-methods-use-this", - }, - "messages": { - "missingThis": "Expected 'this' to be used by class {{name}}.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "enforceForClassFields": { - "default": true, - "description": "Enforces that functions used as instance field initializers utilize \`this\`.", - "type": "boolean", - }, - "exceptMethods": { - "description": "Allows specified method names to be ignored with this rule.", - "items": { - "type": "string", - }, - "type": "array", - }, - "ignoreClassesThatImplementAnInterface": { - "description": "Whether to ignore class members that are defined within a class that \`implements\` a type.", - "oneOf": [ - { - "description": "Ignore all classes that implement an interface", - "type": "boolean", - }, - { - "description": "Ignore only the public fields of classes that implement an interface", - "enum": [ - "public-fields", - ], - "type": "string", - }, - ], - }, - "ignoreOverrideMethods": { - "description": "Whether to ignore members marked with the \`override\` modifier.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "consistent-generic-constructors": { - "create": [Function], - "defaultOptions": [ - "constructor", - ], - "meta": { - "docs": { - "description": "Enforce specifying generic type arguments on type annotation or constructor name of a constructor call", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/consistent-generic-constructors", - }, - "fixable": "code", - "messages": { - "preferConstructor": "The generic type arguments should be specified as part of the constructor type arguments.", - "preferTypeAnnotation": "The generic type arguments should be specified as part of the type annotation.", - }, - "schema": [ - { - "description": "Which constructor call syntax to prefer.", - "enum": [ - "type-annotation", - "constructor", - ], - "type": "string", - }, - ], - "type": "suggestion", - }, - }, - "consistent-indexed-object-style": { - "create": [Function], - "defaultOptions": [ - "record", - ], - "meta": { - "docs": { - "description": "Require or disallow the \`Record\` type", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/consistent-indexed-object-style", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "preferIndexSignature": "An index signature is preferred over a record.", - "preferIndexSignatureSuggestion": "Change into an index signature instead of a record.", - "preferRecord": "A record is preferred over an index signature.", - }, - "schema": [ - { - "description": "Which indexed object syntax to prefer.", - "enum": [ - "record", - "index-signature", - ], - "type": "string", - }, - ], - "type": "suggestion", - }, - }, - "consistent-return": { - "create": [Function], - "defaultOptions": [ - { - "treatUndefinedAsUnspecified": false, - }, - ], - "meta": { - "defaultOptions": [ - { - "treatUndefinedAsUnspecified": false, - }, - ], - "docs": { - "description": "Require \`return\` statements to either always or never specify values", - "extendsBaseRule": true, - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/consistent-return", - }, - "hasSuggestions": undefined, - "messages": { - "missingReturn": "Expected to return a value at the end of {{name}}.", - "missingReturnValue": "{{name}} expected a return value.", - "unexpectedReturnValue": "{{name}} expected no return value.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "treatUndefinedAsUnspecified": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "consistent-type-assertions": { - "create": [Function], - "defaultOptions": [ - { - "arrayLiteralTypeAssertions": "allow", - "assertionStyle": "as", - "objectLiteralTypeAssertions": "allow", - }, - ], - "meta": { - "docs": { - "description": "Enforce consistent usage of type assertions", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/consistent-type-assertions", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "angle-bracket": "Use '<{{cast}}>' instead of 'as {{cast}}'.", - "as": "Use 'as {{cast}}' instead of '<{{cast}}>'.", - "never": "Do not use any type assertions.", - "replaceArrayTypeAssertionWithAnnotation": "Use const x: {{cast}} = [ ... ] instead.", - "replaceArrayTypeAssertionWithSatisfies": "Use const x = [ ... ] satisfies {{cast}} instead.", - "replaceObjectTypeAssertionWithAnnotation": "Use const x: {{cast}} = { ... } instead.", - "replaceObjectTypeAssertionWithSatisfies": "Use const x = { ... } satisfies {{cast}} instead.", - "unexpectedArrayTypeAssertion": "Always prefer const x: T[] = [ ... ].", - "unexpectedObjectTypeAssertion": "Always prefer const x: T = { ... }.", - }, - "schema": [ - { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "assertionStyle": { - "description": "The expected assertion style to enforce.", - "enum": [ - "never", - ], - "type": "string", - }, - }, - "required": [ - "assertionStyle", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "arrayLiteralTypeAssertions": { - "description": "Whether to always prefer type declarations for array literals used as variable initializers, rather than type assertions.", - "enum": [ - "allow", - "allow-as-parameter", - "never", - ], - "type": "string", - }, - "assertionStyle": { - "description": "The expected assertion style to enforce.", - "enum": [ - "as", - "angle-bracket", - ], - "type": "string", - }, - "objectLiteralTypeAssertions": { - "description": "Whether to always prefer type declarations for object literals used as variable initializers, rather than type assertions.", - "enum": [ - "allow", - "allow-as-parameter", - "never", - ], - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - ], - "type": "suggestion", - }, - }, - "consistent-type-definitions": { - "create": [Function], - "defaultOptions": [ - "interface", - ], - "meta": { - "docs": { - "description": "Enforce type definitions to consistently use either \`interface\` or \`type\`", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/consistent-type-definitions", - }, - "fixable": "code", - "messages": { - "interfaceOverType": "Use an \`interface\` instead of a \`type\`.", - "typeOverInterface": "Use a \`type\` instead of an \`interface\`.", - }, - "schema": [ - { - "description": "Which type definition syntax to prefer.", - "enum": [ - "interface", - "type", - ], - "type": "string", - }, - ], - "type": "suggestion", - }, - }, - "consistent-type-exports": { - "create": [Function], - "defaultOptions": [ - { - "fixMixedExportsWithInlineTypeSpecifier": false, - }, - ], - "meta": { - "docs": { - "description": "Enforce consistent usage of type exports", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/consistent-type-exports", - }, - "fixable": "code", - "messages": { - "multipleExportsAreTypes": "Type exports {{exportNames}} are not values and should be exported using \`export type\`.", - "singleExportIsType": "Type export {{exportNames}} is not a value and should be exported using \`export type\`.", - "typeOverValue": "All exports in the declaration are only used as types. Use \`export type\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "fixMixedExportsWithInlineTypeSpecifier": { - "description": "Whether the rule will autofix "mixed" export cases using TS inline type specifiers.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "consistent-type-imports": { - "create": [Function], - "defaultOptions": [ - { - "disallowTypeAnnotations": true, - "fixStyle": "separate-type-imports", - "prefer": "type-imports", - }, - ], - "meta": { - "docs": { - "description": "Enforce consistent usage of type imports", - "url": "https://typescript-eslint.io/rules/consistent-type-imports", - }, - "fixable": "code", - "messages": { - "avoidImportType": "Use an \`import\` instead of an \`import type\`.", - "noImportTypeAnnotations": "\`import()\` type annotations are forbidden.", - "someImportsAreOnlyTypes": "Imports {{typeImports}} are only used as type.", - "typeOverValue": "All imports in the declaration are only used as types. Use \`import type\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "disallowTypeAnnotations": { - "description": "Whether to disallow type imports in type annotations (\`import()\`).", - "type": "boolean", - }, - "fixStyle": { - "description": "The expected type modifier to be added when an import is detected as used only in the type position.", - "enum": [ - "separate-type-imports", - "inline-type-imports", - ], - "type": "string", - }, - "prefer": { - "description": "The expected import kind for type-only imports.", - "enum": [ - "type-imports", - "no-type-imports", - ], - "type": "string", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "default-param-last": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce default parameters to be last", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/default-param-last", - }, - "messages": { - "shouldBeLast": "Default parameters should be last.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "dot-notation": { - "create": [Function], - "defaultOptions": [ - { - "allowIndexSignaturePropertyAccess": false, - "allowKeywords": true, - "allowPattern": "", - "allowPrivateClassPropertyAccess": false, - "allowProtectedClassPropertyAccess": false, - }, - ], - "meta": { - "defaultOptions": [ - { - "allowIndexSignaturePropertyAccess": false, - "allowKeywords": true, - "allowPattern": "", - "allowPrivateClassPropertyAccess": false, - "allowProtectedClassPropertyAccess": false, - }, - ], - "docs": { - "description": "Enforce dot notation whenever possible", - "extendsBaseRule": true, - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/dot-notation", - }, - "fixable": "code", - "hasSuggestions": undefined, - "messages": { - "useBrackets": ".{{key}} is a syntax error.", - "useDot": "[{{key}}] is better written in dot notation.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowIndexSignaturePropertyAccess": { - "default": false, - "description": "Whether to allow accessing properties matching an index signature with array notation.", - "type": "boolean", - }, - "allowKeywords": { - "default": true, - "description": "Whether to allow keywords such as ["class"]\`.", - "type": "boolean", - }, - "allowPattern": { - "default": "", - "description": "Regular expression of names to allow.", - "type": "string", - }, - "allowPrivateClassPropertyAccess": { - "default": false, - "description": "Whether to allow accessing class members marked as \`private\` with array notation.", - "type": "boolean", - }, - "allowProtectedClassPropertyAccess": { - "default": false, - "description": "Whether to allow accessing class members marked as \`protected\` with array notation.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "explicit-function-return-type": { - "create": [Function], - "defaultOptions": [ - { - "allowConciseArrowFunctionExpressionsStartingWithVoid": false, - "allowDirectConstAssertionInArrowFunctions": true, - "allowExpressions": false, - "allowFunctionsWithoutTypeParameters": false, - "allowHigherOrderFunctions": true, - "allowIIFEs": false, - "allowTypedFunctionExpressions": true, - "allowedNames": [], - }, - ], - "meta": { - "docs": { - "description": "Require explicit return types on functions and class methods", - "url": "https://typescript-eslint.io/rules/explicit-function-return-type", - }, - "messages": { - "missingReturnType": "Missing return type on function.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowConciseArrowFunctionExpressionsStartingWithVoid": { - "description": "Whether to allow arrow functions that start with the \`void\` keyword.", - "type": "boolean", - }, - "allowDirectConstAssertionInArrowFunctions": { - "description": "Whether to ignore arrow functions immediately returning a \`as const\` value.", - "type": "boolean", - }, - "allowExpressions": { - "description": "Whether to ignore function expressions (functions which are not part of a declaration).", - "type": "boolean", - }, - "allowFunctionsWithoutTypeParameters": { - "description": "Whether to ignore functions that don't have generic type parameters.", - "type": "boolean", - }, - "allowHigherOrderFunctions": { - "description": "Whether to ignore functions immediately returning another function expression.", - "type": "boolean", - }, - "allowIIFEs": { - "description": "Whether to ignore immediately invoked function expressions (IIFEs).", - "type": "boolean", - }, - "allowTypedFunctionExpressions": { - "description": "Whether to ignore type annotations on the variable of function expressions.", - "type": "boolean", - }, - "allowedNames": { - "description": "An array of function/method names that will not have their arguments or return values checked.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "explicit-member-accessibility": { - "create": [Function], - "defaultOptions": [ - { - "accessibility": "explicit", - }, - ], - "meta": { - "docs": { - "description": "Require explicit accessibility modifiers on class properties and methods", - "url": "https://typescript-eslint.io/rules/explicit-member-accessibility", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "addExplicitAccessibility": "Add '{{ type }}' accessibility modifier", - "missingAccessibility": "Missing accessibility modifier on {{type}} {{name}}.", - "unwantedPublicAccessibility": "Public accessibility modifier on {{type}} {{name}}.", - }, - "schema": [ - { - "$defs": { - "accessibilityLevel": { - "oneOf": [ - { - "description": "Always require an accessor.", - "enum": [ - "explicit", - ], - "type": "string", - }, - { - "description": "Require an accessor except when public.", - "enum": [ - "no-public", - ], - "type": "string", - }, - { - "description": "Never check whether there is an accessor.", - "enum": [ - "off", - ], - "type": "string", - }, - ], - }, - }, - "additionalProperties": false, - "properties": { - "accessibility": { - "$ref": "#/items/0/$defs/accessibilityLevel", - "description": "Which accessibility modifier is required to exist or not exist.", - }, - "ignoredMethodNames": { - "description": "Specific method names that may be ignored.", - "items": { - "type": "string", - }, - "type": "array", - }, - "overrides": { - "additionalProperties": false, - "description": "Changes to required accessibility modifiers for specific kinds of class members.", - "properties": { - "accessors": { - "$ref": "#/items/0/$defs/accessibilityLevel", - }, - "constructors": { - "$ref": "#/items/0/$defs/accessibilityLevel", - }, - "methods": { - "$ref": "#/items/0/$defs/accessibilityLevel", - }, - "parameterProperties": { - "$ref": "#/items/0/$defs/accessibilityLevel", - }, - "properties": { - "$ref": "#/items/0/$defs/accessibilityLevel", - }, - }, - "type": "object", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "explicit-module-boundary-types": { - "create": [Function], - "defaultOptions": [ - { - "allowArgumentsExplicitlyTypedAsAny": false, - "allowDirectConstAssertionInArrowFunctions": true, - "allowHigherOrderFunctions": true, - "allowOverloadFunctions": false, - "allowTypedFunctionExpressions": true, - "allowedNames": [], - }, - ], - "meta": { - "docs": { - "description": "Require explicit return and argument types on exported functions' and classes' public class methods", - "url": "https://typescript-eslint.io/rules/explicit-module-boundary-types", - }, - "messages": { - "anyTypedArg": "Argument '{{name}}' should be typed with a non-any type.", - "anyTypedArgUnnamed": "{{type}} argument should be typed with a non-any type.", - "missingArgType": "Argument '{{name}}' should be typed.", - "missingArgTypeUnnamed": "{{type}} argument should be typed.", - "missingReturnType": "Missing return type on function.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowArgumentsExplicitlyTypedAsAny": { - "description": "Whether to ignore arguments that are explicitly typed as \`any\`.", - "type": "boolean", - }, - "allowDirectConstAssertionInArrowFunctions": { - "description": "Whether to ignore return type annotations on body-less arrow functions that return an \`as const\` type assertion. -You must still type the parameters of the function.", - "type": "boolean", - }, - "allowHigherOrderFunctions": { - "description": "Whether to ignore return type annotations on functions immediately returning another function expression. -You must still type the parameters of the function.", - "type": "boolean", - }, - "allowOverloadFunctions": { - "description": "Whether to ignore return type annotations on functions with overload signatures.", - "type": "boolean", - }, - "allowTypedFunctionExpressions": { - "description": "Whether to ignore type annotations on the variable of a function expression.", - "type": "boolean", - }, - "allowedNames": { - "description": "An array of function/method names that will not have their arguments or return values checked.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "init-declarations": { - "create": [Function], - "defaultOptions": [ - "always", - ], - "meta": { - "docs": { - "description": "Require or disallow initialization in variable declarations", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/init-declarations", - }, - "hasSuggestions": undefined, - "messages": { - "initialized": "Variable '{{idName}}' should be initialized on declaration.", - "notInitialized": "Variable '{{idName}}' should not be initialized on declaration.", - }, - "schema": { - "anyOf": [ - { - "items": [ - { - "enum": [ - "always", - ], - }, - ], - "maxItems": 1, - "minItems": 0, - "type": "array", - }, - { - "items": [ - { - "enum": [ - "never", - ], - }, - { - "additionalProperties": false, - "properties": { - "ignoreForLoopInit": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "maxItems": 2, - "minItems": 0, - "type": "array", - }, - ], - }, - "type": "suggestion", - }, - }, - "max-params": { - "create": [Function], - "defaultOptions": [ - { - "countVoidThis": false, - "max": 3, - }, - ], - "meta": { - "docs": { - "description": "Enforce a maximum number of parameters in function definitions", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/max-params", - }, - "messages": { - "exceed": "{{name}} has too many parameters ({{count}}). Maximum allowed is {{max}}.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "countVoidThis": { - "description": "Whether to count a \`this\` declaration when the type is \`void\`.", - "type": "boolean", - }, - "max": { - "description": "A maximum number of parameters in function definitions.", - "minimum": 0, - "type": "integer", - }, - "maximum": { - "description": "(deprecated) A maximum number of parameters in function definitions.", - "minimum": 0, - "type": "integer", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "member-ordering": { - "create": [Function], - "defaultOptions": [ - { - "default": { - "memberTypes": [ - "signature", - "call-signature", - "public-static-field", - "protected-static-field", - "private-static-field", - "#private-static-field", - "public-decorated-field", - "protected-decorated-field", - "private-decorated-field", - "public-instance-field", - "protected-instance-field", - "private-instance-field", - "#private-instance-field", - "public-abstract-field", - "protected-abstract-field", - "public-field", - "protected-field", - "private-field", - "#private-field", - "static-field", - "instance-field", - "abstract-field", - "decorated-field", - "field", - "static-initialization", - "public-constructor", - "protected-constructor", - "private-constructor", - "constructor", - "public-static-accessor", - "protected-static-accessor", - "private-static-accessor", - "#private-static-accessor", - "public-decorated-accessor", - "protected-decorated-accessor", - "private-decorated-accessor", - "public-instance-accessor", - "protected-instance-accessor", - "private-instance-accessor", - "#private-instance-accessor", - "public-abstract-accessor", - "protected-abstract-accessor", - "public-accessor", - "protected-accessor", - "private-accessor", - "#private-accessor", - "static-accessor", - "instance-accessor", - "abstract-accessor", - "decorated-accessor", - "accessor", - "public-static-get", - "protected-static-get", - "private-static-get", - "#private-static-get", - "public-decorated-get", - "protected-decorated-get", - "private-decorated-get", - "public-instance-get", - "protected-instance-get", - "private-instance-get", - "#private-instance-get", - "public-abstract-get", - "protected-abstract-get", - "public-get", - "protected-get", - "private-get", - "#private-get", - "static-get", - "instance-get", - "abstract-get", - "decorated-get", - "get", - "public-static-set", - "protected-static-set", - "private-static-set", - "#private-static-set", - "public-decorated-set", - "protected-decorated-set", - "private-decorated-set", - "public-instance-set", - "protected-instance-set", - "private-instance-set", - "#private-instance-set", - "public-abstract-set", - "protected-abstract-set", - "public-set", - "protected-set", - "private-set", - "#private-set", - "static-set", - "instance-set", - "abstract-set", - "decorated-set", - "set", - "public-static-method", - "protected-static-method", - "private-static-method", - "#private-static-method", - "public-decorated-method", - "protected-decorated-method", - "private-decorated-method", - "public-instance-method", - "protected-instance-method", - "private-instance-method", - "#private-instance-method", - "public-abstract-method", - "protected-abstract-method", - "public-method", - "protected-method", - "private-method", - "#private-method", - "static-method", - "instance-method", - "abstract-method", - "decorated-method", - "method", - ], - }, - }, - ], - "meta": { - "docs": { - "description": "Require a consistent member declaration order", - "url": "https://typescript-eslint.io/rules/member-ordering", - }, - "messages": { - "incorrectGroupOrder": "Member {{name}} should be declared before all {{rank}} definitions.", - "incorrectOrder": "Member {{member}} should be declared before member {{beforeMember}}.", - "incorrectRequiredMembersOrder": "Member {{member}} should be declared after all {{optionalOrRequired}} members.", - }, - "schema": [ - { - "$defs": { - "allItems": { - "enum": [ - "readonly-signature", - "signature", - "readonly-field", - "public-readonly-field", - "public-decorated-readonly-field", - "decorated-readonly-field", - "static-readonly-field", - "public-static-readonly-field", - "instance-readonly-field", - "public-instance-readonly-field", - "abstract-readonly-field", - "public-abstract-readonly-field", - "protected-readonly-field", - "protected-decorated-readonly-field", - "protected-static-readonly-field", - "protected-instance-readonly-field", - "protected-abstract-readonly-field", - "private-readonly-field", - "private-decorated-readonly-field", - "private-static-readonly-field", - "private-instance-readonly-field", - "#private-readonly-field", - "#private-static-readonly-field", - "#private-instance-readonly-field", - "field", - "public-field", - "public-decorated-field", - "decorated-field", - "static-field", - "public-static-field", - "instance-field", - "public-instance-field", - "abstract-field", - "public-abstract-field", - "protected-field", - "protected-decorated-field", - "protected-static-field", - "protected-instance-field", - "protected-abstract-field", - "private-field", - "private-decorated-field", - "private-static-field", - "private-instance-field", - "#private-field", - "#private-static-field", - "#private-instance-field", - "method", - "public-method", - "public-decorated-method", - "decorated-method", - "static-method", - "public-static-method", - "instance-method", - "public-instance-method", - "abstract-method", - "public-abstract-method", - "protected-method", - "protected-decorated-method", - "protected-static-method", - "protected-instance-method", - "protected-abstract-method", - "private-method", - "private-decorated-method", - "private-static-method", - "private-instance-method", - "#private-method", - "#private-static-method", - "#private-instance-method", - "call-signature", - "constructor", - "public-constructor", - "protected-constructor", - "private-constructor", - "accessor", - "public-accessor", - "public-decorated-accessor", - "decorated-accessor", - "static-accessor", - "public-static-accessor", - "instance-accessor", - "public-instance-accessor", - "abstract-accessor", - "public-abstract-accessor", - "protected-accessor", - "protected-decorated-accessor", - "protected-static-accessor", - "protected-instance-accessor", - "protected-abstract-accessor", - "private-accessor", - "private-decorated-accessor", - "private-static-accessor", - "private-instance-accessor", - "#private-accessor", - "#private-static-accessor", - "#private-instance-accessor", - "get", - "public-get", - "public-decorated-get", - "decorated-get", - "static-get", - "public-static-get", - "instance-get", - "public-instance-get", - "abstract-get", - "public-abstract-get", - "protected-get", - "protected-decorated-get", - "protected-static-get", - "protected-instance-get", - "protected-abstract-get", - "private-get", - "private-decorated-get", - "private-static-get", - "private-instance-get", - "#private-get", - "#private-static-get", - "#private-instance-get", - "set", - "public-set", - "public-decorated-set", - "decorated-set", - "static-set", - "public-static-set", - "instance-set", - "public-instance-set", - "abstract-set", - "public-abstract-set", - "protected-set", - "protected-decorated-set", - "protected-static-set", - "protected-instance-set", - "protected-abstract-set", - "private-set", - "private-decorated-set", - "private-static-set", - "private-instance-set", - "#private-set", - "#private-static-set", - "#private-instance-set", - "static-initialization", - "static-static-initialization", - "public-static-static-initialization", - "instance-static-initialization", - "public-instance-static-initialization", - "abstract-static-initialization", - "public-abstract-static-initialization", - "protected-static-static-initialization", - "protected-instance-static-initialization", - "protected-abstract-static-initialization", - "private-static-static-initialization", - "private-instance-static-initialization", - "#private-static-static-initialization", - "#private-instance-static-initialization", - ], - "type": "string", - }, - "baseConfig": { - "oneOf": [ - { - "enum": [ - "never", - ], - "type": "string", - }, - { - "items": { - "oneOf": [ - { - "$ref": "#/items/0/$defs/allItems", - }, - { - "items": { - "$ref": "#/items/0/$defs/allItems", - }, - "type": "array", - }, - ], - }, - "type": "array", - }, - { - "additionalProperties": false, - "properties": { - "memberTypes": { - "oneOf": [ - { - "items": { - "oneOf": [ - { - "$ref": "#/items/0/$defs/allItems", - }, - { - "items": { - "$ref": "#/items/0/$defs/allItems", - }, - "type": "array", - }, - ], - }, - "type": "array", - }, - { - "enum": [ - "never", - ], - "type": "string", - }, - ], - }, - "optionalityOrder": { - "$ref": "#/items/0/$defs/optionalityOrderOptions", - }, - "order": { - "$ref": "#/items/0/$defs/orderOptions", - }, - }, - "type": "object", - }, - ], - }, - "optionalityOrderOptions": { - "enum": [ - "optional-first", - "required-first", - ], - "type": "string", - }, - "orderOptions": { - "enum": [ - "alphabetically", - "alphabetically-case-insensitive", - "as-written", - "natural", - "natural-case-insensitive", - ], - "type": "string", - }, - "typeItems": { - "enum": [ - "readonly-signature", - "signature", - "readonly-field", - "field", - "method", - "constructor", - ], - "type": "string", - }, - "typesConfig": { - "oneOf": [ - { - "enum": [ - "never", - ], - "type": "string", - }, - { - "items": { - "oneOf": [ - { - "$ref": "#/items/0/$defs/typeItems", - }, - { - "items": { - "$ref": "#/items/0/$defs/typeItems", - }, - "type": "array", - }, - ], - }, - "type": "array", - }, - { - "additionalProperties": false, - "properties": { - "memberTypes": { - "oneOf": [ - { - "items": { - "oneOf": [ - { - "$ref": "#/items/0/$defs/typeItems", - }, - { - "items": { - "$ref": "#/items/0/$defs/typeItems", - }, - "type": "array", - }, - ], - }, - "type": "array", - }, - { - "enum": [ - "never", - ], - "type": "string", - }, - ], - }, - "optionalityOrder": { - "$ref": "#/items/0/$defs/optionalityOrderOptions", - }, - "order": { - "$ref": "#/items/0/$defs/orderOptions", - }, - }, - "type": "object", - }, - ], - }, - }, - "additionalProperties": false, - "properties": { - "classExpressions": { - "$ref": "#/items/0/$defs/baseConfig", - }, - "classes": { - "$ref": "#/items/0/$defs/baseConfig", - }, - "default": { - "$ref": "#/items/0/$defs/baseConfig", - }, - "interfaces": { - "$ref": "#/items/0/$defs/typesConfig", - }, - "typeLiterals": { - "$ref": "#/items/0/$defs/typesConfig", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "method-signature-style": { - "create": [Function], - "defaultOptions": [ - "property", - ], - "meta": { - "docs": { - "description": "Enforce using a particular method signature syntax", - "url": "https://typescript-eslint.io/rules/method-signature-style", - }, - "fixable": "code", - "messages": { - "errorMethod": "Shorthand method signature is forbidden. Use a function property instead.", - "errorProperty": "Function property signature is forbidden. Use a method shorthand instead.", - }, - "schema": [ - { - "enum": [ - "property", - "method", - ], - "type": "string", - }, - ], - "type": "suggestion", - }, - }, - "naming-convention": { - "create": [Function], - "defaultOptions": [ - { - "format": [ - "camelCase", - ], - "leadingUnderscore": "allow", - "selector": "default", - "trailingUnderscore": "allow", - }, - { - "format": [ - "camelCase", - "PascalCase", - ], - "selector": "import", - }, - { - "format": [ - "camelCase", - "UPPER_CASE", - ], - "leadingUnderscore": "allow", - "selector": "variable", - "trailingUnderscore": "allow", - }, - { - "format": [ - "PascalCase", - ], - "selector": "typeLike", - }, - ], - "meta": { - "docs": { - "description": "Enforce naming conventions for everything across a codebase", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/naming-convention", - }, - "messages": { - "doesNotMatchFormat": "{{type}} name \`{{name}}\` must match one of the following formats: {{formats}}", - "doesNotMatchFormatTrimmed": "{{type}} name \`{{name}}\` trimmed as \`{{processedName}}\` must match one of the following formats: {{formats}}", - "missingAffix": "{{type}} name \`{{name}}\` must have one of the following {{position}}es: {{affixes}}", - "missingUnderscore": "{{type}} name \`{{name}}\` must have {{count}} {{position}} underscore(s).", - "satisfyCustom": "{{type}} name \`{{name}}\` must {{regexMatch}} the RegExp: {{regex}}", - "unexpectedUnderscore": "{{type}} name \`{{name}}\` must not have a {{position}} underscore.", - }, - "schema": { - "$defs": { - "formatOptionsConfig": { - "oneOf": [ - { - "additionalItems": false, - "items": { - "$ref": "#/$defs/predefinedFormats", - }, - "type": "array", - }, - { - "type": "null", - }, - ], - }, - "matchRegexConfig": { - "additionalProperties": false, - "properties": { - "match": { - "type": "boolean", - }, - "regex": { - "type": "string", - }, - }, - "required": [ - "match", - "regex", - ], - "type": "object", - }, - "predefinedFormats": { - "enum": [ - "camelCase", - "strictCamelCase", - "PascalCase", - "StrictPascalCase", - "snake_case", - "UPPER_CASE", - ], - "type": "string", - }, - "prefixSuffixConfig": { - "additionalItems": false, - "items": { - "minLength": 1, - "type": "string", - }, - "type": "array", - }, - "typeModifiers": { - "enum": [ - "boolean", - "string", - "number", - "function", - "array", - ], - "type": "string", - }, - "underscoreOptions": { - "enum": [ - "forbid", - "allow", - "require", - "requireDouble", - "allowDouble", - "allowSingleOrDouble", - ], - "type": "string", - }, - }, - "additionalItems": false, - "items": { - "oneOf": [ - { - "additionalProperties": false, - "description": "Multiple selectors in one config", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "const", - "readonly", - "static", - "public", - "protected", - "private", - "#private", - "abstract", - "destructured", - "global", - "exported", - "unused", - "requiresQuotes", - "override", - "async", - "default", - "namespace", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "additionalItems": false, - "items": { - "enum": [ - "default", - "variableLike", - "memberLike", - "typeLike", - "method", - "property", - "accessor", - "variable", - "function", - "parameter", - "parameterProperty", - "classicAccessor", - "enumMember", - "classMethod", - "objectLiteralMethod", - "typeMethod", - "classProperty", - "objectLiteralProperty", - "typeProperty", - "autoAccessor", - "class", - "interface", - "typeAlias", - "enum", - "typeParameter", - "import", - ], - "type": "string", - }, - "type": "array", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'default'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "const", - "readonly", - "static", - "public", - "protected", - "private", - "#private", - "abstract", - "destructured", - "global", - "exported", - "unused", - "requiresQuotes", - "override", - "async", - "default", - "namespace", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "default", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'variableLike'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "unused", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "variableLike", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'variable'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "const", - "destructured", - "exported", - "global", - "unused", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "variable", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'function'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "exported", - "global", - "unused", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "function", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'parameter'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "destructured", - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "parameter", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'memberLike'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "#private", - "protected", - "public", - "readonly", - "requiresQuotes", - "static", - "override", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "memberLike", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'classProperty'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "#private", - "protected", - "public", - "readonly", - "requiresQuotes", - "static", - "override", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "classProperty", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'objectLiteralProperty'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "public", - "requiresQuotes", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "objectLiteralProperty", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'typeProperty'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "public", - "readonly", - "requiresQuotes", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "typeProperty", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'parameterProperty'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "private", - "protected", - "public", - "readonly", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "parameterProperty", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'property'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "#private", - "protected", - "public", - "readonly", - "requiresQuotes", - "static", - "override", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "property", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'classMethod'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "#private", - "protected", - "public", - "requiresQuotes", - "static", - "override", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "classMethod", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'objectLiteralMethod'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "public", - "requiresQuotes", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "objectLiteralMethod", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'typeMethod'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "public", - "requiresQuotes", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "typeMethod", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'method'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "#private", - "protected", - "public", - "requiresQuotes", - "static", - "override", - "async", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "method", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'classicAccessor'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "protected", - "public", - "requiresQuotes", - "static", - "override", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "classicAccessor", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'autoAccessor'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "protected", - "public", - "requiresQuotes", - "static", - "override", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "autoAccessor", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'accessor'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "private", - "protected", - "public", - "requiresQuotes", - "static", - "override", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "accessor", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "types": { - "additionalItems": false, - "items": { - "$ref": "#/$defs/typeModifiers", - }, - "type": "array", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'enumMember'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "requiresQuotes", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "enumMember", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'typeLike'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "exported", - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "typeLike", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'class'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "abstract", - "exported", - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "class", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'interface'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "exported", - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "interface", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'typeAlias'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "exported", - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "typeAlias", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'enum'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "exported", - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "enum", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'typeParameter'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "unused", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "typeParameter", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - { - "additionalProperties": false, - "description": "Selector 'import'", - "properties": { - "custom": { - "$ref": "#/$defs/matchRegexConfig", - }, - "failureMessage": { - "type": "string", - }, - "filter": { - "oneOf": [ - { - "minLength": 1, - "type": "string", - }, - { - "$ref": "#/$defs/matchRegexConfig", - }, - ], - }, - "format": { - "$ref": "#/$defs/formatOptionsConfig", - }, - "leadingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - "modifiers": { - "additionalItems": false, - "items": { - "enum": [ - "default", - "namespace", - ], - "type": "string", - }, - "type": "array", - }, - "prefix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "selector": { - "enum": [ - "import", - ], - "type": "string", - }, - "suffix": { - "$ref": "#/$defs/prefixSuffixConfig", - }, - "trailingUnderscore": { - "$ref": "#/$defs/underscoreOptions", - }, - }, - "required": [ - "selector", - "format", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - "type": "suggestion", - }, - }, - "no-array-constructor": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow generic \`Array\` constructors", - "extendsBaseRule": true, - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-array-constructor", - }, - "fixable": "code", - "messages": { - "useLiteral": "The array literal notation [] is preferable.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-array-delete": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow using the \`delete\` operator on array values", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-array-delete", - }, - "hasSuggestions": true, - "messages": { - "noArrayDelete": "Using the \`delete\` operator with an array expression is unsafe.", - "useSplice": "Use \`array.splice()\` instead.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-base-to-string": { - "create": [Function], - "defaultOptions": [ - { - "ignoredTypeNames": [ - "Error", - "RegExp", - "URL", - "URLSearchParams", - ], - }, - ], - "meta": { - "docs": { - "description": "Require \`.toString()\` and \`.toLocaleString()\` to only be called on objects which provide useful information when stringified", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-base-to-string", - }, - "messages": { - "baseArrayJoin": "Using \`join()\` for {{name}} {{certainty}} use Object's default stringification format ('[object Object]') when stringified.", - "baseToString": "'{{name}}' {{certainty}} use Object's default stringification format ('[object Object]') when stringified.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoredTypeNames": { - "description": "Stringified regular expressions of type names to ignore.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-confusing-non-null-assertion": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow non-null assertion in locations that may be confusing", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/no-confusing-non-null-assertion", - }, - "hasSuggestions": true, - "messages": { - "confusingAssign": "Confusing combination of non-null assertion and assignment like \`a! = b\`, which looks very similar to \`a != b\`.", - "confusingEqual": "Confusing combination of non-null assertion and equality test like \`a! == b\`, which looks very similar to \`a !== b\`.", - "confusingOperator": "Confusing combination of non-null assertion and \`{{operator}}\` operator like \`a! {{operator}} b\`, which might be misinterpreted as \`!(a {{operator}} b)\`.", - "notNeedInAssign": "Remove unnecessary non-null assertion (!) in assignment left-hand side.", - "notNeedInEqualTest": "Remove unnecessary non-null assertion (!) in equality test.", - "notNeedInOperator": "Remove possibly unnecessary non-null assertion (!) in the left operand of the \`{{operator}}\` operator.", - "wrapUpLeft": "Wrap the left-hand side in parentheses to avoid confusion with "{{operator}}" operator.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-confusing-void-expression": { - "create": [Function], - "defaultOptions": [ - { - "ignoreArrowShorthand": false, - "ignoreVoidOperator": false, - "ignoreVoidReturningFunctions": false, - }, - ], - "meta": { - "docs": { - "description": "Require expressions of type void to appear in statement position", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-confusing-void-expression", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "invalidVoidExpr": "Placing a void expression inside another expression is forbidden. Move it to its own statement instead.", - "invalidVoidExprArrow": "Returning a void expression from an arrow function shorthand is forbidden. Please add braces to the arrow function.", - "invalidVoidExprArrowWrapVoid": "Void expressions returned from an arrow function shorthand must be marked explicitly with the \`void\` operator.", - "invalidVoidExprReturn": "Returning a void expression from a function is forbidden. Please move it before the \`return\` statement.", - "invalidVoidExprReturnLast": "Returning a void expression from a function is forbidden. Please remove the \`return\` statement.", - "invalidVoidExprReturnWrapVoid": "Void expressions returned from a function must be marked explicitly with the \`void\` operator.", - "invalidVoidExprWrapVoid": "Void expressions used inside another expression must be moved to its own statement or marked explicitly with the \`void\` operator.", - "voidExprWrapVoid": "Mark with an explicit \`void\` operator.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreArrowShorthand": { - "description": "Whether to ignore "shorthand" \`() =>\` arrow functions: those without \`{ ... }\` braces.", - "type": "boolean", - }, - "ignoreVoidOperator": { - "description": "Whether to ignore returns that start with the \`void\` operator.", - "type": "boolean", - }, - "ignoreVoidReturningFunctions": { - "description": "Whether to ignore returns from functions with explicit \`void\` return types and functions with contextual \`void\` return types.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-deprecated": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - }, - ], - "meta": { - "docs": { - "description": "Disallow using code marked as \`@deprecated\`", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-deprecated", - }, - "messages": { - "deprecated": "\`{{name}}\` is deprecated.", - "deprecatedWithReason": "\`{{name}}\` is deprecated. {{reason}}", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Type specifiers that can be allowed.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-dupe-class-members": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow duplicate class members", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-dupe-class-members", - }, - "hasSuggestions": undefined, - "messages": { - "unexpected": "Duplicate name '{{name}}'.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-duplicate-enum-values": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow duplicate enum member values", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-duplicate-enum-values", - }, - "hasSuggestions": false, - "messages": { - "duplicateValue": "Duplicate enum member value {{value}}.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-duplicate-type-constituents": { - "create": [Function], - "defaultOptions": [ - { - "ignoreIntersections": false, - "ignoreUnions": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow duplicate constituents of union or intersection types", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-duplicate-type-constituents", - }, - "fixable": "code", - "messages": { - "duplicate": "{{type}} type constituent is duplicated with {{previous}}.", - "unnecessary": "Explicit undefined is unnecessary on an optional parameter.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreIntersections": { - "description": "Whether to ignore \`&\` intersections.", - "type": "boolean", - }, - "ignoreUnions": { - "description": "Whether to ignore \`|\` unions.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-dynamic-delete": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow using the \`delete\` operator on computed key expressions", - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/no-dynamic-delete", - }, - "fixable": "code", - "messages": { - "dynamicDelete": "Do not delete dynamically computed property keys.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-empty-function": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - }, - ], - "meta": { - "defaultOptions": [ - { - "allow": [], - }, - ], - "docs": { - "description": "Disallow empty functions", - "extendsBaseRule": true, - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/no-empty-function", - }, - "hasSuggestions": undefined, - "messages": { - "unexpected": "Unexpected empty {{name}}.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Locations and kinds of functions that are allowed to be empty.", - "items": { - "enum": [ - "functions", - "arrowFunctions", - "generatorFunctions", - "methods", - "generatorMethods", - "getters", - "setters", - "constructors", - "private-constructors", - "protected-constructors", - "asyncFunctions", - "asyncMethods", - "decoratedFunctions", - "overrideMethods", - ], - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-empty-interface": { - "create": [Function], - "defaultOptions": [ - { - "allowSingleExtends": false, - }, - ], - "meta": { - "deprecated": { - "deprecatedSince": "8.0.0", - "replacedBy": [ - { - "rule": { - "name": "@typescript-eslint/no-empty-object-type", - "url": "https://typescript-eslint.io/rules/no-empty-object-type", - }, - }, - ], - "url": "https://github.com/typescript-eslint/typescript-eslint/pull/8977", - }, - "docs": { - "description": "Disallow the declaration of empty interfaces", - "url": "https://typescript-eslint.io/rules/no-empty-interface", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "noEmpty": "An empty interface is equivalent to \`{}\`.", - "noEmptyWithSuper": "An interface declaring no members is equivalent to its supertype.", - }, - "replacedBy": [ - "@typescript-eslint/no-empty-object-type", - ], - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowSingleExtends": { - "description": "Whether to allow empty interfaces that extend a single other interface.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-empty-object-type": { - "create": [Function], - "defaultOptions": [ - { - "allowInterfaces": "never", - "allowObjectTypes": "never", - }, - ], - "meta": { - "docs": { - "description": "Disallow accidentally using the "empty object" type", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-empty-object-type", - }, - "hasSuggestions": true, - "messages": { - "noEmptyInterface": "An empty interface declaration allows any non-nullish value, including literals like \`0\` and \`""\`. -- If that's what you want, disable this lint rule with an inline comment or configure the '{{ option }}' rule option. -- If you want a type meaning "any object", you probably want \`object\` instead. -- If you want a type meaning "any value", you probably want \`unknown\` instead.", - "noEmptyInterfaceWithSuper": "An interface declaring no members is equivalent to its supertype.", - "noEmptyObject": "The \`{}\` ("empty object") type allows any non-nullish value, including literals like \`0\` and \`""\`. -- If that's what you want, disable this lint rule with an inline comment or configure the '{{ option }}' rule option. -- If you want a type meaning "any object", you probably want \`object\` instead. -- If you want a type meaning "any value", you probably want \`unknown\` instead.", - "replaceEmptyInterface": "Replace empty interface with \`{{replacement}}\`.", - "replaceEmptyInterfaceWithSuper": "Replace empty interface with a type alias.", - "replaceEmptyObjectType": "Replace \`{}\` with \`{{replacement}}\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowInterfaces": { - "description": "Whether to allow empty interfaces.", - "enum": [ - "always", - "never", - "with-single-extends", - ], - "type": "string", - }, - "allowObjectTypes": { - "description": "Whether to allow empty object type literals.", - "enum": [ - "always", - "never", - ], - "type": "string", - }, - "allowWithName": { - "description": "A stringified regular expression to allow interfaces and object type aliases with the configured name.", - "type": "string", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-explicit-any": { - "create": [Function], - "defaultOptions": [ - { - "fixToUnknown": false, - "ignoreRestArgs": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow the \`any\` type", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-explicit-any", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "suggestNever": "Use \`never\` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.", - "suggestUnknown": "Use \`unknown\` instead, this will force you to explicitly, and safely assert the type is correct.", - "unexpectedAny": "Unexpected any. Specify a different type.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "fixToUnknown": { - "description": "Whether to enable auto-fixing in which the \`any\` type is converted to the \`unknown\` type.", - "type": "boolean", - }, - "ignoreRestArgs": { - "description": "Whether to ignore rest parameter arrays.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-extra-non-null-assertion": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow extra non-null assertions", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-extra-non-null-assertion", - }, - "fixable": "code", - "messages": { - "noExtraNonNullAssertion": "Forbidden extra non-null assertion.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-extraneous-class": { - "create": [Function], - "defaultOptions": [ - { - "allowConstructorOnly": false, - "allowEmpty": false, - "allowStaticOnly": false, - "allowWithDecorator": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow classes used as namespaces", - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/no-extraneous-class", - }, - "messages": { - "empty": "Unexpected empty class.", - "onlyConstructor": "Unexpected class with only a constructor.", - "onlyStatic": "Unexpected class with only static properties.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowConstructorOnly": { - "description": "Whether to allow extraneous classes that contain only a constructor.", - "type": "boolean", - }, - "allowEmpty": { - "description": "Whether to allow extraneous classes that have no body (i.e. are empty).", - "type": "boolean", - }, - "allowStaticOnly": { - "description": "Whether to allow extraneous classes that only contain static members.", - "type": "boolean", - }, - "allowWithDecorator": { - "description": "Whether to allow extraneous classes that include a decorator.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-floating-promises": { - "create": [Function], - "defaultOptions": [ - { - "allowForKnownSafeCalls": [], - "allowForKnownSafePromises": [], - "checkThenables": false, - "ignoreIIFE": false, - "ignoreVoid": true, - }, - ], - "meta": { - "docs": { - "description": "Require Promise-like statements to be handled appropriately", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-floating-promises", - }, - "hasSuggestions": true, - "messages": { - "floating": "Promises must be awaited, end with a call to .catch, or end with a call to .then with a rejection handler.", - "floatingFixAwait": "Add await operator.", - "floatingFixVoid": "Add void operator to ignore.", - "floatingPromiseArray": "An array of Promises may be unintentional. Consider handling the promises' fulfillment or rejection with Promise.all or similar.", - "floatingPromiseArrayVoid": "An array of Promises may be unintentional. Consider handling the promises' fulfillment or rejection with Promise.all or similar, or explicitly marking the expression as ignored with the \`void\` operator.", - "floatingUselessRejectionHandler": "Promises must be awaited, end with a call to .catch, or end with a call to .then with a rejection handler. A rejection handler that is not a function will be ignored.", - "floatingUselessRejectionHandlerVoid": "Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler or be explicitly marked as ignored with the \`void\` operator. A rejection handler that is not a function will be ignored.", - "floatingVoid": "Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler or be explicitly marked as ignored with the \`void\` operator.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowForKnownSafeCalls": { - "description": "Type specifiers of functions whose calls are safe to float.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - "allowForKnownSafePromises": { - "description": "Type specifiers that are known to be safe to float.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - "checkThenables": { - "description": "Whether to check all "Thenable"s, not just the built-in Promise type.", - "type": "boolean", - }, - "ignoreIIFE": { - "description": "Whether to ignore async IIFEs (Immediately Invoked Function Expressions).", - "type": "boolean", - }, - "ignoreVoid": { - "description": "Whether to ignore \`void\` expressions.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-for-in-array": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow iterating over an array with a for-in loop", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-for-in-array", - }, - "messages": { - "forInViolation": "For-in loops over arrays skips holes, returns indices as strings, and may visit the prototype chain or other enumerable properties. Use a more robust iteration method such as for-of or array.forEach instead.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-implied-eval": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow the use of \`eval()\`-like functions", - "extendsBaseRule": true, - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-implied-eval", - }, - "messages": { - "noFunctionConstructor": "Implied eval. Do not use the Function constructor to create functions.", - "noImpliedEvalError": "Implied eval. Consider passing a function.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-import-type-side-effects": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers", - "url": "https://typescript-eslint.io/rules/no-import-type-side-effects", - }, - "fixable": "code", - "messages": { - "useTopLevelQualifier": "TypeScript will only remove the inline type specifiers which will leave behind a side effect import at runtime. Convert this to a top-level type qualifier to properly remove the entire import.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-inferrable-types": { - "create": [Function], - "defaultOptions": [ - { - "ignoreParameters": false, - "ignoreProperties": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/no-inferrable-types", - }, - "fixable": "code", - "messages": { - "noInferrableType": "Type {{type}} trivially inferred from a {{type}} literal, remove type annotation.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreParameters": { - "description": "Whether to ignore function parameters.", - "type": "boolean", - }, - "ignoreProperties": { - "description": "Whether to ignore class properties.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-invalid-this": { - "create": [Function], - "defaultOptions": [ - { - "capIsConstructor": true, - }, - ], - "meta": { - "defaultOptions": [ - { - "capIsConstructor": true, - }, - ], - "docs": { - "description": "Disallow \`this\` keywords outside of classes or class-like objects", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-invalid-this", - }, - "hasSuggestions": undefined, - "messages": { - "unexpectedThis": "Unexpected 'this'.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "capIsConstructor": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-invalid-void-type": { - "create": [Function], - "defaultOptions": [ - { - "allowAsThisParameter": false, - "allowInGenericTypeArguments": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow \`void\` type outside of generic or return types", - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/no-invalid-void-type", - }, - "messages": { - "invalidVoidForGeneric": "{{ generic }} may not have void as a type argument.", - "invalidVoidNotReturn": "void is only valid as a return type.", - "invalidVoidNotReturnOrGeneric": "void is only valid as a return type or generic type argument.", - "invalidVoidNotReturnOrThisParam": "void is only valid as return type or type of \`this\` parameter.", - "invalidVoidNotReturnOrThisParamOrGeneric": "void is only valid as a return type or generic type argument or the type of a \`this\` parameter.", - "invalidVoidUnionConstituent": "void is not valid as a constituent in a union type", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowAsThisParameter": { - "description": "Whether a \`this\` parameter of a function may be \`void\`.", - "type": "boolean", - }, - "allowInGenericTypeArguments": { - "description": "Whether \`void\` can be used as a valid value for generic type parameters.", - "oneOf": [ - { - "description": "Whether \`void\` can be used as a valid value for all generic type parameters.", - "type": "boolean", - }, - { - "description": "Allowlist of types that may accept \`void\` as a generic type parameter.", - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - }, - ], - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-loop-func": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow function declarations that contain unsafe references inside loop statements", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-loop-func", - }, - "hasSuggestions": undefined, - "messages": { - "unsafeRefs": "Function declared in a loop contains unsafe references to variable(s) {{ varNames }}.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-loss-of-precision": { - "create": [Function], - "defaultOptions": [], - "meta": { - "deprecated": { - "deprecatedSince": "8.0.0", - "replacedBy": [ - { - "rule": { - "name": "no-loss-of-precision", - "url": "https://eslint.org/docs/latest/rules/no-loss-of-precision", - }, - }, - ], - "url": "https://github.com/typescript-eslint/typescript-eslint/pull/8832", - }, - "docs": { - "description": "Disallow literal numbers that lose precision", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-loss-of-precision", - }, - "hasSuggestions": undefined, - "messages": { - "noLossOfPrecision": "This number literal will lose precision at runtime.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-magic-numbers": { - "create": [Function], - "defaultOptions": [ - { - "detectObjects": false, - "enforceConst": false, - "ignore": [], - "ignoreArrayIndexes": false, - "ignoreEnums": false, - "ignoreNumericLiteralTypes": false, - "ignoreReadonlyClassProperties": false, - "ignoreTypeIndexes": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow magic numbers", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-magic-numbers", - }, - "messages": { - "noMagic": "No magic number: {{raw}}.", - "useConst": "Number constants declarations must use 'const'.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "detectObjects": { - "default": false, - "type": "boolean", - }, - "enforceConst": { - "default": false, - "type": "boolean", - }, - "ignore": { - "items": { - "anyOf": [ - { - "type": "number", - }, - { - "pattern": "^[+-]?(?:0|[1-9][0-9]*)n$", - "type": "string", - }, - ], - }, - "type": "array", - "uniqueItems": true, - }, - "ignoreArrayIndexes": { - "default": false, - "type": "boolean", - }, - "ignoreClassFieldInitialValues": { - "default": false, - "type": "boolean", - }, - "ignoreDefaultValues": { - "default": false, - "type": "boolean", - }, - "ignoreEnums": { - "description": "Whether enums used in TypeScript are considered okay.", - "type": "boolean", - }, - "ignoreNumericLiteralTypes": { - "description": "Whether numbers used in TypeScript numeric literal types are considered okay.", - "type": "boolean", - }, - "ignoreReadonlyClassProperties": { - "description": "Whether \`readonly\` class properties are considered okay.", - "type": "boolean", - }, - "ignoreTypeIndexes": { - "description": "Whether numbers used to index types are okay.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-meaningless-void-operator": { - "create": [Function], - "defaultOptions": [ - { - "checkNever": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow the \`void\` operator except when used to discard a value", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-meaningless-void-operator", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "meaninglessVoidOperator": "void operator shouldn't be used on {{type}}; it should convey that a return value is being ignored", - "removeVoid": "Remove 'void'", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "checkNever": { - "default": false, - "description": "Whether to suggest removing \`void\` when the argument has type \`never\`.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-misused-new": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce valid definition of \`new\` and \`constructor\`", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-misused-new", - }, - "messages": { - "errorMessageClass": "Class cannot have method named \`new\`.", - "errorMessageInterface": "Interfaces cannot be constructed, only classes.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-misused-promises": { - "create": [Function], - "defaultOptions": [ - { - "checksConditionals": true, - "checksSpreads": true, - "checksVoidReturn": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow Promises in places not designed to handle them", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-misused-promises", - }, - "messages": { - "conditional": "Expected non-Promise value in a boolean conditional.", - "predicate": "Expected a non-Promise value to be returned.", - "spread": "Expected a non-Promise value to be spreaded in an object.", - "voidReturnArgument": "Promise returned in function argument where a void return was expected.", - "voidReturnAttribute": "Promise-returning function provided to attribute where a void return was expected.", - "voidReturnInheritedMethod": "Promise-returning method provided where a void return was expected by extended/implemented type '{{ heritageTypeName }}'.", - "voidReturnProperty": "Promise-returning function provided to property where a void return was expected.", - "voidReturnReturnValue": "Promise-returning function provided to return value where a void return was expected.", - "voidReturnVariable": "Promise-returning function provided to variable where a void return was expected.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "checksConditionals": { - "description": "Whether to warn when a Promise is provided to conditional statements.", - "type": "boolean", - }, - "checksSpreads": { - "description": "Whether to warn when \`...\` spreading a \`Promise\`.", - "type": "boolean", - }, - "checksVoidReturn": { - "description": "Whether to warn when a Promise is returned from a function typed as returning \`void\`.", - "oneOf": [ - { - "description": "Whether to disable checking all asynchronous functions.", - "type": "boolean", - }, - { - "additionalProperties": false, - "description": "Which forms of functions may have checking disabled.", - "properties": { - "arguments": { - "description": "Disables checking an asynchronous function passed as argument where the parameter type expects a function that returns \`void\`.", - "type": "boolean", - }, - "attributes": { - "description": "Disables checking an asynchronous function passed as a JSX attribute expected to be a function that returns \`void\`.", - "type": "boolean", - }, - "inheritedMethods": { - "description": "Disables checking an asynchronous method in a type that extends or implements another type expecting that method to return \`void\`.", - "type": "boolean", - }, - "properties": { - "description": "Disables checking an asynchronous function passed as an object property expected to be a function that returns \`void\`.", - "type": "boolean", - }, - "returns": { - "description": "Disables checking an asynchronous function returned in a function whose return type is a function that returns \`void\`.", - "type": "boolean", - }, - "variables": { - "description": "Disables checking an asynchronous function used as a variable whose return type is a function that returns \`void\`.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-misused-spread": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - }, - ], - "meta": { - "docs": { - "description": "Disallow using the spread operator when it might cause unexpected behavior", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-misused-spread", - }, - "hasSuggestions": true, - "messages": { - "addAwait": "Add await operator.", - "noArraySpreadInObject": "Using the spread operator on an array in an object will result in a list of indices.", - "noClassDeclarationSpreadInObject": "Using the spread operator on class declarations will spread only their static properties, and will lose their class prototype.", - "noClassInstanceSpreadInObject": "Using the spread operator on class instances will lose their class prototype.", - "noFunctionSpreadInObject": "Using the spread operator on a function without additional properties can cause unexpected behavior. Did you forget to call the function?", - "noIterableSpreadInObject": "Using the spread operator on an Iterable in an object can cause unexpected behavior.", - "noMapSpreadInObject": "Using the spread operator on a Map in an object will result in an empty object. Did you mean to use \`Object.fromEntries(map)\` instead?", - "noPromiseSpreadInObject": "Using the spread operator on Promise in an object can cause unexpected behavior. Did you forget to await the promise?", - "noStringSpread": "Using the spread operator on a string can mishandle special characters, as can \`.split("")\`. -- \`...\` produces Unicode code points, which will decompose complex emojis into individual emojis -- .split("") produces UTF-16 code units, which breaks rich characters in many languages -Consider using \`Intl.Segmenter\` for locale-aware string decomposition. -Otherwise, if you don't need to preserve emojis or other non-Ascii characters, disable this lint rule on this line or configure the 'allow' rule option.", - "replaceMapSpreadInObject": "Replace map spread in object with \`Object.fromEntries()\`", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "An array of type specifiers that are known to be safe to spread.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-mixed-enums": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow enums from having both number and string members", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-mixed-enums", - }, - "messages": { - "mixed": "Mixing number and string enums can be confusing.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-namespace": { - "create": [Function], - "defaultOptions": [ - { - "allowDeclarations": false, - "allowDefinitionFiles": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow TypeScript namespaces", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-namespace", - }, - "messages": { - "moduleSyntaxIsPreferred": "ES2015 module syntax is preferred over namespaces.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowDeclarations": { - "description": "Whether to allow \`declare\` with custom TypeScript namespaces.", - "type": "boolean", - }, - "allowDefinitionFiles": { - "description": "Whether to allow \`declare\` with custom TypeScript namespaces inside definition files.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-non-null-asserted-nullish-coalescing": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow non-null assertions in the left operand of a nullish coalescing operator", - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing", - }, - "hasSuggestions": true, - "messages": { - "noNonNullAssertedNullishCoalescing": "The nullish coalescing operator is designed to handle undefined and null - using a non-null assertion is not needed.", - "suggestRemovingNonNull": "Remove the non-null assertion.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-non-null-asserted-optional-chain": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow non-null assertions after an optional chain expression", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain", - }, - "hasSuggestions": true, - "messages": { - "noNonNullOptionalChain": "Optional chain expressions can return undefined by design - using a non-null assertion is unsafe and wrong.", - "suggestRemovingNonNull": "You should remove the non-null assertion.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-non-null-assertion": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow non-null assertions using the \`!\` postfix operator", - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/no-non-null-assertion", - }, - "hasSuggestions": true, - "messages": { - "noNonNull": "Forbidden non-null assertion.", - "suggestOptionalChain": "Consider using the optional chain operator \`?.\` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-redeclare": { - "create": [Function], - "defaultOptions": [ - { - "builtinGlobals": true, - "ignoreDeclarationMerge": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow variable redeclaration", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-redeclare", - }, - "messages": { - "redeclared": "'{{id}}' is already defined.", - "redeclaredAsBuiltin": "'{{id}}' is already defined as a built-in global variable.", - "redeclaredBySyntax": "'{{id}}' is already defined by a variable declaration.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "builtinGlobals": { - "description": "Whether to report shadowing of built-in global variables.", - "type": "boolean", - }, - "ignoreDeclarationMerge": { - "description": "Whether to ignore declaration merges between certain TypeScript declaration types.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-redundant-type-constituents": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow members of unions and intersections that do nothing or override type information", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-redundant-type-constituents", - }, - "messages": { - "errorTypeOverrides": "'{{typeName}}' is an 'error' type that acts as 'any' and overrides all other types in this {{container}} type.", - "literalOverridden": "{{literal}} is overridden by {{primitive}} in this union type.", - "overridden": "'{{typeName}}' is overridden by other types in this {{container}} type.", - "overrides": "'{{typeName}}' overrides all other types in this {{container}} type.", - "primitiveOverridden": "{{primitive}} is overridden by the {{literal}} in this intersection type.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-require-imports": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - "allowAsImport": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow invocation of \`require()\`", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-require-imports", - }, - "messages": { - "noRequireImports": "A \`require()\` style import is forbidden.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Patterns of import paths to allow requiring from.", - "items": { - "type": "string", - }, - "type": "array", - }, - "allowAsImport": { - "description": "Allows \`require\` statements in import declarations.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-restricted-imports": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow specified modules when loaded by \`import\`", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-restricted-imports", - }, - "fixable": undefined, - "messages": { - "allowedImportName": "'{{importName}}' import from '{{importSource}}' is restricted because only '{{allowedImportNames}}' import(s) is/are allowed.", - "allowedImportNamePattern": "'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'.", - "allowedImportNamePatternWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'. {{customMessage}}", - "allowedImportNameWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted because only '{{allowedImportNames}}' import(s) is/are allowed. {{customMessage}}", - "everything": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted.", - "everythingWithAllowImportNames": "* import is invalid because only '{{allowedImportNames}}' from '{{importSource}}' is/are allowed.", - "everythingWithAllowImportNamesAndCustomMessage": "* import is invalid because only '{{allowedImportNames}}' from '{{importSource}}' is/are allowed. {{customMessage}}", - "everythingWithAllowedImportNamePattern": "* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed.", - "everythingWithAllowedImportNamePatternWithCustomMessage": "* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed. {{customMessage}}", - "everythingWithCustomMessage": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted. {{customMessage}}", - "importName": "'{{importName}}' import from '{{importSource}}' is restricted.", - "importNameWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted. {{customMessage}}", - "path": "'{{importSource}}' import is restricted from being used.", - "pathWithCustomMessage": "'{{importSource}}' import is restricted from being used. {{customMessage}}", - "patternAndEverything": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern.", - "patternAndEverythingWithCustomMessage": "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}", - "patternAndEverythingWithRegexImportName": "* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used.", - "patternAndEverythingWithRegexImportNameAndCustomMessage": "* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used. {{customMessage}}", - "patternAndImportName": "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern.", - "patternAndImportNameWithCustomMessage": "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}", - "patternWithCustomMessage": "'{{importSource}}' import is restricted from being used by a pattern. {{customMessage}}", - "patterns": "'{{importSource}}' import is restricted from being used by a pattern.", - }, - "schema": { - "anyOf": [ - { - "items": { - "anyOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "allowImportNames": { - "items": { - "type": "string", - }, - "type": "array", - }, - "allowTypeImports": { - "description": "Whether to allow type-only imports for a path.", - "type": "boolean", - }, - "importNames": { - "items": { - "type": "string", - }, - "type": "array", - }, - "message": { - "minLength": 1, - "type": "string", - }, - "name": { - "type": "string", - }, - }, - "required": [ - "name", - ], - "type": "object", - }, - ], - }, - "type": "array", - "uniqueItems": true, - }, - { - "additionalItems": false, - "items": [ - { - "additionalProperties": false, - "properties": { - "paths": { - "items": { - "anyOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "allowImportNames": { - "items": { - "type": "string", - }, - "type": "array", - }, - "allowTypeImports": { - "description": "Whether to allow type-only imports for a path.", - "type": "boolean", - }, - "importNames": { - "items": { - "type": "string", - }, - "type": "array", - }, - "message": { - "minLength": 1, - "type": "string", - }, - "name": { - "type": "string", - }, - }, - "required": [ - "name", - ], - "type": "object", - }, - ], - }, - "type": "array", - "uniqueItems": true, - }, - "patterns": { - "anyOf": [ - { - "items": { - "type": "string", - }, - "type": "array", - "uniqueItems": true, - }, - { - "items": { - "additionalProperties": false, - "properties": { - "allowImportNamePattern": { - "type": "string", - }, - "allowImportNames": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "allowTypeImports": { - "description": "Whether to allow type-only imports for a path.", - "type": "boolean", - }, - "caseSensitive": { - "type": "boolean", - }, - "group": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "importNamePattern": { - "type": "string", - }, - "importNames": { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - "message": { - "minLength": 1, - "type": "string", - }, - "regex": { - "type": "string", - }, - }, - "required": undefined, - "type": "object", - }, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "type": "object", - }, - ], - "type": "array", - }, - ], - }, - "type": "suggestion", - }, - }, - "no-restricted-types": { - "create": [Function], - "defaultOptions": [ - {}, - ], - "meta": { - "docs": { - "description": "Disallow certain types", - "url": "https://typescript-eslint.io/rules/no-restricted-types", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "bannedTypeMessage": "Don't use \`{{name}}\` as a type.{{customMessage}}", - "bannedTypeReplacement": "Replace \`{{name}}\` with \`{{replacement}}\`.", - }, - "schema": [ - { - "$defs": { - "banConfig": { - "oneOf": [ - { - "description": "Bans the type with the default message.", - "enum": [ - true, - ], - "type": "boolean", - }, - { - "description": "Bans the type with a custom message.", - "type": "string", - }, - { - "additionalProperties": false, - "description": "Bans a type.", - "properties": { - "fixWith": { - "description": "Type to autofix replace with. Note that autofixers can be applied automatically - so you need to be careful with this option.", - "type": "string", - }, - "message": { - "description": "Custom error message.", - "type": "string", - }, - "suggest": { - "description": "Types to suggest replacing with.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - }, - }, - "additionalProperties": false, - "properties": { - "types": { - "additionalProperties": { - "$ref": "#/items/0/$defs/banConfig", - }, - "description": "An object whose keys are the types you want to ban, and the values are error messages.", - "type": "object", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-shadow": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - "builtinGlobals": false, - "hoist": "functions-and-types", - "ignoreFunctionTypeParameterNameValueShadow": true, - "ignoreOnInitialization": false, - "ignoreTypeValueShadow": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow variable declarations from shadowing variables declared in the outer scope", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-shadow", - }, - "messages": { - "noShadow": "'{{name}}' is already declared in the upper scope on line {{shadowedLine}} column {{shadowedColumn}}.", - "noShadowGlobal": "'{{name}}' is already a global variable.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Identifier names for which shadowing is allowed.", - "items": { - "type": "string", - }, - "type": "array", - }, - "builtinGlobals": { - "description": "Whether to report shadowing of built-in global variables.", - "type": "boolean", - }, - "hoist": { - "description": "Whether to report shadowing before outer functions or variables are defined.", - "enum": [ - "all", - "functions", - "functions-and-types", - "never", - "types", - ], - "type": "string", - }, - "ignoreFunctionTypeParameterNameValueShadow": { - "description": "Whether to ignore function parameters named the same as a variable.", - "type": "boolean", - }, - "ignoreOnInitialization": { - "description": "Whether to ignore the variable initializers when the shadowed variable is presumably still unitialized.", - "type": "boolean", - }, - "ignoreTypeValueShadow": { - "description": "Whether to ignore types named the same as a variable.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-this-alias": { - "create": [Function], - "defaultOptions": [ - { - "allowDestructuring": true, - "allowedNames": [], - }, - ], - "meta": { - "docs": { - "description": "Disallow aliasing \`this\`", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-this-alias", - }, - "messages": { - "thisAssignment": "Unexpected aliasing of 'this' to local variable.", - "thisDestructure": "Unexpected aliasing of members of 'this' to local variables.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowDestructuring": { - "description": "Whether to ignore destructurings, such as \`const { props, state } = this\`.", - "type": "boolean", - }, - "allowedNames": { - "description": "Names to ignore, such as ["self"] for \`const self = this;\`.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-type-alias": { - "create": [Function], - "defaultOptions": [ - { - "allowAliases": "never", - "allowCallbacks": "never", - "allowConditionalTypes": "never", - "allowConstructors": "never", - "allowGenerics": "never", - "allowLiterals": "never", - "allowMappedTypes": "never", - "allowTupleTypes": "never", - }, - ], - "meta": { - "deprecated": { - "deprecatedSince": "6.0.0", - "replacedBy": [ - { - "rule": { - "name": "@typescript-eslint/consistent-type-definitions", - "url": "https://typescript-eslint.io/rules/consistent-type-definitions", - }, - }, - ], - "url": "https://github.com/typescript-eslint/typescript-eslint/pull/6229", - }, - "docs": { - "description": "Disallow type aliases", - "url": "https://typescript-eslint.io/rules/no-type-alias", - }, - "messages": { - "noCompositionAlias": "{{typeName}} in {{compositionType}} types are not allowed.", - "noTypeAlias": "Type {{alias}} are not allowed.", - }, - "schema": [ - { - "$defs": { - "expandedOptions": { - "enum": [ - "always", - "never", - "in-unions", - "in-intersections", - "in-unions-and-intersections", - ], - "type": "string", - }, - "simpleOptions": { - "enum": [ - "always", - "never", - ], - "type": "string", - }, - }, - "additionalProperties": false, - "properties": { - "allowAliases": { - "$ref": "#/items/0/$defs/expandedOptions", - "description": "Whether to allow direct one-to-one type aliases.", - }, - "allowCallbacks": { - "$ref": "#/items/0/$defs/simpleOptions", - "description": "Whether to allow type aliases for callbacks.", - }, - "allowConditionalTypes": { - "$ref": "#/items/0/$defs/simpleOptions", - "description": "Whether to allow type aliases for conditional types.", - }, - "allowConstructors": { - "$ref": "#/items/0/$defs/simpleOptions", - "description": "Whether to allow type aliases with constructors.", - }, - "allowGenerics": { - "$ref": "#/items/0/$defs/simpleOptions", - "description": "Whether to allow type aliases with generic types.", - }, - "allowLiterals": { - "$ref": "#/items/0/$defs/expandedOptions", - "description": "Whether to allow type aliases with object literal types.", - }, - "allowMappedTypes": { - "$ref": "#/items/0/$defs/expandedOptions", - "description": "Whether to allow type aliases with mapped types.", - }, - "allowTupleTypes": { - "$ref": "#/items/0/$defs/expandedOptions", - "description": "Whether to allow type aliases with tuple types.", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-unnecessary-boolean-literal-compare": { - "create": [Function], - "defaultOptions": [ - { - "allowComparingNullableBooleansToFalse": true, - "allowComparingNullableBooleansToTrue": true, - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow unnecessary equality comparisons against boolean literals", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare", - }, - "fixable": "code", - "messages": { - "comparingNullableToFalse": "This expression unnecessarily compares a nullable boolean value to false instead of using the ?? operator to provide a default.", - "comparingNullableToTrueDirect": "This expression unnecessarily compares a nullable boolean value to true instead of using it directly.", - "comparingNullableToTrueNegated": "This expression unnecessarily compares a nullable boolean value to true instead of negating it.", - "direct": "This expression unnecessarily compares a boolean value to a boolean instead of using it directly.", - "negated": "This expression unnecessarily compares a boolean value to a boolean instead of negating it.", - "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowComparingNullableBooleansToFalse": { - "description": "Whether to allow comparisons between nullable boolean variables and \`false\`.", - "type": "boolean", - }, - "allowComparingNullableBooleansToTrue": { - "description": "Whether to allow comparisons between nullable boolean variables and \`true\`.", - "type": "boolean", - }, - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { - "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-unnecessary-condition": { - "create": [Function], - "defaultOptions": [ - { - "allowConstantLoopConditions": "never", - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, - "checkTypePredicates": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow conditionals where the type is always truthy or always falsy", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-condition", - }, - "fixable": "code", - "messages": { - "alwaysFalsy": "Unnecessary conditional, value is always falsy.", - "alwaysFalsyFunc": "This callback should return a conditional, but return is always falsy.", - "alwaysNullish": "Unnecessary conditional, left-hand side of \`??\` operator is always \`null\` or \`undefined\`.", - "alwaysTruthy": "Unnecessary conditional, value is always truthy.", - "alwaysTruthyFunc": "This callback should return a conditional, but return is always truthy.", - "comparisonBetweenLiteralTypes": "Unnecessary conditional, comparison is always {{trueOrFalse}}, since \`{{left}} {{operator}} {{right}}\` is {{trueOrFalse}}.", - "never": "Unnecessary conditional, value is \`never\`.", - "neverNullish": "Unnecessary conditional, expected left-hand side of \`??\` operator to be possibly null or undefined.", - "neverOptionalChain": "Unnecessary optional chain on a non-nullish value.", - "noOverlapBooleanExpression": "Unnecessary conditional, the types have no overlap.", - "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", - "typeGuardAlreadyIsType": "Unnecessary conditional, expression already has the type being checked by the {{typeGuardOrAssertionFunction}}.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowConstantLoopConditions": { - "description": "Whether to ignore constant loop conditions, such as \`while (true)\`.", - "oneOf": [ - { - "type": "boolean", - }, - { - "enum": [ - "always", - "never", - "only-allowed-literals", - ], - "type": "string", - }, - ], - }, - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { - "description": "Whether to not error when running with a tsconfig that has strictNullChecks turned.", - "type": "boolean", - }, - "checkTypePredicates": { - "description": "Whether to check the asserted argument of a type predicate function for unnecessary conditions", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-unnecessary-parameter-property-assignment": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow unnecessary assignment of constructor property parameter", - "url": "https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment", - }, - "messages": { - "unnecessaryAssign": "This assignment is unnecessary since it is already assigned by a parameter property.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-unnecessary-qualifier": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow unnecessary namespace qualifiers", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-qualifier", - }, - "fixable": "code", - "messages": { - "unnecessaryQualifier": "Qualifier is unnecessary since '{{ name }}' is in scope.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-unnecessary-template-expression": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow unnecessary template expressions", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-template-expression", - }, - "fixable": "code", - "messages": { - "noUnnecessaryTemplateExpression": "Template literal expression is unnecessary and can be simplified.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-unnecessary-type-arguments": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow type arguments that are equal to the default", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-type-arguments", - }, - "fixable": "code", - "messages": { - "unnecessaryTypeParameter": "This is the default value for this type parameter, so it can be omitted.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-unnecessary-type-assertion": { - "create": [Function], - "defaultOptions": [ - {}, - ], - "meta": { - "docs": { - "description": "Disallow type assertions that do not change the type of an expression", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-type-assertion", - }, - "fixable": "code", - "messages": { - "contextuallyUnnecessary": "This assertion is unnecessary since the receiver accepts the original type of the expression.", - "unnecessaryAssertion": "This assertion is unnecessary since it does not change the type of the expression.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "typesToIgnore": { - "description": "A list of type names to ignore.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-unnecessary-type-constraint": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow unnecessary constraints on generic types", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-unnecessary-type-constraint", - }, - "hasSuggestions": true, - "messages": { - "removeUnnecessaryConstraint": "Remove the unnecessary \`{{constraint}}\` constraint.", - "unnecessaryConstraint": "Constraining the generic type \`{{name}}\` to \`{{constraint}}\` does nothing and is unnecessary.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-unnecessary-type-parameters": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow type parameters that aren't used multiple times", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unnecessary-type-parameters", - }, - "hasSuggestions": true, - "messages": { - "replaceUsagesWithConstraint": "Replace all usages of type parameter with its constraint.", - "sole": "Type parameter {{name}} is {{uses}} in the {{descriptor}} signature.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-argument": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow calling a function with a value with type \`any\`", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-argument", - }, - "messages": { - "unsafeArgument": "Unsafe argument of type {{sender}} assigned to a parameter of type {{receiver}}.", - "unsafeArraySpread": "Unsafe spread of an {{sender}} array type.", - "unsafeSpread": "Unsafe spread of an {{sender}} type.", - "unsafeTupleSpread": "Unsafe spread of a tuple type. The argument is {{sender}} and is assigned to a parameter of type {{receiver}}.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-assignment": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow assigning a value with type \`any\` to variables and properties", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-assignment", - }, - "messages": { - "anyAssignment": "Unsafe assignment of an {{sender}} value.", - "anyAssignmentThis": "Unsafe assignment of an {{sender}} value. \`this\` is typed as \`any\`. -You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", - "unsafeArrayPattern": "Unsafe array destructuring of an {{sender}} array value.", - "unsafeArrayPatternFromTuple": "Unsafe array destructuring of a tuple element with an {{sender}} value.", - "unsafeArraySpread": "Unsafe spread of an {{sender}} value in an array.", - "unsafeAssignment": "Unsafe assignment of type {{sender}} to a variable of type {{receiver}}.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-call": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow calling a value with type \`any\`", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-call", - }, - "messages": { - "unsafeCall": "Unsafe call of a(n) {{type}} typed value.", - "unsafeCallThis": "Unsafe call of a(n) {{type}} typed value. \`this\` is typed as {{type}}. -You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", - "unsafeNew": "Unsafe construction of a(n) {{type}} typed value.", - "unsafeTemplateTag": "Unsafe use of a(n) {{type}} typed template tag.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-declaration-merging": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow unsafe declaration merging", - "recommended": "recommended", - "requiresTypeChecking": false, - "url": "https://typescript-eslint.io/rules/no-unsafe-declaration-merging", - }, - "messages": { - "unsafeMerging": "Unsafe declaration merging between classes and interfaces.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-enum-comparison": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow comparing an enum value with a non-enum value", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-enum-comparison", - }, - "hasSuggestions": true, - "messages": { - "mismatchedCase": "The case statement does not have a shared enum type with the switch predicate.", - "mismatchedCondition": "The two values in this comparison do not have a shared enum type.", - "replaceValueWithEnum": "Replace with an enum value comparison.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-unsafe-function-type": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow using the unsafe built-in Function type", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-unsafe-function-type", - }, - "fixable": "code", - "messages": { - "bannedFunctionType": "The \`Function\` type accepts any function-like value. -Prefer explicitly defining any function parameters and return type.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-member-access": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow member access on a value with type \`any\`", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-member-access", - }, - "messages": { - "unsafeComputedMemberAccess": "Computed name {{property}} resolves to an {{type}} value.", - "unsafeMemberExpression": "Unsafe member access {{property}} on an {{type}} value.", - "unsafeThisMemberExpression": "Unsafe member access {{property}} on an \`any\` value. \`this\` is typed as \`any\`. -You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-return": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow returning a value with type \`any\` from a function", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-return", - }, - "messages": { - "unsafeReturn": "Unsafe return of a value of type {{type}}.", - "unsafeReturnAssignment": "Unsafe return of type \`{{sender}}\` from function with return type \`{{receiver}}\`.", - "unsafeReturnThis": "Unsafe return of a value of type \`{{type}}\`. \`this\` is typed as \`any\`. -You can try to fix this by turning on the \`noImplicitThis\` compiler option, or adding a \`this\` parameter to the function.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-type-assertion": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow type assertions that narrow a type", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-type-assertion", - }, - "messages": { - "unsafeOfAnyTypeAssertion": "Unsafe assertion from {{type}} detected: consider using type guards or a safer assertion.", - "unsafeToAnyTypeAssertion": "Unsafe assertion to {{type}} detected: consider using a more specific type to ensure safety.", - "unsafeToUnconstrainedTypeAssertion": "Unsafe type assertion: '{{type}}' could be instantiated with an arbitrary type which could be unrelated to the original type.", - "unsafeTypeAssertion": "Unsafe type assertion: type '{{type}}' is more narrow than the original type.", - "unsafeTypeAssertionAssignableToConstraint": "Unsafe type assertion: the original type is assignable to the constraint of type '{{type}}', but '{{type}}' could be instantiated with a different subtype of its constraint.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unsafe-unary-minus": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Require unary negation to take a number", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/no-unsafe-unary-minus", - }, - "messages": { - "unaryMinus": "Argument of unary negation should be assignable to number | bigint but is {{type}} instead.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unused-expressions": { - "create": [Function], - "defaultOptions": [ - { - "allowShortCircuit": false, - "allowTaggedTemplates": false, - "allowTernary": false, - }, - ], - "meta": { - "defaultOptions": [ - { - "allowShortCircuit": false, - "allowTaggedTemplates": false, - "allowTernary": false, - }, - ], - "docs": { - "description": "Disallow unused expressions", - "extendsBaseRule": true, - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-unused-expressions", - }, - "hasSuggestions": undefined, - "messages": { - "unusedExpression": "Expected an assignment or function call and instead saw an expression.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowShortCircuit": { - "type": "boolean", - }, - "allowTaggedTemplates": { - "type": "boolean", - }, - "allowTernary": { - "type": "boolean", - }, - "enforceForJSX": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "no-unused-vars": { - "create": [Function], - "defaultOptions": [ - {}, - ], - "meta": { - "docs": { - "description": "Disallow unused variables", - "extendsBaseRule": true, - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-unused-vars", - }, - "messages": { - "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", - "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", - "usedOnlyAsType": "'{{varName}}' is {{action}} but only used as a type{{additional}}.", - }, - "schema": [ - { - "oneOf": [ - { - "enum": [ - "all", - "local", - ], - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "args": { - "description": "Whether to check all, some, or no arguments.", - "enum": [ - "all", - "after-used", - "none", - ], - "type": "string", - }, - "argsIgnorePattern": { - "description": "Regular expressions of argument names to not check for usage.", - "type": "string", - }, - "caughtErrors": { - "description": "Whether to check catch block arguments.", - "enum": [ - "all", - "none", - ], - "type": "string", - }, - "caughtErrorsIgnorePattern": { - "description": "Regular expressions of catch block argument names to not check for usage.", - "type": "string", - }, - "destructuredArrayIgnorePattern": { - "description": "Regular expressions of destructured array variable names to not check for usage.", - "type": "string", - }, - "ignoreClassWithStaticInitBlock": { - "description": "Whether to ignore classes with at least one static initialization block.", - "type": "boolean", - }, - "ignoreRestSiblings": { - "description": "Whether to ignore sibling properties in \`...\` destructurings.", - "type": "boolean", - }, - "reportUsedIgnorePattern": { - "description": "Whether to report variables that match any of the valid ignore pattern options if they have been used.", - "type": "boolean", - }, - "vars": { - "description": "Whether to check all variables or only locally-declared variables.", - "enum": [ - "all", - "local", - ], - "type": "string", - }, - "varsIgnorePattern": { - "description": "Regular expressions of variable names to not check for usage.", - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - ], - "type": "problem", - }, - }, - "no-use-before-define": { - "create": [Function], - "defaultOptions": [ - { - "allowNamedExports": false, - "classes": true, - "enums": true, - "functions": true, - "ignoreTypeReferences": true, - "typedefs": true, - "variables": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow the use of variables before they are defined", - "extendsBaseRule": true, - "url": "https://typescript-eslint.io/rules/no-use-before-define", - }, - "messages": { - "noUseBeforeDefine": "'{{name}}' was used before it was defined.", - }, - "schema": [ - { - "oneOf": [ - { - "enum": [ - "nofunc", - ], - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "allowNamedExports": { - "description": "Whether to ignore named exports.", - "type": "boolean", - }, - "classes": { - "description": "Whether to ignore references to class declarations.", - "type": "boolean", - }, - "enums": { - "description": "Whether to check references to enums.", - "type": "boolean", - }, - "functions": { - "description": "Whether to ignore references to function declarations.", - "type": "boolean", - }, - "ignoreTypeReferences": { - "description": "Whether to ignore type references, such as in type annotations and assertions.", - "type": "boolean", - }, - "typedefs": { - "description": "Whether to check references to types.", - "type": "boolean", - }, - "variables": { - "description": "Whether to ignore references to variables.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - ], - "type": "problem", - }, - }, - "no-useless-constructor": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow unnecessary constructors", - "extendsBaseRule": true, - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/no-useless-constructor", - }, - "hasSuggestions": true, - "messages": { - "noUselessConstructor": "Useless constructor.", - "removeConstructor": "Remove the constructor.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-useless-empty-export": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow empty exports that don't change anything in a module file", - "url": "https://typescript-eslint.io/rules/no-useless-empty-export", - }, - "fixable": "code", - "hasSuggestions": false, - "messages": { - "uselessExport": "Empty export does nothing and can be removed.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "no-var-requires": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - }, - ], - "meta": { - "deprecated": { - "deprecatedSince": "8.0.0", - "replacedBy": [ - { - "rule": { - "name": "@typescript-eslint/no-require-imports", - "url": "https://typescript-eslint.io/rules/no-require-imports", - }, - }, - ], - "url": "https://github.com/typescript-eslint/typescript-eslint/pull/8334", - }, - "docs": { - "description": "Disallow \`require\` statements except in import statements", - "url": "https://typescript-eslint.io/rules/no-var-requires", - }, - "messages": { - "noVarReqs": "Require statement not part of import statement.", - }, - "replacedBy": [ - "@typescript-eslint/no-require-imports", - ], - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Patterns of import paths to allow requiring from.", - "items": { - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "no-wrapper-object-types": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow using confusing built-in primitive class wrappers", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/no-wrapper-object-types", - }, - "fixable": "code", - "messages": { - "bannedClassType": "Prefer using the primitive \`{{preferred}}\` as a type name, rather than the upper-cased \`{{typeName}}\`.", - }, - "schema": [], - "type": "problem", - }, - }, - "non-nullable-type-assertion-style": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce non-null assertions over explicit type assertions", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/non-nullable-type-assertion-style", - }, - "fixable": "code", - "messages": { - "preferNonNullAssertion": "Use a ! assertion to more succinctly remove null and undefined from the type.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "only-throw-error": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - "allowThrowingAny": true, - "allowThrowingUnknown": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow throwing non-\`Error\` values as exceptions", - "extendsBaseRule": "no-throw-literal", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/only-throw-error", - }, - "messages": { - "object": "Expected an error object to be thrown.", - "undef": "Do not throw undefined.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Type specifiers that can be thrown.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - "allowThrowingAny": { - "description": "Whether to always allow throwing values typed as \`any\`.", - "type": "boolean", - }, - "allowThrowingUnknown": { - "description": "Whether to always allow throwing values typed as \`unknown\`.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "parameter-properties": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - "prefer": "class-property", - }, - ], - "meta": { - "docs": { - "description": "Require or disallow parameter properties in class constructors", - "url": "https://typescript-eslint.io/rules/parameter-properties", - }, - "messages": { - "preferClassProperty": "Property {{parameter}} should be declared as a class property.", - "preferParameterProperty": "Property {{parameter}} should be declared as a parameter property.", - }, - "schema": [ - { - "$defs": { - "modifier": { - "enum": [ - "readonly", - "private", - "protected", - "public", - "private readonly", - "protected readonly", - "public readonly", - ], - "type": "string", - }, - }, - "additionalProperties": false, - "properties": { - "allow": { - "description": "Whether to allow certain kinds of properties to be ignored.", - "items": { - "$ref": "#/items/0/$defs/modifier", - }, - "type": "array", - }, - "prefer": { - "description": "Whether to prefer class properties or parameter properties.", - "enum": [ - "class-property", - "parameter-property", - ], - "type": "string", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "prefer-as-const": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce the use of \`as const\` over literal type", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/prefer-as-const", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "preferConstAssertion": "Expected a \`const\` instead of a literal type assertion.", - "variableConstAssertion": "Expected a \`const\` assertion instead of a literal type annotation.", - "variableSuggest": "You should use \`as const\` instead of type annotation.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-destructuring": { - "create": [Function], - "defaultOptions": [ - { - "AssignmentExpression": { - "array": true, - "object": true, - }, - "VariableDeclarator": { - "array": true, - "object": true, - }, - }, - {}, - ], - "meta": { - "docs": { - "description": "Require destructuring from arrays and/or objects", - "extendsBaseRule": true, - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-destructuring", - }, - "fixable": "code", - "hasSuggestions": undefined, - "messages": { - "preferDestructuring": "Use {{type}} destructuring.", - }, - "schema": [ - { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "AssignmentExpression": { - "additionalProperties": false, - "properties": { - "array": { - "type": "boolean", - }, - "object": { - "type": "boolean", - }, - }, - "type": "object", - }, - "VariableDeclarator": { - "additionalProperties": false, - "properties": { - "array": { - "type": "boolean", - }, - "object": { - "type": "boolean", - }, - }, - "type": "object", - }, - }, - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "array": { - "type": "boolean", - }, - "object": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - }, - { - "properties": { - "enforceForDeclarationWithTypeAnnotation": { - "description": "Whether to enforce destructuring on variable declarations with type annotations.", - "type": "boolean", - }, - "enforceForRenamedProperties": { - "description": "Whether to enforce destructuring that use a different variable name than the property name.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-enum-initializers": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Require each enum member value to be explicitly initialized", - "url": "https://typescript-eslint.io/rules/prefer-enum-initializers", - }, - "hasSuggestions": true, - "messages": { - "defineInitializer": "The value of the member '{{ name }}' should be explicitly defined.", - "defineInitializerSuggestion": "Can be fixed to {{ name }} = {{ suggested }}", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-find": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-find", - }, - "hasSuggestions": true, - "messages": { - "preferFind": "Prefer .find(...) instead of .filter(...)[0].", - "preferFindSuggestion": "Use .find(...) instead of .filter(...)[0].", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-for-of": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce the use of \`for-of\` loop over the standard \`for\` loop where possible", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/prefer-for-of", - }, - "messages": { - "preferForOf": "Expected a \`for-of\` loop instead of a \`for\` loop with this simple iteration.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-function-type": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce using function types instead of interfaces with call signatures", - "recommended": "stylistic", - "url": "https://typescript-eslint.io/rules/prefer-function-type", - }, - "fixable": "code", - "messages": { - "functionTypeOverCallableType": "{{ literalOrInterface }} only has a call signature, you should use a function type instead.", - "unexpectedThisOnFunctionOnlyInterface": "\`this\` refers to the function type '{{ interfaceName }}', did you intend to use a generic \`this\` parameter like \`(this: Self, ...) => Self\` instead?", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-includes": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce \`includes\` method over \`indexOf\` method", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-includes", - }, - "fixable": "code", - "messages": { - "preferIncludes": "Use 'includes()' method instead.", - "preferStringIncludes": "Use \`String#includes()\` method with a string instead.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-literal-enum-member": { - "create": [Function], - "defaultOptions": [ - { - "allowBitwiseExpressions": false, - }, - ], - "meta": { - "docs": { - "description": "Require all enum members to be literal values", - "recommended": "strict", - "requiresTypeChecking": false, - "url": "https://typescript-eslint.io/rules/prefer-literal-enum-member", - }, - "messages": { - "notLiteral": "Explicit enum value must only be a literal value (string or number).", - "notLiteralOrBitwiseExpression": "Explicit enum value must only be a literal value (string or number) or a bitwise expression.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowBitwiseExpressions": { - "description": "Whether to allow using bitwise expressions in enum initializers.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-namespace-keyword": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Require using \`namespace\` keyword over \`module\` keyword to declare custom TypeScript modules", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/prefer-namespace-keyword", - }, - "fixable": "code", - "messages": { - "useNamespace": "Use 'namespace' instead of 'module' to declare custom TypeScript modules.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-nullish-coalescing": { - "create": [Function], - "defaultOptions": [ - { - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, - "ignoreBooleanCoercion": false, - "ignoreConditionalTests": true, - "ignoreMixedLogicalExpressions": false, - "ignorePrimitives": { - "bigint": false, - "boolean": false, - "number": false, - "string": false, - }, - "ignoreTernaryTests": false, - }, - ], - "meta": { - "docs": { - "description": "Enforce using the nullish coalescing operator instead of logical assignments or chaining", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-nullish-coalescing", - }, - "hasSuggestions": true, - "messages": { - "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", - "preferNullishOverOr": "Prefer using nullish coalescing operator (\`??{{ equals }}\`) instead of a logical {{ description }} (\`||{{ equals }}\`), as it is a safer operator.", - "preferNullishOverTernary": "Prefer using nullish coalescing operator (\`??{{ equals }}\`) instead of a ternary expression, as it is simpler to read.", - "suggestNullish": "Fix to nullish coalescing operator (\`??{{ equals }}\`).", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { - "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.", - "type": "boolean", - }, - "ignoreBooleanCoercion": { - "description": "Whether to ignore arguments to the \`Boolean\` constructor", - "type": "boolean", - }, - "ignoreConditionalTests": { - "description": "Whether to ignore cases that are located within a conditional test.", - "type": "boolean", - }, - "ignoreMixedLogicalExpressions": { - "description": "Whether to ignore any logical or expressions that are part of a mixed logical expression (with \`&&\`).", - "type": "boolean", - }, - "ignorePrimitives": { - "description": "Whether to ignore all (\`true\`) or some (an object with properties) primitive types.", - "oneOf": [ - { - "description": "Which primitives types may be ignored.", - "properties": { - "bigint": { - "description": "Ignore bigint primitive types.", - "type": "boolean", - }, - "boolean": { - "description": "Ignore boolean primitive types.", - "type": "boolean", - }, - "number": { - "description": "Ignore number primitive types.", - "type": "boolean", - }, - "string": { - "description": "Ignore string primitive types.", - "type": "boolean", - }, - }, - "type": "object", - }, - { - "description": "Ignore all primitive types.", - "enum": [ - true, - ], - "type": "boolean", - }, - ], - }, - "ignoreTernaryTests": { - "description": "Whether to ignore any ternary expressions that could be simplified by using the nullish coalescing operator.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-optional-chain": { - "create": [Function], - "defaultOptions": [ - { - "allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing": false, - "checkAny": true, - "checkBigInt": true, - "checkBoolean": true, - "checkNumber": true, - "checkString": true, - "checkUnknown": true, - "requireNullish": false, - }, - ], - "meta": { - "docs": { - "description": "Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-optional-chain", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "optionalChainSuggest": "Change to an optional chain.", - "preferOptionalChain": "Prefer using an optional chain expression instead, as it's more concise and easier to read.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing": { - "description": "Allow autofixers that will change the return type of the expression. This option is considered unsafe as it may break the build.", - "type": "boolean", - }, - "checkAny": { - "description": "Check operands that are typed as \`any\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - "checkBigInt": { - "description": "Check operands that are typed as \`bigint\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - "checkBoolean": { - "description": "Check operands that are typed as \`boolean\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - "checkNumber": { - "description": "Check operands that are typed as \`number\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - "checkString": { - "description": "Check operands that are typed as \`string\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - "checkUnknown": { - "description": "Check operands that are typed as \`unknown\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - "requireNullish": { - "description": "Skip operands that are not typed with \`null\` and/or \`undefined\` when inspecting "loose boolean" operands.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-promise-reject-errors": { - "create": [Function], - "defaultOptions": [ - { - "allowEmptyReject": false, - "allowThrowingAny": false, - "allowThrowingUnknown": false, - }, - ], - "meta": { - "docs": { - "description": "Require using Error objects as Promise rejection reasons", - "extendsBaseRule": true, - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-promise-reject-errors", - }, - "messages": { - "rejectAnError": "Expected the Promise rejection reason to be an Error.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowEmptyReject": { - "description": "Whether to allow calls to \`Promise.reject()\` with no arguments.", - "type": "boolean", - }, - "allowThrowingAny": { - "description": "Whether to always allow throwing values typed as \`any\`.", - "type": "boolean", - }, - "allowThrowingUnknown": { - "description": "Whether to always allow throwing values typed as \`unknown\`.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-readonly": { - "create": [Function], - "defaultOptions": [ - { - "onlyInlineLambdas": false, - }, - ], - "meta": { - "docs": { - "description": "Require private members to be marked as \`readonly\` if they're never modified outside of the constructor", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-readonly", - }, - "fixable": "code", - "messages": { - "preferReadonly": "Member '{{name}}' is never reassigned; mark it as \`readonly\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "onlyInlineLambdas": { - "description": "Whether to restrict checking only to members immediately assigned a lambda value.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-readonly-parameter-types": { - "create": [Function], - "defaultOptions": [ - { - "allow": [], - "checkParameterProperties": true, - "ignoreInferredTypes": false, - "treatMethodsAsReadonly": false, - }, - ], - "meta": { - "docs": { - "description": "Require function parameters to be typed as \`readonly\` to prevent accidental mutation of inputs", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-readonly-parameter-types", - }, - "messages": { - "shouldBeReadonly": "Parameter should be a read only type.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "An array of type specifiers to ignore.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - "checkParameterProperties": { - "description": "Whether to check class parameter properties.", - "type": "boolean", - }, - "ignoreInferredTypes": { - "description": "Whether to ignore parameters which don't explicitly specify a type.", - "type": "boolean", - }, - "treatMethodsAsReadonly": { - "description": "Whether to treat all mutable methods as though they are readonly.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-reduce-type-parameter": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce using type parameter when calling \`Array#reduce\` instead of using a type assertion", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-reduce-type-parameter", - }, - "fixable": "code", - "messages": { - "preferTypeParameter": "Unnecessary assertion: Array#reduce accepts a type parameter for the default value.", - }, - "schema": [], - "type": "problem", - }, - }, - "prefer-regexp-exec": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce \`RegExp#exec\` over \`String#match\` if no global flag is provided", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-regexp-exec", - }, - "fixable": "code", - "messages": { - "regExpExecOverStringMatch": "Use the \`RegExp#exec()\` method instead.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-return-this-type": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce that \`this\` is used when only \`this\` type is returned", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-return-this-type", - }, - "fixable": "code", - "messages": { - "useThisType": "Use \`this\` type instead.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "prefer-string-starts-ends-with": { - "create": [Function], - "defaultOptions": [ - { - "allowSingleElementEquality": "never", - }, - ], - "meta": { - "docs": { - "description": "Enforce using \`String#startsWith\` and \`String#endsWith\` over other equivalent methods of checking substrings", - "recommended": "stylistic", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/prefer-string-starts-ends-with", - }, - "fixable": "code", - "messages": { - "preferEndsWith": "Use the 'String#endsWith' method instead.", - "preferStartsWith": "Use 'String#startsWith' method instead.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowSingleElementEquality": { - "description": "Whether to allow equality checks against the first or last element of a string.", - "enum": [ - "always", - "never", - ], - "type": "string", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "prefer-ts-expect-error": { - "create": [Function], - "defaultOptions": [], - "meta": { - "deprecated": { - "deprecatedSince": "7.11.0", - "replacedBy": [ - { - "rule": { - "name": "@typescript-eslint/ban-ts-comment", - "url": "https://typescript-eslint.io/rules/ban-ts-comment", - }, - }, - ], - "url": "https://github.com/typescript-eslint/typescript-eslint/pull/9081", - }, - "docs": { - "description": "Enforce using \`@ts-expect-error\` over \`@ts-ignore\`", - "url": "https://typescript-eslint.io/rules/prefer-ts-expect-error", - }, - "fixable": "code", - "messages": { - "preferExpectErrorComment": "Use "@ts-expect-error" to ensure an error is actually being suppressed.", - }, - "replacedBy": [ - "@typescript-eslint/ban-ts-comment", - ], - "schema": [], - "type": "problem", - }, - }, - "promise-function-async": { - "create": [Function], - "defaultOptions": [ - { - "allowAny": true, - "allowedPromiseNames": [], - "checkArrowFunctions": true, - "checkFunctionDeclarations": true, - "checkFunctionExpressions": true, - "checkMethodDeclarations": true, - }, - ], - "meta": { - "docs": { - "description": "Require any function or method that returns a Promise to be marked async", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/promise-function-async", - }, - "fixable": "code", - "messages": { - "missingAsync": "Functions that return promises must be async.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowAny": { - "description": "Whether to consider \`any\` and \`unknown\` to be Promises.", - "type": "boolean", - }, - "allowedPromiseNames": { - "description": "Any extra names of classes or interfaces to be considered Promises.", - "items": { - "type": "string", - }, - "type": "array", - }, - "checkArrowFunctions": { - "description": "Whether to check arrow functions.", - "type": "boolean", - }, - "checkFunctionDeclarations": { - "description": "Whether to check standalone function declarations.", - "type": "boolean", - }, - "checkFunctionExpressions": { - "description": "Whether to check inline function expressions", - "type": "boolean", - }, - "checkMethodDeclarations": { - "description": "Whether to check methods on classes and object literals.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "related-getter-setter-pairs": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce that \`get()\` types should be assignable to their equivalent \`set()\` type", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/related-getter-setter-pairs", - }, - "messages": { - "mismatch": "\`get()\` type should be assignable to its equivalent \`set()\` type.", - }, - "schema": [], - "type": "problem", - }, - }, - "require-array-sort-compare": { - "create": [Function], - "defaultOptions": [ - { - "ignoreStringArrays": true, - }, - ], - "meta": { - "docs": { - "description": "Require \`Array#sort\` and \`Array#toSorted\` calls to always provide a \`compareFunction\`", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/require-array-sort-compare", - }, - "messages": { - "requireCompare": "Require 'compare' argument.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreStringArrays": { - "description": "Whether to ignore arrays in which all elements are strings.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "require-await": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow async functions which do not return promises and have no \`await\` expression", - "extendsBaseRule": true, - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/require-await", - }, - "hasSuggestions": true, - "messages": { - "missingAwait": "{{name}} has no 'await' expression.", - "removeAsync": "Remove 'async'.", - }, - "schema": [], - "type": "suggestion", - }, - }, - "restrict-plus-operands": { - "create": [Function], - "defaultOptions": [ - { - "allowAny": true, - "allowBoolean": true, - "allowNullish": true, - "allowNumberAndString": true, - "allowRegExp": true, - "skipCompoundAssignments": false, - }, - ], - "meta": { - "docs": { - "description": "Require both operands of addition to be the same type and be \`bigint\`, \`number\`, or \`string\`", - "recommended": { - "recommended": true, - "strict": [ - { - "allowAny": false, - "allowBoolean": false, - "allowNullish": false, - "allowNumberAndString": false, - "allowRegExp": false, - }, - ], - }, - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/restrict-plus-operands", - }, - "messages": { - "bigintAndNumber": "Numeric '+' operations must either be both bigints or both numbers. Got \`{{left}}\` + \`{{right}}\`.", - "invalid": "Invalid operand for a '+' operation. Operands must each be a number or {{stringLike}}. Got \`{{type}}\`.", - "mismatched": "Operands of '+' operations must be a number or {{stringLike}}. Got \`{{left}}\` + \`{{right}}\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowAny": { - "description": "Whether to allow \`any\` typed values.", - "type": "boolean", - }, - "allowBoolean": { - "description": "Whether to allow \`boolean\` typed values.", - "type": "boolean", - }, - "allowNullish": { - "description": "Whether to allow potentially \`null\` or \`undefined\` typed values.", - "type": "boolean", - }, - "allowNumberAndString": { - "description": "Whether to allow \`bigint\`/\`number\` typed values and \`string\` typed values to be added together.", - "type": "boolean", - }, - "allowRegExp": { - "description": "Whether to allow \`regexp\` typed values.", - "type": "boolean", - }, - "skipCompoundAssignments": { - "description": "Whether to skip compound assignments such as \`+=\`.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "restrict-template-expressions": { - "create": [Function], - "defaultOptions": [ - { - "allow": [ - { - "from": "lib", - "name": [ - "Error", - "URL", - "URLSearchParams", - ], - }, - ], - "allowAny": true, - "allowBoolean": true, - "allowNullish": true, - "allowNumber": true, - "allowRegExp": true, - }, - ], - "meta": { - "docs": { - "description": "Enforce template literal expressions to be of \`string\` type", - "recommended": { - "recommended": true, - "strict": [ - { - "allowAny": false, - "allowBoolean": false, - "allowNever": false, - "allowNullish": false, - "allowNumber": false, - "allowRegExp": false, - }, - ], - }, - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/restrict-template-expressions", - }, - "messages": { - "invalidType": "Invalid type "{{type}}" of template literal expression.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allow": { - "description": "Types to allow in template expressions.", - "items": { - "oneOf": [ - { - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "file", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "path": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "lib", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - }, - "required": [ - "from", - "name", - ], - "type": "object", - }, - { - "additionalProperties": false, - "properties": { - "from": { - "enum": [ - "package", - ], - "type": "string", - }, - "name": { - "oneOf": [ - { - "type": "string", - }, - { - "items": { - "type": "string", - }, - "minItems": 1, - "type": "array", - "uniqueItems": true, - }, - ], - }, - "package": { - "type": "string", - }, - }, - "required": [ - "from", - "name", - "package", - ], - "type": "object", - }, - ], - }, - "type": "array", - }, - "allowAny": { - "description": "Whether to allow \`any\` typed values in template expressions.", - "type": "boolean", - }, - "allowArray": { - "description": "Whether to allow \`array\` typed values in template expressions.", - "type": "boolean", - }, - "allowBoolean": { - "description": "Whether to allow \`boolean\` typed values in template expressions.", - "type": "boolean", - }, - "allowNever": { - "description": "Whether to allow \`never\` typed values in template expressions.", - "type": "boolean", - }, - "allowNullish": { - "description": "Whether to allow \`nullish\` typed values in template expressions.", - "type": "boolean", - }, - "allowNumber": { - "description": "Whether to allow \`number\` typed values in template expressions.", - "type": "boolean", - }, - "allowRegExp": { - "description": "Whether to allow \`regexp\` typed values in template expressions.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "return-await": { - "create": [Function], - "defaultOptions": [ - "in-try-catch", - ], - "meta": { - "docs": { - "description": "Enforce consistent awaiting of returned promises", - "recommended": { - "strict": [ - "error-handling-correctness-only", - ], - }, - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/return-await", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "disallowedPromiseAwait": "Returning an awaited promise is not allowed in this context.", - "disallowedPromiseAwaitSuggestion": "Remove \`await\` before the expression. Use caution as this may impact control flow.", - "nonPromiseAwait": "Returning an awaited value that is not a promise is not allowed.", - "requiredPromiseAwait": "Returning an awaited promise is required in this context.", - "requiredPromiseAwaitSuggestion": "Add \`await\` before the expression. Use caution as this may impact control flow.", - }, - "schema": [ - { - "oneOf": [ - { - "description": "Requires that all returned promises be awaited.", - "enum": [ - "always", - ], - "type": "string", - }, - { - "description": "In error-handling contexts, the rule enforces that returned promises must be awaited. In ordinary contexts, the rule does not enforce any particular behavior around whether returned promises are awaited.", - "enum": [ - "error-handling-correctness-only", - ], - "type": "string", - }, - { - "description": "In error-handling contexts, the rule enforces that returned promises must be awaited. In ordinary contexts, the rule enforces that returned promises _must not_ be awaited.", - "enum": [ - "in-try-catch", - ], - "type": "string", - }, - { - "description": "Disallows awaiting any returned promises.", - "enum": [ - "never", - ], - "type": "string", - }, - ], - "type": "string", - }, - ], - "type": "problem", - }, - }, - "sort-type-constituents": { - "create": [Function], - "defaultOptions": [ - { - "caseSensitive": false, - "checkIntersections": true, - "checkUnions": true, - "groupOrder": [ - "named", - "keyword", - "operator", - "literal", - "function", - "import", - "conditional", - "object", - "tuple", - "intersection", - "union", - "nullish", - ], - }, - ], - "meta": { - "deprecated": { - "deprecatedSince": "7.13.0", - "replacedBy": [ - { - "plugin": { - "name": "eslint-plugin-perfectionist", - "url": "https://perfectionist.dev", - }, - "rule": { - "name": "perfectionist/sort-intersection-types", - "url": "https://perfectionist.dev/rules/sort-intersection-types", - }, - }, - { - "plugin": { - "name": "eslint-plugin-perfectionist", - "url": "https://perfectionist.dev", - }, - "rule": { - "name": "perfectionist/sort-union-types", - "url": "https://perfectionist.dev/rules/sort-union-types", - }, - }, - ], - "url": "https://github.com/typescript-eslint/typescript-eslint/pull/9253", - }, - "docs": { - "description": "Enforce constituents of a type union/intersection to be sorted alphabetically", - "url": "https://typescript-eslint.io/rules/sort-type-constituents", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "notSorted": "{{type}} type constituents must be sorted.", - "notSortedNamed": "{{type}} type {{name}} constituents must be sorted.", - "suggestFix": "Sort constituents of type (removes all comments).", - }, - "replacedBy": [ - "perfectionist/sort-intersection-types", - "perfectionist/sort-union-types", - ], - "schema": [ - { - "additionalProperties": false, - "properties": { - "caseSensitive": { - "description": "Whether to sort using case sensitive string comparisons.", - "type": "boolean", - }, - "checkIntersections": { - "description": "Whether to check intersection types (\`&\`).", - "type": "boolean", - }, - "checkUnions": { - "description": "Whether to check union types (\`|\`).", - "type": "boolean", - }, - "groupOrder": { - "description": "Ordering of the groups.", - "items": { - "enum": [ - "conditional", - "function", - "import", - "intersection", - "keyword", - "nullish", - "literal", - "named", - "object", - "operator", - "tuple", - "union", - ], - "type": "string", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "strict-boolean-expressions": { - "create": [Function], - "defaultOptions": [ - { - "allowAny": false, - "allowNullableBoolean": false, - "allowNullableEnum": false, - "allowNullableNumber": false, - "allowNullableObject": true, - "allowNullableString": false, - "allowNumber": true, - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": false, - "allowString": true, - }, - ], - "meta": { - "docs": { - "description": "Disallow certain types in boolean expressions", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/strict-boolean-expressions", - }, - "hasSuggestions": true, - "messages": { - "conditionErrorAny": "Unexpected any value in {{context}}. An explicit comparison or type conversion is required.", - "conditionErrorNullableBoolean": "Unexpected nullable boolean value in {{context}}. Please handle the nullish case explicitly.", - "conditionErrorNullableEnum": "Unexpected nullable enum value in {{context}}. Please handle the nullish/zero/NaN cases explicitly.", - "conditionErrorNullableNumber": "Unexpected nullable number value in {{context}}. Please handle the nullish/zero/NaN cases explicitly.", - "conditionErrorNullableObject": "Unexpected nullable object value in {{context}}. An explicit null check is required.", - "conditionErrorNullableString": "Unexpected nullable string value in {{context}}. Please handle the nullish/empty cases explicitly.", - "conditionErrorNullish": "Unexpected nullish value in conditional. The condition is always false.", - "conditionErrorNumber": "Unexpected number value in {{context}}. An explicit zero/NaN check is required.", - "conditionErrorObject": "Unexpected object value in {{context}}. The condition is always true.", - "conditionErrorOther": "Unexpected value in conditional. A boolean expression is required.", - "conditionErrorString": "Unexpected string value in {{context}}. An explicit empty string check is required.", - "conditionFixCastBoolean": "Explicitly convert value to a boolean (\`Boolean(value)\`)", - "conditionFixCompareArrayLengthNonzero": "Change condition to check array's length (\`value.length > 0\`)", - "conditionFixCompareArrayLengthZero": "Change condition to check array's length (\`value.length === 0\`)", - "conditionFixCompareEmptyString": "Change condition to check for empty string (\`value !== ""\`)", - "conditionFixCompareFalse": "Change condition to check if false (\`value === false\`)", - "conditionFixCompareNaN": "Change condition to check for NaN (\`!Number.isNaN(value)\`)", - "conditionFixCompareNullish": "Change condition to check for null/undefined (\`value != null\`)", - "conditionFixCompareStringLength": "Change condition to check string's length (\`value.length !== 0\`)", - "conditionFixCompareTrue": "Change condition to check if true (\`value === true\`)", - "conditionFixCompareZero": "Change condition to check for 0 (\`value !== 0\`)", - "conditionFixDefaultEmptyString": "Explicitly treat nullish value the same as an empty string (\`value ?? ""\`)", - "conditionFixDefaultFalse": "Explicitly treat nullish value the same as false (\`value ?? false\`)", - "conditionFixDefaultZero": "Explicitly treat nullish value the same as 0 (\`value ?? 0\`)", - "explicitBooleanReturnType": "Add an explicit \`boolean\` return type annotation.", - "noStrictNullCheck": "This rule requires the \`strictNullChecks\` compiler option to be turned on to function correctly.", - "predicateCannotBeAsync": "Predicate function should not be 'async'; expected a boolean return type.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowAny": { - "description": "Whether to allow \`any\`s in a boolean context.", - "type": "boolean", - }, - "allowNullableBoolean": { - "description": "Whether to allow nullable \`boolean\`s in a boolean context.", - "type": "boolean", - }, - "allowNullableEnum": { - "description": "Whether to allow nullable \`enum\`s in a boolean context.", - "type": "boolean", - }, - "allowNullableNumber": { - "description": "Whether to allow nullable \`number\`s in a boolean context.", - "type": "boolean", - }, - "allowNullableObject": { - "description": "Whether to allow nullable \`object\`s, \`symbol\`s, and functions in a boolean context.", - "type": "boolean", - }, - "allowNullableString": { - "description": "Whether to allow nullable \`string\`s in a boolean context.", - "type": "boolean", - }, - "allowNumber": { - "description": "Whether to allow \`number\`s in a boolean context.", - "type": "boolean", - }, - "allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": { - "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.", - "type": "boolean", - }, - "allowString": { - "description": "Whether to allow \`string\`s in a boolean context.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "switch-exhaustiveness-check": { - "create": [Function], - "defaultOptions": [ - { - "allowDefaultCaseForExhaustiveSwitch": true, - "considerDefaultExhaustiveForUnions": false, - "requireDefaultForNonUnion": false, - }, - ], - "meta": { - "docs": { - "description": "Require switch-case statements to be exhaustive", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/switch-exhaustiveness-check", - }, - "hasSuggestions": true, - "messages": { - "addMissingCases": "Add branches for missing cases.", - "dangerousDefaultCase": "The switch statement is exhaustive, so the default case is unnecessary.", - "switchIsNotExhaustive": "Switch is not exhaustive. Cases not matched: {{missingBranches}}", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "allowDefaultCaseForExhaustiveSwitch": { - "description": "If 'true', allow 'default' cases on switch statements with exhaustive cases.", - "type": "boolean", - }, - "considerDefaultExhaustiveForUnions": { - "description": "If 'true', the 'default' clause is used to determine whether the switch statement is exhaustive for union type", - "type": "boolean", - }, - "defaultCaseCommentPattern": { - "description": "Regular expression for a comment that can indicate an intentionally omitted default case.", - "type": "string", - }, - "requireDefaultForNonUnion": { - "description": "If 'true', require a 'default' clause for switches on non-union types.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "triple-slash-reference": { - "create": [Function], - "defaultOptions": [ - { - "lib": "always", - "path": "never", - "types": "prefer-import", - }, - ], - "meta": { - "docs": { - "description": "Disallow certain triple slash directives in favor of ES6-style import declarations", - "recommended": "recommended", - "url": "https://typescript-eslint.io/rules/triple-slash-reference", - }, - "messages": { - "tripleSlashReference": "Do not use a triple slash reference for {{module}}, use \`import\` style instead.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "lib": { - "description": "What to enforce for \`/// \` references.", - "enum": [ - "always", - "never", - ], - "type": "string", - }, - "path": { - "description": "What to enforce for \`/// \` references.", - "enum": [ - "always", - "never", - ], - "type": "string", - }, - "types": { - "description": "What to enforce for \`/// \` references.", - "enum": [ - "always", - "never", - "prefer-import", - ], - "type": "string", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "typedef": { - "create": [Function], - "defaultOptions": [ - { - "arrayDestructuring": false, - "arrowParameter": false, - "memberVariableDeclaration": false, - "objectDestructuring": false, - "parameter": false, - "propertyDeclaration": false, - "variableDeclaration": false, - "variableDeclarationIgnoreFunction": false, - }, - ], - "meta": { - "docs": { - "description": "Require type annotations in certain places", - "url": "https://typescript-eslint.io/rules/typedef", - }, - "messages": { - "expectedTypedef": "Expected a type annotation.", - "expectedTypedefNamed": "Expected {{name}} to have a type annotation.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "arrayDestructuring": { - "description": "Whether to enforce type annotations on variables declared using array destructuring.", - "type": "boolean", - }, - "arrowParameter": { - "description": "Whether to enforce type annotations for parameters of arrow functions.", - "type": "boolean", - }, - "memberVariableDeclaration": { - "description": "Whether to enforce type annotations on member variables of classes.", - "type": "boolean", - }, - "objectDestructuring": { - "description": "Whether to enforce type annotations on variables declared using object destructuring.", - "type": "boolean", - }, - "parameter": { - "description": "Whether to enforce type annotations for parameters of functions and methods.", - "type": "boolean", - }, - "propertyDeclaration": { - "description": "Whether to enforce type annotations for properties of interfaces and types.", - "type": "boolean", - }, - "variableDeclaration": { - "description": "Whether to enforce type annotations for variable declarations, excluding array and object destructuring.", - "type": "boolean", - }, - "variableDeclarationIgnoreFunction": { - "description": "Whether to ignore variable declarations for non-arrow and arrow functions.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "unbound-method": { - "create": [Function], - "defaultOptions": [ - { - "ignoreStatic": false, - }, - ], - "meta": { - "docs": { - "description": "Enforce unbound methods are called with their expected scope", - "recommended": "recommended", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/unbound-method", - }, - "messages": { - "unbound": "Avoid referencing unbound methods which may cause unintentional scoping of \`this\`.", - "unboundWithoutThisAnnotation": "Avoid referencing unbound methods which may cause unintentional scoping of \`this\`. -If your function does not access \`this\`, you can annotate it with \`this: void\`, or consider using an arrow function instead.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreStatic": { - "description": "Whether to skip checking whether \`static\` methods are correctly bound.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "problem", - }, - }, - "unified-signatures": { - "create": [Function], - "defaultOptions": [ - { - "ignoreDifferentlyNamedParameters": false, - "ignoreOverloadsWithDifferentJSDoc": false, - }, - ], - "meta": { - "docs": { - "description": "Disallow two overloads that could be unified into one with a union or an optional/rest parameter", - "recommended": "strict", - "url": "https://typescript-eslint.io/rules/unified-signatures", - }, - "messages": { - "omittingRestParameter": "{{failureStringStart}} with a rest parameter.", - "omittingSingleParameter": "{{failureStringStart}} with an optional parameter.", - "singleParameterDifference": "{{failureStringStart}} taking \`{{type1}} | {{type2}}\`.", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "ignoreDifferentlyNamedParameters": { - "description": "Whether two parameters with different names at the same index should be considered different even if their types are the same.", - "type": "boolean", - }, - "ignoreOverloadsWithDifferentJSDoc": { - "description": "Whether two overloads with different JSDoc comments should be considered different even if their parameter and return types are the same.", - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "use-unknown-in-catch-callback-variable": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Enforce typing arguments in Promise rejection callbacks as \`unknown\`", - "recommended": "strict", - "requiresTypeChecking": true, - "url": "https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "addUnknownRestTypeAnnotationSuggestion": "Add an explicit \`: [unknown]\` type annotation to the rejection callback rest variable.", - "addUnknownTypeAnnotationSuggestion": "Add an explicit \`: unknown\` type annotation to the rejection callback variable.", - "useUnknown": "Prefer the safe \`: unknown\` for a \`{{method}}\`{{append}} callback variable.", - "useUnknownArrayDestructuringPattern": "Prefer the safe \`: unknown\` for a \`{{method}}\`{{append}} callback variable. The thrown error may not be iterable.", - "useUnknownObjectDestructuringPattern": "Prefer the safe \`: unknown\` for a \`{{method}}\`{{append}} callback variable. The thrown error may be nullable, or may not have the expected shape.", - "wrongRestTypeAnnotationSuggestion": "Change existing type annotation to \`: [unknown]\`.", - "wrongTypeAnnotationSuggestion": "Change existing type annotation to \`: unknown\`.", - }, - "schema": [], - "type": "suggestion", - }, - }, - }, - }, - }, - }, - { - "files": [ - "**/*.ts", - "**/*.tsx", - "**/*.mts", - "**/*.cts", - ], - "name": "typescript-eslint/eslint-recommended", - "rules": { - "constructor-super": "off", - "getter-return": "off", - "no-class-assign": "off", - "no-const-assign": "off", - "no-dupe-args": "off", - "no-dupe-class-members": "off", - "no-dupe-keys": "off", - "no-func-assign": "off", - "no-import-assign": "off", - "no-new-native-nonconstructor": "off", - "no-new-symbol": "off", - "no-obj-calls": "off", - "no-redeclare": "off", - "no-setter-return": "off", - "no-this-before-super": "off", - "no-undef": "off", - "no-unreachable": "off", - "no-unsafe-negation": "off", - "no-var": "error", - "prefer-const": "error", - "prefer-rest-params": "error", - "prefer-spread": "error", - }, - }, - { - "name": "typescript-eslint/recommended", - "rules": { - "@typescript-eslint/ban-ts-comment": "error", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/triple-slash-reference": "error", - "no-array-constructor": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - }, - }, - { - "name": "tanstack/query/flat/recommended", "plugins": { - "@tanstack/query": { - "configs": { - "flat/recommended": [ - { - "name": "tanstack/query/flat/recommended", - "plugins": [Circular], - "rules": { - "@tanstack/query/exhaustive-deps": "error", - "@tanstack/query/infinite-query-property-order": "error", - "@tanstack/query/no-rest-destructuring": "warn", - "@tanstack/query/no-unstable-deps": "error", - "@tanstack/query/stable-query-client": "error", - }, - }, - ], - "recommended": { - "plugins": [ - "@tanstack/query", - ], - "rules": { - "@tanstack/query/exhaustive-deps": "error", - "@tanstack/query/infinite-query-property-order": "error", - "@tanstack/query/no-rest-destructuring": "warn", - "@tanstack/query/no-unstable-deps": "error", - "@tanstack/query/stable-query-client": "error", - }, - }, - }, - "meta": { - "name": "@tanstack/eslint-plugin-query", - }, + "@devup-ui": { "rules": { - "exhaustive-deps": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Exhaustive deps rule for useQuery", - "recommended": "error", - "url": "https://tanstack.com/query/latest/docs/eslint/exhaustive-deps", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "fixTo": "Fix to {{result}}", - "missingDeps": "The following dependencies are missing in your queryKey: {{deps}}", - }, - "schema": [], - "type": "problem", - }, - }, - "infinite-query-property-order": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Ensure correct order of inference sensitive properties for infinite queries", - "recommended": "error", - "url": "https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order", - }, - "fixable": "code", - "hasSuggestions": true, - "messages": { - "invalidOrder": "Invalid order of properties for \`{{function}}\`.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-rest-destructuring": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallows rest destructuring in queries", - "recommended": "warn", - "url": "https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring", - }, - "messages": { - "objectRestDestructure": "Object rest destructuring on a query will observe all changes to the query, leading to excessive re-renders.", - }, - "schema": [], - "type": "problem", - }, - }, - "no-unstable-deps": { - "create": [Function], - "defaultOptions": [], - "meta": { - "docs": { - "description": "Disallow putting the result of query hooks directly in a React hook dependency array", - "recommended": "error", - "url": "https://tanstack.com/query/latest/docs/eslint/no-unstable-deps", - }, - "messages": { - "noUnstableDeps": "The result of {{queryHook}} is not referentially stable, so don't pass it directly into the dependencies array of {{reactHook}}. Instead, destructure the return value of {{queryHook}} and pass the destructured values into the dependency array of {{reactHook}}.", - }, - "schema": [], - "type": "problem", - }, - }, - "stable-query-client": { + "css-utils-literal-only": { "create": [Function], "defaultOptions": [], "meta": { "docs": { - "description": "Makes sure that QueryClient is stable", - "recommended": "error", - "url": "https://tanstack.com/query/latest/docs/eslint/stable-query-client", + "description": "CSS utils should only be used with literal values.", + "url": "https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/css-utils-literal-only", }, - "fixable": "code", - "hasSuggestions": true, "messages": { - "fixTo": "Fix to {{result}}", - "unstable": "QueryClient is not stable. It should be either extracted from the component or wrapped in React.useState. -See https://tkdodo.eu/blog/react-query-fa-qs#2-the-queryclient-is-not-stable", + "cssUtilsLiteralOnly": "CSS utils should only be used with literal values.", }, "schema": [], "type": "problem", }, }, - }, - }, - }, - "rules": { - "@tanstack/query/exhaustive-deps": "error", - "@tanstack/query/infinite-query-property-order": "error", - "@tanstack/query/no-rest-destructuring": "warn", - "@tanstack/query/no-unstable-deps": "error", - "@tanstack/query/stable-query-client": "error", - }, - }, - { - "plugins": { - "@devup": { - "rules": { - "app-page": { + "no-duplicate-value": { "create": [Function], "defaultOptions": [], "meta": { "docs": { - "description": "required 페이지나 레이아웃 컴포넌트는 반드시 export default로 내보내야 합니다.", - "url": "https://github.com/dev-five-git/devup/tree/main/packages/eslint-plugin/src/rules/app-page", + "description": "No duplicate value.", + "url": "https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/no-duplicate-value", }, "fixable": "code", "messages": { - "nameOfPageOrLayoutComponentShouldHaveSuffix": "페이지나 레이아웃 컴포넌트의 이름은 반드시 \`Page\`나 \`Layout\`으로 끝나야 합니다.", - "pageOrLayoutComponentShouldDefaultExport": "페이지나 레이아웃 컴포넌트는 반드시 \`export default\`로 내보내야 합니다.", - "pathParamsShouldExist": "경로 변수를 사용할 수 있을 경우 \`params\`는 반드시 존재해야 합니다.", + "duplicateValue": "Duplicate value found: {{value}}.", }, "schema": [], "type": "problem", }, }, - "component": { + "no-useless-responsive": { "create": [Function], "defaultOptions": [], "meta": { "docs": { - "description": "required 컴포넌트 이름은 디렉터리 혹은 파일명을 따라야 합니다.", - "url": "https://github.com/dev-five-git/devup/tree/main/packages/eslint-plugin/src/rules/component", + "description": "No useless responsive.", + "url": "https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/no-useless-responsive", }, "fixable": "code", "messages": { - "componentFileShouldExportComponent": "컴포넌트 파일은 컴포넌트를 내보내야 합니다.", - "componentNameShouldBeFollowDirectoryStructure": "컴포넌트 이름은 디렉토리명 혹은 파일명을 따라야 합니다.", + "uselessResponsive": "Responsive are useless. Remove them.", }, "schema": [], "type": "problem", }, }, - "component-interface": { + "no-useless-tailing-nulls": { "create": [Function], "defaultOptions": [], "meta": { "docs": { - "description": "required type annotation for component props when empty object pattern", - "url": "https://github.com/dev-five-git/devup/tree/main/packages/eslint-plugin/src/rules/component-interface", - }, - "fixable": "code", - "messages": { - "componentPropsShouldHaveTypeAnnotationWhenEmptyObjectPattern": "컴포넌트의 \`props\`가 비어있고 타입이 없을 경우 반드시 타입을 명시해야 합니다.", - }, - "schema": [], - "type": "problem", - }, - }, - "rsc-api": { - "create": [Function], - "meta": { - "docs": { - "description": "required 서버 컴포넌트에서는 반드시 cache 버전을 사용해야 합니다.", - "recommended": true, - }, - "fixable": "code", - "messages": { - "apiShouldBeCached": "\`{{ api }}\`는 서버 컴포넌트에서는 반드시 cache 버전을 사용해야 합니다.", - }, - "schema": [], - "type": "problem", - }, - }, - }, - }, - "react-hooks": { - "configs": { - "recommended": { - "plugins": [ - "react-hooks", - ], - "rules": { - "react-hooks/exhaustive-deps": "warn", - "react-hooks/rules-of-hooks": "error", - }, - }, - "recommended-latest": { - "name": "react-hooks/recommended", - "plugins": { - "react-hooks": { - "configs": [Circular], - "meta": { - "name": "eslint-plugin-react-hooks", - }, - "rules": { - "exhaustive-deps": { - "create": [Function], - "meta": { - "docs": { - "description": "verifies the list of dependencies for Hooks like useEffect and similar", - "recommended": true, - "url": "https://github.com/facebook/react/issues/14920", - }, - "fixable": "code", - "hasSuggestions": true, - "schema": [ - { - "additionalProperties": false, - "enableDangerousAutofixThisMayCauseInfiniteLoops": false, - "properties": { - "additionalHooks": { - "type": "string", - }, - "enableDangerousAutofixThisMayCauseInfiniteLoops": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "rules-of-hooks": { - "create": [Function], - "meta": { - "docs": { - "description": "enforces the Rules of Hooks", - "recommended": true, - "url": "https://reactjs.org/docs/hooks-rules.html", - }, - "type": "problem", - }, - }, - }, - }, - }, - "rules": { - "react-hooks/exhaustive-deps": "warn", - "react-hooks/rules-of-hooks": "error", - }, - }, - "recommended-legacy": { - "plugins": [ - "react-hooks", - ], - "rules": { - "react-hooks/exhaustive-deps": "warn", - "react-hooks/rules-of-hooks": "error", - }, - }, - }, - "meta": { - "name": "eslint-plugin-react-hooks", - }, - "rules": { - "exhaustive-deps": { - "create": [Function], - "meta": { - "docs": { - "description": "verifies the list of dependencies for Hooks like useEffect and similar", - "recommended": true, - "url": "https://github.com/facebook/react/issues/14920", - }, - "fixable": "code", - "hasSuggestions": true, - "schema": [ - { - "additionalProperties": false, - "enableDangerousAutofixThisMayCauseInfiniteLoops": false, - "properties": { - "additionalHooks": { - "type": "string", - }, - "enableDangerousAutofixThisMayCauseInfiniteLoops": { - "type": "boolean", - }, - }, - "type": "object", - }, - ], - "type": "suggestion", - }, - }, - "rules-of-hooks": { - "create": [Function], - "meta": { - "docs": { - "description": "enforces the Rules of Hooks", - "recommended": true, - "url": "https://reactjs.org/docs/hooks-rules.html", - }, - "type": "problem", - }, - }, - }, - }, - "simple-import-sort": { - "meta": { - "name": "eslint-plugin-simple-import-sort", - "version": "12.1.1", - }, - "rules": { - "exports": { - "create": [Function], - "meta": { - "docs": { - "description": "Automatically sort exports.", - "url": "https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order", + "description": "No useless tailing nulls.", + "url": "https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/no-useless-tailing-nulls", }, "fixable": "code", "messages": { - "sort": "Run autofix to sort these exports!", + "uselessTailingNulls": "Trailing nulls are useless. Remove them.", }, "schema": [], - "type": "layout", - }, - }, - "imports": { - "create": [Function], - "meta": { - "docs": { - "description": "Automatically sort imports.", - "url": "https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order", - }, - "fixable": "code", - "messages": { - "sort": "Run autofix to sort these imports!", - }, - "schema": [ - { - "additionalProperties": false, - "properties": { - "groups": { - "items": { - "items": { - "type": "string", - }, - "type": "array", - }, - "type": "array", - }, - }, - "type": "object", - }, - ], - "type": "layout", - }, - }, - }, - }, - "unused-imports": { - "meta": { - "name": "unused-imports", - }, - "rules": { - "no-unused-imports": { - "create": [Function], - "defaultOptions": [ - {}, - ], - "meta": { - "docs": { - "description": "Disallow unused variables", - "extendsBaseRule": true, - "recommended": "recommended", - "url": "https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md", - }, - "fixable": "code", - "messages": { - "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", - "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", - "usedOnlyAsType": "'{{varName}}' is {{action}} but only used as a type{{additional}}.", - }, - "schema": [ - { - "oneOf": [ - { - "enum": [ - "all", - "local", - ], - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "args": { - "description": "Whether to check all, some, or no arguments.", - "enum": [ - "all", - "after-used", - "none", - ], - "type": "string", - }, - "argsIgnorePattern": { - "description": "Regular expressions of argument names to not check for usage.", - "type": "string", - }, - "caughtErrors": { - "description": "Whether to check catch block arguments.", - "enum": [ - "all", - "none", - ], - "type": "string", - }, - "caughtErrorsIgnorePattern": { - "description": "Regular expressions of catch block argument names to not check for usage.", - "type": "string", - }, - "destructuredArrayIgnorePattern": { - "description": "Regular expressions of destructured array variable names to not check for usage.", - "type": "string", - }, - "ignoreClassWithStaticInitBlock": { - "description": "Whether to ignore classes with at least one static initialization block.", - "type": "boolean", - }, - "ignoreRestSiblings": { - "description": "Whether to ignore sibling properties in \`...\` destructurings.", - "type": "boolean", - }, - "reportUsedIgnorePattern": { - "description": "Whether to report variables that match any of the valid ignore pattern options if they have been used.", - "type": "boolean", - }, - "vars": { - "description": "Whether to check all variables or only locally-declared variables.", - "enum": [ - "all", - "local", - ], - "type": "string", - }, - "varsIgnorePattern": { - "description": "Regular expressions of variable names to not check for usage.", - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - ], - "type": "problem", - }, - }, - "no-unused-vars": { - "create": [Function], - "defaultOptions": [ - {}, - ], - "meta": { - "docs": { - "description": "Disallow unused variables", - "extendsBaseRule": true, - "recommended": "recommended", - "url": "https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-vars.md", - }, - "fixable": "code", - "messages": { - "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", - "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", - "usedOnlyAsType": "'{{varName}}' is {{action}} but only used as a type{{additional}}.", - }, - "schema": [ - { - "oneOf": [ - { - "enum": [ - "all", - "local", - ], - "type": "string", - }, - { - "additionalProperties": false, - "properties": { - "args": { - "description": "Whether to check all, some, or no arguments.", - "enum": [ - "all", - "after-used", - "none", - ], - "type": "string", - }, - "argsIgnorePattern": { - "description": "Regular expressions of argument names to not check for usage.", - "type": "string", - }, - "caughtErrors": { - "description": "Whether to check catch block arguments.", - "enum": [ - "all", - "none", - ], - "type": "string", - }, - "caughtErrorsIgnorePattern": { - "description": "Regular expressions of catch block argument names to not check for usage.", - "type": "string", - }, - "destructuredArrayIgnorePattern": { - "description": "Regular expressions of destructured array variable names to not check for usage.", - "type": "string", - }, - "ignoreClassWithStaticInitBlock": { - "description": "Whether to ignore classes with at least one static initialization block.", - "type": "boolean", - }, - "ignoreRestSiblings": { - "description": "Whether to ignore sibling properties in \`...\` destructurings.", - "type": "boolean", - }, - "reportUsedIgnorePattern": { - "description": "Whether to report variables that match any of the valid ignore pattern options if they have been used.", - "type": "boolean", - }, - "vars": { - "description": "Whether to check all variables or only locally-declared variables.", - "enum": [ - "all", - "local", - ], - "type": "string", - }, - "varsIgnorePattern": { - "description": "Regular expressions of variable names to not check for usage.", - "type": "string", - }, - }, - "type": "object", - }, - ], - }, - ], "type": "problem", }, }, @@ -14354,112 +73,10 @@ See https://tkdodo.eu/blog/react-query-fa-qs#2-the-queryclient-is-not-stable", }, }, "rules": { - "@devup/app-page": "error", - "@devup/component": "error", - "@devup/component-interface": "error", - "@devup/rsc-api": "error", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-expressions": [ - "error", - { - "allowShortCircuit": true, - "allowTernary": true, - }, - ], - "@typescript-eslint/no-unused-vars": [ - "error", - { - "args": "all", - "argsIgnorePattern": "^_", - "caughtErrors": "all", - "caughtErrorsIgnorePattern": "^_", - "destructuredArrayIgnorePattern": "^_", - "ignoreRestSiblings": true, - "varsIgnorePattern": "^_", - }, - ], - "@typescript-eslint/no-var-requires": "off", - "camelcase": "off", - "comma-dangle": "off", - "no-console": [ - "error", - { - "allow": [ - "info", - "debug", - "warn", - "error", - ], - }, - ], - "no-constant-condition": [ - "error", - { - "checkLoops": false, - }, - ], - "no-trailing-spaces": "error", - "prettier/prettier": [ - "error", - { - "endOfLine": "auto", - "semi": false, - "singleQuote": true, - "trailingComma": "all", - }, - ], - "react-hooks/exhaustive-deps": [ - "warn", - { - "additionalHooks": "useSafeEffect", - }, - ], - "react-hooks/rules-of-hooks": "error", - "react/jsx-curly-brace-presence": "error", - "react/jsx-sort-props": [ - "error", - { - "callbacksLast": false, - "ignoreCase": false, - "noSortAlphabetically": false, - "reservedFirst": true, - "shorthandFirst": false, - "shorthandLast": false, - }, - ], - "react/prop-types": "off", - "react/react-in-jsx-scope": "off", - "react/sort-default-props": "error", - "require-jsdoc": "off", - "simple-import-sort/exports": "error", - "simple-import-sort/imports": "error", - "spaced-comment": [ - "error", - "always", - { - "markers": [ - "/", - ], - }, - ], - "unused-imports/no-unused-imports": "error", - "unused-imports/no-unused-vars": "off", - "valid-jsdoc": "off", - }, - "settings": { - "react": { - "version": "detect", - }, - }, - }, - { - "files": [ - "**/*.test-d.{ts,tsx}", - ], - "rules": { - "@typescript-eslint/no-unused-expressions": "off", + "@devup-ui/css-utils-literal-only": "error", + "@devup-ui/no-duplicate-value": "error", + "@devup-ui/no-useless-responsive": "error", + "@devup-ui/no-useless-tailing-nulls": "error", }, }, ] diff --git a/packages/eslint-plugin/src/configs/recommended.ts b/packages/eslint-plugin/src/configs/recommended.ts index 0e2a5f5a..7bfef860 100644 --- a/packages/eslint-plugin/src/configs/recommended.ts +++ b/packages/eslint-plugin/src/configs/recommended.ts @@ -1,33 +1,27 @@ -import { noUselessTailingNulls } from 'src/rules/no-useless-tailing-nulls' +import { + cssUtilsLiteralOnly, + noDuplicateValue, + noUselessResponsive, + noUselessTailingNulls, +} from '../rules' export default [ - { - ignores: [ - '**/node_modules/', - '**/build/', - '**/__snapshots__/', - '!**/src/**', - '!vite.config.ts', - '!**/.storybook/**', - '**/storybook-static/', - '**/dist/', - '**/next-env.d.ts', - '**/out/', - '**/.next/', - '**/public/', - '**/.df/', - ], - }, { plugins: { '@devup-ui': { rules: { 'no-useless-tailing-nulls': noUselessTailingNulls, + 'css-utils-literal-only': cssUtilsLiteralOnly, + 'no-duplicate-value': noDuplicateValue, + 'no-useless-responsive': noUselessResponsive, }, }, }, rules: { '@devup-ui/no-useless-tailing-nulls': 'error', + '@devup-ui/css-utils-literal-only': 'error', + '@devup-ui/no-duplicate-value': 'error', + '@devup-ui/no-useless-responsive': 'error', }, }, ] diff --git a/packages/eslint-plugin/src/rules/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/__tests__/index.test.ts index 04d32c17..787c17c4 100644 --- a/packages/eslint-plugin/src/rules/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/__tests__/index.test.ts @@ -3,6 +3,9 @@ describe('export index', () => { it('export', () => { expect({ ...index }).toEqual({ noUselessTailingNulls: expect.any(Object), + cssUtilsLiteralOnly: expect.any(Object), + noDuplicateValue: expect.any(Object), + noUselessResponsive: expect.any(Object), }) }) }) diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/README.md b/packages/eslint-plugin/src/rules/css-utils-literal-only/README.md index e69de29b..51ac0c67 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/README.md +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/README.md @@ -0,0 +1,98 @@ +# css-utils-literal-only + +Enforce that CSS utility functions only use literal values in devup-ui. + +## Rule Details + +This rule ensures that CSS utility functions (`css`, `globalCss`, `keyframes`) from devup-ui only receive literal values as property values. Using variables or expressions in CSS utilities can lead to runtime issues and prevents proper static analysis and optimization. + +### Examples + +#### ❌ Incorrect + +```tsx +import { css } from '@devup-ui/react' + +const v = 'some-value' + +// Variables are not allowed in CSS utilities +css({ w: v }) +css({ w: [v] }) +css({ w: [1, null, v] }) +``` + +```tsx +import { globalCss } from '@devup-ui/react' + +const dynamicValue = getValue() + +// Dynamic values are not allowed +globalCss({ color: dynamicValue }) +``` + +```tsx +import { keyframes } from '@devup-ui/react' + +const animationName = 'fade' + +// Variables in keyframes are not allowed +keyframes({ from: { opacity: animationName } }) +``` + +#### ✅ Correct + +```tsx +import { css } from '@devup-ui/react' + +// Only literal values are allowed +css({ w: 1 }) +css({ w: '1' }) +css({ w: [1] }) +css({ w: ['1'] }) +css({ w: [1, null, '2'] }) +``` + +```tsx +import { globalCss } from '@devup-ui/react' + +// Literal values only +globalCss({ color: 'red' }) +globalCss({ fontSize: 16 }) +``` + +```tsx +import { keyframes } from '@devup-ui/react' + +// Literal values in keyframes +keyframes({ from: { opacity: 0 }, to: { opacity: 1 } }) +``` + +```tsx +import { css } from 'other-package' + +// Only applies to devup-ui CSS utilities +css({ w: v }) // This is fine for other packages +``` + +## When Not To Use It + +This rule is specifically designed for devup-ui CSS utility functions. It only applies when: + +- Using devup-ui CSS utilities (`css`, `globalCss`, `keyframes`) +- The utility function is called with an object containing properties +- Property values contain variables or expressions + +The rule will not trigger for: + +- CSS utilities from other packages +- Literal values (strings, numbers, arrays of literals) +- Non-CSS utility functions + +## Why This Rule Exists + +CSS utilities in devup-ui are designed to work with static, literal values for optimal performance and build-time optimization. Using variables or dynamic expressions can: + +- Prevent proper static analysis +- Cause runtime errors +- Reduce build-time optimizations +- Make the code harder to understand and maintain diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts index 116129ca..0ffe2c38 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts @@ -2,18 +2,19 @@ import { RuleTester } from '@typescript-eslint/rule-tester' import { cssUtilsLiteralOnly } from '../index' -describe('css-utils-literal-only rule', () => { - const ruleTester = new RuleTester({ - languageOptions: { - ecmaVersion: 'latest', - parserOptions: { - ecmaFeatures: { - jsx: true, +describe.each(['css', 'globalCss', 'keyframes'])( + 'css-utils-literal-only rule', + (code) => { + const ruleTester = new RuleTester({ + languageOptions: { + ecmaVersion: 'latest', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, - }, - }) - it.each(['css', 'globalCss'])('should pass', (code) => { + }) ruleTester.run('css-utils-literal-only rule', cssUtilsLiteralOnly, { valid: [ { @@ -44,7 +45,6 @@ describe('css-utils-literal-only rule', () => { invalid: [ { code: `import { ${code} } from "@devup-ui/react";\n${code}({w: v})`, - output: `import { ${code} } from "@devup-ui/react";\n${code}({w: v})`, filename: 'src/app/layout.tsx', errors: [ { @@ -54,7 +54,6 @@ describe('css-utils-literal-only rule', () => { }, { code: `import { ${code} } from "@devup-ui/react";\n${code}({w: [v]})`, - output: `import { ${code} } from "@devup-ui/react";\n${code}({w: [v]})`, filename: 'src/app/layout.tsx', errors: [ { @@ -64,7 +63,6 @@ describe('css-utils-literal-only rule', () => { }, { code: `import { ${code} } from "@devup-ui/react";\n${code}({w: [1, null, v]})`, - output: `import { ${code} } from "@devup-ui/react";\n${code}({w: [1, null, v]})`, filename: 'src/app/layout.tsx', errors: [ { @@ -74,7 +72,6 @@ describe('css-utils-literal-only rule', () => { }, { code: `import { ${code} as B } from "@devup-ui/react";\nB({w: [1, null, v]})`, - output: `import { ${code} as B } from "@devup-ui/react";\nB({w: [1, null, v]})`, filename: 'src/app/layout.tsx', errors: [ { @@ -84,5 +81,5 @@ describe('css-utils-literal-only rule', () => { }, ], }) - }) -}) + }, +) diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts index 50602b8d..dd6251f8 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts @@ -1,4 +1,10 @@ -import { ESLintUtils } from '@typescript-eslint/utils' +import { + AST_NODE_TYPES, + ESLintUtils, + type TSESTree, +} from '@typescript-eslint/utils' + +import { ImportStorage } from '../../utils/import-storage' const createRule = ESLintUtils.RuleCreator( (name) => @@ -14,12 +20,48 @@ export const cssUtilsLiteralOnly = createRule({ cssUtilsLiteralOnly: 'CSS utils should only be used with literal values.', }, type: 'problem', - fixable: 'code', docs: { description: 'CSS utils should only be used with literal values.', }, }, - create(_context) { - return {} + create(context) { + const importStorage = new ImportStorage() + let devupContext: + | TSESTree.CallExpression + | TSESTree.JSXOpeningElement + | null = null + return { + ImportDeclaration(node) { + importStorage.addImportByDeclaration(node) + }, + CallExpression(node) { + if ( + importStorage.checkContextType(node) === 'UTIL' && + node.arguments.length === 1 && + node.arguments[0].type === AST_NODE_TYPES.ObjectExpression + ) { + devupContext = node + } + }, + 'CallExpression:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + Identifier(node) { + if (!devupContext) return + + const an = context.sourceCode.getAncestors(node) + const property = an.find( + (ancestor) => ancestor.type === AST_NODE_TYPES.Property, + ) + if (!property || [...an, node].indexOf(property.value) === -1) return + + context.report({ + node, + messageId: 'cssUtilsLiteralOnly', + }) + }, + } }, }) diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index 9b1a6e10..2c7e3eb8 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -1 +1,4 @@ +export * from './css-utils-literal-only' +export * from './no-duplicate-value' +export * from './no-useless-responsive' export * from './no-useless-tailing-nulls' diff --git a/packages/eslint-plugin/src/rules/no-duplicate-value/README.md b/packages/eslint-plugin/src/rules/no-duplicate-value/README.md new file mode 100644 index 00000000..b5774d5b --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-duplicate-value/README.md @@ -0,0 +1,71 @@ +# no-duplicate-value + +Disallow consecutive duplicate values in arrays within devup-ui components and utilities. + +## Rule Details + +This rule prevents the use of consecutive duplicate literal values in arrays that are passed to devup-ui components or utilities. Consecutive duplicate values are considered redundant since they don't provide any additional styling information and can be replaced with `null` values. + +### Examples + +#### ❌ Incorrect + +```tsx +import { Box } from '@devup-ui/react' + +// Consecutive duplicate values are redundant +; +; +``` + +```tsx +import { css } from '@devup-ui/react' + +// Consecutive duplicates in css utility +css({ w: [1, 2, 2, 2, 3] }) +``` + +#### ✅ Correct + +```tsx +import { Box } from '@devup-ui/react' + +// No consecutive duplicates +; +; // null values are fine +; // null between different values +``` + +```tsx +import { Box } from 'other-package' + +// Only applies to devup-ui components +; +``` + +```tsx +import { css } from '@devup-ui/react' + +// No consecutive duplicates +css({ w: [1, 2, 3] }) +css({ w: [1, 2, null, null, 3] }) +``` + +## When Not To Use It + +This rule is specifically designed for devup-ui components and utilities. It only applies when: + +- Using devup-ui components (e.g., `Box`, `Flex`, etc.) +- Using devup-ui utilities (e.g., `css` function) +- The array contains consecutive literal values that are identical + +The rule will not trigger for: + +- Non-consecutive duplicate values (e.g., `[1, 2, 1]`) +- Arrays used with other libraries +- Non-literal values +- Arrays that are part of member expressions + +## Auto-fixable + +This rule is auto-fixable. ESLint will automatically replace consecutive duplicate values with `null` when possible. diff --git a/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts new file mode 100644 index 00000000..ab2b05cc --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts @@ -0,0 +1,77 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' + +import { noDuplicateValue } from '../index' + +describe('no-duplicate-value rule', () => { + const ruleTester = new RuleTester({ + languageOptions: { + ecmaVersion: 'latest', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + }) + ruleTester.run('no-duplicate-value rule', noDuplicateValue, { + valid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "other-package";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { css } from "other-package";\ncss()', + filename: 'src/app/page.tsx', + }, + ], + invalid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + output: + 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'duplicateValue', + }, + { + messageId: 'duplicateValue', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + output: + 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'duplicateValue', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({w: [1, 2, 2, 2, 3]})', + output: + 'import { css } from "@devup-ui/react";\ncss({w: [1, 2, null, null, 3]})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'duplicateValue', + }, + { + messageId: 'duplicateValue', + }, + ], + }, + ], + }) +}) diff --git a/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts b/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts new file mode 100644 index 00000000..b5461fec --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts @@ -0,0 +1,96 @@ +import { + AST_NODE_TYPES, + ESLintUtils, + type TSESTree, +} from '@typescript-eslint/utils' +import type { RuleContext } from '@typescript-eslint/utils/ts-eslint' + +import { ImportStorage } from '../../utils/import-storage' + +const createRule = ESLintUtils.RuleCreator( + (name) => + `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, +) + +function checkDuplicateValue>( + node: TSESTree.ArrayExpression, + context: T, +) { + for (let i = 0; i < node.elements.length; i++) { + const element = node.elements[i] + if (element?.type === AST_NODE_TYPES.Literal) { + if (i === 0) continue + const prevElement = node.elements[i - 1] + if ( + prevElement?.type === AST_NODE_TYPES.Literal && + element.value === prevElement.value + ) { + context.report({ + node, + messageId: 'duplicateValue', + data: { + value: element.value, + }, + fix(fixer) { + return fixer.replaceText(element, 'null') + }, + }) + } + } + } +} + +export const noDuplicateValue = createRule({ + name: 'no-duplicate-value', + defaultOptions: [], + meta: { + schema: [], + messages: { + duplicateValue: 'Duplicate value found: {{value}}.', + }, + type: 'problem', + fixable: 'code', + docs: { + description: 'No duplicate value.', + }, + }, + create(context) { + const importStorage = new ImportStorage() + let devupContext: + | TSESTree.CallExpression + | TSESTree.JSXOpeningElement + | null = null + return { + ImportDeclaration(node) { + importStorage.addImportByDeclaration(node) + }, + CallExpression(node) { + if ( + importStorage.checkContextType(node) === 'UTIL' && + node.arguments.length === 1 && + node.arguments[0].type === AST_NODE_TYPES.ObjectExpression + ) { + devupContext = node + } + }, + 'CallExpression:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + JSXOpeningElement(node) { + if (importStorage.checkContextType(node) === 'COMPONENT') { + devupContext = node + } + }, + 'JSXOpeningElement:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + ArrayExpression(node) { + if (devupContext) checkDuplicateValue(node, context) + }, + } + }, +}) diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/README.md b/packages/eslint-plugin/src/rules/no-useless-responsive/README.md index e69de29b..481c4a36 100644 --- a/packages/eslint-plugin/src/rules/no-useless-responsive/README.md +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/README.md @@ -0,0 +1,79 @@ +# no-useless-responsive + +Disallow useless responsive arrays with single values in devup-ui components and utilities. + +## Rule Details + +This rule prevents the use of arrays with only one element when passed to devup-ui components or utilities. Single-element arrays are considered useless for responsive design since they don't provide any responsive behavior and can be simplified to just the value itself. + +### Examples + +#### ❌ Incorrect + +```tsx +import { Box } from '@devup-ui/react' + +// Single-element arrays are useless +; +; +``` + +```tsx +import { css } from '@devup-ui/react' + +// Single-element arrays in css utility +css({ w: [1] }) +``` + +```tsx +import { css as c } from '@devup-ui/react' + +// Works with aliased imports +c({ w: [1] }) +``` + +#### ✅ Correct + +```tsx +import { Box } from '@devup-ui/react' + +// Use the value directly instead of wrapping in array +; +; +; // Empty arrays are fine +``` + +```tsx +import { Box } from 'other-package' + +// Only applies to devup-ui components +; +; // Multi-element arrays are fine +``` + +```tsx +import { css } from '@devup-ui/react' + +// Use the value directly +css({ w: 1 }) +css({ w: '1' }) +``` + +## When Not To Use It + +This rule is specifically designed for devup-ui components and utilities. It only applies when: + +- Using devup-ui components (e.g., `Box`, `Flex`, etc.) +- Using devup-ui utilities (e.g., `css` function) +- The array contains exactly one element + +The rule will not trigger for: + +- Arrays with multiple elements (e.g., `[1, 2, 3]`) +- Empty arrays (e.g., `[]`) +- Arrays used with other libraries +- Non-array values + +## Auto-fixable + +This rule is auto-fixable. ESLint will automatically convert single-element arrays to their direct values when possible. diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts index b9b7e5f6..04184a57 100644 --- a/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts @@ -23,10 +23,34 @@ describe('no-useless-responsive rule', () => { code: 'import { Box } from "@devup-ui/react";\n', filename: 'src/app/page.tsx', }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { "Box" as B } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import B from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import * as B from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, { code: 'import { Box } from "other-package";\n', filename: 'src/app/page.tsx', }, + { + code: 'import { Box } from "other-package";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "other-package";\n', + filename: 'src/app/page.tsx', + }, { code: 'import { css } from "@devup-ui/react";\ncss({w: 1})', filename: 'src/app/page.tsx', @@ -39,6 +63,10 @@ describe('no-useless-responsive rule', () => { code: 'import { css } from "other-package";\ncss({w: [1][0]})', filename: 'src/app/page.tsx', }, + { + code: 'import { css } from "other-package";\ncss()', + filename: 'src/app/page.tsx', + }, ], invalid: [ { @@ -51,6 +79,66 @@ describe('no-useless-responsive rule', () => { }, ], }, + { + code: 'import { Box } from "@devup-ui/react";\n', + output: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, + { + code: 'import A from "@devup-ui/react";\n', + output: 'import A from "@devup-ui/react";\n', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({w: [1]})', + output: 'import { css } from "@devup-ui/react";\ncss({w: 1})', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, + { + code: 'import { css as c } from "@devup-ui/react";\nc({w: [1]})', + output: 'import { css as c } from "@devup-ui/react";\nc({w: 1})', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, + { + code: 'import c from "@devup-ui/react";\nc.css({w: [1]})', + output: 'import c from "@devup-ui/react";\nc.css({w: 1})', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, + { + code: 'import * as c from "@devup-ui/react";\nc.css({w: [1]})', + output: 'import * as c from "@devup-ui/react";\nc.css({w: 1})', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + ], + }, ], }) }) diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts b/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts index 3c1150e2..a97598f5 100644 --- a/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts @@ -1,10 +1,33 @@ -import { ESLintUtils } from '@typescript-eslint/utils' +import { + AST_NODE_TYPES, + ESLintUtils, + type TSESTree, +} from '@typescript-eslint/utils' +import type { RuleContext } from '@typescript-eslint/utils/ts-eslint' + +import { ImportStorage } from '../../utils/import-storage' const createRule = ESLintUtils.RuleCreator( (name) => `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, ) +function checkUselessResponsive>( + node: TSESTree.ArrayExpression, + context: T, +) { + if (node.elements.length !== 1) return + + const element = node.elements[0]! + context.report({ + node, + messageId: 'uselessResponsive', + fix(fixer) { + return fixer.replaceText(node, context.sourceCode.getText(element!)) + }, + }) +} + export const noUselessResponsive = createRule({ name: 'no-useless-responsive', defaultOptions: [], @@ -19,7 +42,43 @@ export const noUselessResponsive = createRule({ description: 'No useless responsive.', }, }, - create(_context) { - return {} + create(context) { + const importStorage = new ImportStorage() + let devupContext: + | TSESTree.CallExpression + | TSESTree.JSXOpeningElement + | null = null + return { + ImportDeclaration(node) { + importStorage.addImportByDeclaration(node) + }, + CallExpression(node) { + if ( + importStorage.checkContextType(node) === 'UTIL' && + node.arguments.length === 1 && + node.arguments[0].type === AST_NODE_TYPES.ObjectExpression + ) { + devupContext = node + } + }, + 'CallExpression:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + JSXOpeningElement(node) { + if (importStorage.checkContextType(node) === 'COMPONENT') { + devupContext = node + } + }, + 'JSXOpeningElement:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + ArrayExpression(node) { + if (devupContext) checkUselessResponsive(node, context) + }, + } }, }) diff --git a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md index e69de29b..11a95db0 100644 --- a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md +++ b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/README.md @@ -0,0 +1,63 @@ +# no-useless-tailing-nulls + +Disallow useless trailing null values in arrays within devup-ui components and utilities. + +## Rule Details + +This rule prevents the use of trailing `null` values in arrays that are passed to devup-ui components or utilities. Trailing nulls are considered useless because they don't affect the styling behavior and can be safely removed. + +### Examples + +#### ❌ Incorrect + +```tsx +import { Box } from '@devup-ui/react' + +// Trailing nulls are useless +; +; +; +``` + +```tsx +import { css } from '@devup-ui/react' + +// Trailing nulls in css utility +css({ w: [1, 2, null, null] }) +``` + +#### ✅ Correct + +```tsx +import { Box } from '@devup-ui/react' + +// No trailing nulls +; +; // null in the middle is fine +; +``` + +```tsx +import { Box } from 'other-package' + +// Only applies to devup-ui components +; +``` + +## When Not To Use It + +This rule is specifically designed for devup-ui components and utilities. It only applies when: + +- Using devup-ui components (e.g., `Box`, `Flex`, etc.) +- Using devup-ui utilities (e.g., `css` function) +- The array is not part of a member expression (e.g., `array[1]`) + +The rule will not trigger for: + +- Arrays with null values in the middle +- Arrays used with other libraries +- Arrays that are part of member expressions + +## Auto-fixable + +This rule is auto-fixable. ESLint will automatically remove trailing null values when possible. diff --git a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts index cc7df679..d83b2815 100644 --- a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/__tests__/index.test.ts @@ -24,7 +24,7 @@ describe('no-useless-tailing-nulls rule', () => { filename: 'src/app/page.tsx', }, { - code: 'import { Box } from "other-package";\n', + code: 'import { Box } from "other-package";\n', filename: 'src/app/page.tsx', }, ], @@ -59,6 +59,16 @@ describe('no-useless-tailing-nulls rule', () => { }, ], }, + { + code: 'import { Box } from "@devup-ui/react";\n', + output: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'uselessTailingNulls', + }, + ], + }, ], }) }) diff --git a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts index 0153c6d4..da79db55 100644 --- a/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts +++ b/packages/eslint-plugin/src/rules/no-useless-tailing-nulls/index.ts @@ -1,10 +1,46 @@ -import { ESLintUtils } from '@typescript-eslint/utils' +import { + AST_NODE_TYPES, + ESLintUtils, + type TSESTree, +} from '@typescript-eslint/utils' +import type { RuleContext } from '@typescript-eslint/utils/ts-eslint' + +import { ImportStorage } from '../../utils/import-storage' const createRule = ESLintUtils.RuleCreator( (name) => `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, ) +function checkUselessTailingNulls>( + node: TSESTree.ArrayExpression, + context: T, +) { + let nullCount = 0 + for (let i = node.elements.length - 1; i >= 0; i--) { + const element = node.elements[i] + if (element?.type === AST_NODE_TYPES.Literal && element.value === null) { + nullCount++ + } else { + break + } + } + if (nullCount === 0) return + context.report({ + node, + messageId: 'uselessTailingNulls', + fix(fixer) { + return fixer.removeRange([ + node.elements.length > nullCount + ? node.elements[node.elements.length - nullCount - 1]!.range[1] + : node.elements[0]!.range[0], + + node.elements[node.elements.length - 1]!.range[1], + ]) + }, + }) +} + export const noUselessTailingNulls = createRule({ name: 'no-useless-tailing-nulls', defaultOptions: [], @@ -19,7 +55,47 @@ export const noUselessTailingNulls = createRule({ description: 'No useless tailing nulls.', }, }, - create(_context) { - return {} + create(context) { + const importStorage = new ImportStorage() + let devupContext: + | TSESTree.CallExpression + | TSESTree.JSXOpeningElement + | null = null + return { + ImportDeclaration(node) { + importStorage.addImportByDeclaration(node) + }, + CallExpression(node) { + if ( + importStorage.checkContextType(node) === 'UTIL' && + node.arguments.length === 1 && + node.arguments[0].type === AST_NODE_TYPES.ObjectExpression + ) { + devupContext = node + } + }, + 'CallExpression:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + JSXOpeningElement(node) { + if (importStorage.checkContextType(node) === 'COMPONENT') { + devupContext = node + } + }, + 'JSXOpeningElement:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + ArrayExpression(node) { + if ( + devupContext && + node.parent?.type !== AST_NODE_TYPES.MemberExpression + ) + checkUselessTailingNulls(node, context) + }, + } }, }) diff --git a/packages/eslint-plugin/src/utils/import-storage.ts b/packages/eslint-plugin/src/utils/import-storage.ts new file mode 100644 index 00000000..008fb21a --- /dev/null +++ b/packages/eslint-plugin/src/utils/import-storage.ts @@ -0,0 +1,87 @@ +import { AST_NODE_TYPES, type TSESTree } from '@typescript-eslint/utils' +const defaultImports = { + css: 'css', + globalCss: 'globalCss', + keyframes: 'keyframes', + Box: 'Box', + Button: 'Button', + Text: 'Text', + Image: 'Image', + Flex: 'Flex', + Grid: 'Grid', + Center: 'Center', + VStack: 'VStack', + Input: 'Input', +} + +export class ImportStorage { + private imports: Record = {} + private importObject: Set = new Set() + + public addImportByDeclaration(node: TSESTree.ImportDeclaration) { + if (node.source.value !== '@devup-ui/react') return + + for (const specifier of node.specifiers) { + switch (specifier.type) { + case AST_NODE_TYPES.ImportSpecifier: + this.addImport( + specifier.local.name, + specifier.imported.type === AST_NODE_TYPES.Literal + ? specifier.imported.value + : specifier.imported.name, + ) + break + case AST_NODE_TYPES.ImportDefaultSpecifier: + this.importObject.add(specifier.local.name) + break + case AST_NODE_TYPES.ImportNamespaceSpecifier: + this.importObject.add(specifier.local.name) + break + } + } + } + + public addImport(key: string, value: string) { + this.imports[key] = value + } + + public checkContextType(node: TSESTree.Node) { + switch (node.type) { + case AST_NODE_TYPES.JSXOpeningElement: { + if (this.checkDevupUIComponent(node.name)) { + return 'COMPONENT' + } + break + } + case AST_NODE_TYPES.CallExpression: { + if (this.checkDevupUIUtil(node)) { + return 'UTIL' + } + break + } + } + } + + private checkDevupUIUtil(node: TSESTree.CallExpression): boolean { + return ( + (node.callee.type === AST_NODE_TYPES.Identifier && + node.callee.name in this.imports) || + (node.callee.type === AST_NODE_TYPES.MemberExpression && + node.callee.object.type === AST_NODE_TYPES.Identifier && + this.importObject.has(node.callee.object.name) && + node.callee.property.type === AST_NODE_TYPES.Identifier && + node.callee.property.name in defaultImports) + ) + } + + private checkDevupUIComponent(node: TSESTree.JSXTagNameExpression): boolean { + return ( + (node.type === AST_NODE_TYPES.JSXIdentifier && + node.name in this.imports) || + (node.type === AST_NODE_TYPES.JSXMemberExpression && + node.object.type === AST_NODE_TYPES.JSXIdentifier && + this.importObject.has(node.object.name) && + node.property.name in defaultImports) + ) + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c23adae7..d66e8fec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: eslint-plugin-devup: specifier: ^2.0.5 version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-eslint-plugin: + specifier: ^7.0.0 + version: 7.0.0(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-jsonc: specifier: ^2.20.1 version: 2.20.1(eslint@9.36.0(jiti@2.6.0)) @@ -658,28 +661,16 @@ importers: packages/eslint-plugin: dependencies: + '@typescript-eslint/utils': + specifier: ^8.44 + version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) typescript-eslint: specifier: ^8.44 version: 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) devDependencies: - '@types/eslint': - specifier: ^9.6 - version: 9.6.1 - '@types/eslint__js': - specifier: ^9.14 - version: 9.14.0 '@typescript-eslint/rule-tester': specifier: ^8.44 version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': - specifier: ^8.44 - version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@vitest/coverage-v8': - specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - eslint-plugin-eslint-plugin: - specifier: ^7.0.0 - version: 7.0.0(eslint@9.36.0(jiti@2.6.0)) typescript: specifier: ^5.9.2 version: 5.9.2 @@ -689,9 +680,6 @@ importers: vite-plugin-dts: specifier: ^4.5.4 version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/next-plugin: dependencies: @@ -3006,10 +2994,6 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/eslint__js@9.14.0': - resolution: {integrity: sha512-s0jepCjOJWB/GKcuba4jISaVpBudw3ClXJ3fUK4tugChUMQsp6kSwuA8Dcx6wFd/JsJqcY8n4rEpa5RTHs5ypA==} - deprecated: This is a stub types definition. @eslint/js provides its own type definitions, so you do not need this installed. - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -9966,10 +9950,6 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - '@types/eslint__js@9.14.0': - dependencies: - '@eslint/js': 9.36.0 - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 diff --git a/tsconfig.json b/tsconfig.json index 2c8f4962..f10ecddb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,4 +21,4 @@ "noEmit": true, "baseUrl": "." } -} \ No newline at end of file +} From ab42cd1de934d1e0e2b21f2fe0d2a96212d64125 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 00:05:30 +0900 Subject: [PATCH 29/59] Implement eslint rules --- apps/next/src/app/page.tsx | 2 +- .../next-devup-ui-single/src/app/page.tsx | 2 +- benchmark/next-devup-ui/src/app/page.tsx | 2 +- eslint.config.mjs | 8 +++++-- package.json | 1 + .../eslint-plugin/src/__tests__/index.test.ts | 5 ++++ packages/eslint-plugin/src/index.ts | 4 ++++ .../__tests__/index.test.ts | 19 ++++++++++++++- .../src/rules/css-utils-literal-only/index.ts | 24 ++++++++++++++++--- .../__tests__/index.test.ts | 8 +++++++ .../src/rules/no-duplicate-value/index.ts | 3 ++- pnpm-lock.yaml | 3 +++ 12 files changed, 71 insertions(+), 10 deletions(-) diff --git a/apps/next/src/app/page.tsx b/apps/next/src/app/page.tsx index d9519efc..b667af0f 100644 --- a/apps/next/src/app/page.tsx +++ b/apps/next/src/app/page.tsx @@ -43,7 +43,7 @@ export default function HomePage() { text typo
text - + hello hello diff --git a/benchmark/next-devup-ui-single/src/app/page.tsx b/benchmark/next-devup-ui-single/src/app/page.tsx index ab9216cc..310fa7e7 100644 --- a/benchmark/next-devup-ui-single/src/app/page.tsx +++ b/benchmark/next-devup-ui-single/src/app/page.tsx @@ -34,7 +34,7 @@ export default function HomePage() { hello text - + hello hello diff --git a/benchmark/next-devup-ui/src/app/page.tsx b/benchmark/next-devup-ui/src/app/page.tsx index ab9216cc..310fa7e7 100644 --- a/benchmark/next-devup-ui/src/app/page.tsx +++ b/benchmark/next-devup-ui/src/app/page.tsx @@ -34,7 +34,7 @@ export default function HomePage() { hello text - + hello hello diff --git a/eslint.config.mjs b/eslint.config.mjs index 73066a39..92a0b094 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,13 +1,13 @@ +import devupUIEslintPlugin from '@devup-ui/eslint-plugin' import { configs } from 'eslint-plugin-devup' import eslintPlugin from 'eslint-plugin-eslint-plugin' import jsonc from 'eslint-plugin-jsonc' import * as mdx from 'eslint-plugin-mdx' import globals from 'globals' - export default [ { ignores: [ - 'coverage', + '**/coverage', 'target', 'benchmark/next-panda-css/styled-system', 'bindings/devup-ui-wasm/pkg', @@ -75,4 +75,8 @@ export default [ ...eslintPlugin.configs.recommended, // files: ['packages/eslint-plugin/**/*.{js,jsx,ts,tsx}'], }, + { + ignores: ['**/*.md'], + }, + ...devupUIEslintPlugin.configs.recommended, ] diff --git a/package.json b/package.json index 3f133b4b..5a045dc3 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "devDependencies": { "@changesets/cli": "^2.29.7", "@devup-ui/vite-plugin": "workspace:*", + "@devup-ui/eslint-plugin": "workspace:*", "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "14.6.1", diff --git a/packages/eslint-plugin/src/__tests__/index.test.ts b/packages/eslint-plugin/src/__tests__/index.test.ts index e163ea00..d5aa2587 100644 --- a/packages/eslint-plugin/src/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/__tests__/index.test.ts @@ -6,6 +6,11 @@ describe('export index', () => { configs: { recommended: expect.any(Object), }, + default: { + configs: { + recommended: expect.any(Object), + }, + }, }) }) }) diff --git a/packages/eslint-plugin/src/index.ts b/packages/eslint-plugin/src/index.ts index 5ce6fd5a..6342f5ac 100644 --- a/packages/eslint-plugin/src/index.ts +++ b/packages/eslint-plugin/src/index.ts @@ -4,3 +4,7 @@ export * as rules from './rules' export const configs = { recommended, } + +export default { + configs, +} diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts index 0ffe2c38..bd4fc429 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts @@ -2,7 +2,7 @@ import { RuleTester } from '@typescript-eslint/rule-tester' import { cssUtilsLiteralOnly } from '../index' -describe.each(['css', 'globalCss', 'keyframes'])( +describe.each(['css' /* 'globalCss', 'keyframes'*/])( 'css-utils-literal-only rule', (code) => { const ruleTester = new RuleTester({ @@ -41,6 +41,14 @@ describe.each(['css', 'globalCss', 'keyframes'])( code: `import { ${code} as B } from "@devup-ui/react";\nB({w: ["1"]})`, filename: 'src/app/page.tsx', }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({_hover: {w: ["1"]}})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({ w: v ? 1 : null})`, + filename: 'src/app/page.tsx', + }, ], invalid: [ { @@ -79,6 +87,15 @@ describe.each(['css', 'globalCss', 'keyframes'])( }, ], }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({w: v ? 1 : v})`, + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'cssUtilsLiteralOnly', + }, + ], + }, ], }) }, diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts index dd6251f8..dcc5e49c 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts @@ -51,11 +51,29 @@ export const cssUtilsLiteralOnly = createRule({ Identifier(node) { if (!devupContext) return - const an = context.sourceCode.getAncestors(node) - const property = an.find( + const ancestors = context.sourceCode.getAncestors(devupContext) + const an = context.sourceCode.getAncestors(node).slice(ancestors.length) + const properties = an.filter( (ancestor) => ancestor.type === AST_NODE_TYPES.Property, ) - if (!property || [...an, node].indexOf(property.value) === -1) return + if ( + !properties.length || + properties.some( + (property) => [...an, node].indexOf(property.key) !== -1, + ) + ) + return + const conditionals = an.filter( + (ancestor) => ancestor.type === AST_NODE_TYPES.ConditionalExpression, + ) + if ( + conditionals.length && + conditionals.some( + (conditional) => [...an, node].indexOf(conditional.test) !== -1, + ) + ) { + return + } context.report({ node, diff --git a/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts index ab2b05cc..b16070cd 100644 --- a/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/no-duplicate-value/__tests__/index.test.ts @@ -27,6 +27,14 @@ describe('no-duplicate-value rule', () => { code: 'import { Box } from "other-package";\n', filename: 'src/app/page.tsx', }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, { code: 'import { css } from "other-package";\ncss()', filename: 'src/app/page.tsx', diff --git a/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts b/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts index b5461fec..0875d444 100644 --- a/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts +++ b/packages/eslint-plugin/src/rules/no-duplicate-value/index.ts @@ -23,7 +23,8 @@ function checkDuplicateValue>( const prevElement = node.elements[i - 1] if ( prevElement?.type === AST_NODE_TYPES.Literal && - element.value === prevElement.value + element.value === prevElement.value && + element.value !== null ) { context.report({ node, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d66e8fec..9ca913e1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@changesets/cli': specifier: ^2.29.7 version: 2.29.7(@types/node@24.5.2) + '@devup-ui/eslint-plugin': + specifier: workspace:* + version: link:packages/eslint-plugin '@devup-ui/vite-plugin': specifier: workspace:* version: link:packages/vite-plugin From e4932508e2ef4f975f3ddb6250059a5bf0d99bc2 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 00:49:50 +0900 Subject: [PATCH 30/59] Implement eslint rules --- devup-ui-eslint-plugin-0.1.3.tgz | Bin 0 -> 10475 bytes .../__tests__/index.test.ts | 21 +++++++++ .../src/rules/css-utils-literal-only/index.ts | 43 ++++++++---------- .../__tests__/index.test.ts | 28 ++++++++++-- .../src/rules/no-useless-responsive/index.ts | 27 ++++++++++- 5 files changed, 92 insertions(+), 27 deletions(-) create mode 100644 devup-ui-eslint-plugin-0.1.3.tgz diff --git a/devup-ui-eslint-plugin-0.1.3.tgz b/devup-ui-eslint-plugin-0.1.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..42d15d32554439ea3d2e373fa3b4f0e3a9c0732f GIT binary patch literal 10475 zcmV3x2*uA!U zGP!-c8JdD5q$xrHK-*eJ|NEXQfF$^mWVfxJ$qFC3EfPfGRfS(wp@4}WeDsHOtIwp` ziWLjx78_5vP@7V5;SXsm_(lHV(^9+LKG@qM@PE7AF8<%%-83MA)|hK6s!}Jf_0G32En5+YNX$V8b~5eJ7Yo{=W6Yn0C~x z* zl#V+L`HdeQ!SD1>$NfmB1L2RU>^SM4j(f=OJI*1$cih8RDIRqk{lDX0(RJ`+EnPbhen4Oj!1<-z(=BD>9k5e+^b@kr5obv2z(7)vt}bnZy}_3|I*6B@B- zcoNbvjZ_Eb02075k74NFpC0k?ghw<|4XSI_6ja3`a*ob_cz1qwa(3mIx>l1p^26}t zej=!pj7QZp-YXV1vXb9loxV*9oy{sTKIn{uwgNv4DXpCzr+peJ?DN;J)6CEc5O#K7 z{`T9#vVNfB8!ED2Cr z|B)wB*Nt-usOrK6eODk`*L}r)t7!VnEGdZy(rBp1yBnW-$$r)}vGE^^`t<%80AC?3 zz<=$%o&5s-+ueP$x5j^~NICphg{>HsDY|<2`DZFMj_Md#^{PE{Ka^3|b*BisQryKe z+|}CBP*H9P8u0O$Mt$0c`R6oUWoHv{NM$xXou*5B57svw4wZ)Gc;-gE2UBW?&bkQ~ zV+lQ#{x(^9G<{+U=taLX4xgWL{I9z?ka82@?`Ejs(k73>=_d$>1^mCW|K=di|2y05 zH*5WGC21l5KS{SzOX*gT#p124R;$+j;51#{Q>~NBw=7Zs>SXI84(XAgKIk^G_su^? zN=;;EYir2VD86Y0e7x1Cx0?fYOE-s1ZKaxt5|nO@eHLw*sV}#5wKgYVJY><96oFxc z|N9_k|7^NJk2f9w7@!td!5WThWXJgg)FavXaP5w%@;eVQ7}2q>e@h9(I-pKs6O1l$ z9);76b98x0uwWubJP!K=$|X0H#FF;O9aAG>C=%>)*>Yy6CwH8Q;5Q*1J8qu`vh&b4 zoek*uNyX0G0Q!|SWK(O9#P5MZ80C>rH>99LM{yW-H5z$eEi*`#O7t zh61`JqI|$=z8J=!f5=uyqoEr0dcE!3^AGLo1Rts*KGZYZhLjD_gPJ%6#e?26u;r&C+yr|gT{wetHoS;-9njuK4^rkk9696)$46; zC$+XT)lykUJnAzTMBnbR>Vg%OYWb3jkiVwT1g}4$%K71~E>ML6@+_@-ntl=Sc{ z>o*?&e*ySay>?gqDQr<~4^QxDSAF$Wf}CkDd;LLOciEuPpglyA-`;Z8C+&{0y7zj$ zxW-$7AXD{vy>>I;kz!FyQ%q?Wzqx(gZLoalY+>mDof8KR(|@IpUg^SKzxMO+C$!;D zKPTTDx9@}IqbG(bXXXyreIrWE#t{@3`T+$eScAF_P;r_wL`{j6C`gp9vOId6!j-RJ z$4LdU)_KT)$5FpS9(0{&vkKK}!0yq3=>)t_D>bb%PWt(BZB;7Ft5Tvul~VuWs#IzI zRH#yFzAB}RDy0%ts^n9eTkXt)l#wcXrRu49Lip2s7pd2;WrMn50j-zT@!y-(KTFl? z|2$0fcp8iLf3)}aOZLB=_ImwaMS7X_f4RLC{1NMa*b}wuzk0FtU**<+zoFd7m3loc zF8i-~z3sfkhxW2eAKKTJ-G+hPCQ9r!Y_8wE*47fGh6^^|$WrAb&58m!>$8Z8PIczg zZnW&SfTjHU)tQP*Nxo z5ds%p0bJx_;1WF!xJ1tiTo%r<*RLCLK5&r+O31murMB8R;35|SmlCxK;38kY_F;?9 zVv}-x7MYrqT~z`=W#h!Zgt>B^o;l6Oe>Fz3N77hi|2Zhxf40~Ae^-=V2LG{VxBvJ( z_Sx+}aU*o2=0jrpN$fzjk;h2X&FwDzrq}M$&CO&1mA0*hYEzKR8*5~0tYNjr8krhv zaB)yyebuF*q(r-^)T>^v{rYt@$6OPaZN(Y@*}M7#;))AD8q&sxQtQ4^-&$=cHy$ie zEdd{Y*uL(BHV8J4+t=>g60Gm9Eu1y%`4u=TC#0SPwd~I5I9EddBv{~!0WM`zsWcWv zpJFWfteC4be_zU2v>fJo9%B(kKy=mX*TA^6HSqez_kYsds=wTp!-9*rwS=d#;QDPXXWVp} zZan|1TEDT&dLJG%hLD|yEEdM;JYXT6hx$dU6IV07Test^Q|X9yt9&J$vOU|aF;jHH zD$Q>;o4H8~vIw90wm4J>E*#g&T-S<8*s_l|o z2q->DgFx|@UL1%bvnJ^f2n8iQqBK3fNDpE{NfH!FUiC;47D~P)lzc@ThjeuA?uMSc zr!%R&cLbSJq zBmt*}mQKdcP>eRUau8AoJ5E@F0mTgtJb-HINwqh*WTX3@ySt7PjuBo#P4X&|aA*`)A6BVp1pBvY#({iaI{`a}Ve;4lm-)$H1|L)Gt z_8R}MA{o5Q4Kl8d$o&P7vB~*IV0W2jw?jsL$pADp0NRexC46J%5|uz}6QfH|Tv+mi z0s-?Dkd%VoMu~^t60tmxUCWtIPmhiNeTn^ld%MN>-}akz{LgAqsxMp4Rba5lt>_Z8TjnCOr}~KpLU9k<vKhp}$CSK5>pJ#(vRd~jJ?jxMa_a`!)UL~9Nruw-Yl2%zXM&?#(zJf7Pv_NJJ>%c#((d= zS?hl*Nhw;Z-~g@Z%`(++zG7fwzoN%E?|+#S<6SJKxn^YH9 z<>|)~E#V<+ga^ngfjGM8dfy;~=@+G@!MjQBon6zHkw=e-|9+}SSfu~$w%-)>zxKh} z|GSb@r~ip6{V)DB{crLF{ZEwizwjmXzYz4l?nb)hmp4L}_!@~Kbj975q(|CaqR5{} zIr^JG_;*hK0b5u;3_SI6HUNwxoG0HBy@e25*#`asPLICa>dCio&J zWMcLuFEj*H1+!Ob`eC)EKe07^^*h$|<7!P`Jz3LNmZq<2HT|ls(95+pb3D(jX#Gy< zN7uEykvdnz>(_(>ONLA7YJ)0B^}j<=d!h8m`2QzCz(x4)V0X8O{|@%o_WzZnI{e40 z@ZVB9=<4xb_(=Q*yYTpDu>V{54?_OI7b3OPLg-b5d|Cw)wgld(J1E@8`$W!1p}&jc&W zX9|$z4i$J2a9MTcz%rhs$l%NHxjad8g5(~BFDt{)o&jH$`C}!Xqy_kLPHPMJvaX^_ z;mhUfIu~C`)JpBWx;an6a~+>x7n%OOyz`;L6u2@>`}p|($3wt{`#;{4;{SK{*7rZG zBt6Rh$36}J`H#eZ@#nYyjluqBtV)^b&o&0;t$T@N-z3{zLdiF1D1=i0a_gAPo9C!) z5tLQNIcXW^m~EVsmT?Z{qmemqE&%=shXa^rDQcSGt~!8+Z73tE!bf2(KFXgQkRl{n zLP&*U1X96R?yYZ#BHxmECjyX7qK%m8xd5a?YEBlYAXHhPRhaqYx(2Lq(j##VSSy@9 z@Vs~}cQ652{$zp|MQw$H3zjhqCcw>qF2mrzI&fqEl7_+Mf!pUc4C=EM@^-?8hLg#` z3-jdUD;$EV2#N9X#zwwkSL|m=3(tRehJ7H5&VSf%m+pUU@2<~(SV>y6|AX3?ZK?g? zi?)Hta*3a|8zihO@KZO1@VTYd?hQ%8Pg7Rmp;_I5G;YkPhE&uS7(Xa}?!nD`lQm%naQzXRw7@5cJXAbe&HaY@Cb z)3PL{Ie7rSY2^bLGj=y;`IPbi)x7573|L5klGaqQijW0$G&t4aj*GtaUN<$%;m2yk z1vZY}4ie+N16IUHVg*hwkCINC0Jw?*My;lmOe*lrfBi>mZ_hNR-s+NOOdHdux5t%K zD#`%Ky$L=eDoP}?-1ut0^>u3}d3Vbcw(Gy%w6&5D;WU(hfj%qs4@TNX28#! z7N7sqZzo0ApV6l zPoH&9z0=8&J3NF6*Aswe-BXVp?%MU#Uv*EtpK>jOM*n))J@Vdveds)o5f=$TmLcby&^|Nj)>u$cebMgQ-c_5FXVNuSF9*~-7f zP8um4|#04{&A1;zN#^Tvm+{LbSiU+X+;&R;gw#(zE|3RuYh+eQ4p zzk9IW|GSd(4E&!l|B_rDcwSK8=%f21{Wt^U_;_L-PY(gKr;l&Vf6i&HpP%FTnq`ljpfaz}`_6{^#F$d&g`1|H$U~N7sr2DD?ru! znd=s)vfiJ2V7(t7uFdzWND2R6oOs7SoV3RM7of3-|J$YWzu^FYHUF<7Ew}&U(`YQ- z|FKit|GoESjsI4X(v8qpmnWB3f~NbuzpUGA_GP*mwvTZ)l;~T8^5K4F=d)n9aE6e% z#-dyCP{+xbD}}0KdUQluQo&X!G^p9Z2#`VkoRBe1Gw__w4(z>{PS=<9P}< zY2o=V#rwavF(i1+|0_r-|3jFqzN^#4zuz*cXhg+Ad9bCV`JG9IKc;syn2${eMTP9p zC;cUtK_oZjShq%G;Si-b3Z1@8w=I8Jd{q-wVSQVtuYTFFdgM>lv9A!nN#f{Z#P6bf zr+rgA_SjIX_Kp{5Rh?=41X^WFe1T5!^t~sMC>#5#d(J*p(9zD{&H~y z%9qKC(5?HjcElEZSK0fEzp3ob;%BDevk%u@h(F1*($C3xI9UL$&03_My+}Qak;QCQ zI}EupR?2Q<#Vkiw!*<1vd@+@e$k}A)Cd4dY4VO-TUHdeu{N6Osd zrr%pN^|%BJrj+^`~QmezrBO)_5Pogq*P%`^t77Q)l%(}oE2+nb*_q)bAHA= zC|EQ53#P~J|9c9J#rywC=l||*uj7AKlAd+_FCO<%zxdBrg4XN)%F+|||2>+D0Sm1YYbmgT^tAndkE5}e|4aM-_uj1a|COYd;s5-(l?x=m zJS*>72E1@uYX9FS(pYr<(?R+Cznyjb-)hn``+w*AqAI*gbG%CRo`jWokyhnBdSS28 zi+hX8URm>BX$+s{1$v72=doU&M|yj}qx0eVu|Az=-dX+WDUttgPmfN{E>B*B#(ep| zv%j}rl>gfYyX*abD@jFBkx$;l4@Q){)o0j!QR|NWyWT@ic3N$h{MCGfi=b9Qk2L#?+7C z%ygot7)#zR}@)co{422KZgbp#2>4J4hFAz!BWmi# zsMK`fYEr@B{!|SJ;75q{b)g}6dVSQVf`CZm5td`JkvpbFx)e>UMZV(#>oAGMgi9*3 z-b_bXkBno=aIg`Qz}-#wA-|)-C4DAnpr8UQ(to=|aT55k#MAS!4E+LIF38xA{2?B8 z4m4#Pj7+6mayO#b@SCZwxsN4hJ#xoj_P|vUj5YO`$Pt@BIRiFOQ!=3Suz=I7C)JXgsFD$d6dyYhF;ok0j*tlNp3hLi2M# ze4_gW3v=^r!x9SZ3;1}#fO9xj%(QO^ILwDExt3<)Dd3Tb?U7K5X3;V2Gav7S$lCiO z7avQEf5*i~tSkx|m|59$XHn7uGud^Inf8qRJ|+IG&qBCj!tl5ycwD?nCh8*`!@1)d z-cN*A#1#u@D!p_E(LT@x!J!l^8Q3*RO|gK69}#-*k0&98&nAN3GV>Ya^CoZ}D!V5) zG~{>9wE4#rw`Id=;?NV)DULZ1sBXMzIF_RupVaxrmoQ)vvRof1z(f~(tc4K}!a;&* ze>Y;mDCKzCXNn8pX+dup4j)X}h%3VogogeN7s)R!lA*QP28)7ai%J?PS6{z#H{v1A zf5HVDvd9lBhPf;LE-3M&4zU13!ECzAJ~8~6*QcZ zkVPM{!){oF69dA=n#nk`NKrBH1C;%4y5^-_S*j593gv@zpkb4LvR+pXa&f+=oS70! z`^|7xvNEQXfTD5(fit#m5QQ#>>n_1>xTvkSYcYTVX%5#vhFTuW_-4$Mkq-%cz{!Ml z#;TcVk7Q6lm+*leSX{p5E&(>$0C|hVVRGNlksl5SAJid`<<@QDr0sFAB)xK{@|F(> z4QZeRk67SB-{1HlPMkXdUquKZ;>h$lfhnJLHO)E*`bWu(FR<68J9l|8vdJ!=M^=5v z*xZK`GO46%FG4AtkyEMYSZ1=BNf}dE7Xn=I%zHiHu##!akzysgtKC#m&4Q{%}T{1Whh(V zQa>0Gt7iy^iJPegVYtNq#AD(EK$}n%`=Oq0cU*-1I|h&;;?X9KHrO-Z=VmbS#Sj!6 zKJ`O2-5dx?UBZN*w>$tDU09ioiU!0Iort;s<=|4DvLs97^d!CsSrATPT24ZL>Sj+S zROppc;u8Z9Z0#z8<*AfKfLo$gu`;9lz){(?M&+Fk^7P+&NE-A$pcA}`LaK!8uyRss zE=@Agt+a-0?0=*#8Tq#qL7J`%D!6lC`L4Zi_!!`E*yX@F3~+G(~FtS z+zr_ze#j$gmbieAZ&;L~aQvwFfo_UcKF!jpxB+PSiWvfTFaXKo)gq?@7;&SrNW~OP z-*g}p8*1|Y(1+J3!i+ZE$kreOhXt2%6T1l-5bzlAkN(Xf;*-$7lQC1!$dC@TZ1+`K z@nmr?NW6LCOPlSn($eU_Nhv`#Ak(Bl$ry|gVX6_;NGd%Gk;@N*e?!>XH|hBnP{+Tue&9iuF07P`Ga0 zhsJTkSwbZX5ix+f*uY$0^_w7((g8Pm8H}!Tc7Anwbm9;Qd&XV{{xSprB&S4dF0#11 zf+tEHii4CElxT%M5!COa0+`J)TG^X{xrsjOb0e{k`E?Vp^6oO-nHEyrt(D!0bIVsG zq&{2(8f8Xs^FhXwcpJRzBvtg2`ei+w^^7%%G#lfm&7y)($M1fqajD)a!U5flAQXx=m(j|dE7AzUsunNVM}$kj;e zNg$qzookISA^@%6rnWUdwA4zxu+FNAVIh=9)12WuT?+huAO04gmDuwyEhDM4>6vBb zysP_Mvc5G{P~!nZL%&a>emqW)W^RTgl0$1}$q?oR7Itf5PVmEOra@y7xiMaN5$9){ z?vNU1KxNNl@E@TjTEg{0UNAbP{SQT$2H3R)Qy2rJnZuPYpAm!bIPXaSP^h^OFl=W~|PfOwpveZesK?>Z7?K zO-}+reaRzSn{gClsrVS2xlj`pnM%m^6e08FAKLukS`$zT}~Um@ACi{7-zF_Wm> zfS+?fe)I)&$TXesX+3YITC+rD7_^{-*Ky=f$H**DZZ=GY!DUv@22>Pu_`L3D=LK_N zZa|x0RPrO@c$eh#(jkZ5<>{sF(;rW-{&N2Qiu~wZTzF?!rze->{K9r$pMOWZv!BS{ zPS1{ALYelN>g$PP>)#=gux84PL z_x|GD`Q?dTIkl%P1cQCDI|hyU=;+WYn>|1L$wcspV1T8up#u`5T@t5TCQL2cq&DwK z8IMt?&~lhb6xfmnEY)4LtTxU`w0qj#$+DJ-Q|&)m?w9%%`x75_$_W z6)K^Nh&Tz+w5Udui)m``Nc=$xb^uuld_;#K8`3DCO*eH6yE&VwvAryu+6}$pgSk9p zH;BftVneVF7-v92PJx47q8quI6|`u~tqNco(c=^{Bx*Et98G@=x6<3@aridznrHrV zIicW$PF=OE4`@_d=mCRh+bOuTOp%H31zVRND6j|%?Olcy*{r+ZV=XG6*oSc{MPmJg zMP>jknVBi@jk(U_q(;!-kn8z5z4>}{h*0b*>rK%0iG@zz_5hWQ0@0`8M+n+W>jHNysze83(sG^9 z7WoUm1ARrSd1*&sH(JGJEyEoiQJA_HQjl!?3}`Dgk3mRgA`&=nW$IB+SurX2Rg<6sjT)pJ z@i^=QB2VjJpuDvPr|wK(3OS9Gf1mmfQP0-ITjWPd{7~}jv>;=M*J>5y)DuNY#F<(( z%5DS3#n|{GZ)moM109RH77{*lCW4`97^JHM@;~n|G*`G8gCgQ92h8giRS(YF+v{B&{c4UeP&8Pbh~&F&W)iQ)jf zu9qWYoK9dji;Rkhaxa}h8A?gS4ZlG{m7lYeC6m@yW@aziPiZ#yZtk?&@WnEKx(-2@ ztyW)bShlS479TLi+Zn1M^C#lv1S_|`*tn!LM?RU*2uubnAfX=(V>p*`2$u>+#eHmO hx5(hNEVroj#lQDG@9VTq>$FbA^gk6%rRxCx000x1;o<-Q literal 0 HcmV?d00001 diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts index bd4fc429..7c0f46d2 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/__tests__/index.test.ts @@ -45,10 +45,22 @@ describe.each(['css' /* 'globalCss', 'keyframes'*/])( code: `import { ${code} as B } from "@devup-ui/react";\nB({_hover: {w: ["1"]}})`, filename: 'src/app/page.tsx', }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({ w: { a: 1, b: 2 }[v]})`, + filename: 'src/app/page.tsx', + }, { code: `import { ${code} as B } from "@devup-ui/react";\nB({ w: v ? 1 : null})`, filename: 'src/app/page.tsx', }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({ w: v ? 1 : undefined})`, + filename: 'src/app/page.tsx', + }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({ w: v || 1 ? 1 : null})`, + filename: 'src/app/page.tsx', + }, ], invalid: [ { @@ -96,6 +108,15 @@ describe.each(['css' /* 'globalCss', 'keyframes'*/])( }, ], }, + { + code: `import { ${code} as B } from "@devup-ui/react";\nB({w: v || 1 ? 1 : v})`, + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'cssUtilsLiteralOnly', + }, + ], + }, ], }) }, diff --git a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts index dcc5e49c..5f5dc228 100644 --- a/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts +++ b/packages/eslint-plugin/src/rules/css-utils-literal-only/index.ts @@ -49,30 +49,27 @@ export const cssUtilsLiteralOnly = createRule({ } }, Identifier(node) { - if (!devupContext) return + if (!devupContext || node.name === 'undefined') return - const ancestors = context.sourceCode.getAncestors(devupContext) - const an = context.sourceCode.getAncestors(node).slice(ancestors.length) - const properties = an.filter( - (ancestor) => ancestor.type === AST_NODE_TYPES.Property, - ) - if ( - !properties.length || - properties.some( - (property) => [...an, node].indexOf(property.key) !== -1, - ) - ) - return - const conditionals = an.filter( - (ancestor) => ancestor.type === AST_NODE_TYPES.ConditionalExpression, - ) - if ( - conditionals.length && - conditionals.some( - (conditional) => [...an, node].indexOf(conditional.test) !== -1, - ) - ) { - return + const an = context.sourceCode + .getAncestors(node) + .slice(context.sourceCode.getAncestors(devupContext).length) + + for (const ancestor of an) { + switch (ancestor.type) { + case AST_NODE_TYPES.Property: + if ([...an, node].indexOf(ancestor.key) !== -1) return + break + case AST_NODE_TYPES.ConditionalExpression: + if ([...an, node].indexOf(ancestor.test) !== -1) return + break + case AST_NODE_TYPES.MemberExpression: + if ([...an, node].indexOf(ancestor.property) !== -1) return + break + case AST_NODE_TYPES.CallExpression: + if ([...an, node].indexOf(ancestor.callee) !== -1) return + break + } } context.report({ diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts index 04184a57..62c5b85a 100644 --- a/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/__tests__/index.test.ts @@ -40,15 +40,23 @@ describe('no-useless-responsive rule', () => { filename: 'src/app/page.tsx', }, { - code: 'import { Box } from "other-package";\n', + code: 'import { Box } from "@devup-ui/react";\n', filename: 'src/app/page.tsx', }, { - code: 'import { Box } from "other-package";\n', + code: 'import { Box } from "@devup-ui/react";\n', filename: 'src/app/page.tsx', }, { - code: 'import { Box } from "other-package";\n', + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n {console.log([1])}} />', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', filename: 'src/app/page.tsx', }, { @@ -139,6 +147,20 @@ describe('no-useless-responsive rule', () => { }, ], }, + { + code: 'import * as c from "@devup-ui/react";\nc.css({w: [1].length === 1 ? [1] : [2]})', + output: + 'import * as c from "@devup-ui/react";\nc.css({w: [1].length === 1 ? 1 : 2})', + filename: 'src/app/layout.tsx', + errors: [ + { + messageId: 'uselessResponsive', + }, + { + messageId: 'uselessResponsive', + }, + ], + }, ], }) }) diff --git a/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts b/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts index a97598f5..4d7721f6 100644 --- a/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts +++ b/packages/eslint-plugin/src/rules/no-useless-responsive/index.ts @@ -14,11 +14,29 @@ const createRule = ESLintUtils.RuleCreator( function checkUselessResponsive>( node: TSESTree.ArrayExpression, + ancestors: TSESTree.Node[], context: T, ) { if (node.elements.length !== 1) return const element = node.elements[0]! + for (const ancestor of ancestors) { + switch (ancestor.type) { + case AST_NODE_TYPES.ConditionalExpression: + if (ancestors.indexOf(ancestor.test) !== -1) return + break + case AST_NODE_TYPES.JSXExpressionContainer: + case AST_NODE_TYPES.Property: + case AST_NODE_TYPES.JSXOpeningElement: + case AST_NODE_TYPES.CallExpression: + case AST_NODE_TYPES.ObjectExpression: + case AST_NODE_TYPES.JSXAttribute: + break + default: + return + } + } + context.report({ node, messageId: 'uselessResponsive', @@ -77,7 +95,14 @@ export const noUselessResponsive = createRule({ } }, ArrayExpression(node) { - if (devupContext) checkUselessResponsive(node, context) + if (devupContext) + checkUselessResponsive( + node, + context.sourceCode + .getAncestors(node) + .slice(context.sourceCode.getAncestors(devupContext).length), + context, + ) }, } }, From 68c0df727befb07b6c145aa8df049d558c3272ef Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 00:50:05 +0900 Subject: [PATCH 31/59] Implement eslint rules --- devup-ui-eslint-plugin-0.1.3.tgz | Bin 10475 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 devup-ui-eslint-plugin-0.1.3.tgz diff --git a/devup-ui-eslint-plugin-0.1.3.tgz b/devup-ui-eslint-plugin-0.1.3.tgz deleted file mode 100644 index 42d15d32554439ea3d2e373fa3b4f0e3a9c0732f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10475 zcmV3x2*uA!U zGP!-c8JdD5q$xrHK-*eJ|NEXQfF$^mWVfxJ$qFC3EfPfGRfS(wp@4}WeDsHOtIwp` ziWLjx78_5vP@7V5;SXsm_(lHV(^9+LKG@qM@PE7AF8<%%-83MA)|hK6s!}Jf_0G32En5+YNX$V8b~5eJ7Yo{=W6Yn0C~x z* zl#V+L`HdeQ!SD1>$NfmB1L2RU>^SM4j(f=OJI*1$cih8RDIRqk{lDX0(RJ`+EnPbhen4Oj!1<-z(=BD>9k5e+^b@kr5obv2z(7)vt}bnZy}_3|I*6B@B- zcoNbvjZ_Eb02075k74NFpC0k?ghw<|4XSI_6ja3`a*ob_cz1qwa(3mIx>l1p^26}t zej=!pj7QZp-YXV1vXb9loxV*9oy{sTKIn{uwgNv4DXpCzr+peJ?DN;J)6CEc5O#K7 z{`T9#vVNfB8!ED2Cr z|B)wB*Nt-usOrK6eODk`*L}r)t7!VnEGdZy(rBp1yBnW-$$r)}vGE^^`t<%80AC?3 zz<=$%o&5s-+ueP$x5j^~NICphg{>HsDY|<2`DZFMj_Md#^{PE{Ka^3|b*BisQryKe z+|}CBP*H9P8u0O$Mt$0c`R6oUWoHv{NM$xXou*5B57svw4wZ)Gc;-gE2UBW?&bkQ~ zV+lQ#{x(^9G<{+U=taLX4xgWL{I9z?ka82@?`Ejs(k73>=_d$>1^mCW|K=di|2y05 zH*5WGC21l5KS{SzOX*gT#p124R;$+j;51#{Q>~NBw=7Zs>SXI84(XAgKIk^G_su^? zN=;;EYir2VD86Y0e7x1Cx0?fYOE-s1ZKaxt5|nO@eHLw*sV}#5wKgYVJY><96oFxc z|N9_k|7^NJk2f9w7@!td!5WThWXJgg)FavXaP5w%@;eVQ7}2q>e@h9(I-pKs6O1l$ z9);76b98x0uwWubJP!K=$|X0H#FF;O9aAG>C=%>)*>Yy6CwH8Q;5Q*1J8qu`vh&b4 zoek*uNyX0G0Q!|SWK(O9#P5MZ80C>rH>99LM{yW-H5z$eEi*`#O7t zh61`JqI|$=z8J=!f5=uyqoEr0dcE!3^AGLo1Rts*KGZYZhLjD_gPJ%6#e?26u;r&C+yr|gT{wetHoS;-9njuK4^rkk9696)$46; zC$+XT)lykUJnAzTMBnbR>Vg%OYWb3jkiVwT1g}4$%K71~E>ML6@+_@-ntl=Sc{ z>o*?&e*ySay>?gqDQr<~4^QxDSAF$Wf}CkDd;LLOciEuPpglyA-`;Z8C+&{0y7zj$ zxW-$7AXD{vy>>I;kz!FyQ%q?Wzqx(gZLoalY+>mDof8KR(|@IpUg^SKzxMO+C$!;D zKPTTDx9@}IqbG(bXXXyreIrWE#t{@3`T+$eScAF_P;r_wL`{j6C`gp9vOId6!j-RJ z$4LdU)_KT)$5FpS9(0{&vkKK}!0yq3=>)t_D>bb%PWt(BZB;7Ft5Tvul~VuWs#IzI zRH#yFzAB}RDy0%ts^n9eTkXt)l#wcXrRu49Lip2s7pd2;WrMn50j-zT@!y-(KTFl? z|2$0fcp8iLf3)}aOZLB=_ImwaMS7X_f4RLC{1NMa*b}wuzk0FtU**<+zoFd7m3loc zF8i-~z3sfkhxW2eAKKTJ-G+hPCQ9r!Y_8wE*47fGh6^^|$WrAb&58m!>$8Z8PIczg zZnW&SfTjHU)tQP*Nxo z5ds%p0bJx_;1WF!xJ1tiTo%r<*RLCLK5&r+O31murMB8R;35|SmlCxK;38kY_F;?9 zVv}-x7MYrqT~z`=W#h!Zgt>B^o;l6Oe>Fz3N77hi|2Zhxf40~Ae^-=V2LG{VxBvJ( z_Sx+}aU*o2=0jrpN$fzjk;h2X&FwDzrq}M$&CO&1mA0*hYEzKR8*5~0tYNjr8krhv zaB)yyebuF*q(r-^)T>^v{rYt@$6OPaZN(Y@*}M7#;))AD8q&sxQtQ4^-&$=cHy$ie zEdd{Y*uL(BHV8J4+t=>g60Gm9Eu1y%`4u=TC#0SPwd~I5I9EddBv{~!0WM`zsWcWv zpJFWfteC4be_zU2v>fJo9%B(kKy=mX*TA^6HSqez_kYsds=wTp!-9*rwS=d#;QDPXXWVp} zZan|1TEDT&dLJG%hLD|yEEdM;JYXT6hx$dU6IV07Test^Q|X9yt9&J$vOU|aF;jHH zD$Q>;o4H8~vIw90wm4J>E*#g&T-S<8*s_l|o z2q->DgFx|@UL1%bvnJ^f2n8iQqBK3fNDpE{NfH!FUiC;47D~P)lzc@ThjeuA?uMSc zr!%R&cLbSJq zBmt*}mQKdcP>eRUau8AoJ5E@F0mTgtJb-HINwqh*WTX3@ySt7PjuBo#P4X&|aA*`)A6BVp1pBvY#({iaI{`a}Ve;4lm-)$H1|L)Gt z_8R}MA{o5Q4Kl8d$o&P7vB~*IV0W2jw?jsL$pADp0NRexC46J%5|uz}6QfH|Tv+mi z0s-?Dkd%VoMu~^t60tmxUCWtIPmhiNeTn^ld%MN>-}akz{LgAqsxMp4Rba5lt>_Z8TjnCOr}~KpLU9k<vKhp}$CSK5>pJ#(vRd~jJ?jxMa_a`!)UL~9Nruw-Yl2%zXM&?#(zJf7Pv_NJJ>%c#((d= zS?hl*Nhw;Z-~g@Z%`(++zG7fwzoN%E?|+#S<6SJKxn^YH9 z<>|)~E#V<+ga^ngfjGM8dfy;~=@+G@!MjQBon6zHkw=e-|9+}SSfu~$w%-)>zxKh} z|GSb@r~ip6{V)DB{crLF{ZEwizwjmXzYz4l?nb)hmp4L}_!@~Kbj975q(|CaqR5{} zIr^JG_;*hK0b5u;3_SI6HUNwxoG0HBy@e25*#`asPLICa>dCio&J zWMcLuFEj*H1+!Ob`eC)EKe07^^*h$|<7!P`Jz3LNmZq<2HT|ls(95+pb3D(jX#Gy< zN7uEykvdnz>(_(>ONLA7YJ)0B^}j<=d!h8m`2QzCz(x4)V0X8O{|@%o_WzZnI{e40 z@ZVB9=<4xb_(=Q*yYTpDu>V{54?_OI7b3OPLg-b5d|Cw)wgld(J1E@8`$W!1p}&jc&W zX9|$z4i$J2a9MTcz%rhs$l%NHxjad8g5(~BFDt{)o&jH$`C}!Xqy_kLPHPMJvaX^_ z;mhUfIu~C`)JpBWx;an6a~+>x7n%OOyz`;L6u2@>`}p|($3wt{`#;{4;{SK{*7rZG zBt6Rh$36}J`H#eZ@#nYyjluqBtV)^b&o&0;t$T@N-z3{zLdiF1D1=i0a_gAPo9C!) z5tLQNIcXW^m~EVsmT?Z{qmemqE&%=shXa^rDQcSGt~!8+Z73tE!bf2(KFXgQkRl{n zLP&*U1X96R?yYZ#BHxmECjyX7qK%m8xd5a?YEBlYAXHhPRhaqYx(2Lq(j##VSSy@9 z@Vs~}cQ652{$zp|MQw$H3zjhqCcw>qF2mrzI&fqEl7_+Mf!pUc4C=EM@^-?8hLg#` z3-jdUD;$EV2#N9X#zwwkSL|m=3(tRehJ7H5&VSf%m+pUU@2<~(SV>y6|AX3?ZK?g? zi?)Hta*3a|8zihO@KZO1@VTYd?hQ%8Pg7Rmp;_I5G;YkPhE&uS7(Xa}?!nD`lQm%naQzXRw7@5cJXAbe&HaY@Cb z)3PL{Ie7rSY2^bLGj=y;`IPbi)x7573|L5klGaqQijW0$G&t4aj*GtaUN<$%;m2yk z1vZY}4ie+N16IUHVg*hwkCINC0Jw?*My;lmOe*lrfBi>mZ_hNR-s+NOOdHdux5t%K zD#`%Ky$L=eDoP}?-1ut0^>u3}d3Vbcw(Gy%w6&5D;WU(hfj%qs4@TNX28#! z7N7sqZzo0ApV6l zPoH&9z0=8&J3NF6*Aswe-BXVp?%MU#Uv*EtpK>jOM*n))J@Vdveds)o5f=$TmLcby&^|Nj)>u$cebMgQ-c_5FXVNuSF9*~-7f zP8um4|#04{&A1;zN#^Tvm+{LbSiU+X+;&R;gw#(zE|3RuYh+eQ4p zzk9IW|GSd(4E&!l|B_rDcwSK8=%f21{Wt^U_;_L-PY(gKr;l&Vf6i&HpP%FTnq`ljpfaz}`_6{^#F$d&g`1|H$U~N7sr2DD?ru! znd=s)vfiJ2V7(t7uFdzWND2R6oOs7SoV3RM7of3-|J$YWzu^FYHUF<7Ew}&U(`YQ- z|FKit|GoESjsI4X(v8qpmnWB3f~NbuzpUGA_GP*mwvTZ)l;~T8^5K4F=d)n9aE6e% z#-dyCP{+xbD}}0KdUQluQo&X!G^p9Z2#`VkoRBe1Gw__w4(z>{PS=<9P}< zY2o=V#rwavF(i1+|0_r-|3jFqzN^#4zuz*cXhg+Ad9bCV`JG9IKc;syn2${eMTP9p zC;cUtK_oZjShq%G;Si-b3Z1@8w=I8Jd{q-wVSQVtuYTFFdgM>lv9A!nN#f{Z#P6bf zr+rgA_SjIX_Kp{5Rh?=41X^WFe1T5!^t~sMC>#5#d(J*p(9zD{&H~y z%9qKC(5?HjcElEZSK0fEzp3ob;%BDevk%u@h(F1*($C3xI9UL$&03_My+}Qak;QCQ zI}EupR?2Q<#Vkiw!*<1vd@+@e$k}A)Cd4dY4VO-TUHdeu{N6Osd zrr%pN^|%BJrj+^`~QmezrBO)_5Pogq*P%`^t77Q)l%(}oE2+nb*_q)bAHA= zC|EQ53#P~J|9c9J#rywC=l||*uj7AKlAd+_FCO<%zxdBrg4XN)%F+|||2>+D0Sm1YYbmgT^tAndkE5}e|4aM-_uj1a|COYd;s5-(l?x=m zJS*>72E1@uYX9FS(pYr<(?R+Cznyjb-)hn``+w*AqAI*gbG%CRo`jWokyhnBdSS28 zi+hX8URm>BX$+s{1$v72=doU&M|yj}qx0eVu|Az=-dX+WDUttgPmfN{E>B*B#(ep| zv%j}rl>gfYyX*abD@jFBkx$;l4@Q){)o0j!QR|NWyWT@ic3N$h{MCGfi=b9Qk2L#?+7C z%ygot7)#zR}@)co{422KZgbp#2>4J4hFAz!BWmi# zsMK`fYEr@B{!|SJ;75q{b)g}6dVSQVf`CZm5td`JkvpbFx)e>UMZV(#>oAGMgi9*3 z-b_bXkBno=aIg`Qz}-#wA-|)-C4DAnpr8UQ(to=|aT55k#MAS!4E+LIF38xA{2?B8 z4m4#Pj7+6mayO#b@SCZwxsN4hJ#xoj_P|vUj5YO`$Pt@BIRiFOQ!=3Suz=I7C)JXgsFD$d6dyYhF;ok0j*tlNp3hLi2M# ze4_gW3v=^r!x9SZ3;1}#fO9xj%(QO^ILwDExt3<)Dd3Tb?U7K5X3;V2Gav7S$lCiO z7avQEf5*i~tSkx|m|59$XHn7uGud^Inf8qRJ|+IG&qBCj!tl5ycwD?nCh8*`!@1)d z-cN*A#1#u@D!p_E(LT@x!J!l^8Q3*RO|gK69}#-*k0&98&nAN3GV>Ya^CoZ}D!V5) zG~{>9wE4#rw`Id=;?NV)DULZ1sBXMzIF_RupVaxrmoQ)vvRof1z(f~(tc4K}!a;&* ze>Y;mDCKzCXNn8pX+dup4j)X}h%3VogogeN7s)R!lA*QP28)7ai%J?PS6{z#H{v1A zf5HVDvd9lBhPf;LE-3M&4zU13!ECzAJ~8~6*QcZ zkVPM{!){oF69dA=n#nk`NKrBH1C;%4y5^-_S*j593gv@zpkb4LvR+pXa&f+=oS70! z`^|7xvNEQXfTD5(fit#m5QQ#>>n_1>xTvkSYcYTVX%5#vhFTuW_-4$Mkq-%cz{!Ml z#;TcVk7Q6lm+*leSX{p5E&(>$0C|hVVRGNlksl5SAJid`<<@QDr0sFAB)xK{@|F(> z4QZeRk67SB-{1HlPMkXdUquKZ;>h$lfhnJLHO)E*`bWu(FR<68J9l|8vdJ!=M^=5v z*xZK`GO46%FG4AtkyEMYSZ1=BNf}dE7Xn=I%zHiHu##!akzysgtKC#m&4Q{%}T{1Whh(V zQa>0Gt7iy^iJPegVYtNq#AD(EK$}n%`=Oq0cU*-1I|h&;;?X9KHrO-Z=VmbS#Sj!6 zKJ`O2-5dx?UBZN*w>$tDU09ioiU!0Iort;s<=|4DvLs97^d!CsSrATPT24ZL>Sj+S zROppc;u8Z9Z0#z8<*AfKfLo$gu`;9lz){(?M&+Fk^7P+&NE-A$pcA}`LaK!8uyRss zE=@Agt+a-0?0=*#8Tq#qL7J`%D!6lC`L4Zi_!!`E*yX@F3~+G(~FtS z+zr_ze#j$gmbieAZ&;L~aQvwFfo_UcKF!jpxB+PSiWvfTFaXKo)gq?@7;&SrNW~OP z-*g}p8*1|Y(1+J3!i+ZE$kreOhXt2%6T1l-5bzlAkN(Xf;*-$7lQC1!$dC@TZ1+`K z@nmr?NW6LCOPlSn($eU_Nhv`#Ak(Bl$ry|gVX6_;NGd%Gk;@N*e?!>XH|hBnP{+Tue&9iuF07P`Ga0 zhsJTkSwbZX5ix+f*uY$0^_w7((g8Pm8H}!Tc7Anwbm9;Qd&XV{{xSprB&S4dF0#11 zf+tEHii4CElxT%M5!COa0+`J)TG^X{xrsjOb0e{k`E?Vp^6oO-nHEyrt(D!0bIVsG zq&{2(8f8Xs^FhXwcpJRzBvtg2`ei+w^^7%%G#lfm&7y)($M1fqajD)a!U5flAQXx=m(j|dE7AzUsunNVM}$kj;e zNg$qzookISA^@%6rnWUdwA4zxu+FNAVIh=9)12WuT?+huAO04gmDuwyEhDM4>6vBb zysP_Mvc5G{P~!nZL%&a>emqW)W^RTgl0$1}$q?oR7Itf5PVmEOra@y7xiMaN5$9){ z?vNU1KxNNl@E@TjTEg{0UNAbP{SQT$2H3R)Qy2rJnZuPYpAm!bIPXaSP^h^OFl=W~|PfOwpveZesK?>Z7?K zO-}+reaRzSn{gClsrVS2xlj`pnM%m^6e08FAKLukS`$zT}~Um@ACi{7-zF_Wm> zfS+?fe)I)&$TXesX+3YITC+rD7_^{-*Ky=f$H**DZZ=GY!DUv@22>Pu_`L3D=LK_N zZa|x0RPrO@c$eh#(jkZ5<>{sF(;rW-{&N2Qiu~wZTzF?!rze->{K9r$pMOWZv!BS{ zPS1{ALYelN>g$PP>)#=gux84PL z_x|GD`Q?dTIkl%P1cQCDI|hyU=;+WYn>|1L$wcspV1T8up#u`5T@t5TCQL2cq&DwK z8IMt?&~lhb6xfmnEY)4LtTxU`w0qj#$+DJ-Q|&)m?w9%%`x75_$_W z6)K^Nh&Tz+w5Udui)m``Nc=$xb^uuld_;#K8`3DCO*eH6yE&VwvAryu+6}$pgSk9p zH;BftVneVF7-v92PJx47q8quI6|`u~tqNco(c=^{Bx*Et98G@=x6<3@aridznrHrV zIicW$PF=OE4`@_d=mCRh+bOuTOp%H31zVRND6j|%?Olcy*{r+ZV=XG6*oSc{MPmJg zMP>jknVBi@jk(U_q(;!-kn8z5z4>}{h*0b*>rK%0iG@zz_5hWQ0@0`8M+n+W>jHNysze83(sG^9 z7WoUm1ARrSd1*&sH(JGJEyEoiQJA_HQjl!?3}`Dgk3mRgA`&=nW$IB+SurX2Rg<6sjT)pJ z@i^=QB2VjJpuDvPr|wK(3OS9Gf1mmfQP0-ITjWPd{7~}jv>;=M*J>5y)DuNY#F<(( z%5DS3#n|{GZ)moM109RH77{*lCW4`97^JHM@;~n|G*`G8gCgQ92h8giRS(YF+v{B&{c4UeP&8Pbh~&F&W)iQ)jf zu9qWYoK9dji;Rkhaxa}h8A?gS4ZlG{m7lYeC6m@yW@aziPiZ#yZtk?&@WnEKx(-2@ ztyW)bShlS479TLi+Zn1M^C#lv1S_|`*tn!LM?RU*2uubnAfX=(V>p*`2$u>+#eHmO hx5(hNEVroj#lQDG@9VTq>$FbA^gk6%rRxCx000x1;o<-Q From cf019ae4b9f5b257f6f81f6daa5a49956ee80235 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 00:53:50 +0900 Subject: [PATCH 32/59] Implement eslint rules --- .husky/pre-commit | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index e9a388c2..3bf9ea3e 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -pnpm lint-staged \ No newline at end of file +pnpm lint \ No newline at end of file From aaf2f8fbbf2abaf0cbd77ceefc168f477317fd84 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 00:54:57 +0900 Subject: [PATCH 33/59] Implement eslint rules --- .husky/pre-commit | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 3bf9ea3e..3f656a07 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1,2 @@ -pnpm lint \ No newline at end of file +pnpm lint +echo "lint done" \ No newline at end of file From 790f9c4acff90fd36d0f570aadf71c5e8c4cb37e Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 00:55:38 +0900 Subject: [PATCH 34/59] Implement eslint rules --- .husky/pre-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 3f656a07..c3681927 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,2 @@ pnpm lint -echo "lint done" \ No newline at end of file +pnpm test \ No newline at end of file From 13851c22508a131d5409d9682523d9af01d6f77c Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 01:06:13 +0900 Subject: [PATCH 35/59] Implement eslint rules --- .husky/pre-commit | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index c3681927..e02c24e2 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1 @@ -pnpm lint -pnpm test \ No newline at end of file +pnpm lint-staged \ No newline at end of file From 1f2feeb3cf7a8b767721f3843d33ac7915146aa2 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 16:00:02 +0900 Subject: [PATCH 36/59] Fix changeset issue --- package.json | 7 +++--- pnpm-lock.yaml | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5a045dc3..a87fc8af 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,10 @@ "prepare": "husky" }, "devDependencies": { + "@changesets/changelog-github": "^0.5", "@changesets/cli": "^2.29.7", - "@devup-ui/vite-plugin": "workspace:*", "@devup-ui/eslint-plugin": "workspace:*", + "@devup-ui/vite-plugin": "workspace:*", "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "14.6.1", @@ -24,14 +25,14 @@ "@vitest/coverage-v8": "^3.2.4", "eslint": "^9.36.0", "eslint-plugin-devup": "^2.0.5", + "eslint-plugin-eslint-plugin": "^7.0.0", "eslint-plugin-jsonc": "^2.20.1", "eslint-plugin-mdx": "^3.6.2", "globals": "^16.4.0", "happy-dom": "^19.0.1", "husky": "^9.1.7", "lint-staged": "^16.2.3", - "vitest": "^3.2.4", - "eslint-plugin-eslint-plugin": "^7.0.0" + "vitest": "^3.2.4" }, "author": "devfive", "packageManager": "pnpm@10.17.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ca913e1..38413a31 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: .: devDependencies: + '@changesets/changelog-github': + specifier: ^0.5 + version: 0.5.1 '@changesets/cli': specifier: ^2.29.7 version: 2.29.7(@types/node@24.5.2) @@ -1422,6 +1425,9 @@ packages: '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + '@changesets/changelog-github@0.5.1': + resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} + '@changesets/cli@2.29.7': resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} hasBin: true @@ -1435,6 +1441,9 @@ packages: '@changesets/get-dependents-graph@2.1.3': resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + '@changesets/get-github-info@0.6.0': + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + '@changesets/get-release-plan@4.0.13': resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} @@ -4171,6 +4180,9 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -4277,6 +4289,10 @@ packages: dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -5908,6 +5924,15 @@ packages: resolution: {integrity: sha512-Ap+L9HznXAVeJj3TJ1op6M6bg5xtTq8L5CU/PJxtkhea/DrIxdTknGKIECKd/v/Lgql95iuMAYvIzBNd0pmcMg==} engines: {node: '>= 4'} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-releases@2.0.21: resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} @@ -6895,6 +6920,9 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -7217,6 +7245,9 @@ packages: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-sources@3.3.3: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} @@ -7238,6 +7269,9 @@ packages: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -8219,6 +8253,14 @@ snapshots: dependencies: '@changesets/types': 6.1.0 + '@changesets/changelog-github@0.5.1': + dependencies: + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.1.0 + dotenv: 8.6.0 + transitivePeerDependencies: + - encoding + '@changesets/cli@2.29.7(@types/node@24.5.2)': dependencies: '@changesets/apply-release-plan': 7.0.13 @@ -8273,6 +8315,13 @@ snapshots: picocolors: 1.1.1 semver: 7.7.2 + '@changesets/get-github-info@0.6.0': + dependencies: + dataloader: 1.4.0 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + '@changesets/get-release-plan@4.0.13': dependencies: '@changesets/assemble-release-plan': 6.0.9 @@ -11599,6 +11648,8 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + dataloader@1.4.0: {} + de-indent@1.0.2: {} debug@3.2.7: @@ -11676,6 +11727,8 @@ snapshots: '@babel/runtime': 7.28.4 csstype: 3.1.3 + dotenv@8.6.0: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -13763,6 +13816,10 @@ snapshots: dependencies: path-is-absolute: 1.0.1 + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-releases@2.0.21: {} nopt@7.2.1: @@ -14922,6 +14979,8 @@ snapshots: dependencies: is-number: 7.0.0 + tr46@0.0.3: {} + trim-lines@3.0.1: {} trough@2.2.0: {} @@ -15342,6 +15401,8 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + webidl-conversions@3.0.1: {} + webpack-sources@3.3.3: {} webpack-virtual-modules@0.6.2: {} @@ -15380,6 +15441,11 @@ snapshots: whatwg-mimetype@3.0.0: {} + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 From e491eb694189a26eeacf49fc9003247e93428d75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 07:09:58 +0000 Subject: [PATCH 37/59] Version Packages --- .changeset/wise-impalas-jump.md | 5 ----- packages/eslint-plugin/CHANGELOG.md | 7 +++++++ packages/eslint-plugin/package.json | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) delete mode 100644 .changeset/wise-impalas-jump.md create mode 100644 packages/eslint-plugin/CHANGELOG.md diff --git a/.changeset/wise-impalas-jump.md b/.changeset/wise-impalas-jump.md deleted file mode 100644 index 0db2316f..00000000 --- a/.changeset/wise-impalas-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@devup-ui/eslint-plugin': major ---- - -Implement rules diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md new file mode 100644 index 00000000..25106808 --- /dev/null +++ b/packages/eslint-plugin/CHANGELOG.md @@ -0,0 +1,7 @@ +# @devup-ui/eslint-plugin + +## 1.0.0 + +### Major Changes + +- [#401](https://github.com/dev-five-git/devup-ui/pull/401) [`8e8cd31`](https://github.com/dev-five-git/devup-ui/commit/8e8cd3198ef837efb26958a292a8333584ab3f22) Thanks [@owjs3901](https://github.com/owjs3901)! - Implement rules diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 61c09fd7..a8517064 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@devup-ui/eslint-plugin", - "version": "0.1.0", + "version": "1.0.0", "description": "eslint plugin for devup-ui", "main": "dist/index.cjs", "type": "module", From b41b373bfbccd21a3547a5005f09b738243cae55 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 1 Oct 2025 22:07:12 +0900 Subject: [PATCH 38/59] Fix package.json --- packages/eslint-plugin/package.json | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 61c09fd7..6c30757c 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,7 +1,23 @@ { "name": "@devup-ui/eslint-plugin", + "description": "Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor", + "repository": "https://github.com/dev-five-git/devup-ui", + "author": "devfive", + "license": "Apache-2.0", + "homepage": "https://devup-ui.com", + "bugs": { + "url": "https://github.com/dev-five-git/devup-ui/issues", + "email": "contact@devfive.kr" + }, + "keywords": [ + "css", + "css-in-js", + "css-in-js-preprocessor", + "css-in-js-framework", + "react", + "eslint" + ], "version": "0.1.0", - "description": "eslint plugin for devup-ui", "main": "dist/index.cjs", "type": "module", "scripts": { @@ -10,20 +26,19 @@ "lint": "eslint", "build": "tsc && vite build" }, + "publishConfig": { + "access": "public" + }, "exports": { ".": { "import": "./dist/index.js", "require": "./dist/index.cjs" } }, + "types": "./dist/index.d.ts", "files": [ "dist" ], - "keywords": [ - "eslint" - ], - "author": "devfive", - "license": "ISC", "dependencies": { "typescript-eslint": "^8.44", "@typescript-eslint/utils": "^8.44" From ea8b1c8ba95b96598c2e5321d6d63a1afc9a54bf Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Thu, 2 Oct 2025 00:18:21 +0900 Subject: [PATCH 39/59] Add devup-ui/components to default noDeps --- .changeset/tall-tires-taste.md | 5 + apps/rsbuild/package.json | 2 +- benchmark/next-stylex/package.json | 6 +- eslint.config.mjs | 26 - package.json | 10 +- packages/components/package.json | 14 +- packages/eslint-plugin/package.json | 8 +- packages/next-plugin/package.json | 2 +- packages/react/package.json | 2 +- packages/reset-css/package.json | 2 +- packages/rsbuild-plugin/package.json | 4 +- packages/vite-plugin/package.json | 2 +- packages/vite-plugin/src/plugin.ts | 2 +- packages/webpack-plugin/package.json | 2 +- pnpm-lock.yaml | 3400 ++++++++++++-------------- 15 files changed, 1650 insertions(+), 1837 deletions(-) create mode 100644 .changeset/tall-tires-taste.md diff --git a/.changeset/tall-tires-taste.md b/.changeset/tall-tires-taste.md new file mode 100644 index 00000000..b388c0cb --- /dev/null +++ b/.changeset/tall-tires-taste.md @@ -0,0 +1,5 @@ +--- +'@devup-ui/vite-plugin': patch +--- + +Add components to noDep diff --git a/apps/rsbuild/package.json b/apps/rsbuild/package.json index 74760dd1..fe06fb11 100644 --- a/apps/rsbuild/package.json +++ b/apps/rsbuild/package.json @@ -16,7 +16,7 @@ "@devup-ui/react": "workspace:*" }, "devDependencies": { - "@rsbuild/core": "^1.5.12", + "@rsbuild/core": "^1.5.13", "@rsbuild/plugin-react": "^1.4.1", "@devup-ui/rsbuild-plugin": "workspace:*" } diff --git a/benchmark/next-stylex/package.json b/benchmark/next-stylex/package.json index be3cd1b8..26f023fa 100644 --- a/benchmark/next-stylex/package.json +++ b/benchmark/next-stylex/package.json @@ -26,8 +26,8 @@ "@stylexjs/babel-plugin": "^0.16.0", "@stylexjs/eslint-plugin": "^0.16.0", "@stylexjs/nextjs-plugin": "^0.11.1", - "@types/node": "24.5.2", - "@types/react": "19.1.15", + "@types/node": "24.6.1", + "@types/react": "19.1.16", "@types/react-dom": "19.1.9", "@types/react-test-renderer": "^19.1.0", "eslint": "9.36.0", @@ -36,6 +36,6 @@ "react-test-renderer": "^19.1.1", "rimraf": "^6.0.1", "ts_dependency_graph": "^2.1.1", - "typescript": "5.9.2" + "typescript": "5.9.3" } } diff --git a/eslint.config.mjs b/eslint.config.mjs index 92a0b094..1551e0ae 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,14 +1,10 @@ -import devupUIEslintPlugin from '@devup-ui/eslint-plugin' import { configs } from 'eslint-plugin-devup' import eslintPlugin from 'eslint-plugin-eslint-plugin' import jsonc from 'eslint-plugin-jsonc' -import * as mdx from 'eslint-plugin-mdx' import globals from 'globals' export default [ { ignores: [ - '**/coverage', - 'target', 'benchmark/next-panda-css/styled-system', 'bindings/devup-ui-wasm/pkg', ], @@ -52,31 +48,9 @@ export default [ 'react/no-children-prop': 'off', }, }, - // md, mdx rules - { - ...mdx.flat, - files: ['**/*.{md,mdx}'], - processor: mdx.createRemarkProcessor({ - lintCodeBlocks: true, - }), - }, - // md, mdx code blocks rules - { - ...mdx.flatCodeBlocks, - files: ['**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], - rules: { - ...mdx.flatCodeBlocks.rules, - 'react/jsx-no-undef': 'off', - 'react/jsx-tag-spacing': ['error', { beforeClosing: 'never' }], - }, - }, // eslint-plugin rule { ...eslintPlugin.configs.recommended, // files: ['packages/eslint-plugin/**/*.{js,jsx,ts,tsx}'], }, - { - ignores: ['**/*.md'], - }, - ...devupUIEslintPlugin.configs.recommended, ] diff --git a/package.json b/package.json index a87fc8af..9a941a8e 100644 --- a/package.json +++ b/package.json @@ -18,18 +18,18 @@ "@changesets/cli": "^2.29.7", "@devup-ui/eslint-plugin": "workspace:*", "@devup-ui/vite-plugin": "workspace:*", - "@testing-library/jest-dom": "^6.8.0", + "@testing-library/jest-dom": "^6.9.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "14.6.1", - "@types/node": "^24.5.2", + "@types/node": "^24.6.1", "@vitest/coverage-v8": "^3.2.4", "eslint": "^9.36.0", - "eslint-plugin-devup": "^2.0.5", + "eslint-plugin-devup": "^2.0.8", "eslint-plugin-eslint-plugin": "^7.0.0", "eslint-plugin-jsonc": "^2.20.1", "eslint-plugin-mdx": "^3.6.2", "globals": "^16.4.0", - "happy-dom": "^19.0.1", + "happy-dom": "^19.0.2", "husky": "^9.1.7", "lint-staged": "^16.2.3", "vitest": "^3.2.4" @@ -37,6 +37,6 @@ "author": "devfive", "packageManager": "pnpm@10.17.1", "resolutions": { - "vite": "^6" + "@devup-ui/eslint-plugin": "workspace:*" } } diff --git a/packages/components/package.json b/packages/components/package.json index acd704bd..e0e7bfd7 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -49,14 +49,14 @@ }, "devDependencies": { "@devup-ui/vite-plugin": "workspace:*", - "@storybook/addon-docs": "^9.1.8", - "@storybook/addon-onboarding": "^9.1.8", - "@storybook/react-vite": "^9.1.8", - "@types/react": "^19.1.15", - "eslint-plugin-storybook": "^9.1.8", + "@storybook/addon-docs": "^9.1.10", + "@storybook/addon-onboarding": "^9.1.10", + "@storybook/react-vite": "^9.1.10", + "@types/react": "^19.1.16", + "eslint-plugin-storybook": "^9.1.10", "rollup-plugin-preserve-directives": "^0.4.0", - "storybook": "^9.1.8", - "typescript": "^5.9.2", + "storybook": "^9.1.10", + "typescript": "^5.9.3", "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4" diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 342f9a45..7115a2a0 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -40,12 +40,12 @@ "dist" ], "dependencies": { - "typescript-eslint": "^8.44", - "@typescript-eslint/utils": "^8.44" + "typescript-eslint": "^8.45", + "@typescript-eslint/utils": "^8.45" }, "devDependencies": { - "@typescript-eslint/rule-tester": "^8.44", - "typescript": "^5.9.2", + "@typescript-eslint/rule-tester": "^8.45", + "typescript": "^5.9.3", "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4" } diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index 29e3e7b7..a243a675 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -49,7 +49,7 @@ "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4", - "typescript": "^5.9.2", + "typescript": "^5.9.3", "@types/webpack": "^5.28.5" }, "peerDependencies": { diff --git a/packages/react/package.json b/packages/react/package.json index 1112356a..36b54480 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -46,7 +46,7 @@ "rollup-plugin-preserve-directives": "^0.4.0", "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", - "typescript": "^5.9.2", + "typescript": "^5.9.3", "@types/react": "^19" }, "peerDependencies": { diff --git a/packages/reset-css/package.json b/packages/reset-css/package.json index e0da71f5..7cfd0c6f 100644 --- a/packages/reset-css/package.json +++ b/packages/reset-css/package.json @@ -42,7 +42,7 @@ "@devup-ui/react": "workspace:*" }, "devDependencies": { - "typescript": "^5.9.2", + "typescript": "^5.9.3", "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "rollup-plugin-preserve-directives": "^0.4.0" diff --git a/packages/rsbuild-plugin/package.json b/packages/rsbuild-plugin/package.json index 3eef9e6e..7ac11c0a 100644 --- a/packages/rsbuild-plugin/package.json +++ b/packages/rsbuild-plugin/package.json @@ -56,10 +56,10 @@ "@rsbuild/core": "*" }, "devDependencies": { - "@rsbuild/core": "^1.5.12", + "@rsbuild/core": "^1.5.13", "vite": "^7.1.7", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4", - "typescript": "^5.9.2" + "typescript": "^5.9.3" } } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index ccf470df..f7ffeea8 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "vite-plugin-dts": "^4.5.4", - "typescript": "^5.9.2" + "typescript": "^5.9.3" }, "peerDependencies": { "vite": "*", diff --git a/packages/vite-plugin/src/plugin.ts b/packages/vite-plugin/src/plugin.ts index 1650cc50..a4ad2685 100644 --- a/packages/vite-plugin/src/plugin.ts +++ b/packages/vite-plugin/src/plugin.ts @@ -108,7 +108,7 @@ export function DevupUI({ }, define, optimizeDeps: { - exclude: include, + exclude: [...include, '@devup-ui/components'], }, ssr: { noExternal: [...include, /@devup-ui/], diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 960d2ca8..6fa6fb65 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -59,6 +59,6 @@ "@types/webpack": "^5.28.5", "vite-plugin-dts": "^4.5.4", "vitest": "^3.2.4", - "typescript": "^5.9.2" + "typescript": "^5.9.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38413a31..aa3fb19b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - vite: ^6 + '@devup-ui/eslint-plugin': workspace:* importers: @@ -16,7 +16,7 @@ importers: version: 0.5.1 '@changesets/cli': specifier: ^2.29.7 - version: 2.29.7(@types/node@24.5.2) + version: 2.29.7(@types/node@24.6.1) '@devup-ui/eslint-plugin': specifier: workspace:* version: link:packages/eslint-plugin @@ -24,41 +24,41 @@ importers: specifier: workspace:* version: link:packages/vite-plugin '@testing-library/jest-dom': - specifier: ^6.8.0 - version: 6.8.0 + specifier: ^6.9.0 + version: 6.9.0 '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@testing-library/user-event': specifier: 14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) '@types/node': - specifier: ^24.5.2 - version: 24.5.2 + specifier: ^24.6.1 + version: 24.6.1 '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) eslint: specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) + version: 9.36.0(jiti@2.6.1) eslint-plugin-devup: - specifier: ^2.0.5 - version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + specifier: ^2.0.8 + version: 2.0.8(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) eslint-plugin-eslint-plugin: specifier: ^7.0.0 - version: 7.0.0(eslint@9.36.0(jiti@2.6.0)) + version: 7.0.0(eslint@9.36.0(jiti@2.6.1)) eslint-plugin-jsonc: specifier: ^2.20.1 - version: 2.20.1(eslint@9.36.0(jiti@2.6.0)) + version: 2.20.1(eslint@9.36.0(jiti@2.6.1)) eslint-plugin-mdx: specifier: ^3.6.2 - version: 3.6.2(eslint@9.36.0(jiti@2.6.0)) + version: 3.6.2(eslint@9.36.0(jiti@2.6.1)) globals: specifier: ^16.4.0 version: 16.4.0 happy-dom: - specifier: ^19.0.1 - version: 19.0.1 + specifier: ^19.0.2 + version: 19.0.2 husky: specifier: ^9.1.7 version: 9.1.7 @@ -67,7 +67,7 @@ importers: version: 16.2.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) apps/landing: dependencies: @@ -82,13 +82,13 @@ importers: version: link:../../packages/reset-css '@mdx-js/loader': specifier: ^3.1.1 - version: 3.1.1(webpack@5.101.3) + version: 3.1.1(webpack@5.102.0) '@mdx-js/react': specifier: ^3.1.1 - version: 3.1.1(@types/react@19.1.13)(react@19.1.1) + version: 3.1.1(@types/react@19.1.16)(react@19.1.1) '@next/mdx': specifier: ^15.5.4 - version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.101.3))(@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1)) + version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.102.0))(@mdx-js/react@3.1.1(@types/react@19.1.16)(react@19.1.1)) '@types/mdx': specifier: ^2.0.13 version: 2.0.13 @@ -112,7 +112,7 @@ importers: version: 19.1.1(react@19.1.1) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@19.1.13)(react@19.1.1) + version: 10.1.0(@types/react@19.1.16)(react@19.1.1) react-syntax-highlighter: specifier: ^15.6.6 version: 15.6.6(react@19.1.1) @@ -128,13 +128,13 @@ importers: version: 3.1.2 '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) '@types/react-syntax-highlighter': specifier: ^15.5.13 version: 15.5.13 @@ -146,7 +146,7 @@ importers: version: 15.0.1 typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 apps/next: dependencies: @@ -168,16 +168,16 @@ importers: version: link:../../packages/next-plugin '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 apps/rsbuild: dependencies: @@ -195,11 +195,11 @@ importers: specifier: workspace:* version: link:../../packages/rsbuild-plugin '@rsbuild/core': - specifier: ^1.5.12 - version: 1.5.12 + specifier: ^1.5.13 + version: 1.5.13 '@rsbuild/plugin-react': specifier: ^1.4.1 - version: 1.4.1(@rsbuild/core@1.5.12) + version: 1.4.1(@rsbuild/core@1.5.13) apps/vite: dependencies: @@ -221,22 +221,22 @@ importers: version: link:../../packages/vite-plugin '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) apps/vite-lib: dependencies: @@ -252,31 +252,31 @@ importers: version: link:../../packages/vite-plugin '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) benchmark/next-chakra-ui: dependencies: '@chakra-ui/react': specifier: ^3.27.0 - version: 3.27.0(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 3.27.0(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.1.13)(react@19.1.1) + version: 11.14.0(@types/react@19.1.16)(react@19.1.1) next: specifier: ^15.5.4 version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -295,16 +295,16 @@ importers: devDependencies: '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-devup-ui: dependencies: @@ -326,16 +326,16 @@ importers: version: link:../../packages/next-plugin '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-devup-ui-single: dependencies: @@ -357,22 +357,22 @@ importers: version: link:../../packages/next-plugin '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-kuma-ui: dependencies: '@kuma-ui/core': specifier: ^1.5.9 - version: 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + version: 1.5.9(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) next: specifier: ^15.5.4 version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -385,31 +385,31 @@ importers: devDependencies: '@kuma-ui/next-plugin': specifier: ^1.3.3 - version: 1.3.3(@babel/core@7.28.4)(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3) + version: 1.3.3(@babel/core@7.28.4)(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.102.0) '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-mui: dependencies: '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.1.13)(react@19.1.1) + version: 11.14.0(@types/react@19.1.16)(react@19.1.1) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1) '@mui/material': specifier: 7.3.2 - version: 7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 7.3.2(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: specifier: ^15.5.4 version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -425,16 +425,16 @@ importers: devDependencies: '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-panda-css: dependencies: @@ -450,19 +450,19 @@ importers: devDependencies: '@pandacss/dev': specifier: ^1.4 - version: 1.4.0(typescript@5.9.2) + version: 1.4.1(typescript@5.9.3) '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-stylex: dependencies: @@ -507,23 +507,23 @@ importers: specifier: ^0.11.1 version: 0.11.1(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) '@types/node': - specifier: 24.5.2 - version: 24.5.2 + specifier: 24.6.1 + version: 24.6.1 '@types/react': - specifier: 19.1.15 - version: 19.1.15 + specifier: 19.1.16 + version: 19.1.16 '@types/react-dom': specifier: 19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@types/react-test-renderer': specifier: ^19.1.0 version: 19.1.0 eslint: specifier: 9.36.0 - version: 9.36.0(jiti@2.6.0) + version: 9.36.0(jiti@2.6.1) eslint-config-next: specifier: 15.5.4 - version: 15.5.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + version: 15.5.4(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -537,8 +537,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 typescript: - specifier: 5.9.2 - version: 5.9.2 + specifier: 5.9.3 + version: 5.9.3 benchmark/next-tailwind: dependencies: @@ -560,13 +560,13 @@ importers: version: 4.1.13 '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -575,7 +575,7 @@ importers: version: 4.1.13 typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 benchmark/next-vanilla-extract: dependencies: @@ -597,19 +597,19 @@ importers: devDependencies: '@types/node': specifier: ^24 - version: 24.5.2 + version: 24.6.1 '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 '@types/react-dom': specifier: ^19 - version: 19.1.9(@types/react@19.1.13) + version: 19.1.9(@types/react@19.1.16) '@vanilla-extract/next-plugin': specifier: ^2.4.14 - version: 2.4.14(babel-plugin-macros@3.1.0)(next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.101.3) + version: 2.4.14(babel-plugin-macros@3.1.0)(next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.102.0) typescript: specifier: ^5 - version: 5.9.2 + version: 5.9.3 bindings/devup-ui-wasm: {} @@ -632,60 +632,60 @@ importers: specifier: workspace:* version: link:../vite-plugin '@storybook/addon-docs': - specifier: ^9.1.8 - version: 9.1.8(@types/react@19.1.15)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + specifier: ^9.1.10 + version: 9.1.10(@types/react@19.1.16)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/addon-onboarding': - specifier: ^9.1.8 - version: 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + specifier: ^9.1.10 + version: 9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/react-vite': - specifier: ^9.1.8 - version: 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^9.1.10 + version: 9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.52.3)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 eslint-plugin-storybook: - specifier: ^9.1.8 - version: 9.1.8(eslint@9.36.0(jiti@2.6.0))(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) + specifier: ^9.1.10 + version: 9.1.10(eslint@9.36.0(jiti@2.6.1))(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.3) rollup-plugin-preserve-directives: specifier: ^0.4.0 - version: 0.4.0(rollup@4.51.0) + version: 0.4.0(rollup@4.52.3) storybook: - specifier: ^9.1.8 - version: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^9.1.10 + version: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/eslint-plugin: dependencies: '@typescript-eslint/utils': - specifier: ^8.44 - version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + specifier: ^8.45 + version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) typescript-eslint: - specifier: ^8.44 - version: 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + specifier: ^8.45 + version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) devDependencies: '@typescript-eslint/rule-tester': - specifier: ^8.44 - version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + specifier: ^8.45 + version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/next-plugin: dependencies: @@ -697,23 +697,23 @@ importers: version: 4.26.2 next: specifier: ^15.5 - version: 15.5.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) devDependencies: '@types/webpack': specifier: ^5.28.5 version: 5.28.5 typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/react: dependencies: @@ -726,19 +726,19 @@ importers: devDependencies: '@types/react': specifier: ^19 - version: 19.1.13 + version: 19.1.16 rollup-plugin-preserve-directives: specifier: ^0.4.0 - version: 0.4.0(rollup@4.51.0) + version: 0.4.0(rollup@4.52.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/reset-css: dependencies: @@ -748,16 +748,16 @@ importers: devDependencies: rollup-plugin-preserve-directives: specifier: ^0.4.0 - version: 0.4.0(rollup@4.51.0) + version: 0.4.0(rollup@4.52.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/rsbuild-plugin: dependencies: @@ -766,20 +766,20 @@ importers: version: link:../../bindings/devup-ui-wasm devDependencies: '@rsbuild/core': - specifier: ^1.5.12 - version: 1.5.12 + specifier: ^1.5.13 + version: 1.5.13 typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages/vite-plugin: dependencies: @@ -787,15 +787,15 @@ importers: specifier: workspace:* version: link:../../bindings/devup-ui-wasm vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: '*' + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) devDependencies: typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) packages/webpack-plugin: dependencies: @@ -807,17 +807,17 @@ importers: specifier: ^5.28.5 version: 5.28.5 typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^6 - version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) packages: @@ -832,8 +832,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@ark-ui/react@5.25.0': - resolution: {integrity: sha512-+r91hfLQNmGbM37rvwu6Ppy7Xaa1Dww80spn49xHhiS8ZCYQbZyPNzgOEVoSjURiroLkLdQdh869OscfczkAyA==} + '@ark-ui/react@5.25.1': + resolution: {integrity: sha512-5ncHjwMuCmCDz+a3PD2voFJk+3VDmGWZ3Hs6WQIxEztIWbXC9sEj86BkpcSV84s57ELCALIXm9fQk4TUXGoZlw==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' @@ -1498,6 +1498,9 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 + '@devup-ui/eslint-plugin@1.0.0': + resolution: {integrity: sha512-nbafyA/qIYOQjBt+0iNbQvP/ph6Hc360y6OV4Okj+Pj/A4B9OdT/ujeTmv4FVXoDMkhlAexeYJG3AzXnqvw0/A==} + '@dual-bundle/import-meta-resolve@4.2.1': resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} @@ -1878,10 +1881,6 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.35.0': - resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.36.0': resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2084,7 +2083,7 @@ packages: resolution: {integrity: sha512-J4BaTocTOYFkMHIra1JDWrMWpNmBl4EkplIwHEsV8aeUOtdWjwSnln9U7twjMFTAEB7mptNtSKyVi1Y2W9sDJw==} peerDependencies: typescript: '>= 4.3.x' - vite: ^6 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true @@ -2174,11 +2173,11 @@ packages: '@types/react': '>=16' react: '>=16' - '@microsoft/api-extractor-model@7.30.7': - resolution: {integrity: sha512-TBbmSI2/BHpfR9YhQA7nH0nqVmGgJ0xH0Ex4D99/qBDAUpnhA2oikGmdXanbw9AWWY/ExBYIpkmY8dBHdla3YQ==} + '@microsoft/api-extractor-model@7.30.9': + resolution: {integrity: sha512-oKExWajACw0hO9Z0ybWvCZZhWK0kZcA/3rJieZmh4e5difg9II00kvmFMIg1KOrFuErNOZMCVY45nEm9a/orvg==} - '@microsoft/api-extractor@7.52.13': - resolution: {integrity: sha512-K6/bBt8zZfn9yc06gNvA+/NlBGJC/iJlObpdufXHEJtqcD4Dln4ITCLZpwP3DNZ5NyBFeTkKdv596go3V72qlA==} + '@microsoft/api-extractor@7.52.15': + resolution: {integrity: sha512-0Pl2Xew403zyteYm0IiTZ2ZuKF4Ep4/SD6kXMC1CtvVIv3hNyG5+SY/vXS3Rg9fHydvMk+FYordaC9WpTnPcVQ==} hasBin: true '@microsoft/tsdoc-config@0.17.1': @@ -2291,9 +2290,6 @@ packages: '@napi-rs/wasm-runtime@1.0.5': resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} - '@next/env@15.5.3': - resolution: {integrity: sha512-RSEDTRqyihYXygx/OJXwvVupfr9m04+0vH8vyy0HfZ7keRto6VX9BbEk0J2PUk0VGy6YhklJUSrgForov5F9pw==} - '@next/env@15.5.4': resolution: {integrity: sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==} @@ -2311,96 +2307,48 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@15.5.3': - resolution: {integrity: sha512-nzbHQo69+au9wJkGKTU9lP7PXv0d1J5ljFpvb+LnEomLtSbJkbZyEs6sbF3plQmiOB2l9OBtN2tNSvCH1nQ9Jg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - '@next/swc-darwin-arm64@15.5.4': resolution: {integrity: sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.3': - resolution: {integrity: sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - '@next/swc-darwin-x64@15.5.4': resolution: {integrity: sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.3': - resolution: {integrity: sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-gnu@15.5.4': resolution: {integrity: sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.3': - resolution: {integrity: sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-musl@15.5.4': resolution: {integrity: sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.3': - resolution: {integrity: sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-gnu@15.5.4': resolution: {integrity: sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.3': - resolution: {integrity: sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-musl@15.5.4': resolution: {integrity: sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.3': - resolution: {integrity: sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - '@next/swc-win32-arm64-msvc@15.5.4': resolution: {integrity: sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.3': - resolution: {integrity: sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@next/swc-win32-x64-msvc@15.5.4': resolution: {integrity: sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==} engines: {node: '>= 10'} @@ -2447,57 +2395,57 @@ packages: resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} engines: {node: ^16.14.0 || >=18.0.0} - '@pandacss/config@1.4.0': - resolution: {integrity: sha512-g/9t1V6k44rVqfQvsHBwB6D+GPUYRffHd1dnCh+OXIt/sYofmEwiVVoSmc1C0ohFimyNxMe2aPn7BctIRZWrqg==} + '@pandacss/config@1.4.1': + resolution: {integrity: sha512-AyWP41ByPQb+3gx1iIt3CgsSdlrS6haNPjiGW0sAVOVSNlwbx88HyjlFcFglUJE3ycVJ154ZgtzROGdChvHaYw==} - '@pandacss/core@1.4.0': - resolution: {integrity: sha512-BTMFFwaTCOAOxt27OQZwBErECtr4wUc/ZSM8ANi0AWryGJGx0jb4xmKhAu5B85B2zpxt9BkyNs8QC6UOt6DWgA==} + '@pandacss/core@1.4.1': + resolution: {integrity: sha512-RVx5Ff+p3Sg7S6r9H0kcWei3JaQ86unEPcMT/7m5zIQeTWERiy9v3JQWmHkYBUA4nApC1naXyJgd2uzsf5KG0w==} - '@pandacss/dev@1.4.0': - resolution: {integrity: sha512-/aS6WQHUjeoa1V+tW/bykZPqJ1jLIWz4gRgkRxCxpaS/ziSdYptZYVmcASsTWVtFamr8uEotB3hZejuLw6B9IA==} + '@pandacss/dev@1.4.1': + resolution: {integrity: sha512-FG2+UNDziLe3Vb4kerqnGcupgsOjz7uV9GB06wSf0J+TT4z6ysON4UmW4ZS5eqg5R9/7H4EJEvv91wX4CxHPAg==} hasBin: true - '@pandacss/extractor@1.4.0': - resolution: {integrity: sha512-4JBZMyAH9T1HJPtEUQyzZH2GNi/qqCHHUdr+yY0v1BegUJvQgDXp/TNBFZuiGrfxUbd5Up6MqsLwKL3//e+KMg==} + '@pandacss/extractor@1.4.1': + resolution: {integrity: sha512-sv75GQOBmvekKDAbcJRMxqAKsVcv62DYus5+0s3miOmRitZMoHKcvfcsfq8jicrVKow/L52pwkfrZWEDWoS7dw==} - '@pandacss/generator@1.4.0': - resolution: {integrity: sha512-HSZ3LRVTb35lgB6fBrkeU2hil8wTp/mkzQEn0cqiEzlS0dHbilGQrFYmZOjcPZWD/gK2YKcFBuwNISWFZkLiKQ==} + '@pandacss/generator@1.4.1': + resolution: {integrity: sha512-DK+yVPiLlC9A27TysP4DekAZNzxKqO6UrqYtS/V3k46PoWFDv14e1s4OxiCMv3/rrmY5Szs/dP54oRb6Xz4EPQ==} '@pandacss/is-valid-prop@0.54.0': resolution: {integrity: sha512-UhRgg1k9VKRCBAHl+XUK3lvN0k9bYifzYGZOqajDid4L1DyU813A1L0ZwN4iV9WX5TX3PfUugqtgG9LnIeFGBQ==} - '@pandacss/is-valid-prop@1.4.0': - resolution: {integrity: sha512-c3FX90/ogkhBEXcjkKdeICM+cg3w4gvJ9Urkoy+Ien+IJNCrPwjesX82k+ystY/teTzMF9B9g4sGAjkkRsd3ug==} + '@pandacss/is-valid-prop@1.4.1': + resolution: {integrity: sha512-2M8AsL0fDx6tgkqRaN/4Gz2Owh7EluUWb5gmwC3zpStVQkNb4kY7BCVR/+Gg+kWB9QoFgyyeb5MfKSCLcGXwTQ==} - '@pandacss/logger@1.4.0': - resolution: {integrity: sha512-d3FZVyPGIk87uWCMegtiGZSHAI7IA4MC3nUFpkCzBPaJgZfkVSwJjBr8Qz/Hz3S219i66a3vy3UxyCgc7omiHg==} + '@pandacss/logger@1.4.1': + resolution: {integrity: sha512-X2mnaRU2zxTdOILrN/CcR3PPqnganlZjRPg43pg6wJ8/ccQd/sb2ualIo1X6E1vfFRi60XnzBfm7slqUFIBtuA==} - '@pandacss/node@1.4.0': - resolution: {integrity: sha512-67axJaUcGDzvCOL5OTbMzSqrxLgM4t3JJNnSFKLeseaCAXqx7G97cJxP/sCXVWXoE47J/O7Sd4xaCQMMu4D2zA==} + '@pandacss/node@1.4.1': + resolution: {integrity: sha512-61Cta/7E+pUiEzKDMg1te2q/05b903f+ASQqIO9ZU8fzNilt0BB19sbsrIPfQ5LjM/T/fGdfSMDmf1ws2ETmng==} - '@pandacss/parser@1.4.0': - resolution: {integrity: sha512-rEOaCI3cgoIs1vqTS8YH3L+Ex8WsW1deGmBo3Hl90mXDcqfkVJxBEAiTzFOCQAYpTUwX+lXzHiCGZQLPvBIFqQ==} + '@pandacss/parser@1.4.1': + resolution: {integrity: sha512-lWiekfQ/bBOVINLE02uiCcGEeRHpI4K6b2fKMIOokuHWsrLj96GGsFt4ViZlVAiF8bTkWefcIUnOTiboNIE+2A==} - '@pandacss/postcss@1.4.0': - resolution: {integrity: sha512-t8BhJeNNV5H5PhqGrA6eER5Yc+Ph45yxZZewZ1YaanuRAWJqBja63x+s4by8aAk6PCe9+czM04BKfafZ3dXZCQ==} + '@pandacss/postcss@1.4.1': + resolution: {integrity: sha512-X7VK/z4jDJakW+Q50BsbRqt+ifx5XIKkh7SCW0Xh4TCKVqJHnK5LsqQbyN4FH+T0eHzJCD0jVs9dxDbq5gjM+A==} - '@pandacss/preset-base@1.4.0': - resolution: {integrity: sha512-3qo/HdDezCqa6eItZypYiSnm+Sr7SxQtYST4n0UvLYCo3+crvR4q4CwaQG7UNq48abeVIHbN9Ux8kBVP6jFSmA==} + '@pandacss/preset-base@1.4.1': + resolution: {integrity: sha512-j7ivzv7PJ70hDB+/fU9688vr4JplFNEN0jiCPOVJjV3DKRLhK/AMemGp5ofTTdFNh85l3hr7ZsXgnTllSMzCHg==} - '@pandacss/preset-panda@1.4.0': - resolution: {integrity: sha512-ZumZ7mQBqjpne1GrhqSuIW8/9KY02xI4N8vtD1F8poorVG2JC97QF+5FRtUH8hir7f94xR08G33wTe8qefSP7A==} + '@pandacss/preset-panda@1.4.1': + resolution: {integrity: sha512-hjSWg2DjmVNF8dT2mauEoWgOUcDWHvHKVr56X69ozPfnzkOyvWCxce0IJHpW7atsiYZY/c7yjVPvE4yMolCfCg==} - '@pandacss/reporter@1.4.0': - resolution: {integrity: sha512-ofk6WVhG/nf8t4d7kE9lcLcI0gQDhG8Qedtf+tHncRkVPN9iRpwb2zCXbcg5qjB4q3k5mlTcA+2mj1fLssvnKA==} + '@pandacss/reporter@1.4.1': + resolution: {integrity: sha512-PbFRh1sQ54bWlcWLMkJnKd0zc3JNVLRBk2OMQ2cc94slEi95aLpCYmfk3c0ti0ElibQxApvIqQ6HwFKOiv4zRA==} - '@pandacss/shared@1.4.0': - resolution: {integrity: sha512-84XTuJbsjEvOTQty3MnAQsF0STG54Mwnwhx/pvbvKbXcisLAw/xjn5Z07zo7EBgqbyf3vZxK1+yeIWCwvHhj0g==} + '@pandacss/shared@1.4.1': + resolution: {integrity: sha512-xEEFlOf8r06iPLFPsqH27HrS2L9pqr4SPNjEMhd1HFk1NGHKB9HPXlLFbObnEKLa9LQBv6XMp8rPypu5w48HDQ==} - '@pandacss/token-dictionary@1.4.0': - resolution: {integrity: sha512-9hTH1Y3SiXZN0LI5KmLMsT7AZjgvL+JcuOhNTCD5lKOe9Z1sbVDEbQFeg99vm/I99z385w9qOQXw8EfDLlLazQ==} + '@pandacss/token-dictionary@1.4.1': + resolution: {integrity: sha512-VGpRWi9pcQi6XIfK7Zyhp45vETi7oUrdp5UK+8TOq+R8jtI6VODo+NxQgkbwAyXj7XBeO7nY4+e/lrjsYo+zmQ==} - '@pandacss/types@1.4.0': - resolution: {integrity: sha512-lXN3GiPDSjBNXze9LUGEIHtbH8/e/xhb0i4BBDCQAjbt1+My0VHe4OTE1Bg/dD8X2oKAQIB0VsRl4Wf2DRDm7g==} + '@pandacss/types@1.4.1': + resolution: {integrity: sha512-JsoFZQ0uc8Pq2ZSee9gbS7treyuKOxUQwtgdKq+1Vew3R2ZyCJ0vW61dT2LY4Lh6l46ICKn3uGDWnUjF8ourAA==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -2522,113 +2470,118 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.51.0': - resolution: {integrity: sha512-VyfldO8T/C5vAXBGIobrAnUE+VJNVLw5z9h4NgSDq/AJZWt/fXqdW+0PJbk+M74xz7yMDRiHtlsuDV7ew6K20w==} + '@rollup/rollup-android-arm-eabi@4.52.3': + resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.51.0': - resolution: {integrity: sha512-Z3ujzDZgsEVSokgIhmOAReh9SGT2qloJJX2Xo1Q3nPU1EhCXrV0PbpR3r7DWRgozqnjrPZQkLe5cgBPIYp70Vg==} + '@rollup/rollup-android-arm64@4.52.3': + resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.51.0': - resolution: {integrity: sha512-T3gskHgArUdR6TCN69li5VELVAZK+iQ4iwMoSMNYixoj+56EC9lTj35rcxhXzIJt40YfBkvDy3GS+t5zh7zM6g==} + '@rollup/rollup-darwin-arm64@4.52.3': + resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.51.0': - resolution: {integrity: sha512-Hh7n/fh0g5UjH6ATDF56Qdf5bzdLZKIbhp5KftjMYG546Ocjeyg15dxphCpH1FFY2PJ2G6MiOVL4jMq5VLTyrQ==} + '@rollup/rollup-darwin-x64@4.52.3': + resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.51.0': - resolution: {integrity: sha512-0EddADb6FBvfqYoxwVom3hAbAvpSVUbZqmR1wmjk0MSZ06hn/UxxGHKRqEQDMkts7XiZjejVB+TLF28cDTU+gA==} + '@rollup/rollup-freebsd-arm64@4.52.3': + resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.51.0': - resolution: {integrity: sha512-MpqaEDLo3JuVPF+wWV4mK7V8akL76WCz8ndfz1aVB7RhvXFO3k7yT7eu8OEuog4VTSyNu5ibvN9n6lgjq/qLEQ==} + '@rollup/rollup-freebsd-x64@4.52.3': + resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.51.0': - resolution: {integrity: sha512-WEWAGFNFFpvSWAIT3MYvxTkYHv/cJl9yWKpjhheg7ONfB0hetZt/uwBnM3GZqSHrk5bXCDYTFXg3jQyk/j7eXQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.51.0': - resolution: {integrity: sha512-9bxtxj8QoAp++LOq5PGDGkEEOpCDk9rOEHUcXadnijedDH8IXrBt6PnBa4Y6NblvGWdoxvXZYghZLaliTCmAng==} + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.51.0': - resolution: {integrity: sha512-DdqA+fARqIsfqDYkKo2nrWMp0kvu/wPJ2G8lZ4DjYhn+8QhrjVuzmsh7tTkhULwjvHTN59nWVzAixmOi6rqjNA==} + '@rollup/rollup-linux-arm64-gnu@4.52.3': + resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.51.0': - resolution: {integrity: sha512-2XVRNzcUJE1UJua8P4a1GXS5jafFWE+pQ6zhUbZzptOu/70p1F6+0FTi6aGPd6jNtnJqGMjtBCXancC2dhYlWw==} + '@rollup/rollup-linux-arm64-musl@4.52.3': + resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.51.0': - resolution: {integrity: sha512-R8QhY0kLIPCAVXWi2yftDSpn7Jtejey/WhMoBESSfwGec5SKdFVupjxFlKoQ7clVRuaDpiQf7wNx3EBZf4Ey6g==} + '@rollup/rollup-linux-loong64-gnu@4.52.3': + resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.51.0': - resolution: {integrity: sha512-I498RPfxx9cMv1KTHQ9tg2Ku1utuQm+T5B+Xro+WNu3FzAFSKp4awKfgMoZwjoPgNbaFGINaOM25cQW6WuBhiQ==} + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.51.0': - resolution: {integrity: sha512-o8COudsb8lvtdm9ixg9aKjfX5aeoc2x9KGE7WjtrmQFquoCRZ9jtzGlonujE4WhvXFepTraWzT4RcwyDDeHXjA==} + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.51.0': - resolution: {integrity: sha512-0shJPgSXMdYzOQzpM5BJN2euXY1f8uV8mS6AnrbMcH2KrkNsbpMxWB1wp8UEdiJ1NtyBkCk3U/HfX5mEONBq6w==} + '@rollup/rollup-linux-riscv64-musl@4.52.3': + resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.51.0': - resolution: {integrity: sha512-L7pV+ny7865jamSCQwyozBYjFRUKaTsPqDz7ClOtJCDu4paf2uAa0mrcHwSt4XxZP2ogFZS9uuitH3NXdeBEJA==} + '@rollup/rollup-linux-s390x-gnu@4.52.3': + resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.51.0': - resolution: {integrity: sha512-4YHhP+Rv3T3+H3TPbUvWOw5tuSwhrVhkHHZhk4hC9VXeAOKR26/IsUAT4FsB4mT+kfIdxxb1BezQDEg/voPO8A==} + '@rollup/rollup-linux-x64-gnu@4.52.3': + resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.51.0': - resolution: {integrity: sha512-P7U7U03+E5w7WgJtvSseNLOX1UhknVPmEaqgUENFWfNxNBa1OhExT6qYGmyF8gepcxWSaSfJsAV5UwhWrYefdQ==} + '@rollup/rollup-linux-x64-musl@4.52.3': + resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.51.0': - resolution: {integrity: sha512-FuD8g3u9W6RPwdO1R45hZFORwa1g9YXEMesAKP/sOi7mDqxjbni8S3zAXJiDcRfGfGBqpRYVuH54Gu3FTuSoEw==} + '@rollup/rollup-openharmony-arm64@4.52.3': + resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.51.0': - resolution: {integrity: sha512-zST+FdMCX3QAYfmZX3dp/Fy8qLUetfE17QN5ZmmFGPrhl86qvRr+E9u2bk7fzkIXsfQR30Z7ZRS7WMryPPn4rQ==} + '@rollup/rollup-win32-arm64-msvc@4.52.3': + resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.51.0': - resolution: {integrity: sha512-U+qhoCVAZmTHCmUKxdQxw1jwAFNFXmOpMME7Npt5GTb1W/7itfgAgNluVOvyeuSeqW+dEQLFuNZF3YZPO8XkMg==} + '@rollup/rollup-win32-ia32-msvc@4.52.3': + resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.51.0': - resolution: {integrity: sha512-z6UpFzMhXSD8NNUfCi2HO+pbpSzSWIIPgb1TZsEZjmZYtk6RUIC63JYjlFBwbBZS3jt3f1q6IGfkj3g+GnBt2Q==} + '@rollup/rollup-win32-x64-gnu@4.52.3': + resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.3': + resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} cpu: [x64] os: [win32] - '@rsbuild/core@1.5.12': - resolution: {integrity: sha512-DpinE1If6WRTwQYqH+PRtJo3zshkDYHfIcWq4lTtfsPfPLrXshmRXBam3BS1RRu4v2gGT+LCNiUefftsmcmL0A==} + '@rsbuild/core@1.5.13': + resolution: {integrity: sha512-P+TCvZCVpBYZ3GDdnzR/tZKicE41khJIqIRlJYnEc9dwUfX1/eqRf8lA8yrsbB5iZbSfj1iOoH1N25cCQ3hhuA==} engines: {node: '>=18.12.0'} hasBin: true @@ -2637,60 +2590,60 @@ packages: peerDependencies: '@rsbuild/core': 1.x - '@rspack/binding-darwin-arm64@1.5.7': - resolution: {integrity: sha512-prQ/vgJxOPdlYiR4gVeOEKofTCEOu70JQIQApqFnw8lKM7rd9ag8ogDNqmc2L/GGXGHLAqds28oeKXRlzYf7+Q==} + '@rspack/binding-darwin-arm64@1.5.8': + resolution: {integrity: sha512-spJfpOSN3f7V90ic45/ET2NKB2ujAViCNmqb0iGurMNQtFRq+7Kd+jvVKKGXKBHBbsQrFhidSWbbqy2PBPGK8g==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.5.7': - resolution: {integrity: sha512-FPqiWSbEEerqfJrGnYe68svvl6NyuQFAb3qqFe/Q0MqFhBYmAZwa0R2/ylugCdgFLZxmkFuWqpDgItpvJb/E3Q==} + '@rspack/binding-darwin-x64@1.5.8': + resolution: {integrity: sha512-YFOzeL1IBknBcri8vjUp43dfUBylCeQnD+9O9p0wZmLAw7DtpN5JEOe2AkGo8kdTqJjYKI+cczJPKIw6lu1LWw==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.5.7': - resolution: {integrity: sha512-fwy+NY+0CHrZqqzDrjPBlTuK53W4dG5EEg/QQFAE7KVM+okRqPk8tg45bJ5628rCNLe13GDmPIE107LmgspNqA==} + '@rspack/binding-linux-arm64-gnu@1.5.8': + resolution: {integrity: sha512-UAWCsOnpkvy8eAVRo0uipbHXDhnoDq5zmqWTMhpga0/a3yzCp2e+fnjZb/qnFNYb5MeL0O1mwMOYgn1M3oHILQ==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.5.7': - resolution: {integrity: sha512-576u/0F4ZUzpHckFme4vQ0sSxjE+B/gVP4tNJ+P6bJaclXLFXV4icbjTUQwOIgmA1EQz/JFeKGGJZ4p6mowpBQ==} + '@rspack/binding-linux-arm64-musl@1.5.8': + resolution: {integrity: sha512-GnSvGT4GjokPSD45cTtE+g7LgghuxSP1MRmvd+Vp/I8pnxTVSTsebRod4TAqyiv+l11nuS8yqNveK9qiOkBLWw==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.5.7': - resolution: {integrity: sha512-brSHywXjjeuWkv0ywgxS4VgDgquarEb4XGr+eXhOaPcc8x2rNefyc4hErplrI7+oxPXVuGK5VE4ZH5bj3Yknvg==} + '@rspack/binding-linux-x64-gnu@1.5.8': + resolution: {integrity: sha512-XLxh5n/pzUfxsugz/8rVBv+Tx2nqEM+9rharK69kfooDsQNKyz7PANllBQ/v4svJ+W0BRHnDL4qXSGdteZeEjA==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.5.7': - resolution: {integrity: sha512-HcS0DzbLlWCwVfYcWMbTgILh4GELD6m4CZoFEhIr4fJCJi0p8NgLYycy1QtDhaUjs8TKalmyMwHrJwGnD141JA==} + '@rspack/binding-linux-x64-musl@1.5.8': + resolution: {integrity: sha512-gE0+MZmwF+01p9/svpEESkzkLpBkVUG2o03YMpwXYC/maeRRhWvF8BJ7R3i/Ls/jFGSE87dKX5NbRLVzqksq/w==} cpu: [x64] os: [linux] - '@rspack/binding-wasm32-wasi@1.5.7': - resolution: {integrity: sha512-uTRUEuK+TVlvUBSWXVoxD+6JTN+rvtRqVlO+A7I7VnOY7p9Rpvk1sXcHtEwg/XuDCq4DALnvlzbFLh7G3zILvw==} + '@rspack/binding-wasm32-wasi@1.5.8': + resolution: {integrity: sha512-cfg3niNHeJuxuml1Vy9VvaJrI/5TakzoaZvKX2g5S24wfzR50Eyy4JAsZ+L2voWQQp1yMJbmPYPmnTCTxdJQBQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.5.7': - resolution: {integrity: sha512-dFHrXRUmMTkxEn/Uw2RLbIckKfi0Zmn2NnEXwedWdyRgZW4Vhk7+VBxM22O/CHZmAGt12Ol25yTuVv58ANLEKA==} + '@rspack/binding-win32-arm64-msvc@1.5.8': + resolution: {integrity: sha512-7i3ZTHFXKfU/9Jm9XhpMkrdkxO7lfeYMNVEGkuU5dyBfRMQj69dRgPL7zJwc2plXiqu9LUOl+TwDNTjap7Q36g==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.5.7': - resolution: {integrity: sha512-PNtnOIUzE9p/Fbl6l/1Zs7bhn8ccTlaHTgZgQq0sO/QxjLlbU0WPjRl+YLo27cAningSOAbANuYlN8vAcuimrw==} + '@rspack/binding-win32-ia32-msvc@1.5.8': + resolution: {integrity: sha512-7ZPPWO11J+soea1+mnfaPpQt7GIodBM7A86dx6PbXgVEoZmetcWPrCF2NBfXxQWOKJ9L3RYltC4z+ZyXRgMOrw==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.5.7': - resolution: {integrity: sha512-22gTaYkwaIUvyXRxf1RVnFTJPqF2hD1pgAQNBIz7kYybe6vvSZ6KInW4WyG4vjYKrJg/cbS4QvtlLn0lYXrdIw==} + '@rspack/binding-win32-x64-msvc@1.5.8': + resolution: {integrity: sha512-N/zXQgzIxME3YUzXT8qnyzxjqcnXudWOeDh8CAG9zqTCnCiy16SFfQ/cQgEoLlD9geQntV6jx2GbDDI5kpDGMQ==} cpu: [x64] os: [win32] - '@rspack/binding@1.5.7': - resolution: {integrity: sha512-/fFrf4Yu8Tc0yXBw33g2++turdld1MDphLiLg05bx92fOVI1MafocwPvm35e3y1z7CtlQJ2Bmvzhi6APJShKxg==} + '@rspack/binding@1.5.8': + resolution: {integrity: sha512-/91CzhRl9r5BIQCgGsS7jA6MDbw1I2BQpbfcUUdkdKl2P79K3Zo/Mw/TvKzS86catwLaUQEgkGRmYawOfPg7ow==} - '@rspack/core@1.5.7': - resolution: {integrity: sha512-57ey3wafK/g+B9zLdCiIrX3eTK8rFEM3yvxBUb2ro3ZtAaCGm4y7xERcXZJNn4D01pjzzCJ/u1ezpQmsZYLP7A==} + '@rspack/core@1.5.8': + resolution: {integrity: sha512-sUd2LfiDhqYVfvknuoz0+/c+wSpn693xotnG5g1CSWKZArbtwiYzBIVnNlcHGmuoBRsnj/TkSq8dTQ7gwfBroQ==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -2717,8 +2670,16 @@ packages: '@rushstack/eslint-patch@1.12.0': resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} - '@rushstack/node-core-library@5.14.0': - resolution: {integrity: sha512-eRong84/rwQUlATGFW3TMTYVyqL1vfW9Lf10PH+mVGfIb9HzU3h5AASNIw+axnBLjnD0n3rT5uQBwu9fvzATrg==} + '@rushstack/node-core-library@5.15.1': + resolution: {integrity: sha512-Nou4S2iYtnHIi3deB1kzl/ikJktR68L1Q5aeIYpySCfuk25dYZO0366lRdobk82rym6n0AacMyaYCiN8e7QaWA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/problem-matcher@0.1.1': + resolution: {integrity: sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -2728,37 +2689,37 @@ packages: '@rushstack/rig-package@0.5.3': resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - '@rushstack/terminal@0.16.0': - resolution: {integrity: sha512-WEvNuKkoR1PXorr9SxO0dqFdSp1BA+xzDrIm/Bwlc5YHg2FFg6oS+uCTYjerOhFuqCW+A3vKBm6EmKWSHfgx/A==} + '@rushstack/terminal@0.18.0': + resolution: {integrity: sha512-OvUkArZvuqWhMLtM5LD4dSOODOH7uwvzD4Z80T8jxFnsdoD/hKCz6wABDziD9N5JdxXc6/LXJD+60VFtxefjjA==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true - '@rushstack/ts-command-line@5.0.3': - resolution: {integrity: sha512-bgPhQEqLVv/2hwKLYv/XvsTWNZ9B/+X1zJ7WgQE9rO5oiLzrOZvkIW4pk13yOQBhHyjcND5qMOa6p83t+Z66iQ==} + '@rushstack/ts-command-line@5.0.5': + resolution: {integrity: sha512-1NfEFJcpYu7gPQ2H4u0KTvEJaxpVknHgFd3xUuUkTiEmdvhLfasNdriPwOkMcJaRpfSO2vTR6XgDNRyEqwIVlw==} - '@storybook/addon-docs@9.1.8': - resolution: {integrity: sha512-GVrNVEdNRRo6r1hawfgyy6x+HJqPx1oOHm0U0wz0SGAxgS/Xh6SQVZL+RDoh7NpXkNi1GbezVlT931UsHQTyvQ==} + '@storybook/addon-docs@9.1.10': + resolution: {integrity: sha512-LYK3oXy/0PgY39FhkYVd9D0bzatLGTsMhaPPwSjBOmZgK0f0yBLqaePy7urUFeHYm/rjwAaRmDJNBqUnGTVoig==} peerDependencies: - storybook: ^9.1.8 + storybook: ^9.1.10 - '@storybook/addon-onboarding@9.1.8': - resolution: {integrity: sha512-fydnYy2NZ2ZuoIncsN6PdeRUJthFyR8LZchFFrSqy/s9ahWjQ+XRrDevcm9Y6w4d6qTwsgRC3CDPRIJLj/9dgg==} + '@storybook/addon-onboarding@9.1.10': + resolution: {integrity: sha512-PWexWszC5KhEwKNw/5lhlsRf1V+vfzsIQok93qLmiInnzOpnrszMgrg0+8F7r5lb4wWmZx19pYx+KjYA8P9EdQ==} peerDependencies: - storybook: ^9.1.8 + storybook: ^9.1.10 - '@storybook/builder-vite@9.1.8': - resolution: {integrity: sha512-JjvBag0nM1N51O3VF5++op9Ly5OC8Q+y4PrWLgi2dKhMxJFs8fD9D4PeI/v41PUiQcI0suQxN9BoYoKn2QxUZw==} + '@storybook/builder-vite@9.1.10': + resolution: {integrity: sha512-0ogI+toZJYaFptcFpRcRPOZ9/NrFUYhiaI09ggeEB1FF9ygHMVsobp4eaj4HjZI6V3x7cQwkd2ZmxAMQDBQuMA==} peerDependencies: - storybook: ^9.1.8 - vite: ^6 + storybook: ^9.1.10 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@storybook/csf-plugin@9.1.8': - resolution: {integrity: sha512-KnrXPz87bn+8ZGkzFEBc7TT5HkWpR1Xz7ojxPclSvkKxTfzazuaw0JlOQMzJoI1+wHXDAIw/4MIsO8HEiaWyfQ==} + '@storybook/csf-plugin@9.1.10': + resolution: {integrity: sha512-247F/JU0Naxm/RIUnQYpqXeCL0wG8UNJkZe+/GkLjdqzsyML0lb+8OwBsWFfG8zfj6fkjmRU2mF44TnNkzoQcg==} peerDependencies: - storybook: ^9.1.8 + storybook: ^9.1.10 '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -2770,29 +2731,29 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - '@storybook/react-dom-shim@9.1.8': - resolution: {integrity: sha512-OepccjVZh/KQugTH8/RL2CIyf1g5Lwc5ESC8x8BH3iuYc82WMQBwMJzRI5EofQdirau63NGrqkWCgQASoVreEA==} + '@storybook/react-dom-shim@9.1.10': + resolution: {integrity: sha512-cxy8GTj73RMJIFPrgqdnMXePGX5iFohM5pDCZ63Te5m5GtzKqsILRXtBBLO6Ouexm/ZYRVznkKiwNKX/Fu24fQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.8 + storybook: ^9.1.10 - '@storybook/react-vite@9.1.8': - resolution: {integrity: sha512-DIxp76vcelyFOUJupeQEIHXDrSPP6KDXj6Z+Z9thS1HH7JY+OdGtcMLy4fbiD77Zyc8TV9RRZ1D33z2Ot/v9Vw==} + '@storybook/react-vite@9.1.10': + resolution: {integrity: sha512-k0wWlfoWakoHL3NZ1+38oxRH3WYyprFFX+WUb/4W8axrvpKogvdnxKCul/YB1HH5FcTagIfguamsPjKwB1ZkJg==} engines: {node: '>=20.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.8 - vite: ^6 + storybook: ^9.1.10 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@storybook/react@9.1.8': - resolution: {integrity: sha512-EULkwHroJ4IDYcjIBj9VpGhaZ9E5b8LI84hlfBkJ9rnK44a/GrK1yFRIusukO58qTJSh2Y7zfAFKNuiaWh3Sfw==} + '@storybook/react@9.1.10': + resolution: {integrity: sha512-flG3Gn3EHZnxn92C7vrA2U4aGqpOKdf85fL43+J/2k9HF5AIyOFGlcv4LGVyKZ3LOAow/nGBVSXL9961h+ICRA==} engines: {node: '>=20.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.8 + storybook: ^9.1.10 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: @@ -2921,8 +2882,8 @@ packages: '@tailwindcss/postcss@4.1.13': resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==} - '@tanstack/eslint-plugin-query@5.89.0': - resolution: {integrity: sha512-vz8TEuw9GO0xXIdreMpcofvOY17T3cjgob9bSFln8yQsKsbsUvtpvV3F8pVC3tZEDq0IwO++3/e0/+7YKEarNA==} + '@tanstack/eslint-plugin-query@5.91.0': + resolution: {integrity: sha512-Kn6yWyRe3dIPf7NqyDMhcsTBz2Oh8jPSOpBdlnLQhGBJ6iTMBFYA4B1UreGJ/WdfzQskSMh5imcyWF+wqa/Q5g==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2930,8 +2891,8 @@ packages: resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.8.0': - resolution: {integrity: sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==} + '@testing-library/jest-dom@6.9.0': + resolution: {integrity: sha512-QHdxYMJ0YPGKYofMc6zYvo7LOViVhdc6nPg/OtM2cf9MQrwEcTxFCs7d/GJ5eSyPkHzOiBkc/KfLdFJBHzldtQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@testing-library/react@16.3.0': @@ -3042,14 +3003,14 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@20.19.17': - resolution: {integrity: sha512-gfehUI8N1z92kygssiuWvLiwcbOB3IRktR6hTDgJlXMYh5OvkPSRmgfoBUmfZt+vhwJtX7v1Yw4KvvAf7c5QKQ==} + '@types/node@20.19.19': + resolution: {integrity: sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==} - '@types/node@22.18.6': - resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} + '@types/node@22.18.8': + resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} - '@types/node@24.5.2': - resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + '@types/node@24.6.1': + resolution: {integrity: sha512-ljvjjs3DNXummeIaooB4cLBKg2U6SPI6Hjra/9rRIy7CpM0HpLtG9HptkMKAb4HYWy5S7HUvJEuWgr/y0U8SHw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3073,11 +3034,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.1.13': - resolution: {integrity: sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==} - - '@types/react@19.1.15': - resolution: {integrity: sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==} + '@types/react@19.1.16': + resolution: {integrity: sha512-WBM/nDbEZmDUORKnh5i1bTnAz6vTohUf9b8esSMu+b24+srbaxa04UbJgWx78CVfNXA20sNu0odEIluZDFdCog==} '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -3100,113 +3058,69 @@ packages: '@types/whatwg-mimetype@3.0.2': resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} - '@typescript-eslint/eslint-plugin@8.44.0': - resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.44.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/parser@8.44.0': - resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} + '@typescript-eslint/eslint-plugin@8.45.0': + resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + '@typescript-eslint/parser': ^8.45.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.44.1': - resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} + '@typescript-eslint/parser@8.45.0': + resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.44.0': - resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/project-service@8.44.1': - resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} + '@typescript-eslint/project-service@8.45.0': + resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/rule-tester@8.44.1': - resolution: {integrity: sha512-yzqJhTLrbXCdEZhO9cuasGLZixWWx11/uFn6Leuu0p1PeW97wDy9JhiaAOl45TFrv5f67qwWdrzM5PMIuIu4vw==} + '@typescript-eslint/rule-tester@8.45.0': + resolution: {integrity: sha512-o0Tn3Vw6hliTsnVITONI+TK/VA22agA+Zyk4pKg98sWy6RXIl7srW3zDOjdtdHUuk8FpzCUBtbQCtXH/2VeLtQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/scope-manager@8.44.0': - resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} + '@typescript-eslint/scope-manager@8.45.0': + resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.44.1': - resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.44.0': - resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/tsconfig-utils@8.44.1': - resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} + '@typescript-eslint/tsconfig-utils@8.45.0': + resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.44.0': - resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} + '@typescript-eslint/type-utils@8.45.0': + resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.44.0': - resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.44.1': - resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.44.0': - resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/typescript-estree@8.44.1': - resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} + '@typescript-eslint/types@8.45.0': + resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.44.0': - resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} + '@typescript-eslint/typescript-estree@8.45.0': + resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.44.1': - resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} + '@typescript-eslint/utils@8.45.0': + resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.44.0': - resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.44.1': - resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} + '@typescript-eslint/visitor-keys@8.45.0': + resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -3333,7 +3247,7 @@ packages: resolution: {integrity: sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^6 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 '@vitest/coverage-v8@3.2.4': resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} @@ -3351,7 +3265,7 @@ packages: resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 - vite: ^6 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true @@ -3385,14 +3299,14 @@ packages: '@vue/compiler-core@3.4.19': resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==} - '@vue/compiler-core@3.5.21': - resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==} + '@vue/compiler-core@3.5.22': + resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} '@vue/compiler-dom@3.4.19': resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==} - '@vue/compiler-dom@3.5.21': - resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==} + '@vue/compiler-dom@3.5.22': + resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} '@vue/compiler-sfc@3.4.19': resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==} @@ -3414,8 +3328,8 @@ packages: '@vue/shared@3.4.19': resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==} - '@vue/shared@3.5.21': - resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==} + '@vue/shared@3.5.22': + resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -3468,219 +3382,222 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@zag-js/accordion@1.24.1': - resolution: {integrity: sha512-JOlmXjO+1tTlyeZ93S+chIlV8uDr8fodj3/XCjLFHc/G116O8cN18KG0Ug9pImy1vT2Kkwb9Ag9QOTyUAXM3PA==} + '@zag-js/accordion@1.24.2': + resolution: {integrity: sha512-sGNhbWR85oAiMyQLk+dliRhNQGP59T56M1gAkQ7bwJJZ7l++hFEQpYcr/FbAHJshXWpvUKm0wV18wHR/56Y30w==} + + '@zag-js/anatomy@1.24.2': + resolution: {integrity: sha512-qWmxopxVHMjP9UGoUdxqKtrot8MaU0UvoJWh0O03b9eOPgLwMydkcwuGAc8s3x6GDREu3D3GvcRgrQ5JteITjg==} - '@zag-js/anatomy@1.24.1': - resolution: {integrity: sha512-mRkpetNjnjgvdyEX880AOjhMhcgdRMLjOM+aEgoDRnhultC4im+nriNoCShJLeVpwsRrEQCU7YVXO4mZaqWUMg==} + '@zag-js/angle-slider@1.24.2': + resolution: {integrity: sha512-QPBWxji84sEyB519uU+n07IkowvDaLSpon1oDQvNc3wFKz35F5IAXQo85pDQPPDAzEHG4oJ2W3cXPRWmkVuTrg==} - '@zag-js/angle-slider@1.24.1': - resolution: {integrity: sha512-pcWIpVZDMbujMK0nFaKa0wd7uGkP4E5D7x8cmvoiKMT4E1vZpg2kZeN9qmdnhum9ye7nb80IPKhcDl9C0JuSLw==} + '@zag-js/aria-hidden@1.24.2': + resolution: {integrity: sha512-btbVDdfHq2wcvV2KmpBlkKN+36XIMkXTIy7zvQniBQ/V6X5WGKBaXGvllqrLLaJVU2HmnhM/IYUBQW4H0BLWBA==} - '@zag-js/aria-hidden@1.24.1': - resolution: {integrity: sha512-R/a80ZjITZi4rotN7Q9+RTCYCdmJZf3rZi9bObczbR7h5j5GSsjikByUjksWAYzPvFxQxBWTs4GqlCI9dU2f9A==} + '@zag-js/async-list@1.24.2': + resolution: {integrity: sha512-W2720aU4ANdhcrFtOQX+AVYFSxxuH+TT8kAPtIZtnd6ffOTuiR8j8PV7U45gC5KUvixIBQ+oot11m/n3YVilUw==} - '@zag-js/async-list@1.24.1': - resolution: {integrity: sha512-EZE3wORLOhMtT1tiDA0kTHrtY7XNkOoNyn5jCs8Ec1GfqIHSRzQB+2jt+wPIBwUhDcgQksXgOy91s/i9XfQe1g==} + '@zag-js/auto-resize@1.24.2': + resolution: {integrity: sha512-oOzFY+4mif6PXpVMR+db8+b33C8uplAkiuDwZhNEaQDj97S4kxySlQkFovbmY55DYAlBRguaQKXjn0pboqwIqA==} - '@zag-js/auto-resize@1.24.1': - resolution: {integrity: sha512-OH1VTeObddMiN2PUK+7SpkPV8Znlkdq+10odmbbe9K2MZPh352RNcPYytIZTWT0X4/4czhn2MTU6IhZ2lZp2hw==} + '@zag-js/avatar@1.24.2': + resolution: {integrity: sha512-qSqJQLjscmWCMPosWKoTwSdFL6/hHyLeBAL4iyLcVby5Y7tz4o3u5zjkcLGPoZTH1DxicwEDBaTkONHvMthaLw==} - '@zag-js/avatar@1.24.1': - resolution: {integrity: sha512-zYGUdkxsMoN8OAFYYCZBrsQx++kjWEBdYZew4en9g8vw7yonNjzywtfF/Vd3Dv6mUZ2r5JtaltbK/qp4aBdZvg==} + '@zag-js/bottom-sheet@1.24.2': + resolution: {integrity: sha512-T1nWvpNUvzE29ODZhkjsZCE4yHzkWQ7dNohrDMvMOc7jNlxUOy0SRd4LuiT4ioAg2FUvMZrfcTBBVagc9kv9SQ==} - '@zag-js/carousel@1.24.1': - resolution: {integrity: sha512-7WGlFtF4JoIK4kduiFgucdTe9eD+884d9BF9Sh308MlpiL0KZnO3l3Pyq58yi4R0KUTy7zILLGSsUesifVAuEA==} + '@zag-js/carousel@1.24.2': + resolution: {integrity: sha512-gQYZ4+UyCk1vXYYkIBGHWxAZNQBlV1/e1XdQTT1CApKmUAjNwDWf91fcQ733mB9n7MEDTS/vtgGtWQFQNVVh1g==} - '@zag-js/checkbox@1.24.1': - resolution: {integrity: sha512-eU/RKaO44Tgt1iTGg26M2nUd12p+gTuq2rNjqVuPfN3dvRzYNi5rGKk6yTQI2T4DH4D+fDMz6gUneiBuGcVoJA==} + '@zag-js/checkbox@1.24.2': + resolution: {integrity: sha512-+ibuzfVW9Nx84r04cd1SxdI3P19/bnexmMzw7zZu/17pSvO4u5v6HSKi24ARVv15sw1ujjcfHd1qlDmtWZFyJg==} - '@zag-js/clipboard@1.24.1': - resolution: {integrity: sha512-GfmjjiEDS9NB6Wo/ThbbzO10BgOYzTSeG00a/pJ5QpvSgvOCz+oLV5NBQHOd8XjOw0e0GQEyfsif0i6wQExSIQ==} + '@zag-js/clipboard@1.24.2': + resolution: {integrity: sha512-3E8c3IJubkJGxGJRAB7nmoFGLxM6LiaANz0JH4WxOt7lIu+5jxIxzLVRGAQI3/Vtn1Qxm34+Ffqqw2PW/J+6qA==} - '@zag-js/collapsible@1.24.1': - resolution: {integrity: sha512-U6AP4nE6jwMC3kirFQmOL9i3CSfp8mJqb+Gv3opbClpjqCa8hn9v4PNiimKmd0Qr3kynuVRpAshaUaLeg33YiA==} + '@zag-js/collapsible@1.24.2': + resolution: {integrity: sha512-nmMRljiM2AfcmGW04dgPOQjjuteGj4wbaURJiN8uyFnDKavUZH7BIT8knu8iA59Nj8m6UctDIcasRreUd6smxA==} - '@zag-js/collection@1.24.1': - resolution: {integrity: sha512-aWNDI0iZ5Wb8vCZLJWPjRQOK5/B2wvhhR1+pYaScxZfWy2das2DVKam8tnR0p1GrRfBi/kZNaCXtvM1ZNPjlOQ==} + '@zag-js/collection@1.24.2': + resolution: {integrity: sha512-vqNnn9nAmz5lz8pHhvjNdCrPHj76aZpoaRFe7DQdcnwlrbNjASUKPiN4lG5ZgspOMnQqZ0teR4fyjaCa+cH+xQ==} - '@zag-js/color-picker@1.24.1': - resolution: {integrity: sha512-vLW11JrySJR5fGeXXdmlCJuNm7yE0Tsx/SjkX0WBnrPC4PYaGfiwF7LT59bs5XsQp65kEaIca6mw/J0Bouc8Sw==} + '@zag-js/color-picker@1.24.2': + resolution: {integrity: sha512-FKK4tNATGKjAfwpxqgAyM8uecZa1ebTP8HSLc2c02hL5C7VUEcMrGP7SYBT/eOYXME1iHIA01R6ArmIzVhVdvQ==} - '@zag-js/color-utils@1.24.1': - resolution: {integrity: sha512-8KPTa3I9+WbDLrYPH5knEYMW3CjAC20ikosdrgYshGTFIPuqinAnsxD7H0fZO4I+jSjuhtIyNQuvgwJar9A2rg==} + '@zag-js/color-utils@1.24.2': + resolution: {integrity: sha512-p/mkEA7lAH9YFyAHIEAbCXJW0cUkJNDXcq8OAkx/pq+mL+dDPLgjN4GKfb+Hhur+n/e2Jd6UTYEDmCEFUgC3fg==} - '@zag-js/combobox@1.24.1': - resolution: {integrity: sha512-BhjQOL/Ssr5lQLPCyEersCqOqllFlNuR8nvQOgl1u8Y0EaZR+ZPQbgXum6kE5AuH3SlcY9+1kDK1ZLswOagL1Q==} + '@zag-js/combobox@1.24.2': + resolution: {integrity: sha512-o/jkby5ry4IUAm8GT04RbMdd3r8xk7RTAdnNRdvv4R8ZJtaDDL+wJVFq5ITeFhtnvmAl3GD+Isn2kJ3fut0fHQ==} - '@zag-js/core@1.24.1': - resolution: {integrity: sha512-0e7QdxBaY9PMHQfDY/Xu/7MKyRxNsriNscpkZI7L4MHMGPmxdfedGBpteI3gFfqWsdJ5NvvpqxdLUwkbYk5Q5A==} + '@zag-js/core@1.24.2': + resolution: {integrity: sha512-LBJBNpaEixfIKLjyfcuudTdtnVJmj60iLK9flI3D7BeziU/nGu3CsNxh0miLCR2Sdl7jFEseyGrK7HLhTaRMLw==} - '@zag-js/date-picker@1.24.1': - resolution: {integrity: sha512-8jLv074sGJQw4L+5YTDv7l2bwb1x9E7YhvklCffhf/7OzW7RB/ELkljFhmjueuJp7W/sD4xhJyigjp/mDEg1XA==} + '@zag-js/date-picker@1.24.2': + resolution: {integrity: sha512-8vpztt7RwrreqXdV4vwotQ0susaqQfOmqdMh++j31UMsvmRinNiFo75hL7/5AvPwpBnt9lmtWZYBw2WY5DFnQQ==} peerDependencies: '@internationalized/date': '>=3.0.0' - '@zag-js/date-utils@1.24.1': - resolution: {integrity: sha512-Rgll6P4Imq479WxH3uMvwQri4o4lF2cxWX2Hka/W7Nhv1DhPBnmfBw30INyWPXzx5agEVzKdGX/br8MU5DV33Q==} + '@zag-js/date-utils@1.24.2': + resolution: {integrity: sha512-wtrbE4LTs8h+9U9mqJPFg+RqdRofTISwMCY1nD1gApCwMdp9Gov9me0CcV+JshXgOEBSsFoZXt8fvSINN0gs+A==} peerDependencies: '@internationalized/date': '>=3.0.0' - '@zag-js/dialog@1.24.1': - resolution: {integrity: sha512-ITzOoXBC92vIkhNvxM0GMMKwboLLk7hSU9dsplk/X9bpX+fQywgc6d5O4I7WHCMmgUWI5y3/aWjqsWATWwufWg==} + '@zag-js/dialog@1.24.2': + resolution: {integrity: sha512-70dvyikN/f3qqhI9mGB23oMGeTmjjZmhy5ZXDCwNL1ZmZ0SnGB3QdsHEa/DDyoXC2qSO8XhOUgEp3hNukXujXA==} - '@zag-js/dismissable@1.24.1': - resolution: {integrity: sha512-Oca+nbwaqHGt0rmkKfmpExwL+kVYLbVi6fxhzHP1WBrip//IUThoTrPH/gqB51o1DT1z/VNE+8BhWhsHSgkQfw==} + '@zag-js/dismissable@1.24.2': + resolution: {integrity: sha512-POmhCyjm8cRIThuK3icXjt9ic3OrYjN3N0jQ7uT5xAitX5eyGR+Tb7Mdf5J1R6iuX19t0t6ova+h3XIx6YDWHQ==} - '@zag-js/dom-query@1.24.1': - resolution: {integrity: sha512-ww3tS5hrB2s6ywGtjMjSOajP19CnQOH0IAGgzjE+lbvDD+ZroXWn9O3Z/v2kTfKNwZFQ4TOb8oSymuSRQsFOYg==} + '@zag-js/dom-query@1.24.2': + resolution: {integrity: sha512-CrjxXni9S9sxuz64uveHDGsvXcZPuN8ydg5+UFZh0MTXCCpS2nFdSWJ1ZN4uyak+X0CdyIEvvbzdxmEhBi33dQ==} - '@zag-js/editable@1.24.1': - resolution: {integrity: sha512-SV8X7jd95ZAx4VnlhoEcbAiW8jhoGkPf7L0JFB2KWX+NFacEVCKGQpDjZpdzD6j7C10750v3blbkjr6iyzeIqw==} + '@zag-js/editable@1.24.2': + resolution: {integrity: sha512-ZSvBcVi3OMuChGj6IGCnX7QoF9UVAhdHelKp3q2/qfWq6ykwFUtO8erYBkEFmkdGqRqdlnbtidBRBoh0e9dLdg==} - '@zag-js/file-upload@1.24.1': - resolution: {integrity: sha512-Un0+qDlkoC93pf7/Nvq9DBVKR6PBKybbNE/En/PC4XLJybK448bY85UuEdBPgXEoR6hIGA3t8NdeHZ+PUoZXIw==} + '@zag-js/file-upload@1.24.2': + resolution: {integrity: sha512-hQHTwbAXDYOjLatRDcoLY8nrxDrctiIMWnzQmbz/53PYbfH5i93KGM7SvUwWX1Zvfwp5IVwpkLA7ARWGNqDOUQ==} - '@zag-js/file-utils@1.24.1': - resolution: {integrity: sha512-ydMct0iyd4uPxf+NP4gfyPq1gJlvW29WWIm5ez9El9L+z5tDBhXYNc73s2kSdDBKXkO4fp6Mwoqbz/wZOw99/Q==} + '@zag-js/file-utils@1.24.2': + resolution: {integrity: sha512-feQ9nMOZwuGae2VXyFGbqzb5DEej2Eo498o2KZVHmyA216vVx1ZOQpTsVrrvJV8KRxS6ULoKZNGe5QuHfwBWYg==} - '@zag-js/floating-panel@1.24.1': - resolution: {integrity: sha512-qVVtnKCQE2C//0q7utRvpfRKsZedL8gnSqwHDX4ie8nKmLLSLn6jDGuAzxrscsGPHEjCOru9NlTHlAAMtB3ybQ==} + '@zag-js/floating-panel@1.24.2': + resolution: {integrity: sha512-pI+YQGsJwGn4lTHx67qVLgeLotP87F5PQToUv6t1CsuVJkmL6fxP3vQNflMSL7XNAX06jVCaug7RW7V+SehHIg==} - '@zag-js/focus-trap@1.24.1': - resolution: {integrity: sha512-cpgYWWaiKx9eycm4Mahv6Dng5+CbDiTtyz/gnbZUv6sqcM4b9N+UqdmBdWYPLHV4gZYrzuO+X4P1C/Ew/rA+xg==} + '@zag-js/focus-trap@1.24.2': + resolution: {integrity: sha512-ztqxOaB7Z8zOZH4HvHnMpKREhrTAcJICRmHgwx1Dfq5SqymlMBnFD0zwS/F0mlbZqzz9eV9yYLAd1Xy54OdeGw==} - '@zag-js/focus-visible@1.24.1': - resolution: {integrity: sha512-HzUf8cRl5tbIil6rVe24CxC3s1pdFGpfYSt5NyaFoFd0HuWhobp+De1kVUvlLU0DDUU6Kgw6DB1w8APEPzb8gg==} + '@zag-js/focus-visible@1.24.2': + resolution: {integrity: sha512-/A8CEy+2w0xCTIbDuCB4nfdBxgVQYP6oaFb1zmYXmf8HWFlSXDxuUXb1oXrA3vaoNG/X8sJJilpacYdV1dVhxg==} - '@zag-js/highlight-word@1.24.1': - resolution: {integrity: sha512-paDF/sWKDMMclpCzrG60vD4/AFQ3EOu2lzQxl7S21uD/B8Rir4w1CkxK/9+cm1Bu7mj4mkR4t+VJxycEZ7YuIw==} + '@zag-js/highlight-word@1.24.2': + resolution: {integrity: sha512-5aBL0vp8zQ/v2bNOL9SBMxpwM95Sn/TascpceOG3HU66NfqaJmStg38+UvZNIl51QuKZ4Uo6gauNJkbnYcc+hg==} - '@zag-js/hover-card@1.24.1': - resolution: {integrity: sha512-zXTcLEb8YOFoEjDMsMcxqidRDN2fY0C94j+XdZYj5eZtKBIgbyCyAjvZrEu9yyPqqrXCNwYU0fTFjac3t9IV4g==} + '@zag-js/hover-card@1.24.2': + resolution: {integrity: sha512-qfdLbprSKr3aiBW3guG7lmCGZ2PuJP99if4dl7TZ3BA/zisr3s2YgZOX2bfmHVtpCjeuhrEE0RPqLZ0iqXFrLQ==} - '@zag-js/i18n-utils@1.24.1': - resolution: {integrity: sha512-dI9M73FTJcE40s/TPBLLKsypmBoMNe5NoRSBW64PWdmn0fCq65qcAUMgwQ0MVenh4oofoDYyffl8pIStr8T1tA==} + '@zag-js/i18n-utils@1.24.2': + resolution: {integrity: sha512-4Y9w7WDJpfy17SI3Ey9h3FZ448KsfqmFu7BshsWWCPJTGAPvkomZurpiU6CHc1sk+v2YKvUKqnJ2jj9aUu4PGw==} - '@zag-js/interact-outside@1.24.1': - resolution: {integrity: sha512-xKyGT295WVrlJaOPCVBrundlXqL4YEvl36SHNSi7EZs/AYpzxR/aBtnFCRN1/7nWvdqvfGs7ya0kl/ly0H7VBg==} + '@zag-js/interact-outside@1.24.2': + resolution: {integrity: sha512-/DH1b58szQgTqz3fL+cbg51X94DohahPkuCgiGs6wdPK3JwMFlPJHkmU3SDUXQJTpwLOsDIqMVq9sO4jo7fiGg==} - '@zag-js/json-tree-utils@1.24.1': - resolution: {integrity: sha512-TWVg+Y4fLr9o0YaB3OnX4xmV91Te/vzRwnNKntsz3GIWJ5fLNngg4hm3E+eaYnJIlKMHrvJv4T/UB4IGYUF+EQ==} + '@zag-js/json-tree-utils@1.24.2': + resolution: {integrity: sha512-SFHBmOujTIlG2uVUOaywme2G1N8ych9RJGrUh2CBwRaIIGjc8La9GSMJcx4qIm0UtvMx7I18O2Cx29Zvrc3Bmg==} - '@zag-js/listbox@1.24.1': - resolution: {integrity: sha512-fTJ125SWVZ+NxgkT6s8LWpdJQMeADk9Lm+Ur1pi0mZnRCmuHI3nwPkg1dfqynjVyrKs6P8wBmUxt3hlr2cc6TQ==} + '@zag-js/listbox@1.24.2': + resolution: {integrity: sha512-RjXxLfBJ52Kod7vqmsMFOimWD4wV+90dzs6itehnAPxtpIVS5hlXM9USCnDda97DQuyL4Ke2j7+NRJ/ikkgSpg==} - '@zag-js/live-region@1.24.1': - resolution: {integrity: sha512-A/55dOyRhfdgVtCBP05Uf2UGz/58H0TMWP69GdVYM4uADtfCLNPy6yxHAt9p334qJsWicg/YWSzBdEAVTThNag==} + '@zag-js/live-region@1.24.2': + resolution: {integrity: sha512-X5gp7m5/o7VeQ8hI2ffi9nEVkdCDcCw5wtSx9gFww6WeD6HJMkY/4HbTdi7ALvGVg9gNIMr5F9zrrzpvgc9DXg==} - '@zag-js/menu@1.24.1': - resolution: {integrity: sha512-XPNQbkIxSbNuYNLLQZlgXbj6Ptn2XHT5BXkUSw2hSbIg35S7Lq8gckiZVtxmUiX8zbv7krTBSD7zThSnwx1TOA==} + '@zag-js/menu@1.24.2': + resolution: {integrity: sha512-vBsFMcEoXfSyN+v1LlLtP2x4aRabLo41/e7ATWjCL41vYSSEyX0dxkpKh5pvJUZebO2SVoQPJ91WGhBCCW9GPQ==} - '@zag-js/number-input@1.24.1': - resolution: {integrity: sha512-F5nX0VvuRmSxddJ8byHYp4OSHLU1C5Fv1rT4L1AnSXud8q6C+zCy4Vy8772pUKNobZf0q8Ru4SgnOe5TQcvRpg==} + '@zag-js/number-input@1.24.2': + resolution: {integrity: sha512-FkgT0cvkDdT2UmDoKtgEkGeJTMV7PhYSwVfnm4mIf4/f6rzSngbQWDw1pUgeQgtQkwyHnONWX9KcUT4bMSe1Zw==} - '@zag-js/pagination@1.24.1': - resolution: {integrity: sha512-IO9Q5SiYmk00pjJAD18qFjOkpN1qb9iSeuX6A9Bdo8sMBFSigI6c7tGo1MPYGENma3b+aX7LbUpt8hYFufqUow==} + '@zag-js/pagination@1.24.2': + resolution: {integrity: sha512-ULWw+RyOiJ/2OTCo6STxTwlSXoGbQp2cvNDF0gs6G+hukqlITlNWM0cPpgsRYfuFrtb6B6Lw0C1Z3JYbd8uj5Q==} - '@zag-js/password-input@1.24.1': - resolution: {integrity: sha512-TWgTRNsaAZ6IE1QmCQKhPY6uSRPDGjgdxGSpG7wOuYsbxHw/hD3v5sUAhAo9teIL0wV8COZIh6hyG2UAAgT2kg==} + '@zag-js/password-input@1.24.2': + resolution: {integrity: sha512-O/mu3oIp3H5TPG7CKfGhvlYRfoHXQA7d65feKd/iyPAnq6U6/nFYMmrrsLnEZ8FUSXYNGRTZnL5eFUKfph7WRA==} - '@zag-js/pin-input@1.24.1': - resolution: {integrity: sha512-ytJK/1ekU06VmOpe7KdSkIQ3If+fffrA/EpbktZBuRepsz80QHB64+X6QQ6H1lEMbLWPNZ0TuFPaYhFfqH7cTQ==} + '@zag-js/pin-input@1.24.2': + resolution: {integrity: sha512-SQ8StSG/XrWbZetYuSmUWpmEphSKfmYAUZ5SItE4fd61Q1UbrahUDANU6pKhz01sLTIpga0Mjld6avod07qXCw==} - '@zag-js/popover@1.24.1': - resolution: {integrity: sha512-auNy7/5/VMeNUYbKfcvSz7OHkbrUWdODtA6gB/d/weAxvEHyMSk0+Ms4c5lmN8KDChrBAPJs4CfKSPv1U4I4zw==} + '@zag-js/popover@1.24.2': + resolution: {integrity: sha512-BBMBxjMTfeDHCg0wg8ohStk6MPTrmCa0PuOSNDeK0Mr/0i0Vv0EjsSiXuu5Wt1LS237XV1BIaLxt322dW+RfVg==} - '@zag-js/popper@1.24.1': - resolution: {integrity: sha512-VWbOjBy/haIDmXhwfyMT1rRcQhSfYmPX67YzQwLA7863kXkoTH1r9fR+1f9uq3VuXQLhw2Cg/lkSzlkg9TIp+g==} + '@zag-js/popper@1.24.2': + resolution: {integrity: sha512-rimqYBOcM5Aj0AntZFIS2hXv96/QnVASIhFx4GoaiHd3DxadMdJVZ3EsKC1JSNveFEjS/0z7IuuAATTF5x61kQ==} - '@zag-js/presence@1.24.1': - resolution: {integrity: sha512-MMcw4iOsGdSGM3hmvd0gcMuk1X9rE/xE3Ndm113vc+lkhk93COiuJPz1ZpyBb8l1CIJwlZ5nnRpx4Lx8Do6aNQ==} + '@zag-js/presence@1.24.2': + resolution: {integrity: sha512-aA1P3pe07cLHnGmMpVyAoBY/e38IQYvqFv3cjLT8B8KVUacjXKnv8AhJf4D/60+XzyZCv79HcTwcFU6EGUrVng==} - '@zag-js/progress@1.24.1': - resolution: {integrity: sha512-ocp6zkl5Y3sVMzPVIRLZtqtDfMkc365JYIrOUsdUqwJMvZJhSP1IbsbtIJS1ycOaHfLdK27E//GVyjxA7SHGhw==} + '@zag-js/progress@1.24.2': + resolution: {integrity: sha512-8A8Cy7b+EOYxoR0tVXa0RiNBVNVcVtWP875QrA5D1/Hj4KnAkj3W3Ee5NOicpRKkORCELHRy5fRcDTUzbsjeRQ==} - '@zag-js/qr-code@1.24.1': - resolution: {integrity: sha512-Hy722PNwLs1tnXFQkTqtrEILypZcUDiC8YdvGn57mmmvPGtZdAzhs4G8ghoP9ahJ02ztREjIt8Qnmct344fALA==} + '@zag-js/qr-code@1.24.2': + resolution: {integrity: sha512-CCdZ2Wch1inyR5dLb7Kh8QqnlzY28R2Elv19W+O2Yvkdbkp16widXGXPoHMt9tIWqaMhXwIXkNEp1JmoiGnfhg==} - '@zag-js/radio-group@1.24.1': - resolution: {integrity: sha512-49S+nmaZzjf98206VeevmfTNTf+WjLveKCOGz5SVWPX3R8maZJgka1ZlIDuWlnRK1JfL+4Ls10/ZxAk3HrI7sg==} + '@zag-js/radio-group@1.24.2': + resolution: {integrity: sha512-ffPeO+P4RvNoGoM1ZsBoiIwJ4zKXbhm8QuHMdKRl34A4TzipzHC2ppAq1cIZ7q+ZubefH0QtZbsvmz1pAo0Z3w==} - '@zag-js/rating-group@1.24.1': - resolution: {integrity: sha512-EGGObQDmulon5N9s5ElGZv9yQmky10s7ps7wyVgW1+vJTsWr8gaoFMJwf6nbXOsUjqW8iDuzsF68Rel9CgjxIQ==} + '@zag-js/rating-group@1.24.2': + resolution: {integrity: sha512-ZpKayCuPX7ysiZWv+JlNIWnPtflSJlJ5C9lHozTtFqCvyELp5ZAtoO5EQN5cM+aVJe2RNgNsMQf37Fmdv4XaiA==} - '@zag-js/react@1.24.1': - resolution: {integrity: sha512-oiaiuR7FKVHOEJtzoYZ2QBQ5+J/j086eebhLCIWkh2ie6QBJM73LHsMUxfZp2D2G1is8EoyUhrH3v2MPMlYMXg==} + '@zag-js/react@1.24.2': + resolution: {integrity: sha512-s6wV2gzd7AIndJ7rrkka+M3OAuKqUqak3xRj/Q6fZdtq2fBY5n6DupcQLCkFoj6eJhp8LUfFO70D7Z71Jvk57w==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' - '@zag-js/rect-utils@1.24.1': - resolution: {integrity: sha512-6JkVq71feW9Yyt7Pynyf199ugDFVgRT+jPpg2ECRHgY2oHvn5atBP3PA1uM2cx7ZydiajnBgk4n1ePnGYD2xNw==} + '@zag-js/rect-utils@1.24.2': + resolution: {integrity: sha512-Iuk/diClriGtYL2PGhProuZhb7SWJ+8IdyaOUP3fgeLORKEQsLcM0bYp1pUO5K5rf/ZnlzGBnkb3/ewkkO/kFA==} - '@zag-js/remove-scroll@1.24.1': - resolution: {integrity: sha512-SAK3ZsnDUcJve5q3OHsMjrl0JOW9sv1fGbBFXyyid9Uu8s79LMh7EZw2na5jXDNzdMWmk1Euu82OaZSlLl9Kew==} + '@zag-js/remove-scroll@1.24.2': + resolution: {integrity: sha512-PLXXBw3NxVAfm7MbNnM0TVlv70Kn+xYFEbKxUBWhD0d/qoqsKJV/xS7N4yO5QPZg9UgXMvtRDtINGWoJvyuAlw==} - '@zag-js/scroll-area@1.24.1': - resolution: {integrity: sha512-eRZKs6Yyl8Zp+YkIxzr1QsgRDDsNMxXshwpIzt/L5xK+EV34mv760FOkX/unG/WxQ1Z0gBogPm9ZY53/m4bhJA==} + '@zag-js/scroll-area@1.24.2': + resolution: {integrity: sha512-upT0IorrklcUwsQSzR9UPMYnqP4lbRTUMT0vJtKpKXboPOUL7Fj8mBffQnL6vNBfD9CAMUBV/hPS6SzUFe71og==} - '@zag-js/scroll-snap@1.24.1': - resolution: {integrity: sha512-Co/NlccX4XDg6OzQeRgv8bANbsCkMog1FZ0BveN8+2Mso/svOLVkB6UGswWZk/DyqY8DlxvfZAdPltmQpu5h8w==} + '@zag-js/scroll-snap@1.24.2': + resolution: {integrity: sha512-NPJIOEALQYetbaulHvGjnwlbewmmrEvfP/CcB6I5/YrMJDN73nJi+f1vSymdw4uhxBnKDLnxmPkb+oOpyI0Ceg==} - '@zag-js/select@1.24.1': - resolution: {integrity: sha512-boU5m3Qd//EGe1M2i4a2SbCXQpcPP9Ewe6DvjEpOhxP+dwdbZzDrtRBdZ4ByhMJ+1bT5B6TqsfvsQHhAI0LunA==} + '@zag-js/select@1.24.2': + resolution: {integrity: sha512-1HSr+2XlymRUgtchTTD7c/+Shwiloei7BIzcEXQvYaUzVMTc6yjs2fSpemF76SX0KwiqlNSY5++HV3R1Szkvpg==} - '@zag-js/signature-pad@1.24.1': - resolution: {integrity: sha512-CRTcefUGMwdhxqmB8yGkHU3gweMfXw0CCoMc0LhMmla12hMJOBi+mpMVaBJnQHYGSG8uFUh2IKdPbe2Vtp4T3Q==} + '@zag-js/signature-pad@1.24.2': + resolution: {integrity: sha512-NMb+g6wj06JvW1dES0Rk4Q1PNQQM1Y11MGW+rRX1KMsP8ieH6DdS5BvofOvNhxQ6+/Y8p+XWD0tGxudOTU2j/Q==} - '@zag-js/slider@1.24.1': - resolution: {integrity: sha512-HClZBKcT+9tihZArRNRj35YOIUbztCcyYzggYYIrK4+OFD0RLYihA+yBO4hxs7xZVenzma9i0pc6q/Vo4z2tvA==} + '@zag-js/slider@1.24.2': + resolution: {integrity: sha512-QxdSIRW96lPT/zJS/1pr2aj1rGujXBZ2ypUyb6JYZizFG55cZtmJqjJaZ81jU251peLuTdhug34C52vAvXyFZA==} - '@zag-js/splitter@1.24.1': - resolution: {integrity: sha512-UUqiCD0T8kfgm/vRTY1QrPlrpxbzxqZ+8QvysUchnibmStetkHnuzAXC4ZD9jlJbToqzE4p1eLOiWGaVXRdB/Q==} + '@zag-js/splitter@1.24.2': + resolution: {integrity: sha512-EQchsOU4cFOFlBZ3Zql0rmAbUumu/mw0CAg7sjNNUPIDJ7NAOpZSwKtsnfT8pDWeOVIAxTLrlALWW6uY2g4UyQ==} - '@zag-js/steps@1.24.1': - resolution: {integrity: sha512-njL1SMKef0JfYzw5KUhpeVuzOtgBjSxVUwDrPR9s095WUCUiOYlxzqummg3VBY8IDuT/pS/K6LDSY11YCRzeNw==} + '@zag-js/steps@1.24.2': + resolution: {integrity: sha512-nunbmsl4WTkZw6955xeWo9D6XORt1ay2tDsUYHyTJ3rUCeh11Itzmwi7IrJTTSeMtbokYgnF5uoYFHj/pSc7fQ==} - '@zag-js/store@1.24.1': - resolution: {integrity: sha512-iVl+NX2CcxEDLL3hrj31mqSqBZYBqHEBqa/Z7FwKVoTImMQ1AabMF5XPreTtB8KFbaVJlNlM6D5qngDPpVj/xw==} + '@zag-js/store@1.24.2': + resolution: {integrity: sha512-PZViq7LD4y+6iEB/0tvbqywoEccNXGy6jcOGIg5lwdY0CiPulPMeoLFi0+Etx1/Wom398NqlzecPqT4ZbICYMQ==} - '@zag-js/switch@1.24.1': - resolution: {integrity: sha512-RI2bG2AtsQ4ci8T7RA3XVSjd9urpNQXIwEatpa8cw9GCWFI421rt4Xcab5jy/IOu6VzXl6pwh11/cWAC/PBYCw==} + '@zag-js/switch@1.24.2': + resolution: {integrity: sha512-NRyWy43Npzjwc15flHRB6eVqKPeu7uw4pjdfmTjhj87185ZM/VYDEQHC6G+teXvl+4LW19QV9aDcTAzg1g5bbg==} - '@zag-js/tabs@1.24.1': - resolution: {integrity: sha512-RjdW4opxhvCWTwHoCqq+lfNCthiyPu376hto6j4Ybl/UN3UFTV4zfTbwbMbAH7dyqj8m1nkKxidLaO0Yhx3zZA==} + '@zag-js/tabs@1.24.2': + resolution: {integrity: sha512-UCVfUSDlIk+EAL0kgDkWZAj55PSRUXVAhuqqlDnB8t3GO9UsvmxG93US7wEQglpYBydyPqUpDpmpNUs16egd/Q==} - '@zag-js/tags-input@1.24.1': - resolution: {integrity: sha512-HY1ebBZE2j3/fuzfKw4z/44S9WWe50auMWLlFg47j6zVBcyNdXEeMO1OvvfyfQFJOcvOKXGxW8Hi4MXGxLWqmA==} + '@zag-js/tags-input@1.24.2': + resolution: {integrity: sha512-zl9DffAvHdTY11Qdm4rowG5TMNLCreJ/dOqj4nTxoLV2xYAzVAgejgxKzv0jbB11/GiuT6omcslVcoCh5w/hRw==} - '@zag-js/timer@1.24.1': - resolution: {integrity: sha512-cjD8+I8CgSugsj5DI+kqzgvuQ2vYeArRdjO3iSjB4AjR+j08W8NKZvr7aawhYq636vrE9LeJGbxxZ3DBV12ELw==} + '@zag-js/timer@1.24.2': + resolution: {integrity: sha512-Hp7cMGZ7UE04VtBWprINZFSX578pyoyiHLLIgSPm9pbUkywVmjL14oKmO64fnOqrdwXSkTnumxo8O0X2P4reoA==} - '@zag-js/toast@1.24.1': - resolution: {integrity: sha512-gmHv65EYdypfMoF9WYIp7Y8z6XN5tebXEdjIWF8bJBaqW5zPn2VLdUYpfXv7wrHW2YtSTnF/xtgIhJ7MIX7HxA==} + '@zag-js/toast@1.24.2': + resolution: {integrity: sha512-mH9iVrAr8asJZNNSWsrCSmtCfzn/aC64fVU610B/pHOiDY6HN0ANYmC+TgSZ29a3Jlts1OTZiKsygWyBuJQ3Og==} - '@zag-js/toggle-group@1.24.1': - resolution: {integrity: sha512-GVBay9XzmXjp1GgAmHUMpeYq3iMMevH+n0TyC0NcRe00prAEL9S4/q9pVy0P33PIOa20dxcvQ/Q3Tf+n5PFQcg==} + '@zag-js/toggle-group@1.24.2': + resolution: {integrity: sha512-71idkWYohYONDD/8FSr/VR3mjFrsTGtsJXBEIGEUfQpgorr+11ryaHbKqq2EMMRLnHs+oyzwegW+laOyvoj0bA==} - '@zag-js/toggle@1.24.1': - resolution: {integrity: sha512-dMN9Q4XFqr7jPlUZsLCFdUc1rtW88FzUaXcFVaeNCy8y8XGc+MG9AJJqjBiBL9EUeeR+LIp8yUIhJQEEDBm0kw==} + '@zag-js/toggle@1.24.2': + resolution: {integrity: sha512-sD8/di9RP4cISkp5tml5qJKTmZSCBOHIP/4gwnm2eVeUaT4LOqqH1dRFZWv/3FIQ719xcIo6LX8we2vKYxYCCw==} - '@zag-js/tooltip@1.24.1': - resolution: {integrity: sha512-gdD5C9AF6JD8LC6mxXzUGWjnHqY3MS7ZvtNx/nuNGJAqKCD32dPT73fuv0up1UVh1yJhX4IrXg3H6q52Pm+jPw==} + '@zag-js/tooltip@1.24.2': + resolution: {integrity: sha512-GYjoZkCR9UMPutaJa24LnUrZSWnFfXbuiLoUPlp8Xg+HkVSM25zOe7IgiNgvXqf9shp7dE0AaVnXiuDjjdDm1w==} - '@zag-js/tour@1.24.1': - resolution: {integrity: sha512-e+UR8xauKyRhE6tA8gRsR1GuOn1QGjj2YAmtRC8lIb5tD+QrGCPy0jX2xBeR7M7eY1IPSSyi0gCUGE2CbaRK8Q==} + '@zag-js/tour@1.24.2': + resolution: {integrity: sha512-lsgTr+A+/AK1ct6CPRAFNBQy/PypkVtBmQSsPXkTcwdWWvd8lYp6uuyHapXABLLrfqSWQI7rHokhr7QknCN90A==} - '@zag-js/tree-view@1.24.1': - resolution: {integrity: sha512-HXCoqW6j2RunFxaIVRevgRTrRUEP05lpdOvc1Smzne7sC2mczwIqN68Vei6e83gRhXSF80v6Fc4TcHdPiW6wJA==} + '@zag-js/tree-view@1.24.2': + resolution: {integrity: sha512-96P8uOTLKTwO3RzGd5X9ZEVy9JBrIoM5RptiMrk2yqN97HdzXint59A06whCBe7wlQVkJyJK58R0fOKDxjTQaQ==} - '@zag-js/types@1.24.1': - resolution: {integrity: sha512-XyINtxe5JK7A+RtTmBdCQElNoElDiTw6NSWpjKZGRAXXGU9HIZ9JIFeaS77uq1aVs0JhAOFwqJiPs2NJzaYHLA==} + '@zag-js/types@1.24.2': + resolution: {integrity: sha512-sXL8JHx8yrj8qGwCl/EhydaHoCCEfYwbg1rPWcCwqrpkvhic0KEZAJZMUhcU4dLdx+Oajbv2QeFz6Fk5U2Nn5A==} - '@zag-js/utils@1.24.1': - resolution: {integrity: sha512-4nU9lfFlLLW/4T+/HaP+HdHYFeWvacxSVcccv0JSf+ZTC110IldV48kZELP+wFg9xDL/jCPPjlRtO1K64EIwgA==} + '@zag-js/utils@1.24.2': + resolution: {integrity: sha512-3U8aYXjktpDmQV4M7nAOj7E4x1XSifG7PrbHqJbTYRm7/EPbwCQEEDPckkkWBmj4UrvltbkXPi6nzcP4Qpw5bA==} abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} @@ -3750,8 +3667,8 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-escapes@7.1.0: - resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==} + ansi-escapes@7.1.1: + resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} engines: {node: '>=18'} ansi-regex@5.0.1: @@ -3896,8 +3813,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.8.6: - resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==} + baseline-browser-mapping@2.8.10: + resolution: {integrity: sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==} hasBin: true better-opn@3.0.2: @@ -3977,8 +3894,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001743: - resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} + caniuse-lite@1.0.30001746: + resolution: {integrity: sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4257,8 +4174,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.1.0: - resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} + detect-libc@2.1.1: + resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} engines: {node: '>=8'} devlop@1.1.0: @@ -4300,8 +4217,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.222: - resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} + electron-to-chromium@1.5.228: + resolution: {integrity: sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==} emoji-regex@10.5.0: resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} @@ -4492,8 +4409,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-devup@2.0.5: - resolution: {integrity: sha512-7cw9p++6I7naOeWkOXgOrXf8bp4j+ULBpBZPQxsloY3DyWX2fqRD+Po4sHiCkdlda+SED9umyXKfuA5Mi7YXUg==} + eslint-plugin-devup@2.0.8: + resolution: {integrity: sha512-NAB2IMtD6ysWWP61l/taB5KJYRJF4fRrPKA2OVPuIVUuqJZsIeDqZDpn/59A54BUmAkOm+ddHuDDDf0vOfi0gw==} peerDependencies: eslint: '*' @@ -4562,12 +4479,12 @@ packages: peerDependencies: eslint: '>=5.0.0' - eslint-plugin-storybook@9.1.8: - resolution: {integrity: sha512-mEn5EVc7DAEvuwKMqUrIYUFZQJiQD3i5egLi1UJERQm91mDOMr5RdC4hjUF3tNE+WxQYD7QzH2j1qf36ML7V3g==} + eslint-plugin-storybook@9.1.10: + resolution: {integrity: sha512-HAVQ9HTMydcFj5KjnzsETOwPe19eIViwRBhc47lvU04YEFTgEg2rlXN1xozxHUlQ+XkkoKYkIUYoqo7KgGhkIA==} engines: {node: '>=20.0.0'} peerDependencies: eslint: '>=8' - storybook: ^9.1.8 + storybook: ^9.1.10 eslint-plugin-unused-imports@4.2.0: resolution: {integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==} @@ -4810,6 +4727,10 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4887,8 +4808,8 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - happy-dom@19.0.1: - resolution: {integrity: sha512-Rr1H/mvgdCGoIq+jjaGxE/y+ZB+O2DhUBXk9vqoRVc5zsZ/Ne6Fssb8fXaAjPFh3Ajmbx+kfDDf946PHiUbC6Q==} + happy-dom@19.0.2: + resolution: {integrity: sha512-831CLbgDyjRbd2lApHZFsBDe56onuFcjsCBPodzWpzedTpeDr8CGZjs7iEIdNW1DVwSFRecfwzLpVyGBPamwGA==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -5116,8 +5037,8 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -5246,12 +5167,8 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - - jiti@2.6.0: - resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true jju@1.4.0: @@ -5271,11 +5188,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -5567,8 +5479,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.1: - resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -5822,8 +5734,8 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mkdirp@2.1.6: @@ -5831,11 +5743,6 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} @@ -5878,27 +5785,6 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.5.3: - resolution: {integrity: sha512-r/liNAx16SQj4D+XH/oI1dlpv9tdKJ6cONYPwwcCC46f2NjpaRWY+EKCzULfgQYV6YKXjHBchff2IZBSlZmJNw==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.51.1 - babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true - next@15.5.4: resolution: {integrity: sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -6425,15 +6311,15 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.3.1: - resolution: {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true rehype-recma@1.0.0: @@ -6526,8 +6412,8 @@ packages: peerDependencies: rollup: 2.x || 3.x || 4.x - rollup@4.51.0: - resolution: {integrity: sha512-7cR0XWrdp/UAj2HMY/Y4QQEUjidn3l2AY1wSeZoFjMbD8aOMPoV9wgTFYbrJpPzzvejDEini1h3CiUP8wLzxQA==} + rollup@4.52.3: + resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6707,8 +6593,8 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - storybook@9.1.8: - resolution: {integrity: sha512-/iP+DvieJ6Mnixy4PFY/KXnhsg/IHIDlTbZqly3EDbveuhsCuIUELfGnj+QSRGf9C6v/f4sZf9sZ3r80ZnKuEA==} + storybook@9.1.10: + resolution: {integrity: sha512-4+U7gF9hMpGilQmdVJwQaVZZEkD7XwC4ZDmBa51mobaPYelELEMoMfNM2hLyvB2x12gk1IJui1DnwOE4t+MXhw==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -6793,8 +6679,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} style-to-js@1.1.17: resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} @@ -6855,8 +6741,8 @@ packages: resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} engines: {node: '>=6'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} term-size@2.2.1: @@ -6913,8 +6799,8 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tm-grammars@1.24.13: - resolution: {integrity: sha512-ELNKpM77iMZRUQ9t9e2Gel/2z7euiskFJM8QOx/GPqyc2fZZ2ZaeNzDo3qNWTR/OGFpjsBu4lYCawPurhP/0Ww==} + tm-grammars@1.24.15: + resolution: {integrity: sha512-nJxgIQIi8i93/ivOar6T05WHDK7yQFXOdMoMOdHcX0ejcJouoSpczJlWfXTfEAWYbJ52OdG6foB0yWrXBjt4GQ==} to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -7009,8 +6895,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.44.0: - resolution: {integrity: sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==} + typescript-eslint@8.45.0: + resolution: {integrity: sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -7031,8 +6917,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.9.2: - resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -7046,8 +6932,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.12.0: - resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + undici-types@7.13.0: + resolution: {integrity: sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -7162,7 +7048,7 @@ packages: resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} peerDependencies: typescript: '*' - vite: ^6 + vite: '*' peerDependenciesMeta: vite: optional: true @@ -7207,6 +7093,46 @@ packages: yaml: optional: true + vite@7.1.7: + resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -7255,8 +7181,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.101.3: - resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} + webpack@5.102.0: + resolution: {integrity: sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7401,68 +7327,69 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@ark-ui/react@5.25.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@ark-ui/react@5.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@internationalized/date': 3.9.0 - '@zag-js/accordion': 1.24.1 - '@zag-js/anatomy': 1.24.1 - '@zag-js/angle-slider': 1.24.1 - '@zag-js/async-list': 1.24.1 - '@zag-js/auto-resize': 1.24.1 - '@zag-js/avatar': 1.24.1 - '@zag-js/carousel': 1.24.1 - '@zag-js/checkbox': 1.24.1 - '@zag-js/clipboard': 1.24.1 - '@zag-js/collapsible': 1.24.1 - '@zag-js/collection': 1.24.1 - '@zag-js/color-picker': 1.24.1 - '@zag-js/color-utils': 1.24.1 - '@zag-js/combobox': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/date-picker': 1.24.1(@internationalized/date@3.9.0) - '@zag-js/date-utils': 1.24.1(@internationalized/date@3.9.0) - '@zag-js/dialog': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/editable': 1.24.1 - '@zag-js/file-upload': 1.24.1 - '@zag-js/file-utils': 1.24.1 - '@zag-js/floating-panel': 1.24.1 - '@zag-js/focus-trap': 1.24.1 - '@zag-js/highlight-word': 1.24.1 - '@zag-js/hover-card': 1.24.1 - '@zag-js/i18n-utils': 1.24.1 - '@zag-js/json-tree-utils': 1.24.1 - '@zag-js/listbox': 1.24.1 - '@zag-js/menu': 1.24.1 - '@zag-js/number-input': 1.24.1 - '@zag-js/pagination': 1.24.1 - '@zag-js/password-input': 1.24.1 - '@zag-js/pin-input': 1.24.1 - '@zag-js/popover': 1.24.1 - '@zag-js/presence': 1.24.1 - '@zag-js/progress': 1.24.1 - '@zag-js/qr-code': 1.24.1 - '@zag-js/radio-group': 1.24.1 - '@zag-js/rating-group': 1.24.1 - '@zag-js/react': 1.24.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@zag-js/scroll-area': 1.24.1 - '@zag-js/select': 1.24.1 - '@zag-js/signature-pad': 1.24.1 - '@zag-js/slider': 1.24.1 - '@zag-js/splitter': 1.24.1 - '@zag-js/steps': 1.24.1 - '@zag-js/switch': 1.24.1 - '@zag-js/tabs': 1.24.1 - '@zag-js/tags-input': 1.24.1 - '@zag-js/timer': 1.24.1 - '@zag-js/toast': 1.24.1 - '@zag-js/toggle': 1.24.1 - '@zag-js/toggle-group': 1.24.1 - '@zag-js/tooltip': 1.24.1 - '@zag-js/tour': 1.24.1 - '@zag-js/tree-view': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/accordion': 1.24.2 + '@zag-js/anatomy': 1.24.2 + '@zag-js/angle-slider': 1.24.2 + '@zag-js/async-list': 1.24.2 + '@zag-js/auto-resize': 1.24.2 + '@zag-js/avatar': 1.24.2 + '@zag-js/bottom-sheet': 1.24.2 + '@zag-js/carousel': 1.24.2 + '@zag-js/checkbox': 1.24.2 + '@zag-js/clipboard': 1.24.2 + '@zag-js/collapsible': 1.24.2 + '@zag-js/collection': 1.24.2 + '@zag-js/color-picker': 1.24.2 + '@zag-js/color-utils': 1.24.2 + '@zag-js/combobox': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/date-picker': 1.24.2(@internationalized/date@3.9.0) + '@zag-js/date-utils': 1.24.2(@internationalized/date@3.9.0) + '@zag-js/dialog': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/editable': 1.24.2 + '@zag-js/file-upload': 1.24.2 + '@zag-js/file-utils': 1.24.2 + '@zag-js/floating-panel': 1.24.2 + '@zag-js/focus-trap': 1.24.2 + '@zag-js/highlight-word': 1.24.2 + '@zag-js/hover-card': 1.24.2 + '@zag-js/i18n-utils': 1.24.2 + '@zag-js/json-tree-utils': 1.24.2 + '@zag-js/listbox': 1.24.2 + '@zag-js/menu': 1.24.2 + '@zag-js/number-input': 1.24.2 + '@zag-js/pagination': 1.24.2 + '@zag-js/password-input': 1.24.2 + '@zag-js/pin-input': 1.24.2 + '@zag-js/popover': 1.24.2 + '@zag-js/presence': 1.24.2 + '@zag-js/progress': 1.24.2 + '@zag-js/qr-code': 1.24.2 + '@zag-js/radio-group': 1.24.2 + '@zag-js/rating-group': 1.24.2 + '@zag-js/react': 1.24.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@zag-js/scroll-area': 1.24.2 + '@zag-js/select': 1.24.2 + '@zag-js/signature-pad': 1.24.2 + '@zag-js/slider': 1.24.2 + '@zag-js/splitter': 1.24.2 + '@zag-js/steps': 1.24.2 + '@zag-js/switch': 1.24.2 + '@zag-js/tabs': 1.24.2 + '@zag-js/tags-input': 1.24.2 + '@zag-js/timer': 1.24.2 + '@zag-js/toast': 1.24.2 + '@zag-js/toggle': 1.24.2 + '@zag-js/toggle-group': 1.24.2 + '@zag-js/tooltip': 1.24.2 + '@zag-js/tour': 1.24.2 + '@zag-js/tree-view': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) @@ -7531,7 +7458,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.3.1 + regexpu-core: 6.4.0 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': @@ -8210,11 +8137,11 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@chakra-ui/react@3.27.0(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@chakra-ui/react@3.27.0(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@ark-ui/react': 5.25.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@ark-ui/react': 5.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.1.13)(react@19.1.1) + '@emotion/react': 11.14.0(@types/react@19.1.16)(react@19.1.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.1) '@emotion/utils': 1.4.2 @@ -8261,7 +8188,7 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.29.7(@types/node@24.5.2)': + '@changesets/cli@2.29.7(@types/node@24.6.1)': dependencies: '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 @@ -8277,7 +8204,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.2(@types/node@24.5.2) + '@inquirer/external-editor': 1.0.2(@types/node@24.6.1) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -8397,7 +8324,7 @@ snapshots: '@code-hike/lighter@1.0.3': dependencies: ansi-sequence-parser: 1.1.1 - tm-grammars: 1.24.13 + tm-grammars: 1.24.15 '@csstools/postcss-cascade-layers@5.0.2(postcss@8.4.49)': dependencies: @@ -8409,6 +8336,15 @@ snapshots: dependencies: postcss-selector-parser: 7.1.0 + '@devup-ui/eslint-plugin@1.0.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + '@dual-bundle/import-meta-resolve@4.2.1': {} '@emnapi/core@1.5.0': @@ -8459,7 +8395,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1)': + '@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 @@ -8471,7 +8407,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.1.1 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 transitivePeerDependencies: - supports-color @@ -8485,18 +8421,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.1.13)(react@19.1.1) + '@emotion/react': 11.14.0(@types/react@19.1.16)(react@19.1.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.1) '@emotion/utils': 1.4.2 react: 19.1.1 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 transitivePeerDependencies: - supports-color @@ -8654,9 +8590,9 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.1))': dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -8689,8 +8625,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.35.0': {} - '@eslint/js@9.36.0': {} '@eslint/object-schema@2.1.6': {} @@ -8811,12 +8745,12 @@ snapshots: '@img/sharp-win32-x64@0.34.4': optional: true - '@inquirer/external-editor@1.0.2(@types/node@24.5.2)': + '@inquirer/external-editor@1.0.2(@types/node@24.6.1)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 '@internationalized/date@3.9.0': dependencies: @@ -8847,14 +8781,14 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: glob: 10.4.5 magic-string: 0.30.19 - react-docgen-typescript: 2.4.0(typescript@5.9.2) - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + react-docgen-typescript: 2.4.0(typescript@5.9.3) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -8880,10 +8814,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@kuma-ui/babel-plugin@1.2.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@kuma-ui/babel-plugin@1.2.3(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': dependencies: '@babel/core': 7.28.4 - '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/core': 1.5.9(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 transitivePeerDependencies: @@ -8892,11 +8826,11 @@ snapshots: - react - supports-color - '@kuma-ui/compiler@1.3.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@kuma-ui/compiler@1.3.3(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': dependencies: '@babel/core': 7.28.4 - '@kuma-ui/babel-plugin': 1.2.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) - '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/babel-plugin': 1.2.3(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/core': 1.5.9(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 '@kuma-ui/wasm': 1.0.3 @@ -8907,7 +8841,7 @@ snapshots: - react - supports-color - '@kuma-ui/core@1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@kuma-ui/core@1.5.9(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': dependencies: '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 @@ -8915,23 +8849,23 @@ snapshots: react: 19.1.1 stylis: 4.3.6 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@kuma-ui/next-plugin@1.3.3(@babel/core@7.28.4)(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3)': + '@kuma-ui/next-plugin@1.3.3(@babel/core@7.28.4)(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.102.0)': dependencies: '@babel/preset-env': 7.28.3(@babel/core@7.28.4) '@babel/preset-react': 7.27.1(@babel/core@7.28.4) '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) - '@kuma-ui/core': 1.5.9(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) - '@kuma-ui/webpack-plugin': 1.4.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3) - babel-loader: 9.2.1(@babel/core@7.28.4)(webpack@5.101.3) + '@kuma-ui/core': 1.5.9(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/webpack-plugin': 1.4.3(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.102.0) + babel-loader: 9.2.1(@babel/core@7.28.4)(webpack@5.102.0) browserslist: 4.21.5 next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 - webpack: 5.101.3 + webpack: 5.102.0 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 transitivePeerDependencies: - '@babel/core' - supports-color @@ -8947,14 +8881,14 @@ snapshots: '@kuma-ui/wasm@1.0.3': {} - '@kuma-ui/webpack-plugin@1.4.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.3)': + '@kuma-ui/webpack-plugin@1.4.3(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.102.0)': dependencies: - '@kuma-ui/compiler': 1.3.3(@types/react@19.1.13)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@kuma-ui/compiler': 1.3.3(@types/react@19.1.16)(next@15.5.4(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@kuma-ui/sheet': 1.3.1 '@kuma-ui/system': 1.7.6 esbuild: 0.18.20 eval: 0.1.8 - webpack: 5.101.3 + webpack: 5.102.0 transitivePeerDependencies: - '@types/react' - next @@ -8977,12 +8911,12 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@mdx-js/loader@3.1.1(webpack@5.101.3)': + '@mdx-js/loader@3.1.1(webpack@5.102.0)': dependencies: '@mdx-js/mdx': 3.1.1 source-map: 0.7.6 optionalDependencies: - webpack: 5.101.3 + webpack: 5.102.0 transitivePeerDependencies: - supports-color @@ -9016,35 +8950,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 19.1.13 - react: 19.1.1 - - '@mdx-js/react@3.1.1(@types/react@19.1.15)(react@19.1.1)': + '@mdx-js/react@3.1.1(@types/react@19.1.16)(react@19.1.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.15 + '@types/react': 19.1.16 react: 19.1.1 - '@microsoft/api-extractor-model@7.30.7(@types/node@24.5.2)': + '@microsoft/api-extractor-model@7.30.9(@types/node@24.6.1)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.14.0(@types/node@24.5.2) + '@rushstack/node-core-library': 5.15.1(@types/node@24.6.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.13(@types/node@24.5.2)': + '@microsoft/api-extractor@7.52.15(@types/node@24.6.1)': dependencies: - '@microsoft/api-extractor-model': 7.30.7(@types/node@24.5.2) + '@microsoft/api-extractor-model': 7.30.9(@types/node@24.6.1) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.14.0(@types/node@24.5.2) + '@rushstack/node-core-library': 5.15.1(@types/node@24.6.1) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.16.0(@types/node@24.5.2) - '@rushstack/ts-command-line': 5.0.3(@types/node@24.5.2) + '@rushstack/terminal': 0.18.0(@types/node@24.6.1) + '@rushstack/ts-command-line': 5.0.5(@types/node@24.6.1) lodash: 4.17.21 minimatch: 10.0.3 resolve: 1.22.10 @@ -9090,15 +9018,15 @@ snapshots: '@mui/core-downloads-tracker@7.3.2': {} - '@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 '@mui/core-downloads-tracker': 7.3.2 - '@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1) - '@mui/types': 7.4.6(@types/react@19.1.13) - '@mui/utils': 7.3.2(@types/react@19.1.13)(react@19.1.1) + '@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1) + '@mui/types': 7.4.6(@types/react@19.1.16) + '@mui/utils': 7.3.2(@types/react@19.1.16)(react@19.1.1) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.1.13) + '@types/react-transition-group': 4.4.12(@types/react@19.1.16) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -9107,20 +9035,20 @@ snapshots: react-is: 19.1.1 react-transition-group: 4.4.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.1.13)(react@19.1.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1) - '@types/react': 19.1.13 + '@emotion/react': 11.14.0(@types/react@19.1.16)(react@19.1.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1) + '@types/react': 19.1.16 - '@mui/private-theming@7.3.2(@types/react@19.1.13)(react@19.1.1)': + '@mui/private-theming@7.3.2(@types/react@19.1.16)(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/utils': 7.3.2(@types/react@19.1.13)(react@19.1.1) + '@mui/utils': 7.3.2(@types/react@19.1.16)(react@19.1.1) prop-types: 15.8.1 react: 19.1.1 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 - '@mui/styled-engine@7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(react@19.1.1)': + '@mui/styled-engine@7.3.2(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1))(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/cache': 11.14.0 @@ -9130,42 +9058,42 @@ snapshots: prop-types: 15.8.1 react: 19.1.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.1.13)(react@19.1.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1) + '@emotion/react': 11.14.0(@types/react@19.1.16)(react@19.1.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1) - '@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1)': + '@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/private-theming': 7.3.2(@types/react@19.1.13)(react@19.1.1) - '@mui/styled-engine': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1))(react@19.1.1) - '@mui/types': 7.4.6(@types/react@19.1.13) - '@mui/utils': 7.3.2(@types/react@19.1.13)(react@19.1.1) + '@mui/private-theming': 7.3.2(@types/react@19.1.16)(react@19.1.1) + '@mui/styled-engine': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1))(react@19.1.1) + '@mui/types': 7.4.6(@types/react@19.1.16) + '@mui/utils': 7.3.2(@types/react@19.1.16)(react@19.1.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.1.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.1.13)(react@19.1.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.13)(react@19.1.1))(@types/react@19.1.13)(react@19.1.1) - '@types/react': 19.1.13 + '@emotion/react': 11.14.0(@types/react@19.1.16)(react@19.1.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.16)(react@19.1.1))(@types/react@19.1.16)(react@19.1.1) + '@types/react': 19.1.16 - '@mui/types@7.4.6(@types/react@19.1.13)': + '@mui/types@7.4.6(@types/react@19.1.16)': dependencies: '@babel/runtime': 7.28.4 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 - '@mui/utils@7.3.2(@types/react@19.1.13)(react@19.1.1)': + '@mui/utils@7.3.2(@types/react@19.1.16)(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/types': 7.4.6(@types/react@19.1.13) + '@mui/types': 7.4.6(@types/react@19.1.16) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 19.1.1 react-is: 19.1.1 optionalDependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 '@napi-rs/wasm-runtime@0.2.12': dependencies: @@ -9181,66 +9109,40 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@15.5.3': {} - '@next/env@15.5.4': {} '@next/eslint-plugin-next@15.5.4': dependencies: fast-glob: 3.3.1 - '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.101.3))(@mdx-js/react@3.1.1(@types/react@19.1.13)(react@19.1.1))': + '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.102.0))(@mdx-js/react@3.1.1(@types/react@19.1.16)(react@19.1.1))': dependencies: source-map: 0.7.6 optionalDependencies: - '@mdx-js/loader': 3.1.1(webpack@5.101.3) - '@mdx-js/react': 3.1.1(@types/react@19.1.13)(react@19.1.1) - - '@next/swc-darwin-arm64@15.5.3': - optional: true + '@mdx-js/loader': 3.1.1(webpack@5.102.0) + '@mdx-js/react': 3.1.1(@types/react@19.1.16)(react@19.1.1) '@next/swc-darwin-arm64@15.5.4': optional: true - '@next/swc-darwin-x64@15.5.3': - optional: true - '@next/swc-darwin-x64@15.5.4': optional: true - '@next/swc-linux-arm64-gnu@15.5.3': - optional: true - '@next/swc-linux-arm64-gnu@15.5.4': optional: true - '@next/swc-linux-arm64-musl@15.5.3': - optional: true - '@next/swc-linux-arm64-musl@15.5.4': optional: true - '@next/swc-linux-x64-gnu@15.5.3': - optional: true - '@next/swc-linux-x64-gnu@15.5.4': optional: true - '@next/swc-linux-x64-musl@15.5.3': - optional: true - '@next/swc-linux-x64-musl@15.5.4': optional: true - '@next/swc-win32-arm64-msvc@15.5.3': - optional: true - '@next/swc-win32-arm64-msvc@15.5.4': optional: true - '@next/swc-win32-x64-msvc@15.5.3': - optional: true - '@next/swc-win32-x64-msvc@15.5.4': optional: true @@ -9310,27 +9212,27 @@ snapshots: dependencies: which: 4.0.0 - '@pandacss/config@1.4.0': + '@pandacss/config@1.4.1': dependencies: - '@pandacss/logger': 1.4.0 - '@pandacss/preset-base': 1.4.0 - '@pandacss/preset-panda': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/logger': 1.4.1 + '@pandacss/preset-base': 1.4.1 + '@pandacss/preset-panda': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/types': 1.4.1 bundle-n-require: 1.1.2 escalade: 3.1.2 merge-anything: 5.1.7 microdiff: 1.3.2 typescript: 5.8.3 - '@pandacss/core@1.4.0': + '@pandacss/core@1.4.1': dependencies: '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.4.49) - '@pandacss/is-valid-prop': 1.4.0 - '@pandacss/logger': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/token-dictionary': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/is-valid-prop': 1.4.1 + '@pandacss/logger': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/token-dictionary': 1.4.1 + '@pandacss/types': 1.4.1 browserslist: 4.23.3 hookable: 5.5.3 lightningcss: 1.25.1 @@ -9346,39 +9248,39 @@ snapshots: postcss-selector-parser: 6.1.2 ts-pattern: 5.8.0 - '@pandacss/dev@1.4.0(typescript@5.9.2)': + '@pandacss/dev@1.4.1(typescript@5.9.3)': dependencies: '@clack/prompts': 0.9.1 - '@pandacss/config': 1.4.0 - '@pandacss/logger': 1.4.0 - '@pandacss/node': 1.4.0(typescript@5.9.2) - '@pandacss/postcss': 1.4.0(typescript@5.9.2) - '@pandacss/preset-panda': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/token-dictionary': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/config': 1.4.1 + '@pandacss/logger': 1.4.1 + '@pandacss/node': 1.4.1(typescript@5.9.3) + '@pandacss/postcss': 1.4.1(typescript@5.9.3) + '@pandacss/preset-panda': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/token-dictionary': 1.4.1 + '@pandacss/types': 1.4.1 cac: 6.7.14 transitivePeerDependencies: - jsdom - typescript - '@pandacss/extractor@1.4.0(typescript@5.9.2)': + '@pandacss/extractor@1.4.1(typescript@5.9.3)': dependencies: - '@pandacss/shared': 1.4.0 - ts-evaluator: 1.2.0(typescript@5.9.2) + '@pandacss/shared': 1.4.1 + ts-evaluator: 1.2.0(typescript@5.9.3) ts-morph: 26.0.0 transitivePeerDependencies: - jsdom - typescript - '@pandacss/generator@1.4.0': + '@pandacss/generator@1.4.1': dependencies: - '@pandacss/core': 1.4.0 - '@pandacss/is-valid-prop': 1.4.0 - '@pandacss/logger': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/token-dictionary': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/core': 1.4.1 + '@pandacss/is-valid-prop': 1.4.1 + '@pandacss/logger': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/token-dictionary': 1.4.1 + '@pandacss/types': 1.4.1 javascript-stringify: 2.1.0 outdent: 0.8.0 pluralize: 8.0.0 @@ -9387,24 +9289,24 @@ snapshots: '@pandacss/is-valid-prop@0.54.0': {} - '@pandacss/is-valid-prop@1.4.0': {} + '@pandacss/is-valid-prop@1.4.1': {} - '@pandacss/logger@1.4.0': + '@pandacss/logger@1.4.1': dependencies: - '@pandacss/types': 1.4.0 + '@pandacss/types': 1.4.1 kleur: 4.1.5 - '@pandacss/node@1.4.0(typescript@5.9.2)': - dependencies: - '@pandacss/config': 1.4.0 - '@pandacss/core': 1.4.0 - '@pandacss/generator': 1.4.0 - '@pandacss/logger': 1.4.0 - '@pandacss/parser': 1.4.0(typescript@5.9.2) - '@pandacss/reporter': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/token-dictionary': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/node@1.4.1(typescript@5.9.3)': + dependencies: + '@pandacss/config': 1.4.1 + '@pandacss/core': 1.4.1 + '@pandacss/generator': 1.4.1 + '@pandacss/logger': 1.4.1 + '@pandacss/parser': 1.4.1(typescript@5.9.3) + '@pandacss/reporter': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/token-dictionary': 1.4.1 + '@pandacss/types': 1.4.1 browserslist: 4.23.3 chokidar: 4.0.3 fast-glob: 3.3.3 @@ -9423,19 +9325,19 @@ snapshots: prettier: 3.2.5 ts-morph: 26.0.0 ts-pattern: 5.8.0 - tsconfck: 3.1.6(typescript@5.9.2) + tsconfck: 3.1.6(typescript@5.9.3) transitivePeerDependencies: - jsdom - typescript - '@pandacss/parser@1.4.0(typescript@5.9.2)': + '@pandacss/parser@1.4.1(typescript@5.9.3)': dependencies: - '@pandacss/config': 1.4.0 - '@pandacss/core': 1.4.0 - '@pandacss/extractor': 1.4.0(typescript@5.9.2) - '@pandacss/logger': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/config': 1.4.1 + '@pandacss/core': 1.4.1 + '@pandacss/extractor': 1.4.1(typescript@5.9.3) + '@pandacss/logger': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/types': 1.4.1 '@vue/compiler-sfc': 3.4.19 magic-string: 0.30.17 ts-morph: 26.0.0 @@ -9444,42 +9346,42 @@ snapshots: - jsdom - typescript - '@pandacss/postcss@1.4.0(typescript@5.9.2)': + '@pandacss/postcss@1.4.1(typescript@5.9.3)': dependencies: - '@pandacss/node': 1.4.0(typescript@5.9.2) + '@pandacss/node': 1.4.1(typescript@5.9.3) postcss: 8.4.49 transitivePeerDependencies: - jsdom - typescript - '@pandacss/preset-base@1.4.0': + '@pandacss/preset-base@1.4.1': dependencies: - '@pandacss/types': 1.4.0 + '@pandacss/types': 1.4.1 - '@pandacss/preset-panda@1.4.0': + '@pandacss/preset-panda@1.4.1': dependencies: - '@pandacss/types': 1.4.0 + '@pandacss/types': 1.4.1 - '@pandacss/reporter@1.4.0': + '@pandacss/reporter@1.4.1': dependencies: - '@pandacss/core': 1.4.0 - '@pandacss/generator': 1.4.0 - '@pandacss/logger': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/core': 1.4.1 + '@pandacss/generator': 1.4.1 + '@pandacss/logger': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/types': 1.4.1 table: 6.9.0 wordwrapjs: 5.1.0 - '@pandacss/shared@1.4.0': {} + '@pandacss/shared@1.4.1': {} - '@pandacss/token-dictionary@1.4.0': + '@pandacss/token-dictionary@1.4.1': dependencies: - '@pandacss/logger': 1.4.0 - '@pandacss/shared': 1.4.0 - '@pandacss/types': 1.4.0 + '@pandacss/logger': 1.4.1 + '@pandacss/shared': 1.4.1 + '@pandacss/types': 1.4.1 ts-pattern: 5.8.0 - '@pandacss/types@1.4.0': {} + '@pandacss/types@1.4.1': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -9490,142 +9392,145 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.38': {} - '@rollup/pluginutils@5.3.0(rollup@4.51.0)': + '@rollup/pluginutils@5.3.0(rollup@4.52.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.51.0 + rollup: 4.52.3 - '@rollup/rollup-android-arm-eabi@4.51.0': + '@rollup/rollup-android-arm-eabi@4.52.3': optional: true - '@rollup/rollup-android-arm64@4.51.0': + '@rollup/rollup-android-arm64@4.52.3': optional: true - '@rollup/rollup-darwin-arm64@4.51.0': + '@rollup/rollup-darwin-arm64@4.52.3': optional: true - '@rollup/rollup-darwin-x64@4.51.0': + '@rollup/rollup-darwin-x64@4.52.3': optional: true - '@rollup/rollup-freebsd-arm64@4.51.0': + '@rollup/rollup-freebsd-arm64@4.52.3': optional: true - '@rollup/rollup-freebsd-x64@4.51.0': + '@rollup/rollup-freebsd-x64@4.52.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.51.0': + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.51.0': + '@rollup/rollup-linux-arm-musleabihf@4.52.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.51.0': + '@rollup/rollup-linux-arm64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.51.0': + '@rollup/rollup-linux-arm64-musl@4.52.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.51.0': + '@rollup/rollup-linux-loong64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.51.0': + '@rollup/rollup-linux-ppc64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.51.0': + '@rollup/rollup-linux-riscv64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.51.0': + '@rollup/rollup-linux-riscv64-musl@4.52.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.51.0': + '@rollup/rollup-linux-s390x-gnu@4.52.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.51.0': + '@rollup/rollup-linux-x64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-x64-musl@4.51.0': + '@rollup/rollup-linux-x64-musl@4.52.3': optional: true - '@rollup/rollup-openharmony-arm64@4.51.0': + '@rollup/rollup-openharmony-arm64@4.52.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.51.0': + '@rollup/rollup-win32-arm64-msvc@4.52.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.51.0': + '@rollup/rollup-win32-ia32-msvc@4.52.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.51.0': + '@rollup/rollup-win32-x64-gnu@4.52.3': optional: true - '@rsbuild/core@1.5.12': + '@rollup/rollup-win32-x64-msvc@4.52.3': + optional: true + + '@rsbuild/core@1.5.13': dependencies: - '@rspack/core': 1.5.7(@swc/helpers@0.5.17) + '@rspack/core': 1.5.8(@swc/helpers@0.5.17) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 core-js: 3.45.1 - jiti: 2.6.0 + jiti: 2.6.1 - '@rsbuild/plugin-react@1.4.1(@rsbuild/core@1.5.12)': + '@rsbuild/plugin-react@1.4.1(@rsbuild/core@1.5.13)': dependencies: - '@rsbuild/core': 1.5.12 + '@rsbuild/core': 1.5.13 '@rspack/plugin-react-refresh': 1.5.1(react-refresh@0.17.0) react-refresh: 0.17.0 transitivePeerDependencies: - webpack-hot-middleware - '@rspack/binding-darwin-arm64@1.5.7': + '@rspack/binding-darwin-arm64@1.5.8': optional: true - '@rspack/binding-darwin-x64@1.5.7': + '@rspack/binding-darwin-x64@1.5.8': optional: true - '@rspack/binding-linux-arm64-gnu@1.5.7': + '@rspack/binding-linux-arm64-gnu@1.5.8': optional: true - '@rspack/binding-linux-arm64-musl@1.5.7': + '@rspack/binding-linux-arm64-musl@1.5.8': optional: true - '@rspack/binding-linux-x64-gnu@1.5.7': + '@rspack/binding-linux-x64-gnu@1.5.8': optional: true - '@rspack/binding-linux-x64-musl@1.5.7': + '@rspack/binding-linux-x64-musl@1.5.8': optional: true - '@rspack/binding-wasm32-wasi@1.5.7': + '@rspack/binding-wasm32-wasi@1.5.8': dependencies: '@napi-rs/wasm-runtime': 1.0.5 optional: true - '@rspack/binding-win32-arm64-msvc@1.5.7': + '@rspack/binding-win32-arm64-msvc@1.5.8': optional: true - '@rspack/binding-win32-ia32-msvc@1.5.7': + '@rspack/binding-win32-ia32-msvc@1.5.8': optional: true - '@rspack/binding-win32-x64-msvc@1.5.7': + '@rspack/binding-win32-x64-msvc@1.5.8': optional: true - '@rspack/binding@1.5.7': + '@rspack/binding@1.5.8': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.5.7 - '@rspack/binding-darwin-x64': 1.5.7 - '@rspack/binding-linux-arm64-gnu': 1.5.7 - '@rspack/binding-linux-arm64-musl': 1.5.7 - '@rspack/binding-linux-x64-gnu': 1.5.7 - '@rspack/binding-linux-x64-musl': 1.5.7 - '@rspack/binding-wasm32-wasi': 1.5.7 - '@rspack/binding-win32-arm64-msvc': 1.5.7 - '@rspack/binding-win32-ia32-msvc': 1.5.7 - '@rspack/binding-win32-x64-msvc': 1.5.7 - - '@rspack/core@1.5.7(@swc/helpers@0.5.17)': + '@rspack/binding-darwin-arm64': 1.5.8 + '@rspack/binding-darwin-x64': 1.5.8 + '@rspack/binding-linux-arm64-gnu': 1.5.8 + '@rspack/binding-linux-arm64-musl': 1.5.8 + '@rspack/binding-linux-x64-gnu': 1.5.8 + '@rspack/binding-linux-x64-musl': 1.5.8 + '@rspack/binding-wasm32-wasi': 1.5.8 + '@rspack/binding-win32-arm64-msvc': 1.5.8 + '@rspack/binding-win32-ia32-msvc': 1.5.8 + '@rspack/binding-win32-x64-msvc': 1.5.8 + + '@rspack/core@1.5.8(@swc/helpers@0.5.17)': dependencies: '@module-federation/runtime-tools': 0.18.0 - '@rspack/binding': 1.5.7 + '@rspack/binding': 1.5.8 '@rspack/lite-tapable': 1.0.1 optionalDependencies: '@swc/helpers': 0.5.17 @@ -9642,7 +9547,7 @@ snapshots: '@rushstack/eslint-patch@1.12.0': {} - '@rushstack/node-core-library@5.14.0(@types/node@24.5.2)': + '@rushstack/node-core-library@5.15.1(@types/node@24.6.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -9653,56 +9558,61 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 + + '@rushstack/problem-matcher@0.1.1(@types/node@24.6.1)': + optionalDependencies: + '@types/node': 24.6.1 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.16.0(@types/node@24.5.2)': + '@rushstack/terminal@0.18.0(@types/node@24.6.1)': dependencies: - '@rushstack/node-core-library': 5.14.0(@types/node@24.5.2) + '@rushstack/node-core-library': 5.15.1(@types/node@24.6.1) + '@rushstack/problem-matcher': 0.1.1(@types/node@24.6.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 - '@rushstack/ts-command-line@5.0.3(@types/node@24.5.2)': + '@rushstack/ts-command-line@5.0.5(@types/node@24.6.1)': dependencies: - '@rushstack/terminal': 0.16.0(@types/node@24.5.2) + '@rushstack/terminal': 0.18.0(@types/node@24.6.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@storybook/addon-docs@9.1.8(@types/react@19.1.15)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/addon-docs@9.1.10(@types/react@19.1.16)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - '@mdx-js/react': 3.1.1(@types/react@19.1.15)(react@19.1.1) - '@storybook/csf-plugin': 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@mdx-js/react': 3.1.1(@types/react@19.1.16)(react@19.1.1) + '@storybook/csf-plugin': 9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/icons': 1.6.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@storybook/react-dom-shim': 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/react-dom-shim': 9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-onboarding@9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/addon-onboarding@9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/builder-vite@9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@storybook/builder-vite@9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: - '@storybook/csf-plugin': 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/csf-plugin': 9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) - '@storybook/csf-plugin@9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/csf-plugin@9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -9712,41 +9622,41 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/react-dom-shim@9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + '@storybook/react-dom-shim@9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/react-vite@9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.51.0)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@storybook/react-vite@9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.52.3)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@rollup/pluginutils': 5.3.0(rollup@4.51.0) - '@storybook/builder-vite': 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/react': 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + '@storybook/builder-vite': 9.1.10(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/react': 9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.3) find-up: 7.0.0 magic-string: 0.30.19 react: 19.1.1 react-docgen: 8.0.1 react-dom: 19.1.1(react@19.1.1) resolve: 1.22.10 - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) tsconfig-paths: 4.2.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2)': + '@storybook/react@9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/react-dom-shim': 9.1.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@stylexjs/babel-plugin@0.11.1': dependencies: @@ -9821,7 +9731,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.18.3 - jiti: 2.5.1 + jiti: 2.6.1 lightningcss: 1.30.1 magic-string: 0.30.19 source-map-js: 1.2.1 @@ -9865,8 +9775,8 @@ snapshots: '@tailwindcss/oxide@4.1.13': dependencies: - detect-libc: 2.1.0 - tar: 7.4.3 + detect-libc: 2.1.1 + tar: 7.5.1 optionalDependencies: '@tailwindcss/oxide-android-arm64': 4.1.13 '@tailwindcss/oxide-darwin-arm64': 4.1.13 @@ -9889,10 +9799,10 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.13 - '@tanstack/eslint-plugin-query@5.89.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@tanstack/eslint-plugin-query@5.91.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) transitivePeerDependencies: - supports-color - typescript @@ -9908,7 +9818,7 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.8.0': + '@testing-library/jest-dom@6.9.0': dependencies: '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 @@ -9917,15 +9827,15 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.15 - '@types/react-dom': 19.1.9(@types/react@19.1.15) + '@types/react': 19.1.16 + '@types/react-dom': 19.1.9(@types/react@19.1.16) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: @@ -9982,7 +9892,7 @@ snapshots: '@types/concat-stream@2.0.3': dependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 '@types/debug@4.1.12': dependencies: @@ -10034,47 +9944,39 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@20.19.17': + '@types/node@20.19.19': dependencies: undici-types: 6.21.0 - '@types/node@22.18.6': + '@types/node@22.18.8': dependencies: undici-types: 6.21.0 - '@types/node@24.5.2': + '@types/node@24.6.1': dependencies: - undici-types: 7.12.0 + undici-types: 7.13.0 '@types/parse-json@4.0.2': {} '@types/prop-types@15.7.15': {} - '@types/react-dom@19.1.9(@types/react@19.1.13)': + '@types/react-dom@19.1.9(@types/react@19.1.16)': dependencies: - '@types/react': 19.1.13 - - '@types/react-dom@19.1.9(@types/react@19.1.15)': - dependencies: - '@types/react': 19.1.15 + '@types/react': 19.1.16 '@types/react-syntax-highlighter@15.5.13': dependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 '@types/react-test-renderer@19.1.0': dependencies: - '@types/react': 19.1.15 - - '@types/react-transition-group@4.4.12(@types/react@19.1.13)': - dependencies: - '@types/react': 19.1.13 + '@types/react': 19.1.16 - '@types/react@19.1.13': + '@types/react-transition-group@4.4.12(@types/react@19.1.16)': dependencies: - csstype: 3.1.3 + '@types/react': 19.1.16 - '@types/react@19.1.15': + '@types/react@19.1.16': dependencies: csstype: 3.1.3 @@ -10090,9 +9992,9 @@ snapshots: '@types/webpack@5.28.5': dependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 tapable: 2.2.3 - webpack: 5.101.3 + webpack: 5.102.0 transitivePeerDependencies: - '@swc/core' - esbuild @@ -10101,90 +10003,51 @@ snapshots: '@types/whatwg-mimetype@3.0.2': {} - '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 - eslint: 9.36.0(jiti@2.6.0) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 - eslint: 9.36.0(jiti@2.6.0) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.45.0 + eslint: 9.36.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - optional: true - - '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': - dependencies: - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 - debug: 4.4.3 - eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': - dependencies: - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.1 - debug: 4.4.3 - eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': + '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3 - typescript: 5.9.2 + eslint: 9.36.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)': + '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 debug: 4.4.3 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/rule-tester@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) ajv: 6.12.6 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.7.2 @@ -10192,102 +10055,59 @@ snapshots: - supports-color - typescript - '@typescript-eslint/scope-manager@8.44.0': + '@typescript-eslint/scope-manager@8.45.0': dependencies: - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 - '@typescript-eslint/scope-manager@8.44.1': + '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/visitor-keys': 8.44.1 + typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - typescript: 5.9.2 - - '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)': - dependencies: - typescript: 5.9.2 - - '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': - dependencies: - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.36.0(jiti@2.6.0) - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + eslint: 9.36.0(jiti@2.6.1) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.44.0': {} - - '@typescript-eslint/types@8.44.1': {} - - '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/visitor-keys': 8.44.0 - debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.45.0': {} - '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.44.0': - dependencies: - '@typescript-eslint/types': 8.44.0 - eslint-visitor-keys: 4.2.1 - - '@typescript-eslint/visitor-keys@8.44.1': + '@typescript-eslint/visitor-keys@8.45.0': dependencies: - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/types': 8.45.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -10390,9 +10210,9 @@ snapshots: - babel-plugin-macros - supports-color - '@vanilla-extract/next-plugin@2.4.14(babel-plugin-macros@3.1.0)(next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.101.3)': + '@vanilla-extract/next-plugin@2.4.14(babel-plugin-macros@3.1.0)(next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(webpack@5.102.0)': dependencies: - '@vanilla-extract/webpack-plugin': 2.3.22(babel-plugin-macros@3.1.0)(webpack@5.101.3) + '@vanilla-extract/webpack-plugin': 2.3.22(babel-plugin-macros@3.1.0)(webpack@5.102.0) next: 15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) transitivePeerDependencies: - babel-plugin-macros @@ -10401,18 +10221,18 @@ snapshots: '@vanilla-extract/private@1.0.9': {} - '@vanilla-extract/webpack-plugin@2.3.22(babel-plugin-macros@3.1.0)(webpack@5.101.3)': + '@vanilla-extract/webpack-plugin@2.3.22(babel-plugin-macros@3.1.0)(webpack@5.102.0)': dependencies: '@vanilla-extract/integration': 8.0.4(babel-plugin-macros@3.1.0) debug: 4.4.3 loader-utils: 2.0.4 picocolors: 1.1.1 - webpack: 5.101.3 + webpack: 5.102.0 transitivePeerDependencies: - babel-plugin-macros - supports-color - '@vitejs/plugin-react@5.0.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -10420,11 +10240,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -10439,7 +10259,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -10451,13 +10271,21 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.19 + optionalDependencies: + vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + + '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -10467,7 +10295,7 @@ snapshots: dependencies: '@vitest/utils': 3.2.4 pathe: 2.0.3 - strip-literal: 3.0.0 + strip-literal: 3.1.0 '@vitest/snapshot@3.2.4': dependencies: @@ -10505,10 +10333,10 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-core@3.5.21': + '@vue/compiler-core@3.5.22': dependencies: '@babel/parser': 7.28.4 - '@vue/shared': 3.5.21 + '@vue/shared': 3.5.22 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -10518,10 +10346,10 @@ snapshots: '@vue/compiler-core': 3.4.19 '@vue/shared': 3.4.19 - '@vue/compiler-dom@3.5.21': + '@vue/compiler-dom@3.5.22': dependencies: - '@vue/compiler-core': 3.5.21 - '@vue/shared': 3.5.21 + '@vue/compiler-core': 3.5.22 + '@vue/shared': 3.5.22 '@vue/compiler-sfc@3.4.19': dependencies: @@ -10531,7 +10359,7 @@ snapshots: '@vue/compiler-ssr': 3.4.19 '@vue/shared': 3.4.19 estree-walker: 2.0.2 - magic-string: 0.30.19 + magic-string: 0.30.17 postcss: 8.5.6 source-map-js: 1.2.1 @@ -10545,22 +10373,22 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@2.2.0(typescript@5.9.2)': + '@vue/language-core@2.2.0(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.21 + '@vue/compiler-dom': 3.5.22 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.21 + '@vue/shared': 3.5.22 alien-signals: 0.4.14 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@vue/shared@3.4.19': {} - '@vue/shared@3.5.21': {} + '@vue/shared@3.5.22': {} '@webassemblyjs/ast@1.14.1': dependencies: @@ -10642,506 +10470,518 @@ snapshots: '@xtuc/long@4.2.2': {} - '@zag-js/accordion@1.24.1': + '@zag-js/accordion@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/anatomy@1.24.1': {} + '@zag-js/anatomy@1.24.2': {} - '@zag-js/angle-slider@1.24.1': + '@zag-js/angle-slider@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/rect-utils': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/rect-utils': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/aria-hidden@1.24.2': {} - '@zag-js/aria-hidden@1.24.1': {} + '@zag-js/async-list@1.24.2': + dependencies: + '@zag-js/core': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/async-list@1.24.1': + '@zag-js/auto-resize@1.24.2': dependencies: - '@zag-js/core': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/dom-query': 1.24.2 - '@zag-js/auto-resize@1.24.1': + '@zag-js/avatar@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/avatar@1.24.1': + '@zag-js/bottom-sheet@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/aria-hidden': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-trap': 1.24.2 + '@zag-js/remove-scroll': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/carousel@1.24.1': + '@zag-js/carousel@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/scroll-snap': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/scroll-snap': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/checkbox@1.24.1': + '@zag-js/checkbox@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-visible': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-visible': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/clipboard@1.24.1': + '@zag-js/clipboard@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/collapsible@1.24.1': + '@zag-js/collapsible@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/collection@1.24.1': + '@zag-js/collection@1.24.2': dependencies: - '@zag-js/utils': 1.24.1 + '@zag-js/utils': 1.24.2 - '@zag-js/color-picker@1.24.1': + '@zag-js/color-picker@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/color-utils': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/color-utils': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/color-utils@1.24.1': + '@zag-js/color-utils@1.24.2': dependencies: - '@zag-js/utils': 1.24.1 + '@zag-js/utils': 1.24.2 - '@zag-js/combobox@1.24.1': + '@zag-js/combobox@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/aria-hidden': 1.24.1 - '@zag-js/collection': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/aria-hidden': 1.24.2 + '@zag-js/collection': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/core@1.24.1': + '@zag-js/core@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/dom-query': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/date-picker@1.24.1(@internationalized/date@3.9.0)': + '@zag-js/date-picker@1.24.2(@internationalized/date@3.9.0)': dependencies: '@internationalized/date': 3.9.0 - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/date-utils': 1.24.1(@internationalized/date@3.9.0) - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/live-region': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/date-utils@1.24.1(@internationalized/date@3.9.0)': + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/date-utils': 1.24.2(@internationalized/date@3.9.0) + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/live-region': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/date-utils@1.24.2(@internationalized/date@3.9.0)': dependencies: '@internationalized/date': 3.9.0 - '@zag-js/dialog@1.24.1': + '@zag-js/dialog@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/aria-hidden': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-trap': 1.24.1 - '@zag-js/remove-scroll': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/aria-hidden': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-trap': 1.24.2 + '@zag-js/remove-scroll': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/dismissable@1.24.1': + '@zag-js/dismissable@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 - '@zag-js/interact-outside': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/dom-query': 1.24.2 + '@zag-js/interact-outside': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/dom-query@1.24.1': + '@zag-js/dom-query@1.24.2': dependencies: - '@zag-js/types': 1.24.1 + '@zag-js/types': 1.24.2 - '@zag-js/editable@1.24.1': + '@zag-js/editable@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/interact-outside': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/interact-outside': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/file-upload@1.24.1': + '@zag-js/file-upload@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/file-utils': 1.24.1 - '@zag-js/i18n-utils': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/file-utils': 1.24.2 + '@zag-js/i18n-utils': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/file-utils@1.24.1': + '@zag-js/file-utils@1.24.2': dependencies: - '@zag-js/i18n-utils': 1.24.1 + '@zag-js/i18n-utils': 1.24.2 - '@zag-js/floating-panel@1.24.1': + '@zag-js/floating-panel@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/rect-utils': 1.24.1 - '@zag-js/store': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/rect-utils': 1.24.2 + '@zag-js/store': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/focus-trap@1.24.1': + '@zag-js/focus-trap@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 + '@zag-js/dom-query': 1.24.2 - '@zag-js/focus-visible@1.24.1': + '@zag-js/focus-visible@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 + '@zag-js/dom-query': 1.24.2 - '@zag-js/highlight-word@1.24.1': {} + '@zag-js/highlight-word@1.24.2': {} - '@zag-js/hover-card@1.24.1': + '@zag-js/hover-card@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/i18n-utils@1.24.1': + '@zag-js/i18n-utils@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 + '@zag-js/dom-query': 1.24.2 - '@zag-js/interact-outside@1.24.1': + '@zag-js/interact-outside@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/dom-query': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/json-tree-utils@1.24.1': {} + '@zag-js/json-tree-utils@1.24.2': {} - '@zag-js/listbox@1.24.1': + '@zag-js/listbox@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/collection': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-visible': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/collection': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-visible': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/live-region@1.24.1': {} + '@zag-js/live-region@1.24.2': {} - '@zag-js/menu@1.24.1': + '@zag-js/menu@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/rect-utils': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/rect-utils': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/number-input@1.24.1': + '@zag-js/number-input@1.24.2': dependencies: '@internationalized/number': 3.6.5 - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/pagination@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/password-input@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/pin-input@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/popover@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/aria-hidden': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-trap': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/remove-scroll': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/popper@1.24.1': + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/pagination@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/password-input@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/pin-input@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/popover@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/aria-hidden': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-trap': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/remove-scroll': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/popper@1.24.2': dependencies: '@floating-ui/dom': 1.7.4 - '@zag-js/dom-query': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/dom-query': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/presence@1.24.1': + '@zag-js/presence@1.24.2': dependencies: - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 - '@zag-js/progress@1.24.1': + '@zag-js/progress@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/qr-code@1.24.1': + '@zag-js/qr-code@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 proxy-memoize: 3.0.1 uqr: 0.1.2 - '@zag-js/radio-group@1.24.1': + '@zag-js/radio-group@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-visible': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-visible': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/rating-group@1.24.1': + '@zag-js/rating-group@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/react@1.24.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@zag-js/react@1.24.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@zag-js/core': 1.24.1 - '@zag-js/store': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/core': 1.24.2 + '@zag-js/store': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@zag-js/rect-utils@1.24.1': {} + '@zag-js/rect-utils@1.24.2': {} - '@zag-js/remove-scroll@1.24.1': + '@zag-js/remove-scroll@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 + '@zag-js/dom-query': 1.24.2 - '@zag-js/scroll-area@1.24.1': + '@zag-js/scroll-area@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/scroll-snap@1.24.1': + '@zag-js/scroll-snap@1.24.2': dependencies: - '@zag-js/dom-query': 1.24.1 + '@zag-js/dom-query': 1.24.2 - '@zag-js/select@1.24.1': + '@zag-js/select@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/collection': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/collection': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/signature-pad@1.24.1': + '@zag-js/signature-pad@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 perfect-freehand: 1.2.2 - '@zag-js/slider@1.24.1': + '@zag-js/slider@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/splitter@1.24.1': + '@zag-js/splitter@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/steps@1.24.1': + '@zag-js/steps@1.24.2': dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 - '@zag-js/store@1.24.1': + '@zag-js/store@1.24.2': dependencies: proxy-compare: 3.0.1 - '@zag-js/switch@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-visible': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/tabs@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/tags-input@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/auto-resize': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/interact-outside': 1.24.1 - '@zag-js/live-region': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/timer@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/toast@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/toggle-group@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/toggle@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/tooltip@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-visible': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/tour@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dismissable': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/focus-trap': 1.24.1 - '@zag-js/interact-outside': 1.24.1 - '@zag-js/popper': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/tree-view@1.24.1': - dependencies: - '@zag-js/anatomy': 1.24.1 - '@zag-js/collection': 1.24.1 - '@zag-js/core': 1.24.1 - '@zag-js/dom-query': 1.24.1 - '@zag-js/types': 1.24.1 - '@zag-js/utils': 1.24.1 - - '@zag-js/types@1.24.1': + '@zag-js/switch@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-visible': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/tabs@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/tags-input@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/auto-resize': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/interact-outside': 1.24.2 + '@zag-js/live-region': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/timer@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/toast@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/toggle-group@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/toggle@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/tooltip@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-visible': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/tour@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dismissable': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/focus-trap': 1.24.2 + '@zag-js/interact-outside': 1.24.2 + '@zag-js/popper': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/tree-view@1.24.2': + dependencies: + '@zag-js/anatomy': 1.24.2 + '@zag-js/collection': 1.24.2 + '@zag-js/core': 1.24.2 + '@zag-js/dom-query': 1.24.2 + '@zag-js/types': 1.24.2 + '@zag-js/utils': 1.24.2 + + '@zag-js/types@1.24.2': dependencies: csstype: 3.1.3 - '@zag-js/utils@1.24.1': {} + '@zag-js/utils@1.24.2': {} abbrev@2.0.0: {} @@ -11204,7 +11044,7 @@ snapshots: ansi-colors@4.1.3: {} - ansi-escapes@7.1.0: + ansi-escapes@7.1.1: dependencies: environment: 1.1.0 @@ -11331,12 +11171,12 @@ snapshots: axobject-query@4.1.0: {} - babel-loader@9.2.1(@babel/core@7.28.4)(webpack@5.101.3): + babel-loader@9.2.1(@babel/core@7.28.4)(webpack@5.102.0): dependencies: '@babel/core': 7.28.4 find-cache-dir: 4.0.0 schema-utils: 4.3.2 - webpack: 5.101.3 + webpack: 5.102.0 babel-plugin-macros@3.1.0: dependencies: @@ -11372,7 +11212,7 @@ snapshots: balanced-match@1.0.2: {} - baseline-browser-mapping@2.8.6: {} + baseline-browser-mapping@2.8.10: {} better-opn@3.0.2: dependencies: @@ -11407,23 +11247,23 @@ snapshots: browserslist@4.21.5: dependencies: - caniuse-lite: 1.0.30001743 - electron-to-chromium: 1.5.222 + caniuse-lite: 1.0.30001746 + electron-to-chromium: 1.5.228 node-releases: 2.0.21 update-browserslist-db: 1.1.3(browserslist@4.21.5) browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001743 - electron-to-chromium: 1.5.222 + caniuse-lite: 1.0.30001746 + electron-to-chromium: 1.5.228 node-releases: 2.0.21 update-browserslist-db: 1.1.3(browserslist@4.23.3) browserslist@4.26.2: dependencies: - baseline-browser-mapping: 2.8.6 - caniuse-lite: 1.0.30001743 - electron-to-chromium: 1.5.222 + baseline-browser-mapping: 2.8.10 + caniuse-lite: 1.0.30001746 + electron-to-chromium: 1.5.228 node-releases: 2.0.21 update-browserslist-db: 1.1.3(browserslist@4.26.2) @@ -11460,11 +11300,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.26.2 - caniuse-lite: 1.0.30001743 + caniuse-lite: 1.0.30001746 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001743: {} + caniuse-lite@1.0.30001746: {} ccount@2.0.1: {} @@ -11698,7 +11538,7 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.1.0: {} + detect-libc@2.1.1: {} devlop@1.1.0: dependencies: @@ -11737,7 +11577,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.222: {} + electron-to-chromium@1.5.228: {} emoji-regex@10.5.0: {} @@ -11957,34 +11797,34 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.6.5(eslint@9.36.0(jiti@2.6.0)): + eslint-compat-utils@0.6.5(eslint@9.36.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) semver: 7.7.2 - eslint-config-next@15.5.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + eslint-config-next@15.5.4(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 15.5.4 '@rushstack/eslint-patch': 1.12.0 - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.1)) optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)): + eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -11994,32 +11834,32 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@9.36.0(jiti@2.6.0))(jsonc-eslint-parser@2.4.1): + eslint-json-compat-utils@0.2.1(eslint@9.36.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) esquery: 1.6.0 jsonc-eslint-parser: 2.4.1 - eslint-mdx@3.6.2(eslint@9.36.0(jiti@2.6.0)): + eslint-mdx@3.6.2(eslint@9.36.0(jiti@2.6.1)): dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) espree: 10.4.0 estree-util-visit: 2.0.0 remark-mdx: 3.1.1 @@ -12035,43 +11875,47 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-devup@2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): - dependencies: - '@eslint/js': 9.35.0 - '@tanstack/eslint-plugin-query': 5.89.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) - eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-simple-import-sort: 12.1.1(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-devup@2.0.8(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@devup-ui/eslint-plugin': 1.0.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint/js': 9.36.0 + '@tanstack/eslint-plugin-query': 5.91.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) + eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-mdx: 3.6.2(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2) + eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-simple-import-sort: 12.1.1(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)) prettier: 3.6.2 - typescript-eslint: 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + typescript-eslint: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - '@types/eslint' - '@typescript-eslint/eslint-plugin' + - bluebird + - remark-lint-file-extension - supports-color - typescript - eslint-plugin-eslint-plugin@7.0.0(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-eslint-plugin@7.0.0(eslint@9.36.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - eslint: 9.36.0(jiti@2.6.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.36.0(jiti@2.6.1) estraverse: 5.3.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -12080,9 +11924,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12094,18 +11938,18 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsonc@2.20.1(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-jsonc@2.20.1(eslint@9.36.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - eslint: 9.36.0(jiti@2.6.0) - eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.6.0)) - eslint-json-compat-utils: 0.2.1(eslint@9.36.0(jiti@2.6.0))(jsonc-eslint-parser@2.4.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.36.0(jiti@2.6.1) + eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.6.1)) + eslint-json-compat-utils: 0.2.1(eslint@9.36.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1) espree: 10.4.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.1 @@ -12114,7 +11958,7 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.36.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -12124,7 +11968,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -12133,10 +11977,10 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-mdx@3.6.2(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-mdx@3.6.2(eslint@9.36.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.0) - eslint-mdx: 3.6.2(eslint@9.36.0(jiti@2.6.0)) + eslint: 9.36.0(jiti@2.6.1) + eslint-mdx: 3.6.2(eslint@9.36.0(jiti@2.6.1)) mdast-util-from-markdown: 2.0.2 mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -12151,21 +11995,21 @@ snapshots: - remark-lint-file-extension - supports-color - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.0)) + eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) - eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -12173,7 +12017,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -12187,24 +12031,24 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.36.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) - eslint-plugin-storybook@9.1.8(eslint@9.36.0(jiti@2.6.0))(storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.2): + eslint-plugin-storybook@9.1.10(eslint@9.36.0(jiti@2.6.1))(storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) - storybook: 9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) + storybook: 9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.36.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) eslint-scope@5.1.1: dependencies: @@ -12220,9 +12064,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.36.0(jiti@2.6.0): + eslint@9.36.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -12258,7 +12102,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.6.0 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -12327,7 +12171,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 require-like: 0.1.2 eventemitter3@5.0.1: {} @@ -12478,6 +12322,8 @@ snapshots: functions-have-names@1.2.3: {} + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -12573,9 +12419,9 @@ snapshots: graphemer@1.4.0: {} - happy-dom@19.0.1: + happy-dom@19.0.2: dependencies: - '@types/node': 20.19.17 + '@types/node': 20.19.19 '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 @@ -12812,9 +12658,10 @@ snapshots: dependencies: get-east-asian-width: 1.4.0 - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -12941,13 +12788,11 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@2.5.1: {} - - jiti@2.6.0: {} + jiti@2.6.1: {} jju@1.4.0: {} @@ -12964,8 +12809,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -13106,7 +12949,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.1.0 + detect-libc: 2.1.1 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -13191,7 +13034,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.1.0 + ansi-escapes: 7.1.1 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -13214,7 +13057,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.1: {} + lru-cache@11.2.2: {} lru-cache@5.1.1: dependencies: @@ -13728,14 +13571,12 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 mkdirp@2.1.6: {} - mkdirp@3.0.1: {} - mlly@1.8.0: dependencies: acorn: 8.15.0 @@ -13766,34 +13607,11 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - next@15.5.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1): - dependencies: - '@next/env': 15.5.3 - '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001743 - postcss: 8.4.31 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - styled-jsx: 5.1.6(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@19.1.1) - optionalDependencies: - '@next/swc-darwin-arm64': 15.5.3 - '@next/swc-darwin-x64': 15.5.3 - '@next/swc-linux-arm64-gnu': 15.5.3 - '@next/swc-linux-arm64-musl': 15.5.3 - '@next/swc-linux-x64-gnu': 15.5.3 - '@next/swc-linux-x64-musl': 15.5.3 - '@next/swc-win32-arm64-msvc': 15.5.3 - '@next/swc-win32-x64-msvc': 15.5.3 - sharp: 0.34.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - next@15.5.4(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@next/env': 15.5.4 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001743 + caniuse-lite: 1.0.30001746 postcss: 8.4.31 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) @@ -14026,7 +13844,7 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.2.1 + lru-cache: 11.2.2 minipass: 7.1.2 path-type@4.0.0: {} @@ -14196,9 +14014,9 @@ snapshots: dependencies: safe-buffer: 5.2.1 - react-docgen-typescript@2.4.0(typescript@5.9.2): + react-docgen-typescript@2.4.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 react-docgen@8.0.1: dependencies: @@ -14230,11 +14048,11 @@ snapshots: react-is@19.1.1: {} - react-markdown@10.1.0(@types/react@19.1.13)(react@19.1.1): + react-markdown@10.1.0(@types/react@19.1.16)(react@19.1.1): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.1.13 + '@types/react': 19.1.16 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 @@ -14371,20 +14189,20 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.3.1: + regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.12.0 + regjsparser: 0.13.0 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 regjsgen@0.8.0: {} - regjsparser@0.12.0: + regjsparser@0.13.0: dependencies: - jsesc: 3.0.2 + jsesc: 3.1.0 rehype-recma@1.0.0: dependencies: @@ -14492,37 +14310,38 @@ snapshots: glob: 11.0.3 package-json-from-dist: 1.0.1 - rollup-plugin-preserve-directives@0.4.0(rollup@4.51.0): + rollup-plugin-preserve-directives@0.4.0(rollup@4.52.3): dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.51.0) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) magic-string: 0.30.19 - rollup: 4.51.0 + rollup: 4.52.3 - rollup@4.51.0: + rollup@4.52.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.51.0 - '@rollup/rollup-android-arm64': 4.51.0 - '@rollup/rollup-darwin-arm64': 4.51.0 - '@rollup/rollup-darwin-x64': 4.51.0 - '@rollup/rollup-freebsd-arm64': 4.51.0 - '@rollup/rollup-freebsd-x64': 4.51.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.51.0 - '@rollup/rollup-linux-arm-musleabihf': 4.51.0 - '@rollup/rollup-linux-arm64-gnu': 4.51.0 - '@rollup/rollup-linux-arm64-musl': 4.51.0 - '@rollup/rollup-linux-loong64-gnu': 4.51.0 - '@rollup/rollup-linux-ppc64-gnu': 4.51.0 - '@rollup/rollup-linux-riscv64-gnu': 4.51.0 - '@rollup/rollup-linux-riscv64-musl': 4.51.0 - '@rollup/rollup-linux-s390x-gnu': 4.51.0 - '@rollup/rollup-linux-x64-gnu': 4.51.0 - '@rollup/rollup-linux-x64-musl': 4.51.0 - '@rollup/rollup-openharmony-arm64': 4.51.0 - '@rollup/rollup-win32-arm64-msvc': 4.51.0 - '@rollup/rollup-win32-ia32-msvc': 4.51.0 - '@rollup/rollup-win32-x64-msvc': 4.51.0 + '@rollup/rollup-android-arm-eabi': 4.52.3 + '@rollup/rollup-android-arm64': 4.52.3 + '@rollup/rollup-darwin-arm64': 4.52.3 + '@rollup/rollup-darwin-x64': 4.52.3 + '@rollup/rollup-freebsd-arm64': 4.52.3 + '@rollup/rollup-freebsd-x64': 4.52.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 + '@rollup/rollup-linux-arm-musleabihf': 4.52.3 + '@rollup/rollup-linux-arm64-gnu': 4.52.3 + '@rollup/rollup-linux-arm64-musl': 4.52.3 + '@rollup/rollup-linux-loong64-gnu': 4.52.3 + '@rollup/rollup-linux-ppc64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-musl': 4.52.3 + '@rollup/rollup-linux-s390x-gnu': 4.52.3 + '@rollup/rollup-linux-x64-gnu': 4.52.3 + '@rollup/rollup-linux-x64-musl': 4.52.3 + '@rollup/rollup-openharmony-arm64': 4.52.3 + '@rollup/rollup-win32-arm64-msvc': 4.52.3 + '@rollup/rollup-win32-ia32-msvc': 4.52.3 + '@rollup/rollup-win32-x64-gnu': 4.52.3 + '@rollup/rollup-win32-x64-msvc': 4.52.3 fsevents: 2.3.3 run-parallel@1.2.0: @@ -14606,7 +14425,7 @@ snapshots: sharp@0.34.4: dependencies: '@img/colour': 1.0.0 - detect-libc: 2.1.0 + detect-libc: 2.1.1 semver: 7.7.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.4 @@ -14737,13 +14556,13 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@9.1.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): + storybook@9.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): dependencies: '@storybook/global': 5.0.0 - '@testing-library/jest-dom': 6.8.0 + '@testing-library/jest-dom': 6.9.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.10 @@ -14869,7 +14688,7 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.0.0: + strip-literal@3.1.0: dependencies: js-tokens: 9.0.1 @@ -14923,25 +14742,24 @@ snapshots: tapable@2.2.3: {} - tar@7.4.3: + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 term-size@2.2.1: {} - terser-webpack-plugin@5.3.14(webpack@5.101.3): + terser-webpack-plugin@5.3.14(webpack@5.102.0): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.101.3 + webpack: 5.102.0 terser@5.44.0: dependencies: @@ -14973,7 +14791,7 @@ snapshots: tinyspy@4.0.4: {} - tm-grammars@1.24.13: {} + tm-grammars@1.24.15: {} to-regex-range@5.0.1: dependencies: @@ -14985,18 +14803,18 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.9.2): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 ts-dedent@2.2.0: {} - ts-evaluator@1.2.0(typescript@5.9.2): + ts-evaluator@1.2.0(typescript@5.9.3): dependencies: ansi-colors: 4.1.3 crosspath: 2.0.0 object-path: 0.11.8 - typescript: 5.9.2 + typescript: 5.9.3 ts-morph@19.0.0: dependencies: @@ -15016,9 +14834,9 @@ snapshots: typescript: 4.9.5 yargs: 15.4.1 - tsconfck@3.1.6(typescript@5.9.2): + tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 tsconfig-paths@3.15.0: dependencies: @@ -15076,14 +14894,14 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + typescript-eslint@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.36.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -15093,7 +14911,7 @@ snapshots: typescript@5.8.3: {} - typescript@5.9.2: {} + typescript@5.9.3: {} ufo@1.6.1: {} @@ -15106,7 +14924,7 @@ snapshots: undici-types@6.21.0: {} - undici-types@7.12.0: {} + undici-types@7.13.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -15126,7 +14944,7 @@ snapshots: '@types/concat-stream': 2.0.3 '@types/debug': 4.1.12 '@types/is-empty': 1.2.3 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/unist': 3.0.3 concat-stream: 2.0.0 debug: 4.4.3 @@ -15293,13 +15111,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -15314,46 +15132,62 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@24.5.2)(rollup@4.51.0)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.6.1)(rollup@4.52.3)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)): dependencies: - '@microsoft/api-extractor': 7.52.13(@types/node@24.5.2) - '@rollup/pluginutils': 5.3.0(rollup@4.51.0) + '@microsoft/api-extractor': 7.52.15(@types/node@24.6.1) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) '@volar/typescript': 2.4.23 - '@vue/language-core': 2.2.0(typescript@5.9.2) + '@vue/language-core': 2.2.0(typescript@5.9.3) compare-versions: 6.1.1 debug: 4.4.3 kolorist: 1.8.0 local-pkg: 1.1.2 magic-string: 0.30.19 - typescript: 5.9.2 + typescript: 5.9.3 optionalDependencies: - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + vite@6.3.6(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.6.1 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.30.1 + terser: 5.44.0 + yaml: 2.8.1 + + vite@7.1.7(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.51.0 + rollup: 4.52.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.6.1 fsevents: 2.3.3 - jiti: 2.6.0 + jiti: 2.6.1 lightningcss: 1.30.1 terser: 5.44.0 yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(happy-dom@19.0.1)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(happy-dom@19.0.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -15371,13 +15205,13 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.6.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.5.2 - happy-dom: 19.0.1 + '@types/node': 24.6.1 + happy-dom: 19.0.2 transitivePeerDependencies: - jiti - less @@ -15407,7 +15241,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.101.3: + webpack@5.102.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -15431,7 +15265,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.3 - terser-webpack-plugin: 5.3.14(webpack@5.101.3) + terser-webpack-plugin: 5.3.14(webpack@5.102.0) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -15462,7 +15296,7 @@ snapshots: is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 From 8355c0e4982a4fe97e6c906beede0056d0591006 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Thu, 2 Oct 2025 01:04:06 +0900 Subject: [PATCH 40/59] Add devup-ui/components to default noDeps --- eslint.config.mjs | 14 +++++++++++--- .../__snapshots__/recommended.test.ts.snap | 4 ++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 1551e0ae..4d9502c1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,7 +1,9 @@ -import { configs } from 'eslint-plugin-devup' +import devupUi from '@devup-ui/eslint-plugin' +import devup from 'eslint-plugin-devup' import eslintPlugin from 'eslint-plugin-eslint-plugin' import jsonc from 'eslint-plugin-jsonc' import globals from 'globals' + export default [ { ignores: [ @@ -10,7 +12,9 @@ export default [ ], }, // eslint-plugin-devup - ...configs.recommended, + ...devup.configs.recommended.filter( + (config) => !('plugins' in config && '@devup-ui' in config.plugins), + ), // eslint-plugin-jsonc ...jsonc.configs['flat/recommended-with-json'], ...jsonc.configs['flat/recommended-with-jsonc'], @@ -51,6 +55,10 @@ export default [ // eslint-plugin rule { ...eslintPlugin.configs.recommended, - // files: ['packages/eslint-plugin/**/*.{js,jsx,ts,tsx}'], + files: ['packages/eslint-plugin/**/*.{js,jsx,ts,tsx}'], }, + { + ignores: ['packages/eslint-plugin/**/*.md'], + }, + ...devupUi.configs.recommended, ] diff --git a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap index 36f591bf..bd5c0b2d 100644 --- a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap +++ b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap @@ -20,6 +20,7 @@ exports[`recommended > export recommended config 1`] = ` "schema": [], "type": "problem", }, + "name": "css-utils-literal-only", }, "no-duplicate-value": { "create": [Function], @@ -36,6 +37,7 @@ exports[`recommended > export recommended config 1`] = ` "schema": [], "type": "problem", }, + "name": "no-duplicate-value", }, "no-useless-responsive": { "create": [Function], @@ -52,6 +54,7 @@ exports[`recommended > export recommended config 1`] = ` "schema": [], "type": "problem", }, + "name": "no-useless-responsive", }, "no-useless-tailing-nulls": { "create": [Function], @@ -68,6 +71,7 @@ exports[`recommended > export recommended config 1`] = ` "schema": [], "type": "problem", }, + "name": "no-useless-tailing-nulls", }, }, }, From 1e6c3aad9635ffab30e3605b45ecd75d0d2e3c72 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:24:51 +0000 Subject: [PATCH 41/59] Version Packages --- .changeset/tall-tires-taste.md | 5 ----- packages/vite-plugin/CHANGELOG.md | 6 ++++++ packages/vite-plugin/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/tall-tires-taste.md diff --git a/.changeset/tall-tires-taste.md b/.changeset/tall-tires-taste.md deleted file mode 100644 index b388c0cb..00000000 --- a/.changeset/tall-tires-taste.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@devup-ui/vite-plugin': patch ---- - -Add components to noDep diff --git a/packages/vite-plugin/CHANGELOG.md b/packages/vite-plugin/CHANGELOG.md index ef6963d5..de5eead0 100644 --- a/packages/vite-plugin/CHANGELOG.md +++ b/packages/vite-plugin/CHANGELOG.md @@ -1,5 +1,11 @@ # @devup-ui/vite-plugin +## 1.0.43 + +### Patch Changes + +- [#405](https://github.com/dev-five-git/devup-ui/pull/405) [`ea8b1c8`](https://github.com/dev-five-git/devup-ui/commit/ea8b1c8ba95b96598c2e5321d6d63a1afc9a54bf) Thanks [@owjs3901](https://github.com/owjs3901)! - Add components to noDep + ## 1.0.42 ### Patch Changes diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index f7ffeea8..4623190e 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -18,7 +18,7 @@ "vite" ], "type": "module", - "version": "1.0.42", + "version": "1.0.43", "scripts": { "lint": "eslint", "build": "tsc && vite build" From f5364ca2244b207c40fcf115383e1a7f5f8cbf34 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Thu, 2 Oct 2025 19:03:42 +0900 Subject: [PATCH 42/59] Impelement enum type --- Cargo.lock | 117 ++++++++-------- bindings/devup-ui-wasm/Cargo.toml | 6 +- libs/css/Cargo.toml | 4 +- libs/css/src/constant.rs | 2 +- libs/css/src/lib.rs | 38 ++++- libs/extractor/Cargo.toml | 14 +- .../extract_style_from_expression.rs | 130 ++++++++++++------ .../extract_style_from_member_expression.rs | 116 ++++++++-------- libs/extractor/src/gen_class_name.rs | 39 ++++++ libs/extractor/src/lib.rs | 115 ++++++++++++++++ ..._tests__extract_enum_style_property-2.snap | 8 ++ ..._tests__extract_enum_style_property-3.snap | 45 ++++++ ..._tests__extract_enum_style_property-4.snap | 54 ++++++++ ..._tests__extract_enum_style_property-5.snap | 45 ++++++ ..._tests__extract_enum_style_property-6.snap | 99 +++++++++++++ ...r__tests__extract_enum_style_property.snap | 27 ++++ ...tests__optimize_multi_css_value_1.snap.new | 37 ----- libs/sheet/Cargo.toml | 4 +- 18 files changed, 683 insertions(+), 217 deletions(-) create mode 100644 libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-2.snap create mode 100644 libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-3.snap create mode 100644 libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-4.snap create mode 100644 libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-5.snap create mode 100644 libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-6.snap create mode 100644 libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property.snap delete mode 100644 libs/extractor/src/snapshots/extractor__tests__optimize_multi_css_value_1.snap.new diff --git a/Cargo.lock b/Cargo.lock index 9967921f..bdbdfc3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -519,9 +519,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.80" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -651,9 +651,9 @@ dependencies = [ [[package]] name = "oxc_allocator" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b810fad23016e9a2a64d3b09f72ead6035312164788715dedd79b223f95b059" +checksum = "014a6bc98da00c997b35db73a7aced63d9e148ddcfe1a6bd759e87b903d95757" dependencies = [ "allocator-api2", "bumpalo", @@ -664,9 +664,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1af40f244ac2215c43baeb5776412caf09777ab176ac49151f4ecb1f424d26b9" +checksum = "8f88ca3bb0ed59cebad6883e7a09e16e19fd1dbec7fcd7659c5e696456f3ea37" dependencies = [ "bitflags", "oxc_allocator", @@ -681,9 +681,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dced6af2266937211ef38e2e57d1f2ba2c380b7be13c856bb33dcd59aefedf" +checksum = "baf7bc9985027ebc3b8daaa4bcdeeafe8d027fb6f3ffed3dfc496a851d7b3ffe" dependencies = [ "phf", "proc-macro2", @@ -693,9 +693,9 @@ dependencies = [ [[package]] name = "oxc_ast_visit" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd60e51a6a2569b0a32a2703c37424c7daca1cff974960055cb643dd7eac8b1f" +checksum = "2750ee1156a0700d483c2b148dac6d45fbbdbbc44dfae973ab36fc8d92811259" dependencies = [ "oxc_allocator", "oxc_ast", @@ -705,9 +705,9 @@ dependencies = [ [[package]] name = "oxc_codegen" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee93207625b3bec356f87f1b1b10b417ca683b0eaa510ccf7f565d1c0078784e" +checksum = "e1b5e6819479a869dc791c98e23007b3dfc6c888b79b63691c0919d8db1f64e0" dependencies = [ "bitflags", "cow-utils", @@ -727,15 +727,15 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11226a027c0320b450943c1d5a0d1eba9079d15c3a9edfbab3ecd4c8fb03d4bf" +checksum = "45904e6b2cf3e05e586a526f4668dac3ab3cb1a88f8ef065503d1336e85e64d2" [[package]] name = "oxc_diagnostics" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "880c30372eb360acfe377008f83a41bc391765b72c00a633f974ef9804282619" +checksum = "6f0976fcb5e3093b08e384b87dd660029ff99ac3a4ba5f57a2eebcb6d1fd2e3a" dependencies = [ "cow-utils", "oxc-miette", @@ -744,9 +744,9 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e2d1f7ee0df2c512b9219b82504ed6e31d2b04c629c6173e2a3508fc623e422" +checksum = "d5a38604b87cf5c118aad0a20b3197d44439bcf59680fb7d3e13dff605a27d6b" dependencies = [ "cow-utils", "num-bigint", @@ -759,9 +759,9 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7288d04e52e326681027d44ea1b1545a6f4ab3392cb88a10dba93ebaaaa3f9" +checksum = "a8f909b432bafad7fe98609e2fd00b6b046c143fda4246a4e7bb7e41b47cf65e" [[package]] name = "oxc_index" @@ -771,9 +771,9 @@ checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" [[package]] name = "oxc_parser" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273778f7be75802da774d17a001c38e75d8387cfcfc2212a76c4625e266777a5" +checksum = "b9ea8250a9ba1b4690a9e0a545cde6e0c676c4ad788a2711dbbaa4429faec3d1" dependencies = [ "bitflags", "cow-utils", @@ -794,9 +794,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79a5a3dc8e02a05bd8ccc3888f9ae0dbbcee7da9a677a1f3b7f86254907604ff" +checksum = "93e783f03017ed46d9d50aed65de775fdcc57914d0a997300ea5816e1ed5d583" dependencies = [ "bitflags", "oxc_allocator", @@ -810,9 +810,9 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2357277e9ace9b086ded811f9fee3cf1bc943ea226cce4640d88578212937471" +checksum = "9f4bac78c59d63b90a5b39702ae259adfdb84fc69d61490c43c6547ab3bb3823" dependencies = [ "itertools 0.14.0", "oxc_allocator", @@ -845,9 +845,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96f74ab03fd114c4ed30011692cc602b2eed51c51ee0eef4d46ca3522adcb6b2" +checksum = "d8b10b09752e1043e988081be2aabcc2abb948da5339adf66623c84fe959fd6f" dependencies = [ "compact_str", "oxc-miette", @@ -858,9 +858,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.90.0" +version = "0.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c0c41d429d7883b00cece42a1285e8ef40ed936d4342e378016b4b2daf4c3e6" +checksum = "f60dbb25911dbbd22ac87792d208030d21ec077e8e6938990803685637ef201e" dependencies = [ "bitflags", "cow-utils", @@ -873,7 +873,6 @@ dependencies = [ "oxc_index", "oxc_span", "phf", - "rustc-hash", "unicode-id-start", ] @@ -1047,9 +1046,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.2" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", @@ -1059,9 +1058,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", @@ -1186,9 +1185,9 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -1207,18 +1206,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -1455,9 +1454,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.103" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", @@ -1468,9 +1467,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.103" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", @@ -1482,9 +1481,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.53" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -1495,9 +1494,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.103" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1505,9 +1504,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.103" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", @@ -1518,18 +1517,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.103" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-bindgen-test" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aee0a0f5343de9221a0d233b04520ed8dc2e6728dce180b1dcd9288ec9d9fa3c" +checksum = "4e381134e148c1062f965a42ed1f5ee933eef2927c3f70d1812158f711d39865" dependencies = [ "js-sys", "minicov", @@ -1540,9 +1539,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a369369e4360c2884c3168d22bded735c43cccae97bbc147586d4b480edd138d" +checksum = "b673bca3298fe582aeef8352330ecbad91849f85090805582400850f8270a2e8" dependencies = [ "proc-macro2", "quote", @@ -1551,9 +1550,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.80" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/bindings/devup-ui-wasm/Cargo.toml b/bindings/devup-ui-wasm/Cargo.toml index e99db717..179d3f84 100644 --- a/bindings/devup-ui-wasm/Cargo.toml +++ b/bindings/devup-ui-wasm/Cargo.toml @@ -15,7 +15,7 @@ crate-type = ["cdylib", "rlib"] default = ["console_error_panic_hook"] [dependencies] -wasm-bindgen = "0.2.103" +wasm-bindgen = "0.2.104" extractor = { path = "../../libs/extractor" } sheet = { path = "../../libs/sheet" } css = { path = "../../libs/css" } @@ -26,13 +26,13 @@ css = { path = "../../libs/css" } # code size when deploying. console_error_panic_hook = { version = "0.1.7", optional = true } once_cell = "1.21.3" -js-sys = "0.3.80" +js-sys = "0.3.81" serde_json = "1.0.145" serde-wasm-bindgen = "0.6.5" bimap = { version = "0.6.3", features = ["serde"] } [dev-dependencies] -wasm-bindgen-test = "0.3.53" +wasm-bindgen-test = "0.3.54" serial_test = "3.2.0" insta = "1.43.2" rstest = "0.26.1" diff --git a/libs/css/Cargo.toml b/libs/css/Cargo.toml index 486d8897..c330a7b0 100644 --- a/libs/css/Cargo.toml +++ b/libs/css/Cargo.toml @@ -7,8 +7,8 @@ edition = "2024" once_cell = "1.21.3" phf = { version = "0.13", features = ["macros"] } serial_test = "3.2.0" -serde = { version = "1.0.225", features = ["derive"] } -regex = "1.11.2" +serde = { version = "1.0.228", features = ["derive"] } +regex = "1.11.3" bimap = { version = "0.6.3" } [dev-dependencies] diff --git a/libs/css/src/constant.rs b/libs/css/src/constant.rs index 8ceb9aaf..c988ec5b 100644 --- a/libs/css/src/constant.rs +++ b/libs/css/src/constant.rs @@ -75,7 +75,7 @@ pub(super) static GLOBAL_STYLE_PROPERTY: phf::Map<&str, &[&str]> = phf_map! { }; pub(super) static GLOBAL_ENUM_STYLE_PROPERTY: phf::Map<&str, phf::Map<&str, phf::Map<&str, &str>>> = phf_map! { - "positioning " => phf_map! { + "positioning" => phf_map! { "top" => phf_map! { "top" => "0", }, diff --git a/libs/css/src/lib.rs b/libs/css/src/lib.rs index 23e29aab..7e5a865a 100644 --- a/libs/css/src/lib.rs +++ b/libs/css/src/lib.rs @@ -11,10 +11,14 @@ mod selector_separator; pub mod style_selector; pub mod utils; +use std::collections::BTreeMap; use std::hash::{DefaultHasher, Hash, Hasher}; + use crate::class_map::GLOBAL_CLASS_MAP; -use crate::constant::{COLOR_HASH, F_SPACE_RE, GLOBAL_STYLE_PROPERTY, ZERO_RE}; +use crate::constant::{ + COLOR_HASH, F_SPACE_RE, GLOBAL_ENUM_STYLE_PROPERTY, GLOBAL_STYLE_PROPERTY, ZERO_RE, +}; use crate::debug::is_debug; use crate::file_map::get_file_num_by_filename; use crate::num_to_nm_base::num_to_nm_base; @@ -65,6 +69,38 @@ pub fn disassemble_property(property: &str) -> Vec { }) } +pub fn get_enum_property_value(property: &str, value: &str) -> Option> { + if let Some(map) = GLOBAL_ENUM_STYLE_PROPERTY.get(property) { + if let Some(map) = map.get(value) { + Some( + map.entries() + .map(|(k, v)| (k.to_string(), v.to_string())) + .collect(), + ) + } else { + Some(vec![]) + } + } else { + None + } +} + +pub fn get_enum_property_map(property: &str) -> Option>> { + if let Some(map) = GLOBAL_ENUM_STYLE_PROPERTY.get(property) { + let mut ret = BTreeMap::new(); + for (k, v) in map.entries() { + let mut tmp = BTreeMap::new(); + v.entries().for_each(|(k, v)| { + tmp.insert(*k, *v); + }); + ret.insert(*k, tmp); + } + Some(ret) + } else { + None + } +} + pub fn keyframes_to_keyframes_name(keyframes: &str, filename: Option<&str>) -> String { if is_debug() { format!("k-{keyframes}") diff --git a/libs/extractor/Cargo.toml b/libs/extractor/Cargo.toml index a4b037b5..1c63d406 100644 --- a/libs/extractor/Cargo.toml +++ b/libs/extractor/Cargo.toml @@ -4,13 +4,13 @@ version = "0.1.0" edition = "2024" [dependencies] -oxc_parser = "0.90.0" -oxc_syntax = "0.90.0" -oxc_span = "0.90.0" -oxc_allocator = "0.90.0" -oxc_ast = "0.90.0" -oxc_ast_visit = "0.90.0" -oxc_codegen = "0.90.0" +oxc_parser = "0.93.0" +oxc_syntax = "0.93.0" +oxc_span = "0.93.0" +oxc_allocator = "0.93.0" +oxc_ast = "0.93.0" +oxc_ast_visit = "0.93.0" +oxc_codegen = "0.93.0" css = { path = "../css" } phf = "0.13" strum = "0.27.2" diff --git a/libs/extractor/src/extractor/extract_style_from_expression.rs b/libs/extractor/src/extractor/extract_style_from_expression.rs index 7a4498bc..ffbb118d 100644 --- a/libs/extractor/src/extractor/extract_style_from_expression.rs +++ b/libs/extractor/src/extractor/extract_style_from_expression.rs @@ -1,3 +1,4 @@ + use crate::{ ExtractStyleProp, css_utils::css_to_style, @@ -14,8 +15,8 @@ use crate::{ }, }; use css::{ - disassemble_property, is_special_property::is_special_property, style_selector::StyleSelector, - utils::to_kebab_case, + disassemble_property, get_enum_property_map, get_enum_property_value, + is_special_property::is_special_property, style_selector::StyleSelector, utils::to_kebab_case, }; use oxc_allocator::CloneIn; use oxc_ast::{ @@ -37,7 +38,6 @@ pub fn extract_style_from_expression<'a>( selector: &Option, ) -> ExtractResult<'a> { let mut typo = false; - println!("expression: {:?}", expression); if name.is_none() && selector.is_none() { let mut style_order = None; @@ -265,16 +265,26 @@ pub fn extract_style_from_expression<'a>( if let Some(value) = get_string_by_literal_expression(expression) { if let Some(name) = name { ExtractResult { - styles: vec![ExtractStyleProp::Static(if typo { - ExtractStyleValue::Typography(value.to_string()) + styles: if typo { + vec![ExtractStyleProp::Static(ExtractStyleValue::Typography( + value.to_string(), + ))] } else { - ExtractStyleValue::Static(ExtractStaticStyle::new( - name, - &value, - level, - selector.clone(), - )) - })], + // Create a new ExtractStaticStyle + if let Some(map) = get_enum_property_value(name, &value) { + map.into_iter() + .map(|(k, v)| { + ExtractStyleProp::Static(ExtractStyleValue::Static( + ExtractStaticStyle::new(&k, &v, level, selector.clone()), + )) + }) + .collect() + } else { + vec![ExtractStyleProp::Static(ExtractStyleValue::Static( + ExtractStaticStyle::new(name, &value, level, selector.clone()), + ))] + } + }, ..ExtractResult::default() } } else { @@ -292,28 +302,26 @@ pub fn extract_style_from_expression<'a>( styles: if un.operator == UnaryOperator::Void { vec![] } else { - vec![ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(expression), - selector.clone(), - ), - ))] + vec![dynamic_style( + ast_builder, + name.unwrap(), + expression, + level, + selector, + )] }, ..ExtractResult::default() }, Expression::BinaryExpression(_) | Expression::StaticMemberExpression(_) | Expression::CallExpression(_) => ExtractResult { - styles: vec![ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(expression), - selector.clone(), - ), - ))], + styles: vec![dynamic_style( + ast_builder, + name.unwrap(), + expression, + level, + selector, + )], ..ExtractResult::default() }, Expression::TSAsExpression(exp) => extract_style_from_expression( @@ -355,14 +363,13 @@ pub fn extract_style_from_expression<'a>( styles: vec![], }] } else { - vec![ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(expression), - selector.clone(), - ), - ))] + vec![dynamic_style( + ast_builder, + name.unwrap(), + expression, + level, + selector, + )] }, ..ExtractResult::default() }, @@ -410,14 +417,13 @@ pub fn extract_style_from_expression<'a>( } } else { ExtractResult { - styles: vec![ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name, - level, - &identifier.name, - selector.clone(), - ), - ))], + styles: vec![dynamic_style( + ast_builder, + name, + expression, + level, + selector, + )], ..ExtractResult::default() } } @@ -582,3 +588,39 @@ pub fn extract_style_from_expression<'a>( } } } + +pub fn dynamic_style<'a>( + ast_builder: &AstBuilder<'a>, + name: &str, + expression: &Expression<'a>, + level: u8, + selector: &Option, +) -> ExtractStyleProp<'a> { + if let Some(map) = get_enum_property_map(name) { + ExtractStyleProp::Enum { + condition: expression.clone_in(ast_builder.allocator), + map: map + .into_iter() + .map(|(k, v)| { + ( + k.to_string(), + v.into_iter() + .map(|(k, v)| { + ExtractStyleProp::Static(ExtractStyleValue::Static( + ExtractStaticStyle::new(k, v, level, selector.clone()), + )) + }) + .collect::>(), + ) + }) + .collect(), + } + } else { + ExtractStyleProp::Static(ExtractStyleValue::Dynamic(ExtractDynamicStyle::new( + name, + level, + &expression_to_code(expression), + selector.clone(), + ))) + } +} diff --git a/libs/extractor/src/extractor/extract_style_from_member_expression.rs b/libs/extractor/src/extractor/extract_style_from_member_expression.rs index fba3da51..82590306 100644 --- a/libs/extractor/src/extractor/extract_style_from_member_expression.rs +++ b/libs/extractor/src/extractor/extract_style_from_member_expression.rs @@ -1,11 +1,11 @@ use crate::{ ExtractStyleProp, - extract_style::{ - extract_dynamic_style::ExtractDynamicStyle, extract_style_value::ExtractStyleValue, + extractor::{ + ExtractResult, + extract_style_from_expression::{dynamic_style, extract_style_from_expression}, }, - extractor::{ExtractResult, extract_style_from_expression::extract_style_from_expression}, utils::{ - expression_to_code, get_number_by_literal_expression, get_string_by_literal_expression, + get_number_by_literal_expression, get_string_by_literal_expression, }, }; use css::style_selector::StyleSelector; @@ -51,21 +51,20 @@ pub(super) fn extract_style_from_member_expression<'a>( props: None, styles: etc .map(|etc| { - vec![ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(&Expression::ComputedMemberExpression( - ast_builder.alloc_computed_member_expression( - SPAN, - etc, - mem_expression.clone_in(ast_builder.allocator), - false, - ), - )), - selector.clone(), + vec![dynamic_style( + ast_builder, + name.unwrap(), + &Expression::ComputedMemberExpression( + ast_builder.alloc_computed_member_expression( + SPAN, + etc, + mem_expression.clone_in(ast_builder.allocator), + false, + ), ), - ))] + level, + selector, + )] }) .unwrap_or_default(), tag: None, @@ -79,21 +78,20 @@ pub(super) fn extract_style_from_member_expression<'a>( if let ArrayExpressionElement::SpreadElement(sp) = p { map.insert( idx.to_string(), - Box::new(ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(&Expression::ComputedMemberExpression( - ast_builder.alloc_computed_member_expression( - SPAN, - sp.argument.clone_in(ast_builder.allocator), - mem_expression.clone_in(ast_builder.allocator), - false, - ), - )), - selector.clone(), + Box::new(dynamic_style( + ast_builder, + name.unwrap(), + &Expression::ComputedMemberExpression( + ast_builder.alloc_computed_member_expression( + SPAN, + sp.argument.clone_in(ast_builder.allocator), + mem_expression.clone_in(ast_builder.allocator), + false, + ), ), - ))), + level, + &selector.clone(), + )), ); } else if let Some(p) = p.as_expression_mut() { map.insert( @@ -139,21 +137,20 @@ pub(super) fn extract_style_from_member_expression<'a>( match etc { None => return ExtractResult::default(), - Some(etc) => ret.push(ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(&Expression::ComputedMemberExpression( - ast_builder.alloc_computed_member_expression( - SPAN, - etc, - mem_expression.clone_in(ast_builder.allocator), - false, - ), - )), - selector.clone(), + Some(etc) => ret.push(dynamic_style( + ast_builder, + name.unwrap(), + &Expression::ComputedMemberExpression( + ast_builder.alloc_computed_member_expression( + SPAN, + etc, + mem_expression.clone_in(ast_builder.allocator), + false, + ), ), - ))), + level, + selector, + )), } } @@ -183,21 +180,18 @@ pub(super) fn extract_style_from_member_expression<'a>( map, }); } else if let Expression::Identifier(_) = &mut mem.object { - ret.push(ExtractStyleProp::Static(ExtractStyleValue::Dynamic( - ExtractDynamicStyle::new( - name.unwrap(), - level, - &expression_to_code(&Expression::ComputedMemberExpression( - ast_builder.alloc_computed_member_expression( - SPAN, - mem.object.clone_in(ast_builder.allocator), - mem_expression.clone_in(ast_builder.allocator), - false, - ), - )), - selector.clone(), - ), - ))) + ret.push(dynamic_style( + ast_builder, + name.unwrap(), + &Expression::ComputedMemberExpression(ast_builder.alloc_computed_member_expression( + SPAN, + mem.object.clone_in(ast_builder.allocator), + mem_expression.clone_in(ast_builder.allocator), + false, + )), + level, + selector, + )) } ExtractResult { diff --git a/libs/extractor/src/gen_class_name.rs b/libs/extractor/src/gen_class_name.rs index 1796a098..9ffb45c9 100644 --- a/libs/extractor/src/gen_class_name.rs +++ b/libs/extractor/src/gen_class_name.rs @@ -30,6 +30,45 @@ fn gen_class_name<'a>( filename: Option<&str>, ) -> Option> { match style_prop { + ExtractStyleProp::Enum { map, condition } => { + let properties = map.iter_mut().map(|(key, value)| { + ast_builder.object_property_kind_object_property( + SPAN, + PropertyKind::Init, + PropertyKey::StringLiteral(ast_builder.alloc_string_literal( + SPAN, + ast_builder.atom(key), + None, + )), + merge_expression_for_class_name( + ast_builder, + value + .iter_mut() + .map(|v| gen_class_name(ast_builder, v, style_order, filename).unwrap()) + .collect::>(), + ) + .unwrap(), + false, + false, + false, + ) + }); + let obj = ast_builder.expression_object( + SPAN, + oxc_allocator::Vec::from_iter_in(properties, ast_builder.allocator), + ); + Some(convert_class_name( + ast_builder, + &Expression::ComputedMemberExpression( + ast_builder.alloc_computed_member_expression( + SPAN, + obj, + condition.clone_in(ast_builder.allocator), + false, + ), + ), + )) + } ExtractStyleProp::Static(st) => { if let Some(style_order) = style_order { st.set_style_order(style_order); diff --git a/libs/extractor/src/lib.rs b/libs/extractor/src/lib.rs index 6ea16db1..83b98aeb 100644 --- a/libs/extractor/src/lib.rs +++ b/libs/extractor/src/lib.rs @@ -30,6 +30,10 @@ pub enum ExtractStyleProp<'a> { consequent: Option>>, alternate: Option>>, }, + Enum { + condition: Expression<'a>, + map: BTreeMap>>, + }, Expression { styles: Vec, expression: Expression<'a>, @@ -65,6 +69,10 @@ impl ExtractStyleProp<'_> { ExtractStyleProp::MemberExpression { map, .. } => { map.values().flat_map(|s| s.extract()).collect() } + ExtractStyleProp::Enum { map, .. } => map + .values() + .flat_map(|s| s.iter().flat_map(|s| s.extract())) + .collect(), } } } @@ -7096,4 +7104,111 @@ keyframes({ .unwrap() )); } + + #[test] + #[serial] + fn extract_enum_style_property() { + reset_class_map(); + assert_debug_snapshot!(ToBTreeSet::from( + extract( + "test.tsx", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_dir: "@devup-ui/core".to_string(), + single_css: false, + import_main_css: false + } + ) + .unwrap() + )); + + // wrong case + reset_class_map(); + assert_debug_snapshot!(ToBTreeSet::from( + extract( + "test.tsx", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_dir: "@devup-ui/core".to_string(), + single_css: false, + import_main_css: false + } + ) + .unwrap() + )); + + reset_class_map(); + assert_debug_snapshot!(ToBTreeSet::from( + extract( + "test.tsx", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_dir: "@devup-ui/core".to_string(), + single_css: false, + import_main_css: false + } + ) + .unwrap() + )); + + reset_class_map(); + assert_debug_snapshot!(ToBTreeSet::from( + extract( + "test.tsx", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_dir: "@devup-ui/core".to_string(), + single_css: false, + import_main_css: false + } + ) + .unwrap() + )); + + reset_class_map(); + assert_debug_snapshot!(ToBTreeSet::from( + extract( + "test.tsx", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_dir: "@devup-ui/core".to_string(), + single_css: false, + import_main_css: false + } + ) + .unwrap() + )); + + reset_class_map(); + assert_debug_snapshot!(ToBTreeSet::from( + extract( + "test.tsx", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_dir: "@devup-ui/core".to_string(), + single_css: false, + import_main_css: false + } + ) + .unwrap() + )); + } } diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-2.snap b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-2.snap new file mode 100644 index 00000000..a2d19d4e --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-2.snap @@ -0,0 +1,8 @@ +--- +source: libs/extractor/src/lib.rs +expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" +--- +ToBTreeSet { + styles: {}, + code: "
;\n", +} diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-3.snap b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-3.snap new file mode 100644 index 00000000..0163aca1 --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-3.snap @@ -0,0 +1,45 @@ +--- +source: libs/extractor/src/lib.rs +expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" +--- +ToBTreeSet { + styles: { + Static( + ExtractStaticStyle { + property: "bottom", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "right", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + }, + code: "import \"@devup-ui/core/devup-ui-0.css\";\n
;\n", +} diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-4.snap b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-4.snap new file mode 100644 index 00000000..115f3d38 --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-4.snap @@ -0,0 +1,54 @@ +--- +source: libs/extractor/src/lib.rs +expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" +--- +ToBTreeSet { + styles: { + Static( + ExtractStaticStyle { + property: "bottom", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "right", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "width", + value: "100%", + level: 0, + selector: None, + style_order: None, + }, + ), + }, + code: "import \"@devup-ui/core/devup-ui-0.css\";\n
;\n", +} diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-5.snap b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-5.snap new file mode 100644 index 00000000..d7790f99 --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-5.snap @@ -0,0 +1,45 @@ +--- +source: libs/extractor/src/lib.rs +expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" +--- +ToBTreeSet { + styles: { + Static( + ExtractStaticStyle { + property: "bottom", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "right", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + }, + code: "import \"@devup-ui/core/devup-ui-0.css\";\n
;\n", +} diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-6.snap b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-6.snap new file mode 100644 index 00000000..8d8014e6 --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property-6.snap @@ -0,0 +1,99 @@ +--- +source: libs/extractor/src/lib.rs +expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" +--- +ToBTreeSet { + styles: { + Static( + ExtractStaticStyle { + property: "bottom", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "bottom", + value: "0", + level: 1, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 1, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 3, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "right", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "right", + value: "0", + level: 1, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 1, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 2, + selector: None, + style_order: None, + }, + ), + }, + code: "import \"@devup-ui/core/devup-ui-0.css\";\n
;\n", +} diff --git a/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property.snap b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property.snap new file mode 100644 index 00000000..d87d3470 --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__extract_enum_style_property.snap @@ -0,0 +1,27 @@ +--- +source: libs/extractor/src/lib.rs +expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" +--- +ToBTreeSet { + styles: { + Static( + ExtractStaticStyle { + property: "left", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "top", + value: "0", + level: 0, + selector: None, + style_order: None, + }, + ), + }, + code: "import \"@devup-ui/core/devup-ui-0.css\";\n
;\n", +} diff --git a/libs/extractor/src/snapshots/extractor__tests__optimize_multi_css_value_1.snap.new b/libs/extractor/src/snapshots/extractor__tests__optimize_multi_css_value_1.snap.new deleted file mode 100644 index 7c01e86c..00000000 --- a/libs/extractor/src/snapshots/extractor__tests__optimize_multi_css_value_1.snap.new +++ /dev/null @@ -1,37 +0,0 @@ ---- -source: libs/extractor/src/lib.rs -assertion_line: 7082 -expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr##\"import { jsx as o, jsxs as s } from \"react/jsx-runtime\";\nimport { Button as y, Box as p, Center as F,css as f } from \"@devup-ui/react\";\nimport { clsx as E } from \"clsx\";\nconst g = f({\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\"\n});\n\"##,\nExtractOption\n{\n package: \"@devup-ui/react\".to_string(), css_dir:\n \"@devup-ui/react\".to_string(), single_css: false, import_main_css: false\n}).unwrap())" ---- -ToBTreeSet { - styles: { - Static( - ExtractStaticStyle { - property: "overflow", - value: "hidden", - level: 0, - selector: None, - style_order: None, - }, - ), - Static( - ExtractStaticStyle { - property: "text-overflow", - value: "ellipsis", - level: 0, - selector: None, - style_order: None, - }, - ), - Static( - ExtractStaticStyle { - property: "white-space", - value: "nowrap", - level: 0, - selector: None, - style_order: None, - }, - ), - }, - code: "import \"@devup-ui/react/devup-ui-0.css\";\nimport { jsx as o, jsxs as s } from \"react/jsx-runtime\";\nimport { clsx as E } from \"clsx\";\nconst g = \"a-a a-b a-c\";\n", -} diff --git a/libs/sheet/Cargo.toml b/libs/sheet/Cargo.toml index 1866ccd7..1f4e52f1 100644 --- a/libs/sheet/Cargo.toml +++ b/libs/sheet/Cargo.toml @@ -5,8 +5,8 @@ edition = "2024" [dependencies] css = { path = "../css" } -serde = { version = "1.0.225", features = ["derive"] } -regex = "1.11.2" +serde = { version = "1.0.228", features = ["derive"] } +regex = "1.11.3" once_cell = "1.21.3" extractor = { path = "../extractor" } From 1694702e99eedd0623a1b1ec0222e250f890099d Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Thu, 2 Oct 2025 19:20:20 +0900 Subject: [PATCH 43/59] Fix lint --- packages/rsbuild-plugin/src/__tests__/plugin.test.ts | 1 + packages/vite-plugin/src/__tests__/plugin.test.ts | 3 +++ packages/webpack-plugin/src/__tests__/loader.test.ts | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/packages/rsbuild-plugin/src/__tests__/plugin.test.ts b/packages/rsbuild-plugin/src/__tests__/plugin.test.ts index 8ed56c8a..dde49afa 100644 --- a/packages/rsbuild-plugin/src/__tests__/plugin.test.ts +++ b/packages/rsbuild-plugin/src/__tests__/plugin.test.ts @@ -221,6 +221,7 @@ const App = () => `, map: undefined, updatedBaseStyle: options.updatedBaseStyle, free: vi.fn(), + [Symbol.dispose]: vi.fn(), }) const ret = await transform.mock.calls[1][1]({ code: `import { Box } from '@devup-ui/react' diff --git a/packages/vite-plugin/src/__tests__/plugin.test.ts b/packages/vite-plugin/src/__tests__/plugin.test.ts index 90c3800f..ff464af0 100644 --- a/packages/vite-plugin/src/__tests__/plugin.test.ts +++ b/packages/vite-plugin/src/__tests__/plugin.test.ts @@ -189,6 +189,7 @@ describe('devupUIVitePlugin', () => { map: undefined, updatedBaseStyle: options.updatedBaseStyle, free: vi.fn(), + [Symbol.dispose]: vi.fn(), }) const plugin = DevupUI(options) @@ -218,6 +219,7 @@ describe('devupUIVitePlugin', () => { map: undefined, updatedBaseStyle: options.updatedBaseStyle, free: vi.fn(), + [Symbol.dispose]: vi.fn(), }) expect(writeFile).toHaveBeenCalledWith( join(resolve('df', 'devup-ui'), 'devup-ui.css'), @@ -244,6 +246,7 @@ describe('devupUIVitePlugin', () => { map: undefined, updatedBaseStyle: options.updatedBaseStyle, free: vi.fn(), + [Symbol.dispose]: vi.fn(), }) expect(await (plugin as any).transform('code', 'devup-ui.tsx')).toEqual( options.extractCss ? { code: 'long code' } : undefined, diff --git a/packages/webpack-plugin/src/__tests__/loader.test.ts b/packages/webpack-plugin/src/__tests__/loader.test.ts index adead08e..ed8cd7cc 100644 --- a/packages/webpack-plugin/src/__tests__/loader.test.ts +++ b/packages/webpack-plugin/src/__tests__/loader.test.ts @@ -55,6 +55,7 @@ describe('devupUILoader', () => { map: '{}', cssFile: 'cssFile', updatedBaseStyle: options.updatedBaseStyle, + [Symbol.dispose]: vi.fn(), }) devupUILoader.bind(t as any)(Buffer.from('code'), 'index.tsx') @@ -114,6 +115,7 @@ describe('devupUILoader', () => { map: undefined, cssFile: undefined, updatedBaseStyle: false, + [Symbol.dispose]: vi.fn(), }) devupUILoader.bind(t as any)(Buffer.from('code'), 'index.tsx') @@ -173,6 +175,7 @@ describe('devupUILoader', () => { map: undefined, cssFile: 'cssFile', updatedBaseStyle: false, + [Symbol.dispose]: vi.fn(), }) devupUILoader.bind(t as any)(Buffer.from('code'), 'index.tsx') @@ -207,6 +210,7 @@ describe('devupUILoader', () => { map: undefined, cssFile: 'cssFile', updatedBaseStyle: false, + [Symbol.dispose]: vi.fn(), }) devupUILoader.bind(t as any)(Buffer.from('code'), 'index.tsx') }) From fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Thu, 2 Oct 2025 19:22:16 +0900 Subject: [PATCH 44/59] Add positioning --- .changeset/angry-groups-camp.md | 5 +++++ .changeset/common-foxes-thank.md | 5 +++++ packages/react/src/types/props/position.ts | 10 ++++++++++ 3 files changed, 20 insertions(+) create mode 100644 .changeset/angry-groups-camp.md create mode 100644 .changeset/common-foxes-thank.md diff --git a/.changeset/angry-groups-camp.md b/.changeset/angry-groups-camp.md new file mode 100644 index 00000000..f69c31ba --- /dev/null +++ b/.changeset/angry-groups-camp.md @@ -0,0 +1,5 @@ +--- +'@devup-ui/wasm': patch +--- + +Implement enum prop diff --git a/.changeset/common-foxes-thank.md b/.changeset/common-foxes-thank.md new file mode 100644 index 00000000..da361a65 --- /dev/null +++ b/.changeset/common-foxes-thank.md @@ -0,0 +1,5 @@ +--- +'@devup-ui/react': patch +--- + +Add positioning diff --git a/packages/react/src/types/props/position.ts b/packages/react/src/types/props/position.ts index baca2783..906bc5b1 100644 --- a/packages/react/src/types/props/position.ts +++ b/packages/react/src/types/props/position.ts @@ -4,4 +4,14 @@ import type { ResponsiveValue } from '../responsive-value' export interface DevupUiPositionProps { pos?: ResponsiveValue + positioning?: ResponsiveValue< + | 'top' + | 'right' + | 'bottom' + | 'left' + | 'top-right' + | 'top-left' + | 'bottom-left' + | 'bottom-right' + > } From a67a13d0eb50f77580e23d654cd30532ba1f753e Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Thu, 2 Oct 2025 19:28:13 +0900 Subject: [PATCH 45/59] Fix lint --- libs/css/src/lib.rs | 1 - libs/extractor/src/extractor/extract_style_from_expression.rs | 1 - .../src/extractor/extract_style_from_member_expression.rs | 4 +--- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/css/src/lib.rs b/libs/css/src/lib.rs index 7e5a865a..465b602f 100644 --- a/libs/css/src/lib.rs +++ b/libs/css/src/lib.rs @@ -14,7 +14,6 @@ pub mod utils; use std::collections::BTreeMap; use std::hash::{DefaultHasher, Hash, Hasher}; - use crate::class_map::GLOBAL_CLASS_MAP; use crate::constant::{ COLOR_HASH, F_SPACE_RE, GLOBAL_ENUM_STYLE_PROPERTY, GLOBAL_STYLE_PROPERTY, ZERO_RE, diff --git a/libs/extractor/src/extractor/extract_style_from_expression.rs b/libs/extractor/src/extractor/extract_style_from_expression.rs index ffbb118d..a854aefa 100644 --- a/libs/extractor/src/extractor/extract_style_from_expression.rs +++ b/libs/extractor/src/extractor/extract_style_from_expression.rs @@ -1,4 +1,3 @@ - use crate::{ ExtractStyleProp, css_utils::css_to_style, diff --git a/libs/extractor/src/extractor/extract_style_from_member_expression.rs b/libs/extractor/src/extractor/extract_style_from_member_expression.rs index 82590306..5a5c8b13 100644 --- a/libs/extractor/src/extractor/extract_style_from_member_expression.rs +++ b/libs/extractor/src/extractor/extract_style_from_member_expression.rs @@ -4,9 +4,7 @@ use crate::{ ExtractResult, extract_style_from_expression::{dynamic_style, extract_style_from_expression}, }, - utils::{ - get_number_by_literal_expression, get_string_by_literal_expression, - }, + utils::{get_number_by_literal_expression, get_string_by_literal_expression}, }; use css::style_selector::StyleSelector; use oxc_allocator::CloneIn; From be6364f8488b03f7259c60dc8863779e3c89fe46 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 12:29:53 +0000 Subject: [PATCH 46/59] Version Packages --- .changeset/angry-groups-camp.md | 5 ----- .changeset/common-foxes-thank.md | 5 ----- bindings/devup-ui-wasm/CHANGELOG.md | 6 ++++++ bindings/devup-ui-wasm/package.json | 2 +- packages/components/CHANGELOG.md | 7 +++++++ packages/components/package.json | 2 +- packages/next-plugin/CHANGELOG.md | 7 +++++++ packages/next-plugin/package.json | 2 +- packages/react/CHANGELOG.md | 6 ++++++ packages/react/package.json | 2 +- packages/reset-css/CHANGELOG.md | 7 +++++++ packages/reset-css/package.json | 2 +- packages/rsbuild-plugin/CHANGELOG.md | 7 +++++++ packages/rsbuild-plugin/package.json | 2 +- packages/vite-plugin/CHANGELOG.md | 7 +++++++ packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/CHANGELOG.md | 7 +++++++ packages/webpack-plugin/package.json | 2 +- 18 files changed, 62 insertions(+), 18 deletions(-) delete mode 100644 .changeset/angry-groups-camp.md delete mode 100644 .changeset/common-foxes-thank.md diff --git a/.changeset/angry-groups-camp.md b/.changeset/angry-groups-camp.md deleted file mode 100644 index f69c31ba..00000000 --- a/.changeset/angry-groups-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@devup-ui/wasm': patch ---- - -Implement enum prop diff --git a/.changeset/common-foxes-thank.md b/.changeset/common-foxes-thank.md deleted file mode 100644 index da361a65..00000000 --- a/.changeset/common-foxes-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@devup-ui/react': patch ---- - -Add positioning diff --git a/bindings/devup-ui-wasm/CHANGELOG.md b/bindings/devup-ui-wasm/CHANGELOG.md index dd301f4a..71585ea0 100644 --- a/bindings/devup-ui-wasm/CHANGELOG.md +++ b/bindings/devup-ui-wasm/CHANGELOG.md @@ -1,5 +1,11 @@ # @devup-ui/wasm +## 1.0.41 + +### Patch Changes + +- [#400](https://github.com/dev-five-git/devup-ui/pull/400) [`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2) Thanks [@owjs3901](https://github.com/owjs3901)! - Implement enum prop + ## 1.0.40 ### Patch Changes diff --git a/bindings/devup-ui-wasm/package.json b/bindings/devup-ui-wasm/package.json index bc675281..3af9a773 100644 --- a/bindings/devup-ui-wasm/package.json +++ b/bindings/devup-ui-wasm/package.json @@ -17,7 +17,7 @@ "react", "wasm" ], - "version": "1.0.40", + "version": "1.0.41", "scripts": { "build": "wasm-pack build --target nodejs --out-dir ./pkg --out-name index && node script.js", "test": "wasm-pack test --node" diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 62caed14..90d135c0 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -1,5 +1,12 @@ # @devup-ui/components +## 0.1.23 + +### Patch Changes + +- Updated dependencies [[`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2)]: + - @devup-ui/react@1.0.20 + ## 0.1.22 ### Patch Changes diff --git a/packages/components/package.json b/packages/components/package.json index e0e7bfd7..a51665bf 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -16,7 +16,7 @@ "css-in-js-framework", "react" ], - "version": "0.1.22", + "version": "0.1.23", "type": "module", "scripts": { "lint": "eslint", diff --git a/packages/next-plugin/CHANGELOG.md b/packages/next-plugin/CHANGELOG.md index 03a0d289..5e7b3d2f 100644 --- a/packages/next-plugin/CHANGELOG.md +++ b/packages/next-plugin/CHANGELOG.md @@ -1,5 +1,12 @@ # @devup-ui/next-plugin +## 1.0.43 + +### Patch Changes + +- Updated dependencies []: + - @devup-ui/webpack-plugin@1.0.42 + ## 1.0.42 ### Patch Changes diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index a243a675..5e5eaaca 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -19,7 +19,7 @@ "webpack" ], "type": "module", - "version": "1.0.42", + "version": "1.0.43", "scripts": { "lint": "eslint", "build": "tsc && vite build" diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 27811738..6ecc251a 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,11 @@ # @devup-ui/react +## 1.0.20 + +### Patch Changes + +- [#400](https://github.com/dev-five-git/devup-ui/pull/400) [`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2) Thanks [@owjs3901](https://github.com/owjs3901)! - Add positioning + ## 1.0.19 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index 36b54480..813ffae9 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -16,7 +16,7 @@ "css-in-js-framework", "react" ], - "version": "1.0.19", + "version": "1.0.20", "type": "module", "scripts": { "lint": "eslint && tsc --noEmit", diff --git a/packages/reset-css/CHANGELOG.md b/packages/reset-css/CHANGELOG.md index f562c005..8c2c413e 100644 --- a/packages/reset-css/CHANGELOG.md +++ b/packages/reset-css/CHANGELOG.md @@ -1,5 +1,12 @@ # @devup-ui/reset-css +## 1.0.11 + +### Patch Changes + +- Updated dependencies [[`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2)]: + - @devup-ui/react@1.0.20 + ## 1.0.10 ### Patch Changes diff --git a/packages/reset-css/package.json b/packages/reset-css/package.json index 7cfd0c6f..37f67819 100644 --- a/packages/reset-css/package.json +++ b/packages/reset-css/package.json @@ -16,7 +16,7 @@ "css-in-js-framework", "react" ], - "version": "1.0.10", + "version": "1.0.11", "type": "module", "scripts": { "lint": "eslint", diff --git a/packages/rsbuild-plugin/CHANGELOG.md b/packages/rsbuild-plugin/CHANGELOG.md index dd6a00da..60e12e0d 100644 --- a/packages/rsbuild-plugin/CHANGELOG.md +++ b/packages/rsbuild-plugin/CHANGELOG.md @@ -1,5 +1,12 @@ # @devup-ui/rsbuild-plugin +## 1.0.38 + +### Patch Changes + +- Updated dependencies [[`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2)]: + - @devup-ui/wasm@1.0.41 + ## 1.0.37 ### Patch Changes diff --git a/packages/rsbuild-plugin/package.json b/packages/rsbuild-plugin/package.json index 7ac11c0a..91cf2889 100644 --- a/packages/rsbuild-plugin/package.json +++ b/packages/rsbuild-plugin/package.json @@ -18,7 +18,7 @@ "rsbuild" ], "type": "module", - "version": "1.0.37", + "version": "1.0.38", "scripts": { "lint": "eslint", "build": "tsc && vite build" diff --git a/packages/vite-plugin/CHANGELOG.md b/packages/vite-plugin/CHANGELOG.md index de5eead0..313bdb5d 100644 --- a/packages/vite-plugin/CHANGELOG.md +++ b/packages/vite-plugin/CHANGELOG.md @@ -1,5 +1,12 @@ # @devup-ui/vite-plugin +## 1.0.44 + +### Patch Changes + +- Updated dependencies [[`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2)]: + - @devup-ui/wasm@1.0.41 + ## 1.0.43 ### Patch Changes diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 4623190e..6abb1cc4 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -18,7 +18,7 @@ "vite" ], "type": "module", - "version": "1.0.43", + "version": "1.0.44", "scripts": { "lint": "eslint", "build": "tsc && vite build" diff --git a/packages/webpack-plugin/CHANGELOG.md b/packages/webpack-plugin/CHANGELOG.md index 5dd15103..97035abc 100644 --- a/packages/webpack-plugin/CHANGELOG.md +++ b/packages/webpack-plugin/CHANGELOG.md @@ -1,5 +1,12 @@ # @devup-ui/webpack-plugin +## 1.0.42 + +### Patch Changes + +- Updated dependencies [[`fee97f8`](https://github.com/dev-five-git/devup-ui/commit/fee97f8a3d79b9a4c62858deb8e1aea8c609e3a2)]: + - @devup-ui/wasm@1.0.41 + ## 1.0.41 ### Patch Changes diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6fa6fb65..da48fedc 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -18,7 +18,7 @@ "webpack" ], "type": "module", - "version": "1.0.41", + "version": "1.0.42", "scripts": { "lint": "eslint", "build": "tsc && vite build" From 0862c91e49c48d10ba7102df07ebc6c430c69b87 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Mon, 6 Oct 2025 21:40:12 +0900 Subject: [PATCH 47/59] Implement Style Order rule --- .changeset/early-lies-sell.md | 5 + .../__snapshots__/recommended.test.ts.snap | 17 + .../eslint-plugin/src/configs/recommended.ts | 3 + .../src/rules/__tests__/index.test.ts | 1 + packages/eslint-plugin/src/rules/index.ts | 1 + .../src/rules/style-order-range/README.md | 41 ++ .../style-order-range/__tests__/index.test.ts | 349 ++++++++++++++++++ .../src/rules/style-order-range/index.ts | 163 ++++++++ 8 files changed, 580 insertions(+) create mode 100644 .changeset/early-lies-sell.md create mode 100644 packages/eslint-plugin/src/rules/style-order-range/README.md create mode 100644 packages/eslint-plugin/src/rules/style-order-range/__tests__/index.test.ts create mode 100644 packages/eslint-plugin/src/rules/style-order-range/index.ts diff --git a/.changeset/early-lies-sell.md b/.changeset/early-lies-sell.md new file mode 100644 index 00000000..7e58d62f --- /dev/null +++ b/.changeset/early-lies-sell.md @@ -0,0 +1,5 @@ +--- +'@devup-ui/eslint-plugin': patch +--- + +Implement style order rule diff --git a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap index bd5c0b2d..f1467256 100644 --- a/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap +++ b/packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap @@ -73,6 +73,22 @@ exports[`recommended > export recommended config 1`] = ` }, "name": "no-useless-tailing-nulls", }, + "style-order-range": { + "create": [Function], + "defaultOptions": [], + "meta": { + "docs": { + "description": "Ensures styleOrder prop is within valid range (0 < value < 255).", + "url": "https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/style-order-range", + }, + "messages": { + "styleOrderRange": "styleOrder prop must be a number greater than 0 and less than 255.", + }, + "schema": [], + "type": "problem", + }, + "name": "style-order-range", + }, }, }, }, @@ -81,6 +97,7 @@ exports[`recommended > export recommended config 1`] = ` "@devup-ui/no-duplicate-value": "error", "@devup-ui/no-useless-responsive": "error", "@devup-ui/no-useless-tailing-nulls": "error", + "@devup-ui/style-order-range": "error", }, }, ] diff --git a/packages/eslint-plugin/src/configs/recommended.ts b/packages/eslint-plugin/src/configs/recommended.ts index 7bfef860..3827b73a 100644 --- a/packages/eslint-plugin/src/configs/recommended.ts +++ b/packages/eslint-plugin/src/configs/recommended.ts @@ -3,6 +3,7 @@ import { noDuplicateValue, noUselessResponsive, noUselessTailingNulls, + styleOrderRange, } from '../rules' export default [ @@ -14,6 +15,7 @@ export default [ 'css-utils-literal-only': cssUtilsLiteralOnly, 'no-duplicate-value': noDuplicateValue, 'no-useless-responsive': noUselessResponsive, + 'style-order-range': styleOrderRange, }, }, }, @@ -22,6 +24,7 @@ export default [ '@devup-ui/css-utils-literal-only': 'error', '@devup-ui/no-duplicate-value': 'error', '@devup-ui/no-useless-responsive': 'error', + '@devup-ui/style-order-range': 'error', }, }, ] diff --git a/packages/eslint-plugin/src/rules/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/__tests__/index.test.ts index 787c17c4..6c6900b3 100644 --- a/packages/eslint-plugin/src/rules/__tests__/index.test.ts +++ b/packages/eslint-plugin/src/rules/__tests__/index.test.ts @@ -6,6 +6,7 @@ describe('export index', () => { cssUtilsLiteralOnly: expect.any(Object), noDuplicateValue: expect.any(Object), noUselessResponsive: expect.any(Object), + styleOrderRange: expect.any(Object), }) }) }) diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index 2c7e3eb8..67184778 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -2,3 +2,4 @@ export * from './css-utils-literal-only' export * from './no-duplicate-value' export * from './no-useless-responsive' export * from './no-useless-tailing-nulls' +export * from './style-order-range' diff --git a/packages/eslint-plugin/src/rules/style-order-range/README.md b/packages/eslint-plugin/src/rules/style-order-range/README.md new file mode 100644 index 00000000..72c2da96 --- /dev/null +++ b/packages/eslint-plugin/src/rules/style-order-range/README.md @@ -0,0 +1,41 @@ +# style-order-range + +Ensures `styleOrder` prop is within valid range (0 < value < 255). + +## Rule Details + +This rule enforces that the `styleOrder` prop must be a number greater than 0 and less than 255. + +### Examples of **incorrect** code for this rule: + +```jsx +// Zero and negative values +
+
+
+ +// Values greater than or equal to 255 +
+
+
+ +// Non-numeric values +
+
+``` + +### Examples of **correct** code for this rule: + +```jsx +// Valid range values (0 < value < 255) +
+
+
+
+
+
+``` + +## When Not To Use It + +If you don't use `styleOrder` props or want to allow any value range, you can disable this rule. diff --git a/packages/eslint-plugin/src/rules/style-order-range/__tests__/index.test.ts b/packages/eslint-plugin/src/rules/style-order-range/__tests__/index.test.ts new file mode 100644 index 00000000..2ebc5e97 --- /dev/null +++ b/packages/eslint-plugin/src/rules/style-order-range/__tests__/index.test.ts @@ -0,0 +1,349 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' + +import { styleOrderRange } from '../index' + +describe('style-order-range rule', () => { + const ruleTester = new RuleTester({ + languageOptions: { + ecmaVersion: 'latest', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + }) + + ruleTester.run('style-order-range rule', styleOrderRange, { + valid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: 1})', + filename: 'src/app/page.tsx', + }, + { + code: 'css({styleOrder: 1})', + filename: 'src/app/page.tsx', + }, + { + code: '', + filename: 'src/app/page.tsx', + }, + ], + invalid: [ + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { Box } from "@devup-ui/react";\n', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: someVariable})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: `someVariable`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: 1000})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: -100})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: "1000"})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: `1000`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: `${someVariable}`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: +someVariable})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: -someVariable})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: typeof `100`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: void `100`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: delete `100`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: ~ `100`})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: `100` + 100})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + { + code: 'import { css } from "@devup-ui/react";\ncss({styleOrder: ~10})', + filename: 'src/app/page.tsx', + errors: [ + { + messageId: 'styleOrderRange', + }, + ], + }, + ], + }) +}) diff --git a/packages/eslint-plugin/src/rules/style-order-range/index.ts b/packages/eslint-plugin/src/rules/style-order-range/index.ts new file mode 100644 index 00000000..978d1136 --- /dev/null +++ b/packages/eslint-plugin/src/rules/style-order-range/index.ts @@ -0,0 +1,163 @@ +import { + AST_NODE_TYPES, + ESLintUtils, + type TSESTree, +} from '@typescript-eslint/utils' +import type { RuleContext } from '@typescript-eslint/utils/ts-eslint' + +import { ImportStorage } from '../../utils/import-storage' + +const createRule = ESLintUtils.RuleCreator( + (name) => + `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${name}`, +) + +function checkStyleOrderRange>( + expression: TSESTree.Expression, + context: T, +) { + let value: number | null = null + + if (expression.type === AST_NODE_TYPES.Literal) { + if (typeof expression.value === 'number') { + value = expression.value + } else if (typeof expression.value === 'string') { + const parsed = parseInt(expression.value, 10) + if (!isNaN(parsed)) { + value = parsed + } + } + } else if (expression.type === AST_NODE_TYPES.UnaryExpression) { + if ( + expression.argument.type === AST_NODE_TYPES.Literal && + typeof expression.argument.value === 'number' && + (expression.operator === '-' || expression.operator === '+') + ) { + value = + expression.operator === '-' + ? -expression.argument.value + : expression.argument.value + } else { + context.report({ + node: expression, + messageId: 'styleOrderRange', + }) + return + } + } else if (expression.type === AST_NODE_TYPES.TemplateLiteral) { + if (expression.expressions.length > 0) { + // error report + context.report({ + node: expression, + messageId: 'styleOrderRange', + }) + return + } else { + value = parseInt(expression.quasis[0].value.raw, 10) + if (isNaN(value)) { + // error report + context.report({ + node: expression, + messageId: 'styleOrderRange', + }) + return + } + } + } + + if (value === null || value < 1 || value > 254) { + context.report({ + node: expression, + messageId: 'styleOrderRange', + }) + } +} + +export const styleOrderRange = createRule({ + name: 'style-order-range', + defaultOptions: [], + meta: { + schema: [], + messages: { + styleOrderRange: + 'styleOrder prop must be a number greater than 0 and less than 255.', + }, + type: 'problem', + docs: { + description: + 'Ensures styleOrder prop is within valid range (0 < value < 255).', + }, + }, + create(context) { + const importStorage = new ImportStorage() + let devupContext: + | TSESTree.CallExpression + | TSESTree.JSXOpeningElement + | null = null + + return { + ImportDeclaration(node) { + importStorage.addImportByDeclaration(node) + }, + CallExpression(node) { + if ( + importStorage.checkContextType(node) === 'UTIL' && + node.arguments.length === 1 && + node.arguments[0].type === AST_NODE_TYPES.ObjectExpression + ) { + devupContext = node + } + }, + 'CallExpression:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + Property(node) { + if (!devupContext) return + if ( + node.key.type === AST_NODE_TYPES.Identifier && + node.key.name === 'styleOrder' + ) { + const value = node.value + if ( + value.type !== AST_NODE_TYPES.AssignmentPattern && + value.type !== AST_NODE_TYPES.TSEmptyBodyFunctionExpression + ) { + checkStyleOrderRange(value, context) + } + } + }, + JSXOpeningElement(node) { + if (importStorage.checkContextType(node) === 'COMPONENT') { + devupContext = node + } + }, + 'JSXOpeningElement:exit'(node) { + if (devupContext === node) { + devupContext = null + } + }, + JSXAttribute(node) { + if (!devupContext) return + // styleOrder prop만 체크 + if ( + node.name.type !== AST_NODE_TYPES.JSXIdentifier || + node.name.name !== 'styleOrder' || + !node.value + ) { + return + } + + if (node.value.type === AST_NODE_TYPES.JSXExpressionContainer) { + const expression = node.value.expression + if (expression.type !== AST_NODE_TYPES.JSXEmptyExpression) { + checkStyleOrderRange(expression, context) + } + } else if (node.value.type === AST_NODE_TYPES.Literal) { + checkStyleOrderRange(node.value, context) + } + }, + } + }, +}) From 93d4cc05bf40bef3dad7a4fba63736531d38a8e8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:04:45 +0000 Subject: [PATCH 48/59] Version Packages --- .changeset/early-lies-sell.md | 5 ----- packages/eslint-plugin/CHANGELOG.md | 6 ++++++ packages/eslint-plugin/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/early-lies-sell.md diff --git a/.changeset/early-lies-sell.md b/.changeset/early-lies-sell.md deleted file mode 100644 index 7e58d62f..00000000 --- a/.changeset/early-lies-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@devup-ui/eslint-plugin': patch ---- - -Implement style order rule diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 25106808..31f6bbf8 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,5 +1,11 @@ # @devup-ui/eslint-plugin +## 1.0.1 + +### Patch Changes + +- [#409](https://github.com/dev-five-git/devup-ui/pull/409) [`0862c91`](https://github.com/dev-five-git/devup-ui/commit/0862c91e49c48d10ba7102df07ebc6c430c69b87) Thanks [@owjs3901](https://github.com/owjs3901)! - Implement style order rule + ## 1.0.0 ### Major Changes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 7115a2a0..cb765613 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -17,7 +17,7 @@ "react", "eslint" ], - "version": "1.0.0", + "version": "1.0.1", "main": "dist/index.cjs", "type": "module", "scripts": { From 0eca533b161883475025b093f746326ea511f1ad Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 6 Oct 2025 00:07:02 +0900 Subject: [PATCH 49/59] Rewrite landing docs api --- .../src/app/(detail)/docs/api/box/page.mdx | 54 +++++++++++- .../src/app/(detail)/docs/api/button/page.mdx | 37 +++++++- .../src/app/(detail)/docs/api/center/page.mdx | 83 ++++++++++++++---- .../src/app/(detail)/docs/api/css/page.mdx | 84 +++++++++++++++---- .../src/app/(detail)/docs/api/flex/page.mdx | 20 ++++- .../src/app/(detail)/docs/api/grid/page.mdx | 74 ++++++++++++---- .../src/app/(detail)/docs/api/image/page.mdx | 14 +++- .../src/app/(detail)/docs/api/input/page.mdx | 20 ++++- .../app/(detail)/docs/api/selector/page.mdx | 4 + .../(detail)/docs/api/style-props/page.mdx | 2 + .../src/app/(detail)/docs/api/text/page.mdx | 60 ++++++++++++- .../app/(detail)/docs/api/v-stack/page.mdx | 80 ++++++++++++++---- 12 files changed, 455 insertions(+), 77 deletions(-) diff --git a/apps/landing/src/app/(detail)/docs/api/box/page.mdx b/apps/landing/src/app/(detail)/docs/api/box/page.mdx index 3ace3fba..520bcf5d 100644 --- a/apps/landing/src/app/(detail)/docs/api/box/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/box/page.mdx @@ -15,15 +15,61 @@ It is just a `div` with some styles. ## How to use ```tsx -const before = +import { Box } from '@devup-ui/react' -const after =
+function App() { + return +} +``` + +The Box component defined above will render like this: + +```tsx +function App() { + return
+} +``` + +```css +.aa { + background: red; +} +.ab { + flex: 1; +} +.ac { + height: 100px; +} +.a-d { + width: 400px; +} ``` +If you pass a number without a unit to a style property, it will be automatically scaled by 4. +This means 1 equals 4px, 2 equals 8px, and so on. + +### Rendering as Another Element + You can use the `as` prop to change the element type. ```tsx -const before = +import { Box } from '@devup-ui/react' + +function App() { + return +} +``` + +By using the as prop, you can render it as another element as shown below: -const after = +```tsx +function App() { + return +} +``` + +```css +.aa { + background: red; +} ``` diff --git a/apps/landing/src/app/(detail)/docs/api/button/page.mdx b/apps/landing/src/app/(detail)/docs/api/button/page.mdx index 5b517db8..0f0259ba 100644 --- a/apps/landing/src/app/(detail)/docs/api/button/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/button/page.mdx @@ -13,7 +13,40 @@ The `Button` component is a simple button component that can be used to trigger ## How to use ```tsx -const before = + ) +} +``` + +The Button component defined above will render like this: + +```tsx +function App() { + return ( + + ) +} ``` + +```css +.aa { + background: red; +} +.ab { + width: 100px; +} +.ac { + height: 100px; +} +``` + +If you pass a number without a unit to a style property, it will be automatically scaled by 4. +This means 1 equals 4px, 2 equals 8px, and so on. diff --git a/apps/landing/src/app/(detail)/docs/api/center/page.mdx b/apps/landing/src/app/(detail)/docs/api/center/page.mdx index fa095096..4f67348a 100644 --- a/apps/landing/src/app/(detail)/docs/api/center/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/center/page.mdx @@ -14,19 +14,72 @@ It has a `display: flex` style with `justify-content: center` and `align-items: ## How to use ```tsx -const before = ( -
- - - -
-) - -const after = ( -
-
-
-
-
-) +import { Box, Center } from '@devup-ui/react' + +function App() { + return ( +
+ + + +
+ ) +} +``` + +The Center component defined above will render like this: + +```tsx +function App() { + return ( +
+
+
+
+
+ ) +} ``` + +```css +.aa { + background: blue; +} +.ab { + height: 100px; +} +.ac { + width: 100px; +} +.a-d { + display: flex; +} +.ae { + display: flex; +} +.af { + justify-content: center; +} +.ag { + align-items: center; +} +``` + +If you pass a number without a unit to a style property, it will be automatically scaled by 4. +This means 1 equals 4px, 2 equals 8px, and so on. + +
+ +Class names and style properties are resolved in the following order: + +1. Generate class names for child components. + - Compute class names and style properties coming from each child (including component defaults, utility classes, and props). + +2. Remove duplicate component properties. + - Deduplicate only when both the `key:value` pair and the `style-order` match. + +3. If the key:value matches but the `style-order` differs, the property is not removed — the later/higher-priority style will take precedence. + - Example: In other words, the `display: flex` implemented internally by `Center` and the `display: flex` provided directly by the user have different style-orders, so they are not removed, and the final style is applied according to priority. + +4. Generate the parent component’s className based on the merged result. + - After child classNames are generated and duplicates (per rules above) removed, compute/merge the parent className and final style output. diff --git a/apps/landing/src/app/(detail)/docs/api/css/page.mdx b/apps/landing/src/app/(detail)/docs/api/css/page.mdx index 045b5110..56e2a3e0 100644 --- a/apps/landing/src/app/(detail)/docs/api/css/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/css/page.mdx @@ -18,15 +18,39 @@ You can use `css` as a tag function to create a css string. Pass in a string of into a class list. ```tsx -const before = ( -
-) - -const after = +import { css } from '@devup-ui/react' + +function App() { + return ( +
+ ) +} +``` + +The content above is rendered/transformed as shown below: + +```tsx +function App() { + return
+} +``` + +```css +.aa { + background: red; +} +.ab { + width: 100px; +} +.ac { + height: 100px; +} ``` ### CSS Object @@ -34,13 +58,37 @@ const after = You can also use the css function by passing in a css object as an argument. ```tsx -const before = ( - -) - -const after = +import { css } from '@devup-ui/react' + +function App() { + return ( +
+ ) +} +``` + +The content above is rendered/transformed as shown below: + +```tsx +function App() { + return
+} +``` + +```css +.aa { + background: red; +} +.ab { + width: 100px; +} +.ac { + height: 100px; +} ``` diff --git a/apps/landing/src/app/(detail)/docs/api/flex/page.mdx b/apps/landing/src/app/(detail)/docs/api/flex/page.mdx index 1ea9852c..ace68f7b 100644 --- a/apps/landing/src/app/(detail)/docs/api/flex/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/flex/page.mdx @@ -15,7 +15,23 @@ It has a `display: flex` style by default. ## How to use ```tsx -const before = +import { Flex } from '@devup-ui/react' -const after =
+function App() { + return +} +``` + +The Flex component defined above will render like this: + +```tsx +function App() { + return
+} +``` + +```css +.aa { + display: flex; +} ``` diff --git a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx index a93bf9c5..e0dfca27 100644 --- a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx @@ -15,19 +15,63 @@ It has a `display: grid` style by default. ## How to use ```tsx -const before = ( - - - - - -) - -const after = ( -
-
-
-
-
-) +import { Box, Grid } from '@devup-ui/react' + +function App() { + return ( + + + + + + ) +} +``` + +The Grid component defined above will render like this: + +```tsx +function App() { + return ( +
+
+
+
+
+ ) +} +``` + +```css +.aa { + background: blue; +} +.ab { + height: 100px; +} +.ac { + width: 100px; +} +.a-d { + display: grid; +} ``` + +If you pass a number without a unit to a style property, it will be automatically scaled by 4. +This means 1 equals 4px, 2 equals 8px, and so on. + +
+ +Class names and style properties are resolved in the following order: + +1. Generate class names for child components. + - Compute class names and style properties coming from each child (including component defaults, utility classes, and props). + +2. Remove duplicate component properties. + - Deduplicate only when both the `key:value` pair and the `style-order` match. + +3. If the key:value matches but the `style-order` differs, the property is not removed — the later/higher-priority style will take precedence. + - Example: In other words, the `display: flex` implemented internally by `Center` and the `display: flex` provided directly by the user have different style-orders, so they are not removed, and the final style is applied according to priority. + +4. Generate the parent component’s className based on the merged result. + - After child classNames are generated and duplicates (per rules above) removed, compute/merge the parent className and final style output. diff --git a/apps/landing/src/app/(detail)/docs/api/image/page.mdx b/apps/landing/src/app/(detail)/docs/api/image/page.mdx index 7f1be76b..7d9cbb02 100644 --- a/apps/landing/src/app/(detail)/docs/api/image/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/image/page.mdx @@ -15,7 +15,17 @@ It is just a `img` with some styles. ## How to use ```tsx -const before = +import { Image } from '@devup-ui/react' -const after = +function App() { + return +} +``` + +The Image component defined above will render like this: + +```tsx +function App() { + return +} ``` diff --git a/apps/landing/src/app/(detail)/docs/api/input/page.mdx b/apps/landing/src/app/(detail)/docs/api/input/page.mdx index 61d25259..15c4d79a 100644 --- a/apps/landing/src/app/(detail)/docs/api/input/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/input/page.mdx @@ -15,7 +15,23 @@ It is just a `input` with some styles. ## How to use ```tsx -const before = +import { Input } from '@devup-ui/react' -const after = +function App() { + return +} +``` + +The Input component defined above will render like this: + +```tsx +function App() { + return +} +``` + +```css +.aa { + border: 3px solid black; +} ``` diff --git a/apps/landing/src/app/(detail)/docs/api/selector/page.mdx b/apps/landing/src/app/(detail)/docs/api/selector/page.mdx index 338a8b7a..10bfade0 100644 --- a/apps/landing/src/app/(detail)/docs/api/selector/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/selector/page.mdx @@ -8,6 +8,10 @@ export const metadata = { # Selector +The items defined in Props can be used in the same way as those defined in Style Property. + +
+ diff --git a/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx b/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx index e6b32431..8c03e4db 100644 --- a/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx @@ -8,6 +8,8 @@ export const metadata = { # Style Props +The items defined in Props can be used in the same way as those defined in Style Property. + ## Animation
diff --git a/apps/landing/src/app/(detail)/docs/api/text/page.mdx b/apps/landing/src/app/(detail)/docs/api/text/page.mdx index ec1addf4..16a398dd 100644 --- a/apps/landing/src/app/(detail)/docs/api/text/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/text/page.mdx @@ -15,7 +15,63 @@ It is just a `span` with some styles. ## How to use ```tsx -const before = This is Text component. +import { Text } from '@devup-ui/react' -const after = This is Text component. +function App() { + return ( + + This is Text component. + + ) +} +``` + +The Text component defined above will render like this: + +```tsx +function App() { + return This is Text component. +} +``` + +```css +.aa { + color: red; +} +.ab { + font-size: 24px; +} +``` + +### Rendering as Another Element + +You can use the `as` prop to change the element type. + +```tsx +import { Text } from '@devup-ui/react' + +function App() { + return ( + + This is Text component. + + ) +} +``` + +The Text component defined above will render like this: + +```tsx +function App() { + return

This is Text component.

+} +``` + +```css +.aa { + color: red; +} +.ab { + font-size: 24px; +} ``` diff --git a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx index 1f0e9cfb..78ec3f8d 100644 --- a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx @@ -15,19 +15,69 @@ It has a `display: flex` style with `flex-direction: column`. ## How to use ```tsx -const before = ( - - - - - -) - -const after = ( -
-
-
-
-
-) +import { Box, VStack } from '@devup-ui/react' + +function App() { + return ( + + + + + + ) +} +``` + +The VStack component defined above will render like this: + +```tsx +function App() { + return ( +
+
+
+
+
+ ) +} +``` + +```css +.aa { + background: blue; +} +.ab { + height: 100px; +} +.ac { + width: 100px; +} +.a-d { + display: flex; +} +.ae { + display: flex; +} +af { + flex-direction: column; +} ``` + +If you pass a number without a unit to a style property, it will be automatically scaled by 4. +This means 1 equals 4px, 2 equals 8px, and so on. + +
+ +Class names and style properties are resolved in the following order: + +1. Generate class names for child components. + - Compute class names and style properties coming from each child (including component defaults, utility classes, and props). + +2. Remove duplicate component properties. + - Deduplicate only when both the `key:value` pair and the `style-order` match. + +3. If the key:value matches but the `style-order` differs, the property is not removed — the later/higher-priority style will take precedence. + - Example: In other words, the `display: flex` implemented internally by `Center` and the `display: flex` provided directly by the user have different style-orders, so they are not removed, and the final style is applied according to priority. + +4. Generate the parent component’s className based on the merged result. + - After child classNames are generated and duplicates (per rules above) removed, compute/merge the parent className and final style output. From 856d688d42b3c100700458a4ec2b68d1342dd876 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Mon, 6 Oct 2025 00:47:58 +0900 Subject: [PATCH 50/59] Fix landing docs api --- apps/landing/src/app/(detail)/docs/api/selector/page.mdx | 2 +- apps/landing/src/app/(detail)/docs/api/style-props/page.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/landing/src/app/(detail)/docs/api/selector/page.mdx b/apps/landing/src/app/(detail)/docs/api/selector/page.mdx index 10bfade0..f4811542 100644 --- a/apps/landing/src/app/(detail)/docs/api/selector/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/selector/page.mdx @@ -8,7 +8,7 @@ export const metadata = { # Selector -The items defined in Props can be used in the same way as those defined in Style Property. +The attributes defined in Pseudo-Class correspond to those defined in Selector, allowing them to be used directly as component props.
diff --git a/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx b/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx index 8c03e4db..42b613b7 100644 --- a/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/style-props/page.mdx @@ -8,7 +8,7 @@ export const metadata = { # Style Props -The items defined in Props can be used in the same way as those defined in Style Property. +The attributes defined in Style Property correspond to those defined in Props, allowing them to be used directly as component props. ## Animation From 9701ba5c362b84069797ea0d68615d248e2d386b Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Tue, 7 Oct 2025 19:37:57 +0900 Subject: [PATCH 51/59] Fix landing docs api --- .../src/app/(detail)/docs/api/box/page.mdx | 4 ++-- .../src/app/(detail)/docs/api/button/page.mdx | 8 +++---- .../src/app/(detail)/docs/api/center/page.mdx | 22 +++++++++---------- .../src/app/(detail)/docs/api/css/page.mdx | 16 +++++++------- .../src/app/(detail)/docs/api/flex/page.mdx | 4 ++-- .../src/app/(detail)/docs/api/grid/page.mdx | 16 +++++++------- .../src/app/(detail)/docs/api/input/page.mdx | 4 ++-- .../src/app/(detail)/docs/api/text/page.mdx | 12 +++++----- .../app/(detail)/docs/api/v-stack/page.mdx | 20 ++++++++--------- 9 files changed, 53 insertions(+), 53 deletions(-) diff --git a/apps/landing/src/app/(detail)/docs/api/box/page.mdx b/apps/landing/src/app/(detail)/docs/api/box/page.mdx index 520bcf5d..8ddc232d 100644 --- a/apps/landing/src/app/(detail)/docs/api/box/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/box/page.mdx @@ -64,12 +64,12 @@ By using the as prop, you can render it as another element as shown below: ```tsx function App() { - return + return } ``` ```css -.aa { +.a { background: red; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/button/page.mdx b/apps/landing/src/app/(detail)/docs/api/button/page.mdx index 0f0259ba..c4ecbb75 100644 --- a/apps/landing/src/app/(detail)/docs/api/button/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/button/page.mdx @@ -29,7 +29,7 @@ The Button component defined above will render like this: ```tsx function App() { return ( - ) @@ -37,13 +37,13 @@ function App() { ``` ```css -.aa { +.a { background: red; } -.ab { +.b { width: 100px; } -.ac { +.c { height: 100px; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/center/page.mdx b/apps/landing/src/app/(detail)/docs/api/center/page.mdx index 4f67348a..2ffa982b 100644 --- a/apps/landing/src/app/(detail)/docs/api/center/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/center/page.mdx @@ -32,35 +32,35 @@ The Center component defined above will render like this: ```tsx function App() { return ( -
-
-
-
+
+
+
+
) } ``` ```css -.aa { +.a { background: blue; } -.ab { +.b { height: 100px; } -.ac { +.c { width: 100px; } -.a-d { +.d { display: flex; } -.ae { +.e { display: flex; } -.af { +.f { justify-content: center; } -.ag { +.g { align-items: center; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/css/page.mdx b/apps/landing/src/app/(detail)/docs/api/css/page.mdx index 56e2a3e0..ecf1836b 100644 --- a/apps/landing/src/app/(detail)/docs/api/css/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/css/page.mdx @@ -37,18 +37,18 @@ The content above is rendered/transformed as shown below: ```tsx function App() { - return
+ return
} ``` ```css -.aa { +.a { background: red; } -.ab { +.b { width: 100px; } -.ac { +.c { height: 100px; } ``` @@ -77,18 +77,18 @@ The content above is rendered/transformed as shown below: ```tsx function App() { - return
+ return
} ``` ```css -.aa { +.a { background: red; } -.ab { +.b { width: 100px; } -.ac { +.c { height: 100px; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/flex/page.mdx b/apps/landing/src/app/(detail)/docs/api/flex/page.mdx index ace68f7b..710363a4 100644 --- a/apps/landing/src/app/(detail)/docs/api/flex/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/flex/page.mdx @@ -26,12 +26,12 @@ The Flex component defined above will render like this: ```tsx function App() { - return
+ return
} ``` ```css -.aa { +.a { display: flex; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx index e0dfca27..2da3af34 100644 --- a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx @@ -33,26 +33,26 @@ The Grid component defined above will render like this: ```tsx function App() { return ( -
-
-
-
+
+
+
+
) } ``` ```css -.aa { +.a { background: blue; } -.ab { +.b { height: 100px; } -.ac { +.c { width: 100px; } -.a-d { +.d { display: grid; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/input/page.mdx b/apps/landing/src/app/(detail)/docs/api/input/page.mdx index 15c4d79a..0efe0dca 100644 --- a/apps/landing/src/app/(detail)/docs/api/input/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/input/page.mdx @@ -26,12 +26,12 @@ The Input component defined above will render like this: ```tsx function App() { - return + return } ``` ```css -.aa { +.a { border: 3px solid black; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/text/page.mdx b/apps/landing/src/app/(detail)/docs/api/text/page.mdx index 16a398dd..d4ff9e7e 100644 --- a/apps/landing/src/app/(detail)/docs/api/text/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/text/page.mdx @@ -30,15 +30,15 @@ The Text component defined above will render like this: ```tsx function App() { - return This is Text component. + return This is Text component. } ``` ```css -.aa { +.a { color: red; } -.ab { +.b { font-size: 24px; } ``` @@ -63,15 +63,15 @@ The Text component defined above will render like this: ```tsx function App() { - return

This is Text component.

+ return

This is Text component.

} ``` ```css -.aa { +.a { color: red; } -.ab { +.b { font-size: 24px; } ``` diff --git a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx index 78ec3f8d..c42f10cc 100644 --- a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx @@ -33,32 +33,32 @@ The VStack component defined above will render like this: ```tsx function App() { return ( -
-
-
-
+
+
+
+
) } ``` ```css -.aa { +.a { background: blue; } -.ab { +.b { height: 100px; } -.ac { +.c { width: 100px; } -.a-d { +.d { display: flex; } -.ae { +.e { display: flex; } -af { +.f { flex-direction: column; } ``` From d918ea5dede09698a7e066cfe49b66b73e9534e8 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Wed, 8 Oct 2025 00:13:33 +0900 Subject: [PATCH 52/59] Add exception content to landing docs api --- .../src/app/(detail)/docs/api/box/page.mdx | 18 ++++++++++++++++++ .../src/app/(detail)/docs/api/button/page.mdx | 18 ++++++++++++++++++ .../src/app/(detail)/docs/api/center/page.mdx | 18 ++++++++++++++++++ .../src/app/(detail)/docs/api/grid/page.mdx | 18 ++++++++++++++++++ .../src/app/(detail)/docs/api/v-stack/page.mdx | 18 ++++++++++++++++++ 5 files changed, 90 insertions(+) diff --git a/apps/landing/src/app/(detail)/docs/api/box/page.mdx b/apps/landing/src/app/(detail)/docs/api/box/page.mdx index 8ddc232d..5b685749 100644 --- a/apps/landing/src/app/(detail)/docs/api/box/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/box/page.mdx @@ -48,6 +48,24 @@ function App() { If you pass a number without a unit to a style property, it will be automatically scaled by 4. This means 1 equals 4px, 2 equals 8px, and so on. +However, the following properties are exceptions and **are not multiplied by 4**: + +- `opacity` +- `flex` +- `z-index` +- `line-clamp` +- `font-weight` +- `line-height` +- `scale` +- `aspect-ratio` +- `flex-grow` +- `flex-shrink` +- `order` +- `grid-column`, `grid-column-start`, `grid-column-end` +- `grid-row`, `grid-row-start`, `grid-row-end` +- `animation-iteration-count` +- `tab-size`, `moz-tab-size`, `-webkit-line-clamp` + ### Rendering as Another Element You can use the `as` prop to change the element type. diff --git a/apps/landing/src/app/(detail)/docs/api/button/page.mdx b/apps/landing/src/app/(detail)/docs/api/button/page.mdx index c4ecbb75..0cbc85da 100644 --- a/apps/landing/src/app/(detail)/docs/api/button/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/button/page.mdx @@ -50,3 +50,21 @@ function App() { If you pass a number without a unit to a style property, it will be automatically scaled by 4. This means 1 equals 4px, 2 equals 8px, and so on. + +However, the following properties are exceptions and **are not multiplied by 4**: + +- `opacity` +- `flex` +- `z-index` +- `line-clamp` +- `font-weight` +- `line-height` +- `scale` +- `aspect-ratio` +- `flex-grow` +- `flex-shrink` +- `order` +- `grid-column`, `grid-column-start`, `grid-column-end` +- `grid-row`, `grid-row-start`, `grid-row-end` +- `animation-iteration-count` +- `tab-size`, `moz-tab-size`, `-webkit-line-clamp` diff --git a/apps/landing/src/app/(detail)/docs/api/center/page.mdx b/apps/landing/src/app/(detail)/docs/api/center/page.mdx index 2ffa982b..63783ba4 100644 --- a/apps/landing/src/app/(detail)/docs/api/center/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/center/page.mdx @@ -68,6 +68,24 @@ function App() { If you pass a number without a unit to a style property, it will be automatically scaled by 4. This means 1 equals 4px, 2 equals 8px, and so on. +However, the following properties are exceptions and **are not multiplied by 4**: + +- `opacity` +- `flex` +- `z-index` +- `line-clamp` +- `font-weight` +- `line-height` +- `scale` +- `aspect-ratio` +- `flex-grow` +- `flex-shrink` +- `order` +- `grid-column`, `grid-column-start`, `grid-column-end` +- `grid-row`, `grid-row-start`, `grid-row-end` +- `animation-iteration-count` +- `tab-size`, `moz-tab-size`, `-webkit-line-clamp` +
Class names and style properties are resolved in the following order: diff --git a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx index 2da3af34..035921d3 100644 --- a/apps/landing/src/app/(detail)/docs/api/grid/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/grid/page.mdx @@ -60,6 +60,24 @@ function App() { If you pass a number without a unit to a style property, it will be automatically scaled by 4. This means 1 equals 4px, 2 equals 8px, and so on. +However, the following properties are exceptions and **are not multiplied by 4**: + +- `opacity` +- `flex` +- `z-index` +- `line-clamp` +- `font-weight` +- `line-height` +- `scale` +- `aspect-ratio` +- `flex-grow` +- `flex-shrink` +- `order` +- `grid-column`, `grid-column-start`, `grid-column-end` +- `grid-row`, `grid-row-start`, `grid-row-end` +- `animation-iteration-count` +- `tab-size`, `moz-tab-size`, `-webkit-line-clamp` +
Class names and style properties are resolved in the following order: diff --git a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx index c42f10cc..9133ae7f 100644 --- a/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/v-stack/page.mdx @@ -66,6 +66,24 @@ function App() { If you pass a number without a unit to a style property, it will be automatically scaled by 4. This means 1 equals 4px, 2 equals 8px, and so on. +However, the following properties are exceptions and **are not multiplied by 4**: + +- `opacity` +- `flex` +- `z-index` +- `line-clamp` +- `font-weight` +- `line-height` +- `scale` +- `aspect-ratio` +- `flex-grow` +- `flex-shrink` +- `order` +- `grid-column`, `grid-column-start`, `grid-column-end` +- `grid-row`, `grid-row-start`, `grid-row-end` +- `animation-iteration-count` +- `tab-size`, `moz-tab-size`, `-webkit-line-clamp` +
Class names and style properties are resolved in the following order: From 37c4dc48e86a27880e183044f9dcb17367c324d4 Mon Sep 17 00:00:00 2001 From: hyu-dev Date: Wed, 8 Oct 2025 19:53:36 +0900 Subject: [PATCH 53/59] Fix landing docs api --- apps/landing/src/app/(detail)/docs/api/box/page.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/landing/src/app/(detail)/docs/api/box/page.mdx b/apps/landing/src/app/(detail)/docs/api/box/page.mdx index 5b685749..748acafb 100644 --- a/apps/landing/src/app/(detail)/docs/api/box/page.mdx +++ b/apps/landing/src/app/(detail)/docs/api/box/page.mdx @@ -26,21 +26,21 @@ The Box component defined above will render like this: ```tsx function App() { - return
+ return
} ``` ```css -.aa { +.a { background: red; } -.ab { +.b { flex: 1; } -.ac { +.c { height: 100px; } -.a-d { +.d { width: 400px; } ``` From ab33af987378183683510874aef933b61afee7bc Mon Sep 17 00:00:00 2001 From: abyss-s Date: Thu, 9 Oct 2025 13:30:48 +0900 Subject: [PATCH 54/59] docs: add Zero Runtime core concept documentation --- .../docs/core-concepts/zero-runtime/page.mdx | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 apps/landing/src/app/(detail)/docs/core-concepts/zero-runtime/page.mdx diff --git a/apps/landing/src/app/(detail)/docs/core-concepts/zero-runtime/page.mdx b/apps/landing/src/app/(detail)/docs/core-concepts/zero-runtime/page.mdx new file mode 100644 index 00000000..c4fe4bfb --- /dev/null +++ b/apps/landing/src/app/(detail)/docs/core-concepts/zero-runtime/page.mdx @@ -0,0 +1,68 @@ +export const metadata = { + title: 'Zero-Runtime', + alternates: { + canonical: '/docs/core-concepts/zero-runtime', + }, +} + +# Zero Runtime + +Devup UI is a CSS-in-JS preprocessor that requires no runtime. By moving style computation to build time, Devup UI avoids browser runtime overhead. We are building a preprocessor that accounts for all syntactic cases. + +## End-to-end Process + +### 1. **Source Code Input** + +Your application code written in JSX/TSX/JS/TS is provided as input. + +For example, consider the following ` +``` + +### 2. **AST Transformation (Rust + oxc)** + +We use **oxc** (a Rust-based JavaScript tooling suite) to convert code into an AST (Abstract Syntax Tree). + +- **Lexer**: breaks source code into tokens +- **Parser**: structures tokens into an AST + +This step is required to enable optimizations performed later by the **Style Storage**. + +### **3. Style Caching Logic (Core logic)** + +Core logic written in Rust + WebAssembly optimizes styles by consulting the Style Storage: **Style Storage Check** + +- **Existing style?** → Reuse the existing class name (cached result) +- **New style?** → Generate a new class and register it + +### **4. Code Generation Paths** + +Based on the caching results in step 3, two parallel outputs are produced. + +- **New AST** + - Generate a new AST in TypeScript + - Inject resolved style class names + +- **Update CSS Virtual File** + - Append newly generated style classes to the CSS virtual file + - Do not regenerate existing styles + +### **5. Final Output** + +The bundler (Vite, Rsbuild, Next.js, Webpack) emits optimized code. + +```html + +``` + +Inline style props are compiled into **atomic CSS classes**, achieving zero runtime. From e59f3d8e6c1e5586a5d49506bd7bb3a7a601510c Mon Sep 17 00:00:00 2001 From: abyss-s Date: Thu, 9 Oct 2025 13:31:03 +0900 Subject: [PATCH 55/59] docs: add No Dependencies core concept documentation --- .../core-concepts/no-dependencies/page.mdx | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 apps/landing/src/app/(detail)/docs/core-concepts/no-dependencies/page.mdx diff --git a/apps/landing/src/app/(detail)/docs/core-concepts/no-dependencies/page.mdx b/apps/landing/src/app/(detail)/docs/core-concepts/no-dependencies/page.mdx new file mode 100644 index 00000000..7e3aea04 --- /dev/null +++ b/apps/landing/src/app/(detail)/docs/core-concepts/no-dependencies/page.mdx @@ -0,0 +1,69 @@ +export const metadata = { + title: "Core-Concepts", + alternates: { + canonical: '/docs/core-concepts/no-dependencies', + } + +} + +# No Dependencies + +Devup UI converts pure React source code without additional UI runtime code. + +This section explains what “No Dependencies” means in practice, why it matters, and how Devup UI achieves it without requiring client-side style engines, extra plugins, or manual pre-generation steps. + +## Motivation + +- Many CSS-in-JS libraries rely on JavaScript at runtime to compute styles, inject `