diff --git a/.eslintrc.js b/.eslintrc.js index 6b690e1..001a91f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,7 +2,6 @@ const { extendConfig } = require("@aet/eslint-rules"); module.exports = extendConfig({ - plugins: ["react", "unicorn"], rules: { "class-methods-use-this": "error", }, diff --git a/package.json b/package.json index ad05c7e..fe6e369 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aet/tailwind", - "version": "1.0.3", + "version": "1.0.7", "license": "MIT", "scripts": { "build": "./scripts/index.ts", @@ -14,17 +14,22 @@ ".": "./dist/index.js", "./package.json": "./package.json", "./classed": "./dist/classed.mjs", + "./ยต": { + "types": "./dist/macro.d.ts" + }, + "./plugin/react-aria-components": "./dist/vendor/react-aria-components.js", + "./plugin/animate": "./dist/vendor/animate.js", "./macro": { "types": "./dist/macro.d.ts" } }, "devDependencies": { - "@aet/eslint-rules": "^1.0.1-beta.10", + "@aet/eslint-rules": "1.0.1-beta.24", "@types/babel__core": "^7.20.5", "@types/bun": "^1.1.6", "@types/dedent": "^0.7.2", "@types/lodash": "^4.17.7", - "@types/node": "^20.14.12", + "@types/node": "^22.2.0", "@types/postcss-safe-parser": "^5.0.4", "@types/react": "^18.3.3", "@types/stylis": "^4.2.6", @@ -38,27 +43,27 @@ "nolyfill": "^1.0.39", "postcss-nested": "^6.2.0", "prettier": "^3.3.3", - "tailwindcss": "^3.4.7", + "tailwindcss": "^3.4.9", "tslib": "^2.6.3", - "tsup": "^8.2.3", + "tsup": "^8.2.4", "typescript": "^5.5.4", - "vite": "^5.3.5", - "vitest": "^2.0.4" + "vite": "^5.4.0", + "vitest": "^2.0.5" }, "peerDependencies": { "tailwindcss": "^3.4.3" }, "dependencies": { - "@babel/core": "^7.24.9", + "@babel/core": "^7.25.2", "@emotion/hash": "^0.9.2", "esbuild": "^0.23.0", "json5": "^2.2.3", "lodash": "^4.17.21", - "postcss": "^8.4.40", + "postcss": "^8.4.41", "postcss-selector-parser": "^6.1.1", "stylis": "^4.3.2", "tiny-invariant": "^1.3.3", - "type-fest": "^4.23.0" + "type-fest": "^4.24.0" }, "prettier": { "arrowParens": "avoid", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 235a0c1..34e224e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: dependencies: '@babel/core': - specifier: ^7.24.9 - version: 7.24.9 + specifier: ^7.25.2 + version: 7.25.2 '@emotion/hash': specifier: ^0.9.2 version: 0.9.2 @@ -27,8 +27,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 postcss-selector-parser: specifier: ^6.1.1 version: 6.1.1 @@ -39,12 +39,12 @@ importers: specifier: ^1.3.3 version: 1.3.3 type-fest: - specifier: ^4.23.0 - version: 4.23.0 + specifier: ^4.24.0 + version: 4.24.0 devDependencies: '@aet/eslint-rules': - specifier: ^1.0.1-beta.10 - version: 1.0.1-beta.10(eslint@8.57.0)(typescript@5.5.4) + specifier: 1.0.1-beta.24 + version: 1.0.1-beta.24(eslint@8.57.0)(typescript@5.5.4) '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -58,8 +58,8 @@ importers: specifier: ^4.17.7 version: 4.17.7 '@types/node': - specifier: ^20.14.12 - version: 20.14.12 + specifier: ^22.2.0 + version: 22.2.0 '@types/postcss-safe-parser': specifier: ^5.0.4 version: 5.0.4 @@ -95,41 +95,38 @@ importers: version: 1.0.39 postcss-nested: specifier: ^6.2.0 - version: 6.2.0(postcss@8.4.40) + version: 6.2.0(postcss@8.4.41) prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 tslib: specifier: ^2.6.3 version: 2.6.3 tsup: - specifier: ^8.2.3 - version: 8.2.3(jiti@1.21.0)(postcss@8.4.40)(typescript@5.5.4) + specifier: ^8.2.4 + version: 8.2.4(jiti@1.21.6)(postcss@8.4.41)(typescript@5.5.4)(yaml@2.5.0) typescript: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.12) + specifier: ^5.4.0 + version: 5.4.0(@types/node@22.2.0) vitest: - specifier: ^2.0.4 - version: 2.0.4(@types/node@20.14.12) + specifier: ^2.0.5 + version: 2.0.5(@types/node@22.2.0) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@aet/eslint-define-config@0.1.0-beta.9': - resolution: {integrity: sha512-50ujDk5mmfS/Is7yJh5U7eX+vFUgIidUG5O6whRh1r0lxjM7lpt3uLXpd8jkXfDxMm/JSU/ptK/99ChrZ45EFA==} + '@aet/eslint-define-config@0.1.0-beta.17': + resolution: {integrity: sha512-gwQUwwmneD+dqbZpEcR9sws0Xbd1zpTSbGUswsFtJS4B7iVqUhE7ovf3NlSw8igo6aKrncMKe9o5969C1p2u5A==} engines: {node: '>=18.0.0', npm: '>=9.0.0'} - '@aet/eslint-rules@1.0.1-beta.10': - resolution: {integrity: sha512-m+DEznz4X2451JXg0aXEQIaq9g406jh4rgn/C6bQdBmjHV4WQa6bFM68i9akwELmTi2zzje3HuxDvcineBOpsA==} + '@aet/eslint-rules@1.0.1-beta.24': + resolution: {integrity: sha512-FB5f5Iqi151FCk/RWrNdjd1jQ+6+/ruGWhjJgGk55lu3slJWjcLgpkD2STF9n3tGdreVUO939QwMZEO977o7+g==} + hasBin: true peerDependencies: eslint: ^8.57.0 typescript: ^5.4.4 @@ -142,32 +139,35 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@0.3.3': + resolution: {integrity: sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==} + '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.0': - resolution: {integrity: sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==} + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.9': - resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} '@babel/generator@7.25.0': resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.24.8': - resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.0': - resolution: {integrity: sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==} + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -176,22 +176,10 @@ packages: resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.7': - resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -208,43 +196,21 @@ packages: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.1': - resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.24.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.25.0': - resolution: {integrity: sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/template@7.24.7': - resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} - engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.0': - resolution: {integrity: sha512-ubALThHQy4GCf6mbb+5ZRNmLLCI7bJ3f8Q6LHBSRlSKSWj5a7dSUzJBLv3VuIhFrFPgjF4IzPF567YG/HSCdZA==} + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.7': - resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.0': - resolution: {integrity: sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==} + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} '@emotion/hash@0.9.2': @@ -542,22 +508,18 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.6.0': - resolution: {integrity: sha512-lqwoJhJODcRO/4CnGAx7Pylvxg5VjPO3IP2rLIAOLJlVOo3FBlYJ7+jj1QI6V8LBjcI9S5J5TPUQOBJRwnAUyg==} + '@eslint-react/ast@1.7.1': + resolution: {integrity: sha512-PlN/GePrgbVH86qkg2DsBaFzij+EgsBDPK1NSdF4DpDL99YxzK6GoudM2Lp4hjvukuIMeTkbNK5O51b6Y5Awog==} - '@eslint-react/core@1.6.0': - resolution: {integrity: sha512-EnTb2EcF5WxesgfHCON1KVyFTuIH5HUS5Rt2vFoLaYkUEJCTVT2s6lVg8ZAkfas02ogVWMj+GxMHgCABW/yHsQ==} + '@eslint-react/core@1.7.1': + resolution: {integrity: sha512-sG5TCQhakRr9fWdtuy336TjKmbyMTeIxNTzgiEAYoqhyRrggz5mYn4Y5I3DkkIBoflBsfcN9o1LT+mNxrEtobg==} - '@eslint-react/eslint-plugin@1.6.0': - resolution: {integrity: sha512-DrWsjEub7RiJBJO3qVpTKtzg+jhS8ouVNlSULgIScyJvV+sE59rO3li7EKfOa6Ox6sRwMhcarx0MQAjsTuxhgw==} + '@eslint-react/eslint-plugin@1.7.1': + resolution: {integrity: sha512-rx/ARr16FoFh9gc7Z7un4WXYD+lgjmcxqrW/fIz8uZiV3W+nhMHB794g4DLBIherI67QB7/vEg0wWpYWDFEMHA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -566,20 +528,20 @@ packages: typescript: optional: true - '@eslint-react/jsx@1.6.0': - resolution: {integrity: sha512-qDrwuEzpXWQPBGkKoVePL+Oy7RDssG4CiNfGqEl723eV7UPkmOCarQPymL9WNoqKL8Fh3uy6fUa8i6yX162XGA==} + '@eslint-react/jsx@1.7.1': + resolution: {integrity: sha512-tb8WCKT4AvI4jF7KC8W1KlssPGYTH21j+G23ctwAiZ+nQGH69msLvsgQhfDxNWXWVMTx29WjSAuTz/a0tYS4Gg==} - '@eslint-react/shared@1.6.0': - resolution: {integrity: sha512-ccEPQVNwVo2TOL0V7RfQyskpOh7JT5yqAwUw8EPAtgP2KDdzarnljRWfSt6UA8ZPBgb5oGiISsNwsgImr51dbA==} + '@eslint-react/shared@1.7.1': + resolution: {integrity: sha512-nX9+X+HvpifD/2lmZAHhgg/0WTe7LZL6COLYDd5rcWgBHYBqZjD2D8+nHmrKi9KUWw009sJnV+vLynJRMCRGHw==} - '@eslint-react/tools@1.6.0': - resolution: {integrity: sha512-PxKMpbfm3piXyD6mHSUlATWv+KiTUx1OILVXucbFIHeqefIQJrFJckc8ZIjEAYgbPrzIGH+nfL0wNG20HQO9kA==} + '@eslint-react/tools@1.7.1': + resolution: {integrity: sha512-CM6CWZkeGZ4ALxouhKt2RBKvwBz3QRQmXqGSycdQPX5oKS1UE5ohDOJg1Mzb+F8wcsdp2XTD8a4cSqqpS9903A==} - '@eslint-react/types@1.6.0': - resolution: {integrity: sha512-O7t3U78KBLvaiLXPr1wlpxb6KLOo4S/5nH0GbJU6c+dESh681xxTU0CAr5HnjRp5x+P3SEGYVtl8QuLQj/D9Uw==} + '@eslint-react/types@1.7.1': + resolution: {integrity: sha512-deJqIdAyBQEBjVDmi6YA2xBH7mDK0lDKIc89txHStGn4eI1o8Bji1j6P0+uz1zLU7m6PYiQGuh17ycmg1evKVw==} - '@eslint-react/var@1.6.0': - resolution: {integrity: sha512-fZJ/L8PKbONeZSCh2t6RcC2VSv1+eG4RnhJ0P0d1ftxl0ylclQeUY7tWikhRPVkJUsj0tKDVg9qBxZX+4kB5iQ==} + '@eslint-react/var@1.7.1': + resolution: {integrity: sha512-KmRGuHyevvMPR2x8VxJwOi3ZlHe0jIo+AwvOIzNXDlvtmV7kp+c7PltSolxJZwymSAybCydFXphc1eRRFY00fQ==} '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} @@ -592,6 +554,7 @@ packages: '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -599,6 +562,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -616,12 +580,16 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jsdevtools/ez-spawn@3.0.4': + resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} + engines: {node: '>=10'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -646,160 +614,90 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@rollup/rollup-android-arm-eabi@4.13.2': - resolution: {integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==} + '@rollup/rollup-android-arm-eabi@4.20.0': + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.19.1': - resolution: {integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.13.2': - resolution: {integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==} + '@rollup/rollup-android-arm64@4.20.0': + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.19.1': - resolution: {integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.13.2': - resolution: {integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==} + '@rollup/rollup-darwin-arm64@4.20.0': + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.19.1': - resolution: {integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.13.2': - resolution: {integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==} + '@rollup/rollup-darwin-x64@4.20.0': + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.19.1': - resolution: {integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.13.2': - resolution: {integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.19.1': - resolution: {integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==} + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.19.1': - resolution: {integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.13.2': - resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} + '@rollup/rollup-linux-arm64-gnu@4.20.0': + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.19.1': - resolution: {integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==} + '@rollup/rollup-linux-arm64-musl@4.20.0': + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.13.2': - resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.19.1': - resolution: {integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.13.2': - resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} - cpu: [ppc64le] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': - resolution: {integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.13.2': - resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.19.1': - resolution: {integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.13.2': - resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} + '@rollup/rollup-linux-s390x-gnu@4.20.0': + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.19.1': - resolution: {integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.13.2': - resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} + '@rollup/rollup-linux-x64-gnu@4.20.0': + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.19.1': - resolution: {integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==} + '@rollup/rollup-linux-x64-musl@4.20.0': + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.13.2': - resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.19.1': - resolution: {integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.13.2': - resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} + '@rollup/rollup-win32-arm64-msvc@4.20.0': + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.19.1': - resolution: {integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.13.2': - resolution: {integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==} + '@rollup/rollup-win32-ia32-msvc@4.20.0': + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.19.1': - resolution: {integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.13.2': - resolution: {integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==} + '@rollup/rollup-win32-x64-msvc@4.20.0': + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.19.1': - resolution: {integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==} - cpu: [x64] - os: [win32] + '@tanstack/eslint-plugin-query@5.51.15': + resolution: {integrity: sha512-btX03EOGvNxTGJDqHMmQwfSt/hp93Z8I4FNBijoyEdDnjGi4jVjpGP7nEi9LaMnHFsylucptVGb6GQngWs07bA==} + peerDependencies: + eslint: ^8 || ^9 '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -810,8 +708,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.5': - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} '@types/bun@1.1.6': resolution: {integrity: sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==} @@ -819,8 +717,8 @@ packages: '@types/dedent@0.7.2': resolution: {integrity: sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw==} - '@types/eslint@8.56.11': - resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==} + '@types/eslint@9.6.0': + resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -834,8 +732,8 @@ packages: '@types/node@20.12.14': resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==} - '@types/node@20.14.12': - resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==} + '@types/node@22.2.0': + resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -852,22 +750,44 @@ packages: '@types/stylis@4.2.6': resolution: {integrity: sha512-4nebF2ZJGzQk0ka0O6+FZUWceyFv4vWq/0dXBMmrSeAwzOuOd/GxE5Pa64d/ndeNLG73dXoBsRzvtsVsYUv6Uw==} - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - '@typescript-eslint/eslint-plugin@7.17.0': - resolution: {integrity: sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.0.1': + resolution: {integrity: sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.17.0': - resolution: {integrity: sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==} + '@typescript-eslint/parser@8.0.1': + resolution: {integrity: sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@8.0.0-alpha.30': + resolution: {integrity: sha512-FGW/iPWGyPFamAVZ60oCAthMqQrqafUGebF8UKuq/ha+e9SVG6YhJoRzurlQXOVf8dHfOhJ0ADMXyFnMc53clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.0.1': + resolution: {integrity: sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -876,26 +796,29 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.17.0': - resolution: {integrity: sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.17.0': - resolution: {integrity: sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.0.1': + resolution: {integrity: sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.17.0': - resolution: {integrity: sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.17.0': - resolution: {integrity: sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==} + '@typescript-eslint/types@8.0.0-alpha.30': + resolution: {integrity: sha512-4WzLlw27SO9pK9UFj/Hu7WGo8WveT0SEiIpFVsV2WwtQmLps6kouwtVCB8GJPZKJyurhZhcqCoQVQFmpv441Vg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.0.1': + resolution: {integrity: sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -903,44 +826,82 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.17.0': - resolution: {integrity: sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==} + '@typescript-eslint/typescript-estree@8.0.0-alpha.30': + resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.0.1': + resolution: {integrity: sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.17.0': - resolution: {integrity: sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==} + '@typescript-eslint/utils@8.0.0-alpha.30': + resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/utils@8.0.1': + resolution: {integrity: sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.0.0-alpha.30': + resolution: {integrity: sha512-XZuNurZxBqmr6ZIRIwWFq7j5RZd6ZlkId/HZEWyfciK+CWoyOxSF9Pv2VXH9Rlu2ZG2PfbhLz2Veszl4Pfn7yA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.0.1': + resolution: {integrity: sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitest/expect@2.0.4': - resolution: {integrity: sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/pretty-format@2.0.4': - resolution: {integrity: sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==} + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/runner@2.0.4': - resolution: {integrity: sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==} + '@vitest/runner@2.0.5': + resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} - '@vitest/snapshot@2.0.4': - resolution: {integrity: sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==} + '@vitest/snapshot@2.0.5': + resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} - '@vitest/spy@2.0.4': - resolution: {integrity: sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/utils@2.0.4': - resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -995,8 +956,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - axe-core@4.9.1: - resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} axobject-query@4.1.0: @@ -1016,12 +977,12 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.2: - resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1042,6 +1003,9 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1050,8 +1014,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001643: - resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} + caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} @@ -1127,8 +1091,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + core-js-compat@3.38.0: + resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1157,17 +1121,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1211,8 +1166,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.2: - resolution: {integrity: sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==} + electron-to-chromium@1.5.6: + resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==} emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -1308,14 +1263,14 @@ packages: peerDependencies: eslint: ^8.56.0 || ^9.0.0-0 - eslint-plugin-jsdoc@48.8.3: - resolution: {integrity: sha512-AtIvwwW9D17MRkM0Z0y3/xZYaa9mdAvJrkY6fU/HNUwGbmMtHVvK4qRM9CDixGVtfNrQitb8c6zQtdh6cTOvLg==} + eslint-plugin-jsdoc@50.0.0: + resolution: {integrity: sha512-czyJ5F7/qY2LIhUD5Bl6q1CCZ8mjvfEA9HQN5nvIp/Pb8VLIlUNd+DMZdA2OKN74QQMS3pobC06hFqAOJyOv5Q==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-debug@1.6.0: - resolution: {integrity: sha512-xJEJlhOjyYSsC9lxJHJ+Z3Pew30I8mPU+tw/Pg99JGlsNj8twNOfQ/AAD50eFC9vumDah4ck0VH63oG8rf8mPw==} + eslint-plugin-react-debug@1.7.1: + resolution: {integrity: sha512-Kln8T1RtEnVGz++kJyyUBrzhjxCc8LC4c3733cgLSv+kIFOzpt9Ivl/rlYr8HL+iP4V2tGJSyXlYLo5+M+Gosg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1324,8 +1279,8 @@ packages: typescript: optional: true - eslint-plugin-react-dom@1.6.0: - resolution: {integrity: sha512-wcnoaBF/u3mvG15qpogFTBDQ74H5ZavK5aw0ClLfd+wgxXRigOn7/8tODQ5vLTLZqD/6OM4BcfBUK+qz09u/dA==} + eslint-plugin-react-dom@1.7.1: + resolution: {integrity: sha512-aIbFJSmZnuKO719JxT9KhzkLZ3kZ2kiGdqJy3QsyVokcuW9wcdVf/bG27U6bqadoaohepirAHTqmyvXRuLRtrQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1334,8 +1289,8 @@ packages: typescript: optional: true - eslint-plugin-react-hooks-extra@1.6.0: - resolution: {integrity: sha512-XCqj938kMjUgw1L4A8oUl2dsw5buWtqIZgIofrjA6lhUjIknhGf7Xkf/+ec7La0NVTxU92T2JD+SMas1Pq3x+w==} + eslint-plugin-react-hooks-extra@1.7.1: + resolution: {integrity: sha512-qVkROoXXGSjZH6dQAnRnKzKBoXpqA49h7GTg3pDZvwDA9CxnIVbJeRwEZcxBERhvgYWWW+HaKnkAC/J6cwIu0g==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1344,8 +1299,8 @@ packages: typescript: optional: true - eslint-plugin-react-naming-convention@1.6.0: - resolution: {integrity: sha512-/kl/i0gwW4kYtxLp+u+2eCCJW5o91ror5mJkmBHyvbuHLp20y6NSq/I/EGihapnG4tXb+L2koMKU0irvtgxEgw==} + eslint-plugin-react-naming-convention@1.7.1: + resolution: {integrity: sha512-W1F3mss6on91vm7awCO3zxZOQcnzTAty9WdfG1ngEy5yFLWwJ1IazcypK0Wz0YspPcWjvk6F8X9xOsZB4l8kSg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1359,8 +1314,8 @@ packages: peerDependencies: eslint: '>=7' - eslint-plugin-react-x@1.6.0: - resolution: {integrity: sha512-tyDoJfB0Kg3arEcN3q01LDQjGonYXW7awCIRwDW67u3eKETa6LxYtNNUo2RmWpsKWSP23UHp6AOaPdJhbh2E2Q==} + eslint-plugin-react-x@1.7.1: + resolution: {integrity: sha512-kIQ2dVt5JXJoelskgFpsqf0qUvk0o+FWX5qnFXW8msR01QQ+ugMbAxIOwYHDhbeAkrRngQsJiaRyPAD7q2t6QQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1383,11 +1338,19 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + 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} @@ -1397,10 +1360,6 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -1448,8 +1407,8 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} find-up@4.1.0: @@ -1467,8 +1426,8 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} fs.realpath@1.0.0: @@ -1509,9 +1468,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true glob@7.2.3: @@ -1526,8 +1484,8 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globals@15.8.0: - resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==} + globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} engines: {node: '>=18'} globby@11.1.0: @@ -1580,6 +1538,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1635,12 +1594,11 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true joycon@3.1.1: @@ -1692,8 +1650,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} @@ -1707,8 +1665,8 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} lines-and-columns@1.2.4: @@ -1738,15 +1696,14 @@ packages: loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -1755,8 +1712,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} mimic-fn@2.1.0: @@ -1771,6 +1728,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1778,13 +1739,16 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -1796,8 +1760,8 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} nolyfill@1.0.39: resolution: {integrity: sha512-1umctiVAqW9fFUDI0LT1ThVHFirQQzPow/A5K06u7bjEp6DzRcgEPCUUnF6t9pHNXngmmhn4KxkMs1IUxugaUw==} @@ -1838,8 +1802,8 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} p-limit@2.3.0: @@ -1862,6 +1826,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1902,9 +1869,9 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -1995,8 +1962,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2038,6 +2005,9 @@ packages: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true + remeda@2.10.1: + resolution: {integrity: sha512-LSMUFASk6lu3E+lr0ErNMeTpUPdTPSR0wBQbOC13CSnh1f9y76fzF7T1uRKcl1lR4rPx5QO06sRvF9cD5oQBPg==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2057,25 +2027,17 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.13.2: - resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.19.1: - resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==} + rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2144,8 +2106,8 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} @@ -2156,6 +2118,10 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + string-ts@2.2.0: resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} @@ -2215,8 +2181,8 @@ packages: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} - tailwindcss@3.4.7: - resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + tailwindcss@3.4.9: + resolution: {integrity: sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==} engines: {node: '>=14.0.0'} hasBin: true @@ -2237,8 +2203,8 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinypool@1.0.0: resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} @@ -2273,8 +2239,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-declaration-location@1.0.3: - resolution: {integrity: sha512-ASvSx6oCzn38ZmUqNe6Otqa5SApeJxmOkDFccV2ZCvzPApT8o6RjpMCPcWHog32SBrDr7Ubs5wy4Nbmj5TXelA==} + ts-declaration-location@1.0.4: + resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} peerDependencies: typescript: '>=4.0.0' @@ -2287,8 +2253,8 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsup@8.2.3: - resolution: {integrity: sha512-6YNT44oUfXRbZuSMNmN36GzwPPIlD2wBccY7looM2fkTcxkf2NEmwr3OZuDZoySklnrIG4hoEtzy8yUXYOqNcg==} + tsup@8.2.4: + resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -2310,6 +2276,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -2322,8 +2292,8 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - type-fest@4.23.0: - resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} + type-fest@4.24.0: + resolution: {integrity: sha512-spAaHzc6qre0TlZQQ2aA/nGMe+2Z/wyGk5Z+Ru2VUfdNwT6kWO6TjevOlpebsATEG1EIQ2sOiDszud3lO5mt/Q==} engines: {node: '>=16'} typescript@5.5.4: @@ -2334,6 +2304,9 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.13.0: + resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true @@ -2349,13 +2322,13 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vite-node@2.0.4: - resolution: {integrity: sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==} + vite-node@2.0.5: + resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} + vite@5.4.0: + resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2363,6 +2336,7 @@ packages: less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -2375,6 +2349,8 @@ packages: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: @@ -2382,15 +2358,15 @@ packages: terser: optional: true - vitest@2.0.4: - resolution: {integrity: sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==} + vitest@2.0.5: + resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.0.4 - '@vitest/ui': 2.0.4 + '@vitest/browser': 2.0.5 + '@vitest/ui': 2.0.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -2423,6 +2399,10 @@ packages: engines: {node: '>=8'} hasBin: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -2441,8 +2421,8 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} engines: {node: '>= 14'} hasBin: true @@ -2460,36 +2440,36 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} + '@aet/eslint-define-config@0.1.0-beta.17': {} - '@aet/eslint-define-config@0.1.0-beta.9': {} - - '@aet/eslint-rules@1.0.1-beta.10(eslint@8.57.0)(typescript@5.5.4)': + '@aet/eslint-rules@1.0.1-beta.24(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@aet/eslint-define-config': 0.1.0-beta.9 + '@aet/eslint-define-config': 0.1.0-beta.17 + '@antfu/install-pkg': 0.3.3 '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-react/eslint-plugin': 1.6.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/eslint-plugin': 1.7.1(eslint@8.57.0)(typescript@5.5.4) '@nolyfill/is-core-module': 1.0.39 - '@types/eslint': 8.56.11 - '@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@tanstack/eslint-plugin-query': 5.51.15(eslint@8.57.0)(typescript@5.5.4) + '@types/eslint': 9.6.0 + '@typescript-eslint/eslint-plugin': 8.0.1(@typescript-eslint/parser@8.0.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@8.57.0)(typescript@5.5.4) aria-query: 5.3.0 - axe-core: 4.9.1 + axe-core: 4.10.0 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 - debug: 4.3.5 + debug: 4.3.6 doctrine: 3.0.0 emoji-regex: 10.3.0 enhanced-resolve: 5.17.1 eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@8.0.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) eslint-plugin-es-x: 8.0.0(eslint@8.57.0) eslint-plugin-import-x: 3.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-jsdoc: 48.8.3(eslint@8.57.0) + eslint-plugin-jsdoc: 50.0.0(eslint@8.57.0) eslint-plugin-react-refresh: 0.4.9(eslint@8.57.0) eslint-plugin-unicorn: 55.0.0(eslint@8.57.0) esprima: 4.0.1 @@ -2502,7 +2482,7 @@ snapshots: is-glob: 4.0.3 language-tags: 1.0.9 lodash: 4.17.21 - resolve: 2.0.0-next.5 + minimatch: 10.0.1 semver: 7.6.3 typescript: 5.5.4 transitivePeerDependencies: @@ -2517,27 +2497,31 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/install-pkg@0.3.3': + dependencies: + '@jsdevtools/ez-spawn': 3.0.4 + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.0': {} + '@babel/compat-data@7.25.2': {} - '@babel/core@7.24.9': + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-module-transforms': 7.25.0(@babel/core@7.24.9) + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.0 - '@babel/template': 7.24.7 - '@babel/traverse': 7.25.0 - '@babel/types': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.3.6 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -2546,51 +2530,45 @@ snapshots: '@babel/generator@7.25.0': dependencies: - '@babel/types': 7.25.0 + '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-compilation-targets@7.24.8': + '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.0 + '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.2 + browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.0 - '@babel/types': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.0(@babel/core@7.24.9)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.0 + '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.0 - '@babel/types': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.24.1': {} - - '@babel/helper-string-parser@7.24.7': {} - '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.24.8': {} @@ -2598,7 +2576,7 @@ snapshots: '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.0 + '@babel/types': 7.25.2 '@babel/highlight@7.24.7': dependencies: @@ -2607,55 +2585,29 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.24.1': + '@babel/parser@7.25.3': dependencies: - '@babel/types': 7.24.0 - - '@babel/parser@7.24.4': - dependencies: - '@babel/types': 7.24.7 - - '@babel/parser@7.25.0': - dependencies: - '@babel/types': 7.25.0 - - '@babel/template@7.24.7': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.0 - '@babel/types': 7.25.0 + '@babel/types': 7.25.2 '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.0 - '@babel/types': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 - '@babel/traverse@7.25.0': + '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 - '@babel/parser': 7.25.0 + '@babel/parser': 7.25.3 '@babel/template': 7.25.0 - '@babel/types': 7.25.0 - debug: 4.3.5 + '@babel/types': 7.25.2 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@babel/types@7.24.7': - dependencies: - '@babel/helper-string-parser': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@babel/types@7.25.0': + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -2815,18 +2767,16 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} - '@eslint-community/regexpp@4.11.0': {} - '@eslint-react/ast@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/ast@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 string-ts: 2.2.0 ts-pattern: 5.2.0 transitivePeerDependencies: @@ -2834,18 +2784,19 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/core@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/jsx': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/var': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/jsx': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/var': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 short-unique-id: 5.2.0 ts-pattern: 5.2.0 transitivePeerDependencies: @@ -2853,70 +2804,74 @@ snapshots: - supports-color - typescript - '@eslint-react/eslint-plugin@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/eslint-plugin@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - eslint-plugin-react-debug: 1.6.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-react-dom: 1.6.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-react-hooks-extra: 1.6.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-react-naming-convention: 1.6.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-react-x: 1.6.0(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-react-debug: 1.7.1(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-react-dom: 1.7.1(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-react-hooks-extra: 1.7.1(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-react-naming-convention: 1.7.1(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-react-x: 1.7.1(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/jsx@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/var': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/var': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 ts-pattern: 5.2.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/shared@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) picomatch: 4.0.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/tools@1.6.0': {} + '@eslint-react/tools@1.7.1': {} - '@eslint-react/types@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/types@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-react/tools': 1.6.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.6.0(eslint@8.57.0)(typescript@5.5.4)': + '@eslint-react/var@1.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 transitivePeerDependencies: - eslint - supports-color @@ -2925,7 +2880,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.6 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -2941,7 +2896,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2962,19 +2917,26 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsdevtools/ez-spawn@3.0.4': + dependencies: + call-me-maybe: 1.0.2 + cross-spawn: 7.0.3 + string-argv: 0.3.2 + type-detect: 4.1.0 '@nodelib/fs.scandir@2.1.5': dependencies: @@ -2995,119 +2957,82 @@ snapshots: '@pkgr/core@0.1.1': {} - '@rollup/rollup-android-arm-eabi@4.13.2': + '@rollup/rollup-android-arm-eabi@4.20.0': optional: true - '@rollup/rollup-android-arm-eabi@4.19.1': + '@rollup/rollup-android-arm64@4.20.0': optional: true - '@rollup/rollup-android-arm64@4.13.2': + '@rollup/rollup-darwin-arm64@4.20.0': optional: true - '@rollup/rollup-android-arm64@4.19.1': + '@rollup/rollup-darwin-x64@4.20.0': optional: true - '@rollup/rollup-darwin-arm64@4.13.2': + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': optional: true - '@rollup/rollup-darwin-arm64@4.19.1': + '@rollup/rollup-linux-arm-musleabihf@4.20.0': optional: true - '@rollup/rollup-darwin-x64@4.13.2': + '@rollup/rollup-linux-arm64-gnu@4.20.0': optional: true - '@rollup/rollup-darwin-x64@4.19.1': + '@rollup/rollup-linux-arm64-musl@4.20.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.13.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + '@rollup/rollup-linux-riscv64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.19.1': + '@rollup/rollup-linux-s390x-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.13.2': + '@rollup/rollup-linux-x64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.19.1': + '@rollup/rollup-linux-x64-musl@4.20.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.13.2': + '@rollup/rollup-win32-arm64-msvc@4.20.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.19.1': + '@rollup/rollup-win32-ia32-msvc@4.20.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.13.2': + '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.13.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.19.1': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.13.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.19.1': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.13.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.19.1': - optional: true - - '@rollup/rollup-linux-x64-musl@4.13.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.19.1': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.13.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.19.1': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.13.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.19.1': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.13.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.19.1': - optional: true + '@tanstack/eslint-plugin-query@5.51.15(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@8.57.0)(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.1 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.2 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 - '@types/babel__traverse@7.20.5': + '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.2 '@types/bun@1.1.6': dependencies: @@ -3115,7 +3040,7 @@ snapshots: '@types/dedent@0.7.2': {} - '@types/eslint@8.56.11': + '@types/eslint@9.6.0': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -3130,15 +3055,15 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.14.12': + '@types/node@22.2.0': dependencies: - undici-types: 5.26.5 + undici-types: 6.13.0 '@types/normalize-package-data@2.4.4': {} '@types/postcss-safe-parser@5.0.4': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 '@types/prop-types@15.7.12': {} @@ -3149,18 +3074,18 @@ snapshots: '@types/stylis@4.2.6': {} - '@types/ws@8.5.10': + '@types/ws@8.5.12': dependencies: - '@types/node': 20.14.12 + '@types/node': 22.2.0 - '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.0.1(@typescript-eslint/parser@8.0.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.17.0 + '@typescript-eslint/parser': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.0.1 + '@typescript-eslint/type-utils': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.0.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -3171,29 +3096,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.0.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.17.0 - debug: 4.3.5 + '@typescript-eslint/scope-manager': 8.0.1 + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.0.1 + debug: 4.3.6 eslint: 8.57.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.17.0': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/visitor-keys': 7.17.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@7.17.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/scope-manager@8.0.0-alpha.30': dependencies: - '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.5 + '@typescript-eslint/types': 8.0.0-alpha.30 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 + + '@typescript-eslint/scope-manager@8.0.1': + dependencies: + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/visitor-keys': 8.0.1 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -3201,13 +3136,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.17.0': {} - - '@typescript-eslint/typescript-estree@7.17.0(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.0.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/visitor-keys': 7.17.0 - debug: 4.3.5 + '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/types@8.0.0-alpha.30': {} + + '@typescript-eslint/types@8.0.1': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -3218,62 +3169,124 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.17.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 8.0.0-alpha.30 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.0.1(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/visitor-keys': 8.0.1 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.17.0': + '@typescript-eslint/utils@8.0.0-alpha.30(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.17.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.0.0-alpha.30 + '@typescript-eslint/types': 8.0.0-alpha.30 + '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.0.1(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.0.1 + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.0.0-alpha.30': + dependencies: + '@typescript-eslint/types': 8.0.0-alpha.30 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.0.1': + dependencies: + '@typescript-eslint/types': 8.0.1 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@vitest/expect@2.0.4': + '@vitest/expect@2.0.5': dependencies: - '@vitest/spy': 2.0.4 - '@vitest/utils': 2.0.4 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.4': + '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.0.4': + '@vitest/runner@2.0.5': dependencies: - '@vitest/utils': 2.0.4 + '@vitest/utils': 2.0.5 pathe: 1.1.2 - '@vitest/snapshot@2.0.4': + '@vitest/snapshot@2.0.5': dependencies: - '@vitest/pretty-format': 2.0.4 - magic-string: 0.30.10 + '@vitest/pretty-format': 2.0.5 + magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.0.4': + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.0 - '@vitest/utils@2.0.4': + '@vitest/utils@2.0.5': dependencies: - '@vitest/pretty-format': 2.0.4 + '@vitest/pretty-format': 2.0.5 estree-walker: 3.0.3 loupe: 3.1.1 tinyrainbow: 1.2.0 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 - acorn@8.11.3: {} + acorn@8.12.1: {} ajv@6.12.6: dependencies: @@ -3317,7 +3330,7 @@ snapshots: assertion-error@2.0.1: {} - axe-core@4.9.1: {} + axe-core@4.10.0: {} axobject-query@4.1.0: {} @@ -3334,23 +3347,23 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: + braces@3.0.3: dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 - browserslist@4.23.2: + browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001643 - electron-to-chromium: 1.5.2 - node-releases: 2.0.14 - update-browserslist-db: 1.1.0(browserslist@4.23.2) + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.6 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) builtin-modules@3.3.0: {} bun-types@1.1.17: dependencies: '@types/node': 20.12.14 - '@types/ws': 8.5.10 + '@types/ws': 8.5.12 bundle-require@5.0.0(esbuild@0.23.0): dependencies: @@ -3359,11 +3372,13 @@ snapshots: cac@6.7.14: {} + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001643: {} + caniuse-lite@1.0.30001651: {} chai@5.1.1: dependencies: @@ -3389,7 +3404,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -3445,9 +3460,9 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.37.1: + core-js-compat@3.38.0: dependencies: - browserslist: 4.23.2 + browserslist: 4.23.3 cross-spawn@7.0.3: dependencies: @@ -3465,13 +3480,9 @@ snapshots: debug@3.2.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.3.5: + debug@4.3.6: dependencies: ms: 2.1.2 @@ -3497,7 +3508,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.2: {} + electron-to-chromium@1.5.6: {} emoji-regex@10.3.0: {} @@ -3518,7 +3529,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.23.0): dependencies: - debug: 4.3.5 + debug: 4.3.6 esbuild: 0.23.0 transitivePeerDependencies: - supports-color @@ -3599,11 +3610,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@8.0.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.1(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -3618,8 +3629,8 @@ snapshots: eslint-plugin-import-x@3.1.0(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.5 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6 doctrine: 3.0.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -3633,14 +3644,15 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@48.8.3(eslint@8.57.0): + eslint-plugin-jsdoc@50.0.0(eslint@8.57.0): dependencies: '@es-joy/jsdoccomment': 0.46.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.5 + debug: 4.3.6 escape-string-regexp: 4.0.0 eslint: 8.57.0 + espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 semver: 7.6.3 @@ -3649,75 +3661,79 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-debug@1.6.0(eslint@8.57.0)(typescript@5.5.4): + eslint-plugin-react-debug@1.7.1(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/core': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/jsx': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/core': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/jsx': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 + remeda: 2.10.1 string-ts: 2.2.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.6.0(eslint@8.57.0)(typescript@5.5.4): + eslint-plugin-react-dom@1.7.1(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/core': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/jsx': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/var': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/core': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/jsx': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/var': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 + remeda: 2.10.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.6.0(eslint@8.57.0)(typescript@5.5.4): + eslint-plugin-react-hooks-extra@1.7.1(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/core': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/jsx': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/var': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/core': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/jsx': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/var': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 + remeda: 2.10.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - eslint-plugin-react-naming-convention@1.6.0(eslint@8.57.0)(typescript@5.5.4): + eslint-plugin-react-naming-convention@1.7.1(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/core': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/jsx': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/core': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/jsx': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 + remeda: 2.10.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -3727,21 +3743,22 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-react-x@1.6.0(eslint@8.57.0)(typescript@5.5.4): + eslint-plugin-react-x@1.7.1(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@eslint-react/ast': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/core': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/jsx': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/shared': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/tools': 1.6.0 - '@eslint-react/types': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@eslint-react/var': 1.6.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/ast': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/core': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/jsx': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/shared': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/tools': 1.7.1 + '@eslint-react/types': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@eslint-react/var': 1.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 is-immutable-type: 4.0.0(eslint@8.57.0)(typescript@5.5.4) + remeda: 2.10.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -3753,10 +3770,10 @@ snapshots: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.37.1 + core-js-compat: 3.38.0 eslint: 8.57.0 esquery: 1.6.0 - globals: 15.8.0 + globals: 15.9.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 @@ -3774,10 +3791,12 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.0.0: {} + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -3787,13 +3806,13 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.6 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -3811,24 +3830,26 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -3877,7 +3898,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} @@ -3891,7 +3912,7 @@ snapshots: dependencies: flat-cache: 3.2.0 - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -3913,7 +3934,7 @@ snapshots: flatted@3.3.1: {} - foreground-child@3.1.1: + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -3945,13 +3966,14 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.3.12: + glob@10.4.5: dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 + foreground-child: 3.3.0 + jackspeak: 3.4.3 minimatch: 9.0.5 - minipass: 7.0.4 - path-scurry: 1.10.2 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 glob@7.2.3: dependencies: @@ -3968,7 +3990,7 @@ snapshots: dependencies: type-fest: 0.20.2 - globals@15.8.0: {} + globals@15.9.0: {} globby@11.1.0: dependencies: @@ -4037,10 +4059,10 @@ snapshots: is-immutable-type@4.0.0(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) - ts-declaration-location: 1.0.3(typescript@5.5.4) + ts-declaration-location: 1.0.4(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -4055,13 +4077,13 @@ snapshots: isexe@2.0.0: {} - jackspeak@2.3.6: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@1.21.0: {} + jiti@1.21.6: {} joycon@3.1.1: {} @@ -4093,11 +4115,11 @@ snapshots: dependencies: json-buffer: 3.0.1 - language-subtag-registry@0.3.22: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 levn@0.4.1: dependencies: @@ -4106,7 +4128,7 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.1: {} + lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -4130,23 +4152,23 @@ snapshots: dependencies: get-func-name: 2.0.2 - lru-cache@10.2.0: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - magic-string@0.30.10: + magic-string@0.30.11: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 merge-stream@2.0.0: {} merge2@1.4.1: {} - micromatch@4.0.5: + micromatch@4.0.7: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mimic-fn@2.1.0: {} @@ -4155,6 +4177,10 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -4163,10 +4189,12 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minipass@7.0.4: {} + minipass@7.1.2: {} ms@2.1.2: {} + ms@2.1.3: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -4177,7 +4205,7 @@ snapshots: natural-compare@1.4.0: {} - node-releases@2.0.14: {} + node-releases@2.0.18: {} nolyfill@1.0.39: {} @@ -4214,14 +4242,14 @@ snapshots: dependencies: mimic-fn: 4.0.0 - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 p-limit@2.3.0: dependencies: @@ -4241,6 +4269,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -4275,10 +4305,10 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.2: + path-scurry@1.11.1: dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.4.3 + minipass: 7.1.2 path-type@4.0.0: {} @@ -4298,35 +4328,36 @@ snapshots: pluralize@8.0.0: {} - postcss-import@15.1.0(postcss@8.4.40): + postcss-import@15.1.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.40): + postcss-js@4.0.1(postcss@8.4.41): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.40 + postcss: 8.4.41 - postcss-load-config@4.0.2(postcss@8.4.40): + postcss-load-config@4.0.2(postcss@8.4.41): dependencies: - lilconfig: 3.1.1 - yaml: 2.4.1 + lilconfig: 3.1.2 + yaml: 2.5.0 optionalDependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-load-config@6.0.1(jiti@1.21.0)(postcss@8.4.40): + postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.41)(yaml@2.5.0): dependencies: - lilconfig: 3.1.1 + lilconfig: 3.1.2 optionalDependencies: - jiti: 1.21.0 - postcss: 8.4.40 + jiti: 1.21.6 + postcss: 8.4.41 + yaml: 2.5.0 - postcss-nested@6.2.0(postcss@8.4.40): + postcss-nested@6.2.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.1 postcss-selector-parser@6.1.1: @@ -4336,7 +4367,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.40: + postcss@8.4.41: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -4377,6 +4408,10 @@ snapshots: dependencies: jsesc: 0.5.0 + remeda@2.10.1: + dependencies: + type-fest: 4.24.0 + require-directory@2.1.1: {} resolve-from@4.0.0: {} @@ -4391,59 +4426,32 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: - dependencies: - is-core-module: '@nolyfill/is-core-module@1.0.39' - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - reusify@1.0.4: {} rimraf@3.0.2: dependencies: glob: 7.2.3 - rollup@4.13.2: + rollup@4.20.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.2 - '@rollup/rollup-android-arm64': 4.13.2 - '@rollup/rollup-darwin-arm64': 4.13.2 - '@rollup/rollup-darwin-x64': 4.13.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 - '@rollup/rollup-linux-arm64-gnu': 4.13.2 - '@rollup/rollup-linux-arm64-musl': 4.13.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 - '@rollup/rollup-linux-riscv64-gnu': 4.13.2 - '@rollup/rollup-linux-s390x-gnu': 4.13.2 - '@rollup/rollup-linux-x64-gnu': 4.13.2 - '@rollup/rollup-linux-x64-musl': 4.13.2 - '@rollup/rollup-win32-arm64-msvc': 4.13.2 - '@rollup/rollup-win32-ia32-msvc': 4.13.2 - '@rollup/rollup-win32-x64-msvc': 4.13.2 - fsevents: 2.3.3 - - rollup@4.19.1: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.19.1 - '@rollup/rollup-android-arm64': 4.19.1 - '@rollup/rollup-darwin-arm64': 4.19.1 - '@rollup/rollup-darwin-x64': 4.19.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 - '@rollup/rollup-linux-arm-musleabihf': 4.19.1 - '@rollup/rollup-linux-arm64-gnu': 4.19.1 - '@rollup/rollup-linux-arm64-musl': 4.19.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 - '@rollup/rollup-linux-riscv64-gnu': 4.19.1 - '@rollup/rollup-linux-s390x-gnu': 4.19.1 - '@rollup/rollup-linux-x64-gnu': 4.19.1 - '@rollup/rollup-linux-x64-musl': 4.19.1 - '@rollup/rollup-win32-arm64-msvc': 4.19.1 - '@rollup/rollup-win32-ia32-msvc': 4.19.1 - '@rollup/rollup-win32-x64-msvc': 4.19.1 + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4483,21 +4491,21 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 - spdx-license-ids@3.0.17: {} + spdx-license-ids@3.0.18: {} stable-hash@0.0.4: {} @@ -4505,6 +4513,8 @@ snapshots: std-env@3.7.0: {} + string-argv@0.3.2: {} + string-ts@2.2.0: {} string-width@4.2.3: @@ -4543,7 +4553,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.12 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -4564,7 +4574,7 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.6.3 - tailwindcss@3.4.7: + tailwindcss@3.4.9: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -4574,17 +4584,17 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.2(postcss@8.4.40) - postcss-nested: 6.2.0(postcss@8.4.40) + postcss: 8.4.41 + postcss-import: 15.1.0(postcss@8.4.41) + postcss-js: 4.0.1(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41) + postcss-nested: 6.2.0(postcss@8.4.41) postcss-selector-parser: 6.1.1 resolve: 1.22.8 sucrase: 3.35.0 @@ -4605,7 +4615,7 @@ snapshots: tiny-invariant@1.3.3: {} - tinybench@2.8.0: {} + tinybench@2.9.0: {} tinypool@1.0.0: {} @@ -4629,9 +4639,9 @@ snapshots: dependencies: typescript: 5.5.4 - ts-declaration-location@1.0.3(typescript@5.5.4): + ts-declaration-location@1.0.4(typescript@5.5.4): dependencies: - minimatch: 9.0.5 + minimatch: 10.0.1 typescript: 5.5.4 ts-interface-checker@0.1.13: {} @@ -4640,26 +4650,26 @@ snapshots: tslib@2.6.3: {} - tsup@8.2.3(jiti@1.21.0)(postcss@8.4.40)(typescript@5.5.4): + tsup@8.2.4(jiti@1.21.6)(postcss@8.4.41)(typescript@5.5.4)(yaml@2.5.0): dependencies: bundle-require: 5.0.0(esbuild@0.23.0) cac: 6.7.14 chokidar: 3.6.0 consola: 3.2.3 - debug: 4.3.5 + debug: 4.3.6 esbuild: 0.23.0 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 picocolors: 1.0.1 - postcss-load-config: 6.0.1(jiti@1.21.0)(postcss@8.4.40) + postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.41)(yaml@2.5.0) resolve-from: 5.0.0 - rollup: 4.19.1 + rollup: 4.20.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.4.40 + postcss: 8.4.41 typescript: 5.5.4 transitivePeerDependencies: - jiti @@ -4671,21 +4681,25 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-detect@4.1.0: {} + type-fest@0.20.2: {} type-fest@0.6.0: {} type-fest@0.8.1: {} - type-fest@4.23.0: {} + type-fest@4.24.0: {} typescript@5.5.4: {} undici-types@5.26.5: {} - update-browserslist-db@1.1.0(browserslist@4.23.2): + undici-types@6.13.0: {} + + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: - browserslist: 4.23.2 + browserslist: 4.23.3 escalade: 3.1.2 picocolors: 1.0.1 @@ -4700,59 +4714,61 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-node@2.0.4(@types/node@20.14.12): + vite-node@2.0.5(@types/node@22.2.0): dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.6 pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.3.5(@types/node@20.14.12) + vite: 5.4.0(@types/node@22.2.0) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite@5.3.5(@types/node@20.14.12): + vite@5.4.0(@types/node@22.2.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.40 - rollup: 4.13.2 + postcss: 8.4.41 + rollup: 4.20.0 optionalDependencies: - '@types/node': 20.14.12 + '@types/node': 22.2.0 fsevents: 2.3.3 - vitest@2.0.4(@types/node@20.14.12): + vitest@2.0.5(@types/node@22.2.0): dependencies: '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.4 - '@vitest/pretty-format': 2.0.4 - '@vitest/runner': 2.0.4 - '@vitest/snapshot': 2.0.4 - '@vitest/spy': 2.0.4 - '@vitest/utils': 2.0.4 + '@vitest/expect': 2.0.5 + '@vitest/pretty-format': 2.0.5 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 chai: 5.1.1 - debug: 4.3.5 + debug: 4.3.6 execa: 8.0.1 - magic-string: 0.30.10 + magic-string: 0.30.11 pathe: 1.1.2 std-env: 3.7.0 - tinybench: 2.8.0 + tinybench: 2.9.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.3.5(@types/node@20.14.12) - vite-node: 2.0.4(@types/node@20.14.12) + vite: 5.4.0(@types/node@22.2.0) + vite-node: 2.0.5(@types/node@22.2.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.14.12 + '@types/node': 22.2.0 transitivePeerDependencies: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -4775,6 +4791,8 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + word-wrap@1.2.5: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -4793,7 +4811,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.4.1: {} + yaml@2.5.0: {} yargs-parser@20.2.9: {} diff --git a/scripts/index.ts b/scripts/index.ts index 3219ada..34fa658 100755 --- a/scripts/index.ts +++ b/scripts/index.ts @@ -30,6 +30,19 @@ await Promise.all([ entry: ["src/index.ts"], external: ["postcss-selector-parser", "postcss", "stylis"], }), + ...["animate", "aspect-ratio", "forms", "react-aria-components", "typography"].map( + name => + build({ + ...tsupConfig, + entry: [`./src/vendor/${name}.ts`], + outDir: "dist/vendor", + external: [ + "tailwindcss/plugin", + "tailwindcss/colors", + "tailwindcss/defaultTheme", + ], + }) + ), Bun.write( "dist/package.json", JSON.stringify( diff --git a/src/__tests__/attr.test.ts b/src/__tests__/attr.test.ts index 8cb533a..d6e6e9f 100644 --- a/src/__tests__/attr.test.ts +++ b/src/__tests__/attr.test.ts @@ -60,4 +60,115 @@ describe("attr", () => { matchSnapshot(files); }); + + it.only("fails", async () => { + const { files } = await compileESBuild({ + clsx: "emotion", + expectFiles: 2, + javascript: /* tsx */ ` + +type Type = "dependencies" | "devDependencies" | "peerDependencies" + +const Version = classed("span", tw\`text-[var(--color-fg-muted)]\`) + +function TreeItem({ + name, + version, + type, +}: { + name: string + version: string + type: Type +}) { + const [open, toggle] = useToggle(false) + + const query = useQuery({ + ...getRegistryPackageInfo(name), + enabled: open, + }) + + const versions = query.data ? Object.keys(query.data.versions) : undefined + const matchingVersion = versions + ? semverMaxSatisfying(versions, version) + : undefined + const currentVersion = + matchingVersion != null ? query.data?.versions[matchingVersion] : undefined + const data = currentVersion + ? Object.entries(currentVersion[type] ?? {}) + : undefined + const isDeprecated = true + + const hasNoDeps = data?.length === 0 + + const Icon = hasNoDeps ? SmallMinus : open ? ChevronDown : ChevronRight + + return ( +
  • +
    + + + + {name} + + {version} + +
    + {!open || hasNoDeps ? null : query.error ? ( +
    + + {(query.error as Error).message} + +
    + ) : data ? ( + + ) : ( +
    + )} +
  • + ) +} + +export function DepList({ + title, + deps, + type, +}: { + title: string + deps: Record + count?: number + type: Type +}) { + const entries = Object.entries(deps) + return ( +
    +

    + {title} ({entries.length}) +

    + +
    + ) +} + + `, + }); + + files; + }); }); diff --git a/src/babel-tailwind.ts b/src/babel-tailwind.ts index dc30970..f86a239 100644 --- a/src/babel-tailwind.ts +++ b/src/babel-tailwind.ts @@ -4,7 +4,7 @@ import hash from "@emotion/hash"; import { isPlainObject } from "lodash"; import invariant from "tiny-invariant"; import { type NodePath, type types as t } from "@babel/core"; -import { type SourceLocation, type StyleMapEntry, macroName } from "./shared"; +import { type SourceLocation, type StyleMapEntry, macroNames } from "./shared"; import { type ResolveTailwindOptions, getClassName } from "./index"; export type ClassNameCollector = (path: string, entries: StyleMapEntry[]) => void; @@ -143,7 +143,7 @@ export function babelTailwind( const _ = getUtils(path, state, t); Object.assign(state, _); - for (const { callee, imported, prefix } of getMacros(t, path, macroName).map( + for (const { callee, imported, prefix } of getMacros(t, path, macroNames).map( macro => mapMacro(t, macro) )) { const type = imported === "tw" ? "css" : imported === "tws" ? "js" : undefined; @@ -431,12 +431,12 @@ function getName(t: BabelTypes, exp: t.Node) { function getMacros( t: BabelTypes, programPath: NodePath, - importSource: string + importSources: string[] ) { const importDecs = programPath .get("body") .filter(x => isNodePath(x, t.isImportDeclaration)) - .filter(x => x.node.source.value === importSource); + .filter(x => importSources.includes(x.node.source.value)); const macros = importDecs .flatMap(x => x.get("specifiers")) @@ -526,7 +526,8 @@ function getSuffix(add: boolean | undefined, entries: StyleMapEntry[]) { return `?${cacheKey}`; } -const trim = (value: string) => value.replace(/\s+/g, " ").trim().split(" "); +const trim = (value: string) => + value.replace(/\s+/g, " ").trim().split(" ").filter(Boolean); const trimPrefix = (cls: string, prefix = "") => trim(cls).map(value => prefix + value); const flatMapEntries = ( diff --git a/src/esbuild-babel.ts b/src/esbuild-babel.ts index ac5ff34..aa855eb 100644 --- a/src/esbuild-babel.ts +++ b/src/esbuild-babel.ts @@ -35,6 +35,10 @@ export const babelPlugin = ({ } const { code } = transformSync(load(), { + assumptions: { + noDocumentAll: true, + noClassCalls: true, + }, parserOpts: { createImportExpressions: true, plugins: [ diff --git a/src/shared.ts b/src/shared.ts index 5378913..68799d6 100644 --- a/src/shared.ts +++ b/src/shared.ts @@ -3,7 +3,7 @@ import postcss from "postcss"; import type { ResolveTailwindOptions } from "./index"; export const { name: pkgName } = [require][0]("../package.json"); -export const macroName = `${pkgName}/macro`; +export const macroNames = [`${pkgName}/macro`, `${pkgName}/ยต`]; interface LineColumn { line: number; diff --git a/src/vendor/animate.ts b/src/vendor/animate.ts new file mode 100644 index 0000000..8835308 --- /dev/null +++ b/src/vendor/animate.ts @@ -0,0 +1,190 @@ +// https://github.com/jamiebuilds/tailwindcss-animate/commit/ac0dd3a3c81681b78f1d8ea5e7478044213995e1 +import plugin from "tailwindcss/plugin"; +import type { PluginAPI } from "tailwindcss/types/config"; + +function filterDefault(values: T) { + return Object.fromEntries( + Object.entries(values).filter(([key]) => key !== "DEFAULT") + ) as Omit; +} + +export default plugin( + ({ addUtilities, matchUtilities, theme }) => { + addUtilities({ + "@keyframes enter": theme("keyframes.enter"), + "@keyframes exit": theme("keyframes.exit"), + ".animate-in": { + animationName: "enter", + animationDuration: theme("animationDuration.DEFAULT"), + "--tw-enter-opacity": "initial", + "--tw-enter-scale": "initial", + "--tw-enter-rotate": "initial", + "--tw-enter-translate-x": "initial", + "--tw-enter-translate-y": "initial", + }, + ".animate-out": { + animationName: "exit", + animationDuration: theme("animationDuration.DEFAULT"), + "--tw-exit-opacity": "initial", + "--tw-exit-scale": "initial", + "--tw-exit-rotate": "initial", + "--tw-exit-translate-x": "initial", + "--tw-exit-translate-y": "initial", + }, + }); + + matchUtilities( + { + "fade-in": value => ({ "--tw-enter-opacity": value }), + "fade-out": value => ({ "--tw-exit-opacity": value }), + }, + { values: theme("animationOpacity")! } + ); + + matchUtilities( + { + "zoom-in": value => ({ "--tw-enter-scale": value }), + "zoom-out": value => ({ "--tw-exit-scale": value }), + }, + { values: theme("animationScale")! } + ); + + matchUtilities( + { + "spin-in": value => ({ "--tw-enter-rotate": value }), + "spin-out": value => ({ "--tw-exit-rotate": value }), + }, + { values: theme("animationRotate")! } + ); + + matchUtilities( + { + "slide-in-from-top": value => ({ + "--tw-enter-translate-y": `-${value}`, + }), + "slide-in-from-bottom": value => ({ + "--tw-enter-translate-y": value, + }), + "slide-in-from-left": value => ({ + "--tw-enter-translate-x": `-${value}`, + }), + "slide-in-from-right": value => ({ + "--tw-enter-translate-x": value, + }), + "slide-out-to-top": value => ({ + "--tw-exit-translate-y": `-${value}`, + }), + "slide-out-to-bottom": value => ({ + "--tw-exit-translate-y": value, + }), + "slide-out-to-left": value => ({ + "--tw-exit-translate-x": `-${value}`, + }), + "slide-out-to-right": value => ({ + "--tw-exit-translate-x": value, + }), + }, + { values: theme("animationTranslate")! } + ); + + matchUtilities( + { duration: value => ({ animationDuration: value }) }, + { values: filterDefault(theme("animationDuration")!) } + ); + + matchUtilities( + { delay: value => ({ animationDelay: value }) }, + { values: theme("animationDelay")! } + ); + + matchUtilities( + { ease: value => ({ animationTimingFunction: value }) }, + { values: filterDefault(theme("animationTimingFunction")!) } + ); + + addUtilities({ + ".running": { animationPlayState: "running" }, + ".paused": { animationPlayState: "paused" }, + }); + + matchUtilities( + { "fill-mode": value => ({ animationFillMode: value }) }, + { values: theme("animationFillMode")! } + ); + + matchUtilities( + { direction: value => ({ animationDirection: value }) }, + { values: theme("animationDirection")! } + ); + + matchUtilities( + { repeat: value => ({ animationIterationCount: value }) }, + { values: theme("animationRepeat")! } + ); + }, + { + theme: { + extend: { + animationDelay: ({ theme }: PluginAPI) => ({ + ...theme("transitionDelay"), + }), + animationDuration: ({ theme }: PluginAPI) => ({ + 0: "0ms", + ...theme("transitionDuration"), + }), + animationTimingFunction: ({ theme }: PluginAPI) => ({ + ...theme("transitionTimingFunction"), + }), + animationFillMode: { + none: "none", + forwards: "forwards", + backwards: "backwards", + both: "both", + }, + animationDirection: { + normal: "normal", + reverse: "reverse", + alternate: "alternate", + "alternate-reverse": "alternate-reverse", + }, + animationOpacity: ({ theme }: PluginAPI) => ({ + DEFAULT: 0, + ...theme("opacity"), + }), + animationTranslate: ({ theme }: PluginAPI) => ({ + DEFAULT: "100%", + ...theme("translate"), + }), + animationScale: ({ theme }: PluginAPI) => ({ + DEFAULT: 0, + ...theme("scale"), + }), + animationRotate: ({ theme }: PluginAPI) => ({ + DEFAULT: "30deg", + ...theme("rotate"), + }), + animationRepeat: { + 0: "0", + 1: "1", + infinite: "infinite", + }, + keyframes: { + enter: { + from: { + opacity: "var(--tw-enter-opacity, 1)", + transform: + "translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))", + }, + }, + exit: { + to: { + opacity: "var(--tw-exit-opacity, 1)", + transform: + "translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))", + }, + }, + }, + }, + }, + } +); diff --git a/src/vendor/aspect-ratio.ts b/src/vendor/aspect-ratio.ts new file mode 100644 index 0000000..9021778 --- /dev/null +++ b/src/vendor/aspect-ratio.ts @@ -0,0 +1,78 @@ +// https://github.com/tailwindlabs/tailwindcss-aspect-ratio/commit/b2a9d02229946f3430c0013198be2affa7a175da +import plugin from "tailwindcss/plugin"; + +const baseStyles = { + position: "relative", + paddingBottom: `calc(var(--tw-aspect-h) / var(--tw-aspect-w) * 100%)`, +}; + +const childStyles = { + position: "absolute", + height: "100%", + width: "100%", + top: "0", + right: "0", + bottom: "0", + left: "0", +}; + +const noneComponent = { + ".aspect-none": { + position: "static", + paddingBottom: "0", + }, + ".aspect-none > *": { + position: "static", + height: "auto", + width: "auto", + top: "auto", + right: "auto", + bottom: "auto", + left: "auto", + }, +}; + +export default plugin( + ({ addComponents, matchComponents, theme }) => { + const values = theme("aspectRatio")!; + + matchComponents( + { + "aspect-w": value => ({ + ...baseStyles, + "--tw-aspect-w": value, + "> *": childStyles, + }), + "aspect-h": value => ({ "--tw-aspect-h": value }), + }, + { values } + ); + + addComponents(noneComponent); + }, + { + theme: { + aspectRatio: { + 1: "1", + 2: "2", + 3: "3", + 4: "4", + 5: "5", + 6: "6", + 7: "7", + 8: "8", + 9: "9", + 10: "10", + 11: "11", + 12: "12", + 13: "13", + 14: "14", + 15: "15", + 16: "16", + }, + }, + variants: { + aspectRatio: ["responsive"], + }, + } +); diff --git a/src/vendor/forms.ts b/src/vendor/forms.ts new file mode 100644 index 0000000..f166257 --- /dev/null +++ b/src/vendor/forms.ts @@ -0,0 +1,461 @@ +// https://github.com/tailwindlabs/tailwindcss-forms/commit/c9d9da3e010b194a1f0e9c36fbd98c83e4762840 +import plugin from "tailwindcss/plugin"; +import defaultTheme from "tailwindcss/defaultTheme"; +import colors from "tailwindcss/colors"; +import type { CSSRuleObject } from "tailwindcss/types/config"; + +const shorterNames = { + aqua: /#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi, + azure: /#f0ffff(ff)?(?!\w)/gi, + beige: /#f5f5dc(ff)?(?!\w)/gi, + bisque: /#ffe4c4(ff)?(?!\w)/gi, + black: /#000000(ff)?(?!\w)|#000(f)?(?!\w)/gi, + blue: /#0000ff(ff)?(?!\w)|#00f(f)?(?!\w)/gi, + brown: /#a52a2a(ff)?(?!\w)/gi, + coral: /#ff7f50(ff)?(?!\w)/gi, + cornsilk: /#fff8dc(ff)?(?!\w)/gi, + crimson: /#dc143c(ff)?(?!\w)/gi, + cyan: /#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi, + darkblue: /#00008b(ff)?(?!\w)/gi, + darkcyan: /#008b8b(ff)?(?!\w)/gi, + darkgrey: /#a9a9a9(ff)?(?!\w)/gi, + darkred: /#8b0000(ff)?(?!\w)/gi, + deeppink: /#ff1493(ff)?(?!\w)/gi, + dimgrey: /#696969(ff)?(?!\w)/gi, + gold: /#ffd700(ff)?(?!\w)/gi, + green: /#008000(ff)?(?!\w)/gi, + grey: /#808080(ff)?(?!\w)/gi, + honeydew: /#f0fff0(ff)?(?!\w)/gi, + hotpink: /#ff69b4(ff)?(?!\w)/gi, + indigo: /#4b0082(ff)?(?!\w)/gi, + ivory: /#fffff0(ff)?(?!\w)/gi, + khaki: /#f0e68c(ff)?(?!\w)/gi, + lavender: /#e6e6fa(ff)?(?!\w)/gi, + lime: /#00ff00(ff)?(?!\w)|#0f0(f)?(?!\w)/gi, + linen: /#faf0e6(ff)?(?!\w)/gi, + maroon: /#800000(ff)?(?!\w)/gi, + moccasin: /#ffe4b5(ff)?(?!\w)/gi, + navy: /#000080(ff)?(?!\w)/gi, + oldlace: /#fdf5e6(ff)?(?!\w)/gi, + olive: /#808000(ff)?(?!\w)/gi, + orange: /#ffa500(ff)?(?!\w)/gi, + orchid: /#da70d6(ff)?(?!\w)/gi, + peru: /#cd853f(ff)?(?!\w)/gi, + pink: /#ffc0cb(ff)?(?!\w)/gi, + plum: /#dda0dd(ff)?(?!\w)/gi, + purple: /#800080(ff)?(?!\w)/gi, + red: /#ff0000(ff)?(?!\w)|#f00(f)?(?!\w)/gi, + salmon: /#fa8072(ff)?(?!\w)/gi, + seagreen: /#2e8b57(ff)?(?!\w)/gi, + seashell: /#fff5ee(ff)?(?!\w)/gi, + sienna: /#a0522d(ff)?(?!\w)/gi, + silver: /#c0c0c0(ff)?(?!\w)/gi, + skyblue: /#87ceeb(ff)?(?!\w)/gi, + snow: /#fffafa(ff)?(?!\w)/gi, + tan: /#d2b48c(ff)?(?!\w)/gi, + teal: /#008080(ff)?(?!\w)/gi, + thistle: /#d8bfd8(ff)?(?!\w)/gi, + tomato: /#ff6347(ff)?(?!\w)/gi, + violet: /#ee82ee(ff)?(?!\w)/gi, + wheat: /#f5deb3(ff)?(?!\w)/gi, + white: /#ffffff(ff)?(?!\w)|#fff(f)?(?!\w)/gi, +}; + +const REGEX = { + whitespace: /\s+/g, + urlHexPairs: /%[\dA-F]{2}/g, + quotes: /"/g, +}; + +function collapseWhitespace(str: string) { + return str.trim().replace(REGEX.whitespace, " "); +} + +function dataURIPayload(string: string) { + return encodeURIComponent(string).replace(REGEX.urlHexPairs, specialHexEncode); +} + +// `#` gets converted to `%23`, so quite a few CSS named colors are shorter than +// their equivalent URL-encoded hex codes. +function colorCodeToShorterNames(string: string) { + for (const [key, value] of Object.entries(shorterNames)) { + if (value.test(string)) { + string = string.replace(value, key); + } + } + + return string; +} + +function specialHexEncode(match: string) { + // Browsers tolerate these characters, and they're frequent + switch (match) { + case "%20": + return " "; + case "%3D": + return "="; + case "%3A": + return ":"; + case "%2F": + return "/"; + default: + return match.toLowerCase(); // compresses better + } +} + +function svgToDataUri(svgString: string) { + // Strip the Byte-Order Mark if the SVG has one + // eslint-disable-next-line unicorn/number-literal-case + if (svgString.charCodeAt(0) === 0xfeff) { + svgString = svgString.slice(1); + } + + const body = colorCodeToShorterNames(collapseWhitespace(svgString)).replace( + REGEX.quotes, + "'" + ); + return "data:image/svg+xml," + dataURIPayload(body); +} + +const [baseFontSize, { lineHeight: baseLineHeight }] = defaultTheme.fontSize.base; +const { spacing, borderWidth, borderRadius } = defaultTheme; + +type Strategy = "base" | "class"; + +export default plugin.withOptions<{ strategy?: Strategy }>( + options => + function ({ addBase, addComponents, theme }) { + const strategy = + options?.strategy === undefined ? ["base", "class"] : [options.strategy]; + + const rules = [ + { + base: [ + "[type='text']", + "input:where(:not([type]))", + "[type='email']", + "[type='url']", + "[type='password']", + "[type='number']", + "[type='date']", + "[type='datetime-local']", + "[type='month']", + "[type='search']", + "[type='tel']", + "[type='time']", + "[type='week']", + "[multiple]", + "textarea", + "select", + ], + class: [".form-input", ".form-textarea", ".form-select", ".form-multiselect"], + styles: { + appearance: "none", + "background-color": "#fff", + "border-color": theme("colors.gray.500", colors.gray[500]), + "border-width": borderWidth["DEFAULT"], + "border-radius": borderRadius.none, + "padding-top": spacing[2], + "padding-right": spacing[3], + "padding-bottom": spacing[2], + "padding-left": spacing[3], + "font-size": baseFontSize, + "line-height": baseLineHeight, + "--tw-shadow": "0 0 #0000", + "&:focus": { + outline: "2px solid transparent", + "outline-offset": "2px", + "--tw-ring-inset": "var(--tw-empty,/*!*/ /*!*/)", + "--tw-ring-offset-width": "0px", + "--tw-ring-offset-color": "#fff", + "--tw-ring-color": theme("colors.blue.600", colors.blue[600]), + "--tw-ring-offset-shadow": `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`, + "--tw-ring-shadow": `var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)`, + "box-shadow": `var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)`, + "border-color": theme("colors.blue.600", colors.blue[600]), + }, + }, + }, + { + base: ["input::placeholder", "textarea::placeholder"], + class: [".form-input::placeholder", ".form-textarea::placeholder"], + styles: { + color: theme("colors.gray.500", colors.gray[500]), + opacity: "1", + }, + }, + { + base: ["::-webkit-datetime-edit-fields-wrapper"], + class: [".form-input::-webkit-datetime-edit-fields-wrapper"], + styles: { + padding: "0", + }, + }, + { + // Unfortunate hack until https://bugs.webkit.org/show_bug.cgi?id=198959 is fixed. + // This sucks because users can't change line-height with a utility on date inputs now. + // Reference: https://github.com/twbs/bootstrap/pull/31993 + base: ["::-webkit-date-and-time-value"], + class: [".form-input::-webkit-date-and-time-value"], + styles: { + "min-height": "1.5em", + }, + }, + { + // In Safari on iOS date and time inputs are centered instead of left-aligned and can't be + // changed with `text-align` utilities on the input by default. Resetting this to `inherit` + // makes them left-aligned by default and makes it possible to override the alignment with + // utility classes without using an arbitrary variant to target the pseudo-elements. + base: ["::-webkit-date-and-time-value"], + class: [".form-input::-webkit-date-and-time-value"], + styles: { + "text-align": "inherit", + }, + }, + { + // In Safari on macOS date time inputs that are set to `display: block` have unexpected + // extra bottom spacing. This can be corrected by setting the `::-webkit-datetime-edit` + // pseudo-element to `display: inline-flex`, instead of the browser default of + // `display: inline-block`. + base: ["::-webkit-datetime-edit"], + class: [".form-input::-webkit-datetime-edit"], + styles: { + display: "inline-flex", + }, + }, + { + // In Safari on macOS date time inputs are 4px taller than normal inputs + // This is because there is extra padding on the datetime-edit and datetime-edit-{part}-field pseudo elements + // See https://github.com/tailwindlabs/tailwindcss-forms/issues/95 + base: [ + "::-webkit-datetime-edit", + "::-webkit-datetime-edit-year-field", + "::-webkit-datetime-edit-month-field", + "::-webkit-datetime-edit-day-field", + "::-webkit-datetime-edit-hour-field", + "::-webkit-datetime-edit-minute-field", + "::-webkit-datetime-edit-second-field", + "::-webkit-datetime-edit-millisecond-field", + "::-webkit-datetime-edit-meridiem-field", + ], + class: [ + ".form-input::-webkit-datetime-edit", + ".form-input::-webkit-datetime-edit-year-field", + ".form-input::-webkit-datetime-edit-month-field", + ".form-input::-webkit-datetime-edit-day-field", + ".form-input::-webkit-datetime-edit-hour-field", + ".form-input::-webkit-datetime-edit-minute-field", + ".form-input::-webkit-datetime-edit-second-field", + ".form-input::-webkit-datetime-edit-millisecond-field", + ".form-input::-webkit-datetime-edit-meridiem-field", + ], + styles: { + "padding-top": 0, + "padding-bottom": 0, + }, + }, + { + base: ["select"], + class: [".form-select"], + styles: { + "background-image": `url("${svgToDataUri( + `` + )}")`, + "background-position": `right ${spacing[2]} center`, + "background-repeat": `no-repeat`, + "background-size": `1.5em 1.5em`, + "padding-right": spacing[10], + "print-color-adjust": `exact`, + }, + }, + { + base: ["[multiple]", '[size]:where(select:not([size="1"]))'], + class: ['.form-select:where([size]:not([size="1"]))'], + styles: { + "background-image": "initial", + "background-position": "initial", + "background-repeat": "unset", + "background-size": "initial", + "padding-right": spacing[3], + "print-color-adjust": "unset", + }, + }, + { + base: [`[type='checkbox']`, `[type='radio']`], + class: [".form-checkbox", ".form-radio"], + styles: { + appearance: "none", + padding: "0", + "print-color-adjust": "exact", + display: "inline-block", + "vertical-align": "middle", + "background-origin": "border-box", + "user-select": "none", + "flex-shrink": "0", + height: spacing[4], + width: spacing[4], + color: theme("colors.blue.600", colors.blue[600]), + "background-color": "#fff", + "border-color": theme("colors.gray.500", colors.gray[500]), + "border-width": borderWidth["DEFAULT"], + "--tw-shadow": "0 0 #0000", + }, + }, + { + base: [`[type='checkbox']`], + class: [".form-checkbox"], + styles: { + "border-radius": borderRadius["none"], + }, + }, + { + base: [`[type='radio']`], + class: [".form-radio"], + styles: { + "border-radius": "100%", + }, + }, + { + base: [`[type='checkbox']:focus`, `[type='radio']:focus`], + class: [".form-checkbox:focus", ".form-radio:focus"], + styles: { + outline: "2px solid transparent", + "outline-offset": "2px", + "--tw-ring-inset": "var(--tw-empty,/*!*/ /*!*/)", + "--tw-ring-offset-width": "2px", + "--tw-ring-offset-color": "#fff", + "--tw-ring-color": theme("colors.blue.600", colors.blue[600]), + "--tw-ring-offset-shadow": `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`, + "--tw-ring-shadow": `var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)`, + "box-shadow": `var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)`, + }, + }, + { + base: [`[type='checkbox']:checked`, `[type='radio']:checked`], + class: [".form-checkbox:checked", ".form-radio:checked"], + styles: { + "border-color": `transparent`, + "background-color": `currentColor`, + "background-size": `100% 100%`, + "background-position": `center`, + "background-repeat": `no-repeat`, + }, + }, + { + base: [`[type='checkbox']:checked`], + class: [".form-checkbox:checked"], + styles: { + "background-image": `url("${svgToDataUri( + `` + )}")`, + + "@media (forced-colors: active) ": { + appearance: "auto", + }, + }, + }, + { + base: [`[type='radio']:checked`], + class: [".form-radio:checked"], + styles: { + "background-image": `url("${svgToDataUri( + `` + )}")`, + + "@media (forced-colors: active) ": { + appearance: "auto", + }, + }, + }, + { + base: [ + `[type='checkbox']:checked:hover`, + `[type='checkbox']:checked:focus`, + `[type='radio']:checked:hover`, + `[type='radio']:checked:focus`, + ], + class: [ + ".form-checkbox:checked:hover", + ".form-checkbox:checked:focus", + ".form-radio:checked:hover", + ".form-radio:checked:focus", + ], + styles: { + "border-color": "transparent", + "background-color": "currentColor", + }, + }, + { + base: [`[type='checkbox']:indeterminate`], + class: [".form-checkbox:indeterminate"], + styles: { + "background-image": `url("${svgToDataUri( + `` + )}")`, + "border-color": `transparent`, + "background-color": `currentColor`, + "background-size": `100% 100%`, + "background-position": `center`, + "background-repeat": `no-repeat`, + + "@media (forced-colors: active) ": { + appearance: "auto", + }, + }, + }, + { + base: [ + `[type='checkbox']:indeterminate:hover`, + `[type='checkbox']:indeterminate:focus`, + ], + class: [ + ".form-checkbox:indeterminate:hover", + ".form-checkbox:indeterminate:focus", + ], + styles: { + "border-color": "transparent", + "background-color": "currentColor", + }, + }, + { + base: [`[type='file']`], + class: null, + styles: { + background: "unset", + "border-color": "inherit", + "border-width": "0", + "border-radius": "0", + padding: "0", + "font-size": "unset", + "line-height": "inherit", + }, + }, + { + base: [`[type='file']:focus`], + class: null, + styles: { + outline: [`1px solid ButtonText`, `1px auto -webkit-focus-ring-color`], + }, + }, + ]; + + const getStrategyRules = (strategy: Strategy): CSSRuleObject[] => + rules + .map(rule => { + if (rule[strategy] === null) return null; + return { [rule[strategy].join(", ")]: rule.styles } as CSSRuleObject; + }) + .filter(Boolean); + + if (strategy.includes("base")) { + addBase(getStrategyRules("base")); + } + + if (strategy.includes("class")) { + addComponents(getStrategyRules("class")); + } + } +); diff --git a/src/vendor/react-aria-components.ts b/src/vendor/react-aria-components.ts new file mode 100644 index 0000000..3ff1254 --- /dev/null +++ b/src/vendor/react-aria-components.ts @@ -0,0 +1,197 @@ +// https://github.com/adobe/react-spectrum/blob/14f324fe890fcedc6e34889d9b04d5d6bfeb8380/packages/tailwindcss-react-aria-components/src/index.js +import plugin from "tailwindcss/plugin"; +import type { PluginAPI } from "tailwindcss/types/config"; + +// Order of these is important because it determines which states win in a conflict. +// We mostly follow Tailwind's defaults, adding our additional states following the categories they define. +// https://github.com/tailwindlabs/tailwindcss/blob/304c2bad6cb5fcb62754a4580b1c8f4c16b946ea/src/corePlugins.js#L83 +const attributes = { + boolean: [ + // Conditions + "allows-removing", + "allows-sorting", + "allows-dragging", + "has-submenu", + + // States + "open", + "entering", + "exiting", + "indeterminate", + ["placeholder-shown", "placeholder"], + "current", + "required", + "unavailable", + "invalid", + ["read-only", "readonly"], + "outside-month", + "outside-visible-range", + + // Content + "empty", + + // Interactive states + "focus-within", + ["hover", "hovered"], + ["focus", "focused"], + "focus-visible", + "pressed", + "selected", + "selection-start", + "selection-end", + "dragging", + "drop-target", + "resizing", + "disabled", + ], + enum: { + placement: ["left", "right", "top", "bottom"], + type: ["literal", "year", "month", "day"], + layout: ["grid", "stack"], + orientation: ["horizontal", "vertical"], + "selection-mode": ["single", "multiple"], + "resizable-direction": ["right", "left", "both"], + "sort-direction": ["ascending", "descending"], + }, +}; + +const shortNames: Record = { + "selection-mode": "selection", + "resizable-direction": "resizable", + "sort-direction": "sort", +}; + +// Variants we use that are already defined by Tailwind: +// https://github.com/tailwindlabs/tailwindcss/blob/a2fa6932767ab328515f743d6188c2164ad2a5de/src/corePlugins.js#L84 +const nativeVariants = [ + "indeterminate", + "required", + "invalid", + "empty", + "focus-visible", + "focus-within", + "disabled", +]; +const nativeVariantSelectors = new Map([ + ...nativeVariants.map(variant => [variant, `:${variant}`] as const), + ["hovered", ":hover"], + ["focused", ":focus"], + ["readonly", ":read-only"], + ["open", "[open]"], +]); + +// Variants where both native and RAC attributes should apply. We don't override these. +const nativeMergeSelectors = new Map([["placeholder", ":placeholder-shown"]]); + +type SelectorFn = (wrap: (s: string) => string) => string; +type SelectorValue = string | SelectorFn; +type Selector = string | [string, SelectorValue]; + +// If no prefix is specified, we want to avoid overriding native variants on non-RAC components, so we only target elements with the data-rac attribute for those variants. +function getSelector( + prefix: string, + attributeName: string, + attributeValue: string | null, + hoverOnlyWhenSupported: boolean +): Selector { + const baseSelector = attributeValue + ? `[data-${attributeName}="${attributeValue}"]` + : `[data-${attributeName}]`; + const nativeSelector = nativeVariantSelectors.get(attributeName); + if (prefix === "" && nativeSelector) { + const wrappedNativeSelector = `&:not([data-rac])${nativeSelector}`; + let nativeSelectorGenerator: SelectorValue = wrappedNativeSelector; + if (nativeSelector === ":hover" && hoverOnlyWhenSupported) { + nativeSelectorGenerator = wrap => + `@media (hover: hover) and (pointer: fine) { ${wrap(wrappedNativeSelector)} }`; + } + return [`&[data-rac]${baseSelector}`, nativeSelectorGenerator]; + } else if (prefix === "" && nativeMergeSelectors.has(attributeName)) { + return [`&${baseSelector}`, `&${nativeMergeSelectors.get(attributeName)}`]; + } else { + return `&${baseSelector}`; + } +} + +const mapSelector = (selector: Selector, fn: (v: SelectorValue) => string) => + Array.isArray(selector) ? selector.map(fn) : fn(selector); + +const wrapSelector = (selector: SelectorValue, wrap: (text: string) => string) => + typeof selector === "function" ? selector(wrap) : wrap(selector); + +const addVariants = ( + variantName: string, + selectors: Selector, + addVariant: PluginAPI["addVariant"], + matchVariant: PluginAPI["matchVariant"] +) => { + addVariant( + variantName, + mapSelector(selectors, selector => wrapSelector(selector, s => s)) + ); + matchVariant( + "group", + (_, { modifier }) => + modifier + ? mapSelector(selectors, selector => + wrapSelector(selector, s => `:merge(.group\\/${modifier})${s.slice(1)} &`) + ) + : mapSelector(selectors, selector => + wrapSelector(selector, s => `:merge(.group)${s.slice(1)} &`) + ), + { values: { [variantName]: variantName } } + ); + matchVariant( + "peer", + (_, { modifier }) => + modifier + ? mapSelector(selectors, selector => + wrapSelector(selector, s => `:merge(.peer\\/${modifier})${s.slice(1)} ~ &`) + ) + : mapSelector(selectors, selector => + wrapSelector(selector, s => `:merge(.peer)${s.slice(1)} ~ &`) + ), + { values: { [variantName]: variantName } } + ); +}; + +export default plugin.withOptions<{ prefix: string }>( + options => + ({ addVariant, matchVariant, config }) => { + const prefix = options?.prefix ? `${options.prefix}-` : ""; + const future = config().future; + const hoverOnlyWhenSupported: boolean = + future === "all" || + (typeof future === "object" && + !Array.isArray(future) && + !!future?.hoverOnlyWhenSupported); + + // Enum attributes go first because currently they are all non-interactive states. + for (const [attributeName, value] of Object.entries(attributes.enum)) { + for (const attributeValue of value) { + const name = shortNames[attributeName] || attributeName; + const variantName = `${prefix}${name}-${attributeValue}`; + const selectors = getSelector( + prefix, + attributeName, + attributeValue, + hoverOnlyWhenSupported + ); + addVariants(variantName, selectors, addVariant, matchVariant); + } + } + + for (const attribute of attributes.boolean) { + let variantName = Array.isArray(attribute) ? attribute[0] : attribute; + variantName = `${prefix}${variantName}`; + const attributeName = Array.isArray(attribute) ? attribute[1] : attribute; + const selectors = getSelector( + prefix, + attributeName, + null, + hoverOnlyWhenSupported + ); + addVariants(variantName, selectors, addVariant, matchVariant); + } + } +); diff --git a/src/vendor/typography.ts b/src/vendor/typography.ts new file mode 100644 index 0000000..64a1d88 --- /dev/null +++ b/src/vendor/typography.ts @@ -0,0 +1,1516 @@ +// https://github.com/tailwindlabs/tailwindcss-typography/commit/7b43b3b33bb74c57a68852330105bb34d11a806a +import plugin from "tailwindcss/plugin"; +import colors from "tailwindcss/colors"; +import { castArray, merge } from "lodash"; +import parser, { type Pseudo } from "postcss-selector-parser"; + +const parseSelector = parser(); + +const round = (num: number) => + num + .toFixed(7) + .replace(/(\.\d+?)0+$/, "$1") + .replace(/\.0$/, ""); + +const rem = (px: number) => `${round(px / 16)}rem`; +const em = (px: number, base: number) => `${round(px / base)}em`; + +function hexToRgb(hex: string) { + hex = hex.replace("#", ""); + hex = hex.length === 3 ? hex.replace(/./g, "$&$&") : hex; + const r = parseInt(hex.slice(0, 2), 16); + const g = parseInt(hex.slice(2, 4), 16); + const b = parseInt(hex.slice(4, 6), 16); + return `${r} ${g} ${b}`; +} + +const my = (value: string) => ({ + marginTop: value, + marginBottom: value, +}); + +const shared = { + "hr + *": { + marginTop: "0", + }, + "h2 + *": { + marginTop: "0", + }, + "h3 + *": { + marginTop: "0", + }, + "h4 + *": { + marginTop: "0", + }, + "thead th:first-child": { + paddingInlineStart: "0", + }, + "thead th:last-child": { + paddingInlineEnd: "0", + }, + "tbody td:first-child, tfoot td:first-child": { + paddingInlineStart: "0", + }, + "tbody td:last-child, tfoot td:last-child": { + paddingInlineEnd: "0", + }, + "picture > img": my("0"), + "figure > *": my("0"), +}; +const noChildMargin = { + "> :first-child": { + marginTop: "0", + }, + "> :last-child": { + marginBottom: "0", + }, +}; + +const defaultModifiers = { + sm: { + css: [ + { + ...shared, + fontSize: rem(14), + lineHeight: round(24 / 14), + p: my(em(16, 14)), + '[class~="lead"]': { + fontSize: em(18, 14), + lineHeight: round(28 / 18), + ...my(em(16, 18)), + }, + blockquote: { + ...my(em(24, 18)), + paddingInlineStart: em(20, 18), + }, + h1: { + fontSize: em(30, 14), + marginTop: "0", + marginBottom: em(24, 30), + lineHeight: round(36 / 30), + }, + h2: { + fontSize: em(20, 14), + marginTop: em(32, 20), + marginBottom: em(16, 20), + lineHeight: round(28 / 20), + }, + h3: { + fontSize: em(18, 14), + marginTop: em(28, 18), + marginBottom: em(8, 18), + lineHeight: round(28 / 18), + }, + h4: { + marginTop: em(20, 14), + marginBottom: em(8, 14), + lineHeight: round(20 / 14), + }, + img: my(em(24, 14)), + picture: my(em(24, 14)), + video: my(em(24, 14)), + kbd: { + fontSize: em(12, 14), + borderRadius: rem(5), + paddingTop: em(2, 14), + paddingInlineEnd: em(5, 14), + paddingBottom: em(2, 14), + paddingInlineStart: em(5, 14), + }, + code: { + fontSize: em(12, 14), + }, + "h2 code": { + fontSize: em(18, 20), + }, + "h3 code": { + fontSize: em(16, 18), + }, + pre: { + fontSize: em(12, 14), + lineHeight: round(20 / 12), + ...my(em(20, 12)), + borderRadius: rem(4), + paddingTop: em(8, 12), + paddingInlineEnd: em(12, 12), + paddingBottom: em(8, 12), + paddingInlineStart: em(12, 12), + }, + ol: { + ...my(em(16, 14)), + paddingInlineStart: em(22, 14), + }, + ul: { + ...my(em(16, 14)), + paddingInlineStart: em(22, 14), + }, + li: my(em(4, 14)), + "ol > li": { + paddingInlineStart: em(6, 14), + }, + "ul > li": { + paddingInlineStart: em(6, 14), + }, + "> ul > li p": my(em(8, 14)), + "> ul > li > p:first-child": { + marginTop: em(16, 14), + }, + "> ul > li > p:last-child": { + marginBottom: em(16, 14), + }, + "> ol > li > p:first-child": { + marginTop: em(16, 14), + }, + "> ol > li > p:last-child": { + marginBottom: em(16, 14), + }, + "ul ul, ul ol, ol ul, ol ol": my(em(8, 14)), + dl: my(em(16, 14)), + dt: { + marginTop: em(16, 14), + }, + dd: { + marginTop: em(4, 14), + paddingInlineStart: em(22, 14), + }, + hr: my(em(40, 14)), + table: { + fontSize: em(12, 14), + lineHeight: round(18 / 12), + }, + "thead th": { + paddingInlineEnd: em(12, 12), + paddingBottom: em(8, 12), + paddingInlineStart: em(12, 12), + }, + + "tbody td, tfoot td": { + paddingTop: em(8, 12), + paddingInlineEnd: em(12, 12), + paddingBottom: em(8, 12), + paddingInlineStart: em(12, 12), + }, + + figure: my(em(24, 14)), + figcaption: { + fontSize: em(12, 14), + lineHeight: round(16 / 12), + marginTop: em(8, 12), + }, + }, + noChildMargin, + ], + }, + base: { + css: [ + { + ...shared, + fontSize: rem(16), + lineHeight: round(28 / 16), + p: my(em(20, 16)), + '[class~="lead"]': { + fontSize: em(20, 16), + lineHeight: round(32 / 20), + ...my(em(24, 20)), + }, + blockquote: { + ...my(em(32, 20)), + paddingInlineStart: em(20, 20), + }, + h1: { + fontSize: em(36, 16), + marginTop: "0", + marginBottom: em(32, 36), + lineHeight: round(40 / 36), + }, + h2: { + fontSize: em(24, 16), + marginTop: em(48, 24), + marginBottom: em(24, 24), + lineHeight: round(32 / 24), + }, + h3: { + fontSize: em(20, 16), + marginTop: em(32, 20), + marginBottom: em(12, 20), + lineHeight: round(32 / 20), + }, + h4: { + marginTop: em(24, 16), + marginBottom: em(8, 16), + lineHeight: round(24 / 16), + }, + img: my(em(32, 16)), + picture: my(em(32, 16)), + video: my(em(32, 16)), + kbd: { + fontSize: em(14, 16), + borderRadius: rem(5), + paddingTop: em(3, 16), + paddingInlineEnd: em(6, 16), + paddingBottom: em(3, 16), + paddingInlineStart: em(6, 16), + }, + code: { + fontSize: em(14, 16), + }, + "h2 code": { + fontSize: em(21, 24), + }, + "h3 code": { + fontSize: em(18, 20), + }, + pre: { + fontSize: em(14, 16), + lineHeight: round(24 / 14), + ...my(em(24, 14)), + borderRadius: rem(6), + paddingTop: em(12, 14), + paddingInlineEnd: em(16, 14), + paddingBottom: em(12, 14), + paddingInlineStart: em(16, 14), + }, + ol: { + ...my(em(20, 16)), + paddingInlineStart: em(26, 16), + }, + ul: { + ...my(em(20, 16)), + paddingInlineStart: em(26, 16), + }, + li: my(em(8, 16)), + "ol > li": { + paddingInlineStart: em(6, 16), + }, + "ul > li": { + paddingInlineStart: em(6, 16), + }, + "> ul > li p": my(em(12, 16)), + "> ul > li > p:first-child": { + marginTop: em(20, 16), + }, + "> ul > li > p:last-child": { + marginBottom: em(20, 16), + }, + "> ol > li > p:first-child": { + marginTop: em(20, 16), + }, + "> ol > li > p:last-child": { + marginBottom: em(20, 16), + }, + "ul ul, ul ol, ol ul, ol ol": my(em(12, 16)), + dl: my(em(20, 16)), + dt: { + marginTop: em(20, 16), + }, + dd: { + marginTop: em(8, 16), + paddingInlineStart: em(26, 16), + }, + hr: my(em(48, 16)), + table: { + fontSize: em(14, 16), + lineHeight: round(24 / 14), + }, + "thead th": { + paddingInlineEnd: em(8, 14), + paddingBottom: em(8, 14), + paddingInlineStart: em(8, 14), + }, + "tbody td, tfoot td": { + paddingTop: em(8, 14), + paddingInlineEnd: em(8, 14), + paddingBottom: em(8, 14), + paddingInlineStart: em(8, 14), + }, + figure: my(em(32, 16)), + figcaption: { + fontSize: em(14, 16), + lineHeight: round(20 / 14), + marginTop: em(12, 14), + }, + }, + noChildMargin, + ], + }, + lg: { + css: [ + { + ...shared, + fontSize: rem(18), + lineHeight: round(32 / 18), + p: my(em(24, 18)), + '[class~="lead"]': { + fontSize: em(22, 18), + lineHeight: round(32 / 22), + ...my(em(24, 22)), + }, + blockquote: { + ...my(em(40, 24)), + paddingInlineStart: em(24, 24), + }, + h1: { + fontSize: em(48, 18), + marginTop: "0", + marginBottom: em(40, 48), + lineHeight: round(48 / 48), + }, + h2: { + fontSize: em(30, 18), + marginTop: em(56, 30), + marginBottom: em(32, 30), + lineHeight: round(40 / 30), + }, + h3: { + fontSize: em(24, 18), + marginTop: em(40, 24), + marginBottom: em(16, 24), + lineHeight: round(36 / 24), + }, + h4: { + marginTop: em(32, 18), + marginBottom: em(8, 18), + lineHeight: round(28 / 18), + }, + img: my(em(32, 18)), + picture: my(em(32, 18)), + video: my(em(32, 18)), + kbd: { + fontSize: em(16, 18), + borderRadius: rem(5), + paddingTop: em(4, 18), + paddingInlineEnd: em(8, 18), + paddingBottom: em(4, 18), + paddingInlineStart: em(8, 18), + }, + code: { + fontSize: em(16, 18), + }, + "h2 code": { + fontSize: em(26, 30), + }, + "h3 code": { + fontSize: em(21, 24), + }, + pre: { + fontSize: em(16, 18), + lineHeight: round(28 / 16), + ...my(em(32, 16)), + borderRadius: rem(6), + paddingTop: em(16, 16), + paddingInlineEnd: em(24, 16), + paddingBottom: em(16, 16), + paddingInlineStart: em(24, 16), + }, + ol: { + ...my(em(24, 18)), + paddingInlineStart: em(28, 18), + }, + ul: { + ...my(em(24, 18)), + paddingInlineStart: em(28, 18), + }, + li: my(em(12, 18)), + "ol > li": { + paddingInlineStart: em(8, 18), + }, + "ul > li": { + paddingInlineStart: em(8, 18), + }, + "> ul > li p": my(em(16, 18)), + "> ul > li > p:first-child": { + marginTop: em(24, 18), + }, + "> ul > li > p:last-child": { + marginBottom: em(24, 18), + }, + "> ol > li > p:first-child": { + marginTop: em(24, 18), + }, + "> ol > li > p:last-child": { + marginBottom: em(24, 18), + }, + "ul ul, ul ol, ol ul, ol ol": my(em(16, 18)), + dl: my(em(24, 18)), + dt: { + marginTop: em(24, 18), + }, + dd: { + marginTop: em(12, 18), + paddingInlineStart: em(28, 18), + }, + hr: my(em(56, 18)), + table: { + fontSize: em(16, 18), + lineHeight: round(24 / 16), + }, + "thead th": { + paddingInlineEnd: em(12, 16), + paddingBottom: em(12, 16), + paddingInlineStart: em(12, 16), + }, + "tbody td, tfoot td": { + paddingTop: em(12, 16), + paddingInlineEnd: em(12, 16), + paddingBottom: em(12, 16), + paddingInlineStart: em(12, 16), + }, + figure: my(em(32, 18)), + figcaption: { + fontSize: em(16, 18), + lineHeight: round(24 / 16), + marginTop: em(16, 16), + }, + }, + noChildMargin, + ], + }, + xl: { + css: [ + { + ...shared, + fontSize: rem(20), + lineHeight: round(36 / 20), + p: my(em(24, 20)), + '[class~="lead"]': { + fontSize: em(24, 20), + lineHeight: round(36 / 24), + ...my(em(24, 24)), + }, + blockquote: { + ...my(em(48, 30)), + paddingInlineStart: em(32, 30), + }, + h1: { + fontSize: em(56, 20), + marginTop: "0", + marginBottom: em(48, 56), + lineHeight: round(56 / 56), + }, + h2: { + fontSize: em(36, 20), + marginTop: em(56, 36), + marginBottom: em(32, 36), + lineHeight: round(40 / 36), + }, + h3: { + fontSize: em(30, 20), + marginTop: em(48, 30), + marginBottom: em(20, 30), + lineHeight: round(40 / 30), + }, + h4: { + marginTop: em(36, 20), + marginBottom: em(12, 20), + lineHeight: round(32 / 20), + }, + img: my(em(40, 20)), + picture: my(em(40, 20)), + video: my(em(40, 20)), + kbd: { + fontSize: em(18, 20), + borderRadius: rem(5), + paddingTop: em(5, 20), + paddingInlineEnd: em(8, 20), + paddingBottom: em(5, 20), + paddingInlineStart: em(8, 20), + }, + code: { + fontSize: em(18, 20), + }, + "h2 code": { + fontSize: em(31, 36), + }, + "h3 code": { + fontSize: em(27, 30), + }, + pre: { + fontSize: em(18, 20), + lineHeight: round(32 / 18), + ...my(em(36, 18)), + borderRadius: rem(8), + paddingTop: em(20, 18), + paddingInlineEnd: em(24, 18), + paddingBottom: em(20, 18), + paddingInlineStart: em(24, 18), + }, + ol: { + ...my(em(24, 20)), + paddingInlineStart: em(32, 20), + }, + ul: { + ...my(em(24, 20)), + paddingInlineStart: em(32, 20), + }, + li: my(em(12, 20)), + "ol > li": { + paddingInlineStart: em(8, 20), + }, + "ul > li": { + paddingInlineStart: em(8, 20), + }, + "> ul > li p": my(em(16, 20)), + "> ul > li > p:first-child": { + marginTop: em(24, 20), + }, + "> ul > li > p:last-child": { + marginBottom: em(24, 20), + }, + "> ol > li > p:first-child": { + marginTop: em(24, 20), + }, + "> ol > li > p:last-child": { + marginBottom: em(24, 20), + }, + "ul ul, ul ol, ol ul, ol ol": { + ...my(em(16, 20)), + }, + dl: my(em(24, 20)), + dt: { + marginTop: em(24, 20), + }, + dd: { + marginTop: em(12, 20), + paddingInlineStart: em(32, 20), + }, + hr: my(em(56, 20)), + table: { + fontSize: em(18, 20), + lineHeight: round(28 / 18), + }, + "thead th": { + paddingInlineEnd: em(12, 18), + paddingBottom: em(16, 18), + paddingInlineStart: em(12, 18), + }, + "tbody td, tfoot td": { + paddingTop: em(16, 18), + paddingInlineEnd: em(12, 18), + paddingBottom: em(16, 18), + paddingInlineStart: em(12, 18), + }, + figure: my(em(40, 20)), + figcaption: { + fontSize: em(18, 20), + lineHeight: round(28 / 18), + marginTop: em(18, 18), + }, + }, + noChildMargin, + ], + }, + "2xl": { + css: [ + { + ...shared, + fontSize: rem(24), + lineHeight: round(40 / 24), + p: my(em(32, 24)), + '[class~="lead"]': { + fontSize: em(30, 24), + lineHeight: round(44 / 30), + ...my(em(32, 30)), + }, + blockquote: { + ...my(em(64, 36)), + paddingInlineStart: em(40, 36), + }, + h1: { + fontSize: em(64, 24), + marginTop: "0", + marginBottom: em(56, 64), + lineHeight: round(64 / 64), + }, + h2: { + fontSize: em(48, 24), + marginTop: em(72, 48), + marginBottom: em(40, 48), + lineHeight: round(52 / 48), + }, + h3: { + fontSize: em(36, 24), + marginTop: em(56, 36), + marginBottom: em(24, 36), + lineHeight: round(44 / 36), + }, + h4: { + marginTop: em(40, 24), + marginBottom: em(16, 24), + lineHeight: round(36 / 24), + }, + img: my(em(48, 24)), + picture: my(em(48, 24)), + video: my(em(48, 24)), + kbd: { + fontSize: em(20, 24), + borderRadius: rem(6), + paddingTop: em(6, 24), + paddingInlineEnd: em(8, 24), + paddingBottom: em(6, 24), + paddingInlineStart: em(8, 24), + }, + code: { + fontSize: em(20, 24), + }, + "h2 code": { + fontSize: em(42, 48), + }, + "h3 code": { + fontSize: em(32, 36), + }, + pre: { + fontSize: em(20, 24), + lineHeight: round(36 / 20), + ...my(em(40, 20)), + borderRadius: rem(8), + paddingTop: em(24, 20), + paddingInlineEnd: em(32, 20), + paddingBottom: em(24, 20), + paddingInlineStart: em(32, 20), + }, + ol: { + ...my(em(32, 24)), + paddingInlineStart: em(38, 24), + }, + ul: { + ...my(em(32, 24)), + paddingInlineStart: em(38, 24), + }, + li: my(em(12, 24)), + "ol > li": { + paddingInlineStart: em(10, 24), + }, + "ul > li": { + paddingInlineStart: em(10, 24), + }, + "> ul > li p": my(em(20, 24)), + "> ul > li > p:first-child": { + marginTop: em(32, 24), + }, + "> ul > li > p:last-child": { + marginBottom: em(32, 24), + }, + "> ol > li > p:first-child": { + marginTop: em(32, 24), + }, + "> ol > li > p:last-child": { + marginBottom: em(32, 24), + }, + "ul ul, ul ol, ol ul, ol ol": { + ...my(em(16, 24)), + }, + dl: my(em(32, 24)), + dt: { + marginTop: em(32, 24), + }, + dd: { + marginTop: em(12, 24), + paddingInlineStart: em(38, 24), + }, + hr: my(em(72, 24)), + table: { + fontSize: em(20, 24), + lineHeight: round(28 / 20), + }, + "thead th": { + paddingInlineEnd: em(12, 20), + paddingBottom: em(16, 20), + paddingInlineStart: em(12, 20), + }, + "tbody td, tfoot td": { + paddingTop: em(16, 20), + paddingInlineEnd: em(12, 20), + paddingBottom: em(16, 20), + paddingInlineStart: em(12, 20), + }, + figure: my(em(48, 24)), + figcaption: { + fontSize: em(20, 24), + lineHeight: round(32 / 20), + marginTop: em(20, 20), + }, + }, + noChildMargin, + ], + }, + + // Gray color themes + + slate: { + css: { + "--tw-prose-body": colors.slate[700], + "--tw-prose-headings": colors.slate[900], + "--tw-prose-lead": colors.slate[600], + "--tw-prose-links": colors.slate[900], + "--tw-prose-bold": colors.slate[900], + "--tw-prose-counters": colors.slate[500], + "--tw-prose-bullets": colors.slate[300], + "--tw-prose-hr": colors.slate[200], + "--tw-prose-quotes": colors.slate[900], + "--tw-prose-quote-borders": colors.slate[200], + "--tw-prose-captions": colors.slate[500], + "--tw-prose-kbd": colors.slate[900], + "--tw-prose-kbd-shadows": hexToRgb(colors.slate[900]), + "--tw-prose-code": colors.slate[900], + "--tw-prose-pre-code": colors.slate[200], + "--tw-prose-pre-bg": colors.slate[800], + "--tw-prose-th-borders": colors.slate[300], + "--tw-prose-td-borders": colors.slate[200], + "--tw-prose-invert-body": colors.slate[300], + "--tw-prose-invert-headings": colors.white, + "--tw-prose-invert-lead": colors.slate[400], + "--tw-prose-invert-links": colors.white, + "--tw-prose-invert-bold": colors.white, + "--tw-prose-invert-counters": colors.slate[400], + "--tw-prose-invert-bullets": colors.slate[600], + "--tw-prose-invert-hr": colors.slate[700], + "--tw-prose-invert-quotes": colors.slate[100], + "--tw-prose-invert-quote-borders": colors.slate[700], + "--tw-prose-invert-captions": colors.slate[400], + "--tw-prose-invert-kbd": colors.white, + "--tw-prose-invert-kbd-shadows": hexToRgb(colors.white), + "--tw-prose-invert-code": colors.white, + "--tw-prose-invert-pre-code": colors.slate[300], + "--tw-prose-invert-pre-bg": "rgb(0 0 0 / 50%)", + "--tw-prose-invert-th-borders": colors.slate[600], + "--tw-prose-invert-td-borders": colors.slate[700], + }, + }, + gray: { + css: { + "--tw-prose-body": colors.gray[700], + "--tw-prose-headings": colors.gray[900], + "--tw-prose-lead": colors.gray[600], + "--tw-prose-links": colors.gray[900], + "--tw-prose-bold": colors.gray[900], + "--tw-prose-counters": colors.gray[500], + "--tw-prose-bullets": colors.gray[300], + "--tw-prose-hr": colors.gray[200], + "--tw-prose-quotes": colors.gray[900], + "--tw-prose-quote-borders": colors.gray[200], + "--tw-prose-captions": colors.gray[500], + "--tw-prose-kbd": colors.gray[900], + "--tw-prose-kbd-shadows": hexToRgb(colors.gray[900]), + "--tw-prose-code": colors.gray[900], + "--tw-prose-pre-code": colors.gray[200], + "--tw-prose-pre-bg": colors.gray[800], + "--tw-prose-th-borders": colors.gray[300], + "--tw-prose-td-borders": colors.gray[200], + "--tw-prose-invert-body": colors.gray[300], + "--tw-prose-invert-headings": colors.white, + "--tw-prose-invert-lead": colors.gray[400], + "--tw-prose-invert-links": colors.white, + "--tw-prose-invert-bold": colors.white, + "--tw-prose-invert-counters": colors.gray[400], + "--tw-prose-invert-bullets": colors.gray[600], + "--tw-prose-invert-hr": colors.gray[700], + "--tw-prose-invert-quotes": colors.gray[100], + "--tw-prose-invert-quote-borders": colors.gray[700], + "--tw-prose-invert-captions": colors.gray[400], + "--tw-prose-invert-kbd": colors.white, + "--tw-prose-invert-kbd-shadows": hexToRgb(colors.white), + "--tw-prose-invert-code": colors.white, + "--tw-prose-invert-pre-code": colors.gray[300], + "--tw-prose-invert-pre-bg": "rgb(0 0 0 / 50%)", + "--tw-prose-invert-th-borders": colors.gray[600], + "--tw-prose-invert-td-borders": colors.gray[700], + }, + }, + + zinc: { + css: { + "--tw-prose-body": colors.zinc[700], + "--tw-prose-headings": colors.zinc[900], + "--tw-prose-lead": colors.zinc[600], + "--tw-prose-links": colors.zinc[900], + "--tw-prose-bold": colors.zinc[900], + "--tw-prose-counters": colors.zinc[500], + "--tw-prose-bullets": colors.zinc[300], + "--tw-prose-hr": colors.zinc[200], + "--tw-prose-quotes": colors.zinc[900], + "--tw-prose-quote-borders": colors.zinc[200], + "--tw-prose-captions": colors.zinc[500], + "--tw-prose-kbd": colors.zinc[900], + "--tw-prose-kbd-shadows": hexToRgb(colors.zinc[900]), + "--tw-prose-code": colors.zinc[900], + "--tw-prose-pre-code": colors.zinc[200], + "--tw-prose-pre-bg": colors.zinc[800], + "--tw-prose-th-borders": colors.zinc[300], + "--tw-prose-td-borders": colors.zinc[200], + "--tw-prose-invert-body": colors.zinc[300], + "--tw-prose-invert-headings": colors.white, + "--tw-prose-invert-lead": colors.zinc[400], + "--tw-prose-invert-links": colors.white, + "--tw-prose-invert-bold": colors.white, + "--tw-prose-invert-counters": colors.zinc[400], + "--tw-prose-invert-bullets": colors.zinc[600], + "--tw-prose-invert-hr": colors.zinc[700], + "--tw-prose-invert-quotes": colors.zinc[100], + "--tw-prose-invert-quote-borders": colors.zinc[700], + "--tw-prose-invert-captions": colors.zinc[400], + "--tw-prose-invert-kbd": colors.white, + "--tw-prose-invert-kbd-shadows": hexToRgb(colors.white), + "--tw-prose-invert-code": colors.white, + "--tw-prose-invert-pre-code": colors.zinc[300], + "--tw-prose-invert-pre-bg": "rgb(0 0 0 / 50%)", + "--tw-prose-invert-th-borders": colors.zinc[600], + "--tw-prose-invert-td-borders": colors.zinc[700], + }, + }, + + neutral: { + css: { + "--tw-prose-body": colors.neutral[700], + "--tw-prose-headings": colors.neutral[900], + "--tw-prose-lead": colors.neutral[600], + "--tw-prose-links": colors.neutral[900], + "--tw-prose-bold": colors.neutral[900], + "--tw-prose-counters": colors.neutral[500], + "--tw-prose-bullets": colors.neutral[300], + "--tw-prose-hr": colors.neutral[200], + "--tw-prose-quotes": colors.neutral[900], + "--tw-prose-quote-borders": colors.neutral[200], + "--tw-prose-captions": colors.neutral[500], + "--tw-prose-kbd": colors.neutral[900], + "--tw-prose-kbd-shadows": hexToRgb(colors.neutral[900]), + "--tw-prose-code": colors.neutral[900], + "--tw-prose-pre-code": colors.neutral[200], + "--tw-prose-pre-bg": colors.neutral[800], + "--tw-prose-th-borders": colors.neutral[300], + "--tw-prose-td-borders": colors.neutral[200], + "--tw-prose-invert-body": colors.neutral[300], + "--tw-prose-invert-headings": colors.white, + "--tw-prose-invert-lead": colors.neutral[400], + "--tw-prose-invert-links": colors.white, + "--tw-prose-invert-bold": colors.white, + "--tw-prose-invert-counters": colors.neutral[400], + "--tw-prose-invert-bullets": colors.neutral[600], + "--tw-prose-invert-hr": colors.neutral[700], + "--tw-prose-invert-quotes": colors.neutral[100], + "--tw-prose-invert-quote-borders": colors.neutral[700], + "--tw-prose-invert-captions": colors.neutral[400], + "--tw-prose-invert-kbd": colors.white, + "--tw-prose-invert-kbd-shadows": hexToRgb(colors.white), + "--tw-prose-invert-code": colors.white, + "--tw-prose-invert-pre-code": colors.neutral[300], + "--tw-prose-invert-pre-bg": "rgb(0 0 0 / 50%)", + "--tw-prose-invert-th-borders": colors.neutral[600], + "--tw-prose-invert-td-borders": colors.neutral[700], + }, + }, + + stone: { + css: { + "--tw-prose-body": colors.stone[700], + "--tw-prose-headings": colors.stone[900], + "--tw-prose-lead": colors.stone[600], + "--tw-prose-links": colors.stone[900], + "--tw-prose-bold": colors.stone[900], + "--tw-prose-counters": colors.stone[500], + "--tw-prose-bullets": colors.stone[300], + "--tw-prose-hr": colors.stone[200], + "--tw-prose-quotes": colors.stone[900], + "--tw-prose-quote-borders": colors.stone[200], + "--tw-prose-captions": colors.stone[500], + "--tw-prose-kbd": colors.stone[900], + "--tw-prose-kbd-shadows": hexToRgb(colors.stone[900]), + "--tw-prose-code": colors.stone[900], + "--tw-prose-pre-code": colors.stone[200], + "--tw-prose-pre-bg": colors.stone[800], + "--tw-prose-th-borders": colors.stone[300], + "--tw-prose-td-borders": colors.stone[200], + "--tw-prose-invert-body": colors.stone[300], + "--tw-prose-invert-headings": colors.white, + "--tw-prose-invert-lead": colors.stone[400], + "--tw-prose-invert-links": colors.white, + "--tw-prose-invert-bold": colors.white, + "--tw-prose-invert-counters": colors.stone[400], + "--tw-prose-invert-bullets": colors.stone[600], + "--tw-prose-invert-hr": colors.stone[700], + "--tw-prose-invert-quotes": colors.stone[100], + "--tw-prose-invert-quote-borders": colors.stone[700], + "--tw-prose-invert-captions": colors.stone[400], + "--tw-prose-invert-kbd": colors.white, + "--tw-prose-invert-kbd-shadows": hexToRgb(colors.white), + "--tw-prose-invert-code": colors.white, + "--tw-prose-invert-pre-code": colors.stone[300], + "--tw-prose-invert-pre-bg": "rgb(0 0 0 / 50%)", + "--tw-prose-invert-th-borders": colors.stone[600], + "--tw-prose-invert-td-borders": colors.stone[700], + }, + }, + + // Link-only themes (for backward compatibility) + + red: { + css: { + "--tw-prose-links": colors.red[600], + "--tw-prose-invert-links": colors.red[500], + }, + }, + + orange: { + css: { + "--tw-prose-links": colors.orange[600], + "--tw-prose-invert-links": colors.orange[500], + }, + }, + + amber: { + css: { + "--tw-prose-links": colors.amber[600], + "--tw-prose-invert-links": colors.amber[500], + }, + }, + + yellow: { + css: { + "--tw-prose-links": colors.yellow[600], + "--tw-prose-invert-links": colors.yellow[500], + }, + }, + + lime: { + css: { + "--tw-prose-links": colors.lime[600], + "--tw-prose-invert-links": colors.lime[500], + }, + }, + + green: { + css: { + "--tw-prose-links": colors.green[600], + "--tw-prose-invert-links": colors.green[500], + }, + }, + + emerald: { + css: { + "--tw-prose-links": colors.emerald[600], + "--tw-prose-invert-links": colors.emerald[500], + }, + }, + + teal: { + css: { + "--tw-prose-links": colors.teal[600], + "--tw-prose-invert-links": colors.teal[500], + }, + }, + + cyan: { + css: { + "--tw-prose-links": colors.cyan[600], + "--tw-prose-invert-links": colors.cyan[500], + }, + }, + + sky: { + css: { + "--tw-prose-links": colors.sky[600], + "--tw-prose-invert-links": colors.sky[500], + }, + }, + + blue: { + css: { + "--tw-prose-links": colors.blue[600], + "--tw-prose-invert-links": colors.blue[500], + }, + }, + + indigo: { + css: { + "--tw-prose-links": colors.indigo[600], + "--tw-prose-invert-links": colors.indigo[500], + }, + }, + + violet: { + css: { + "--tw-prose-links": colors.violet[600], + "--tw-prose-invert-links": colors.violet[500], + }, + }, + + purple: { + css: { + "--tw-prose-links": colors.purple[600], + "--tw-prose-invert-links": colors.purple[500], + }, + }, + + fuchsia: { + css: { + "--tw-prose-links": colors.fuchsia[600], + "--tw-prose-invert-links": colors.fuchsia[500], + }, + }, + + pink: { + css: { + "--tw-prose-links": colors.pink[600], + "--tw-prose-invert-links": colors.pink[500], + }, + }, + + rose: { + css: { + "--tw-prose-links": colors.rose[600], + "--tw-prose-invert-links": colors.rose[500], + }, + }, + + // Invert (for dark mode) + invert: { + css: { + "--tw-prose-body": "var(--tw-prose-invert-body)", + "--tw-prose-headings": "var(--tw-prose-invert-headings)", + "--tw-prose-lead": "var(--tw-prose-invert-lead)", + "--tw-prose-links": "var(--tw-prose-invert-links)", + "--tw-prose-bold": "var(--tw-prose-invert-bold)", + "--tw-prose-counters": "var(--tw-prose-invert-counters)", + "--tw-prose-bullets": "var(--tw-prose-invert-bullets)", + "--tw-prose-hr": "var(--tw-prose-invert-hr)", + "--tw-prose-quotes": "var(--tw-prose-invert-quotes)", + "--tw-prose-quote-borders": "var(--tw-prose-invert-quote-borders)", + "--tw-prose-captions": "var(--tw-prose-invert-captions)", + "--tw-prose-kbd": "var(--tw-prose-invert-kbd)", + "--tw-prose-kbd-shadows": "var(--tw-prose-invert-kbd-shadows)", + "--tw-prose-code": "var(--tw-prose-invert-code)", + "--tw-prose-pre-code": "var(--tw-prose-invert-pre-code)", + "--tw-prose-pre-bg": "var(--tw-prose-invert-pre-bg)", + "--tw-prose-th-borders": "var(--tw-prose-invert-th-borders)", + "--tw-prose-td-borders": "var(--tw-prose-invert-td-borders)", + }, + }, +}; + +const styles = { + DEFAULT: { + css: [ + { + color: "var(--tw-prose-body)", + maxWidth: "65ch", + p: {}, // Required to maintain correct order when merging + '[class~="lead"]': { + color: "var(--tw-prose-lead)", + }, + a: { + color: "var(--tw-prose-links)", + textDecoration: "underline", + fontWeight: "500", + }, + strong: { + color: "var(--tw-prose-bold)", + fontWeight: "600", + }, + "a strong": { + color: "inherit", + }, + "blockquote strong": { + color: "inherit", + }, + "thead th strong": { + color: "inherit", + }, + ol: { + listStyleType: "decimal", + }, + 'ol[type="A"]': { + listStyleType: "upper-alpha", + }, + 'ol[type="a"]': { + listStyleType: "lower-alpha", + }, + 'ol[type="A" s]': { + listStyleType: "upper-alpha", + }, + 'ol[type="a" s]': { + listStyleType: "lower-alpha", + }, + 'ol[type="I"]': { + listStyleType: "upper-roman", + }, + 'ol[type="i"]': { + listStyleType: "lower-roman", + }, + 'ol[type="I" s]': { + listStyleType: "upper-roman", + }, + 'ol[type="i" s]': { + listStyleType: "lower-roman", + }, + 'ol[type="1"]': { + listStyleType: "decimal", + }, + ul: { + listStyleType: "disc", + }, + "ol > li::marker": { + fontWeight: "400", + color: "var(--tw-prose-counters)", + }, + "ul > li::marker": { + color: "var(--tw-prose-bullets)", + }, + dt: { + color: "var(--tw-prose-headings)", + fontWeight: "600", + }, + hr: { + borderColor: "var(--tw-prose-hr)", + borderTopWidth: 1, + }, + blockquote: { + fontWeight: "500", + fontStyle: "italic", + color: "var(--tw-prose-quotes)", + borderInlineStartWidth: "0.25rem", + borderInlineStartColor: "var(--tw-prose-quote-borders)", + quotes: String.raw`"\201C""\201D""\2018""\2019"`, + }, + "blockquote p:first-of-type::before": { + content: "open-quote", + }, + "blockquote p:last-of-type::after": { + content: "close-quote", + }, + h1: { + color: "var(--tw-prose-headings)", + fontWeight: "800", + }, + "h1 strong": { + fontWeight: "900", + color: "inherit", + }, + h2: { + color: "var(--tw-prose-headings)", + fontWeight: "700", + }, + "h2 strong": { + fontWeight: "800", + color: "inherit", + }, + h3: { + color: "var(--tw-prose-headings)", + fontWeight: "600", + }, + "h3 strong": { + fontWeight: "700", + color: "inherit", + }, + h4: { + color: "var(--tw-prose-headings)", + fontWeight: "600", + }, + "h4 strong": { + fontWeight: "700", + color: "inherit", + }, + img: {}, // Required to maintain correct order when merging + picture: { + display: "block", + }, + video: {}, // Required to maintain correct order when merging + kbd: { + fontWeight: "500", + fontFamily: "inherit", + color: "var(--tw-prose-kbd)", + boxShadow: + "0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%)", + }, + code: { + color: "var(--tw-prose-code)", + fontWeight: "600", + }, + "code::before": { + content: '"`"', + }, + "code::after": { + content: '"`"', + }, + "a code": { + color: "inherit", + }, + "h1 code": { + color: "inherit", + }, + "h2 code": { + color: "inherit", + }, + "h3 code": { + color: "inherit", + }, + "h4 code": { + color: "inherit", + }, + "blockquote code": { + color: "inherit", + }, + "thead th code": { + color: "inherit", + }, + pre: { + color: "var(--tw-prose-pre-code)", + backgroundColor: "var(--tw-prose-pre-bg)", + overflowX: "auto", + fontWeight: "400", + }, + "pre code": { + backgroundColor: "transparent", + borderWidth: "0", + borderRadius: "0", + padding: "0", + fontWeight: "inherit", + color: "inherit", + fontSize: "inherit", + fontFamily: "inherit", + lineHeight: "inherit", + }, + "pre code::before": { + content: "none", + }, + "pre code::after": { + content: "none", + }, + table: { + width: "100%", + tableLayout: "auto", + ...my(em(32, 16)), + }, + thead: { + borderBottomWidth: "1px", + borderBottomColor: "var(--tw-prose-th-borders)", + }, + "thead th": { + color: "var(--tw-prose-headings)", + fontWeight: "600", + verticalAlign: "bottom", + }, + "tbody tr": { + borderBottomWidth: "1px", + borderBottomColor: "var(--tw-prose-td-borders)", + }, + "tbody tr:last-child": { + borderBottomWidth: "0", + }, + "tbody td": { + verticalAlign: "baseline", + }, + tfoot: { + borderTopWidth: "1px", + borderTopColor: "var(--tw-prose-th-borders)", + }, + "tfoot td": { + verticalAlign: "top", + }, + "th, td": { + textAlign: "start", + }, + "figure > *": {}, // Required to maintain correct order when merging + figcaption: { + color: "var(--tw-prose-captions)", + }, + }, + defaultModifiers.gray.css, + ...defaultModifiers.base.css, + ], + }, + ...defaultModifiers, +}; + +function commonTrailingPseudos(selector: string) { + const ast = parseSelector.astSync(selector); + + const matrix: Pseudo[][] = []; + + // Put the pseudo elements in reverse order in a sparse, column-major 2D array + for (const [i, sel] of ast.nodes.entries()) { + for (const [j, child] of [...sel.nodes].reverse().entries()) { + // We only care about pseudo elements + if (child.type !== "pseudo" || !child.value.startsWith("::")) { + break; + } + + matrix[j] = matrix[j] || []; + matrix[j][i] = child; + } + } + + // @ts-expect-error optional argument + const trailingPseudos = parser.selector(); + + // At this point the pseudo elements are in a column-major 2D array + // This means each row contains one "column" of pseudo elements from each selector + // We can compare all the pseudo elements in a row to see if they are the same + for (const pseudos of matrix) { + // It's a sparse 2D array so there are going to be holes in the rows + // We skip those + if (!pseudos) { + continue; + } + + const values = new Set(pseudos.map(p => p.value)); + + // The pseudo elements are not the same + if (values.size > 1) { + break; + } + + pseudos.forEach(pseudo => pseudo.remove()); + trailingPseudos.prepend(pseudos[0]); + } + + if (trailingPseudos.nodes.length) { + return [trailingPseudos.toString(), ast.toString()]; + } + + return [null, selector]; +} + +const computed = { + // Reserved for future "magic properties", for example: + // bulletColor: (color) => ({ 'ul > li::before': { backgroundColor: color } }), +}; + +function inWhere( + selector: string, + { + className, + modifier, + prefix, + }: { + className: string; + modifier?: string; + prefix(className: string): string; + } +) { + const prefixedNot = prefix(`.not-${className}`).slice(1); + const selectorPrefix = selector.startsWith(">") + ? `${modifier === "DEFAULT" ? `.${className}` : `.${className}-${modifier}`} ` + : ""; + + // Parse the selector, if every component ends in the same pseudo element(s) then move it to the end + const [trailingPseudo, rebuiltSelector] = commonTrailingPseudos(selector); + + if (trailingPseudo) { + return `:where(${selectorPrefix}${rebuiltSelector}):not(:where([class~="${prefixedNot}"],[class~="${prefixedNot}"] *))${trailingPseudo}`; + } + + return `:where(${selectorPrefix}${selector}):not(:where([class~="${prefixedNot}"],[class~="${prefixedNot}"] *))`; +} + +function isObject(value: any): value is Record { + return typeof value === "object" && value !== null; +} + +function configToCss( + config: any = {}, + { + className, + modifier, + prefix, + }: { + className: string; + modifier: string; + prefix(className: string): string; + } +) { + function updateSelector( + k: string, + v: string + ): [string, string | Record, Record?] { + if (Array.isArray(v)) { + return [k, v]; + } + + if (isObject(v)) { + const nested = Object.values(v).some(isObject); + if (nested) { + return [ + inWhere(k, { className, modifier, prefix }), + v, + Object.fromEntries(Object.entries(v).map(([k, v]) => updateSelector(k, v))), + ]; + } + + return [inWhere(k, { className, modifier, prefix }), v]; + } + + return [k, v]; + } + + return Object.fromEntries( + Object.entries( + merge( + {}, + ...Object.keys(config) + .filter(key => (computed as any)[key]) + .map(key => (computed as any)[key](config[key])), + ...castArray(config.css || {}) + ) + ).map(([k, v]) => updateSelector(k, v as string)) + ); +} + +export default plugin.withOptions>( + ({ className = "prose" } = {}) => + // @ts-expect-error prefix untyped + function ({ addVariant, addComponents, theme, prefix }) { + const modifiers = theme("typography"); + const options = { className, prefix }; + + for (let [name, ...selectors] of [ + ["headings", "h1", "h2", "h3", "h4", "h5", "h6", "th"], + ["h1"], + ["h2"], + ["h3"], + ["h4"], + ["h5"], + ["h6"], + ["p"], + ["a"], + ["blockquote"], + ["figure"], + ["figcaption"], + ["strong"], + ["em"], + ["kbd"], + ["code"], + ["pre"], + ["ol"], + ["ul"], + ["li"], + ["table"], + ["thead"], + ["tr"], + ["th"], + ["td"], + ["img"], + ["video"], + ["hr"], + ["lead", '[class~="lead"]'], + ]) { + selectors = selectors.length === 0 ? [name] : selectors; + + const selector = selectors.join(", "); + + addVariant(`${className}-${name}`, `& :is(${inWhere(selector, options)})`); + } + + addComponents( + Object.entries(modifiers!).map(([modifier, value]) => ({ + [modifier === "DEFAULT" ? `.${className}` : `.${className}-${modifier}`]: + configToCss(value, { + className, + modifier, + prefix, + }), + })) + ); + }, + () => ({ + theme: { typography: styles }, + }) +); diff --git a/src/vite-plugin.ts b/src/vite-plugin.ts index 78d2efc..74361f6 100644 --- a/src/vite-plugin.ts +++ b/src/vite-plugin.ts @@ -1,6 +1,6 @@ import { dirname, join } from "node:path"; import type * as vite from "vite"; -import { type Compile, type StyleMap, macroName, pkgName } from "./shared"; +import { type Compile, type StyleMap, macroNames, pkgName } from "./shared"; import type { BuildStyleFile } from "./index"; const ROLLUP_PREFIX = "\0tailwind:"; @@ -16,8 +16,8 @@ export const vitePlugin = ({ }): vite.Plugin => ({ name: "tailwind", - configResolved(config) { - (config.optimizeDeps.exclude ?? []).push(macroName, `${pkgName}/base`); + config(config) { + ((config.optimizeDeps ?? {}).exclude ?? []).push(...macroNames, `${pkgName}/base`); }, resolveId(id, importer) { @@ -59,4 +59,4 @@ export const vitePlugin = ({ * `babel-plugin-macros` compatible `isMacrosName` function that works with this plugin. */ export const isMacrosName = (v: string) => - v !== macroName && /[./]macro(\.c?js)?$/.test(v); + !macroNames.includes(v) && /[./]macro(\.c?js)?$/.test(v);