From 1256ae4546be7ebc4f031dbaee0674790f43e47f Mon Sep 17 00:00:00 2001 From: Ryan Zayne Date: Sat, 7 Sep 2024 15:42:06 +0100 Subject: [PATCH] feat: added useAnimationRef hook --- .changeset/config.json | 2 +- eslint.config.js | 68 +- package.json | 26 +- pnpm-lock.yaml | 951 +++++++++++++----- src/core/createLocationStore.ts | 5 + .../hooks/effects/useAfterMountEffect.ts | 5 +- src/react/hooks/effects/useEffectOnce.ts | 5 +- src/react/hooks/effects/useLifeCycle.ts | 19 +- src/react/hooks/effects/useOnMountEffect.ts | 6 +- src/react/hooks/effects/useOnUnMountEffect.ts | 6 +- src/react/hooks/useAnimateElementRefs.ts | 76 ++ src/react/hooks/useAnimationInterval.ts | 1 + src/react/hooks/useCallbackRef.ts | 5 +- src/react/hooks/useDragScroll.ts | 3 +- src/react/hooks/useLocation.ts | 10 +- .../hooks/usePresence/useAnimationPresence.ts | 1 + .../usePresence/useTransitionPresence.ts | 1 + src/react/hooks/useStorageState.ts | 5 +- src/react/hooks/useStore.ts | 2 +- src/type-helpers/types/polymorphism.ts | 2 +- tsup.config.ts | 54 +- 21 files changed, 905 insertions(+), 348 deletions(-) create mode 100644 src/react/hooks/useAnimateElementRefs.ts diff --git a/.changeset/config.json b/.changeset/config.json index 971e8a4..cdf8cfc 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,7 +4,7 @@ "commit": false, "fixed": [], "linked": [], - "access": "restricted", + "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", "ignore": [] diff --git a/eslint.config.js b/eslint.config.js index cbec872..c253191 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,11 +1,13 @@ -/* eslint-disable jsdoc/check-tag-names */ /// +import eslintReact from "@eslint-react/eslint-plugin"; +import { fixupPluginRules } from "@eslint/compat"; import eslintJs from "@eslint/js"; import eslintStylistic from "@stylistic/eslint-plugin"; import eslintImportX from "eslint-plugin-import-x"; import eslintJsdoc from "eslint-plugin-jsdoc"; import eslintPerfectionist from "eslint-plugin-perfectionist"; +import eslintReactHooks from "eslint-plugin-react-hooks"; import eslintUnicorn from "eslint-plugin-unicorn"; import typegen from "eslint-typegen"; import globals from "globals"; @@ -28,12 +30,14 @@ const augumentedTypegen = (...args) => typegen(...args); const eslintConfigArray = augumentedTypegen([ // == Global Options { - ignores: ["dist/**", "build/**", "eslint-typegen.d.ts", "config/**"], + ignores: ["dist/**", "build/**", "eslint-typegen.d.ts", "config/**", "eslint.config.js"], name: "zayne/defaults/ignores", }, { languageOptions: { + ecmaVersion: "latest", + globals: { ...globals.browser, ...globals.node, @@ -44,6 +48,8 @@ const eslintConfigArray = augumentedTypegen([ project: "config/tsconfig.eslint.json", tsconfigRootDir: import.meta.dirname, }, + + sourceType: "module", }, name: "zayne/defaults/languageOptions", @@ -384,17 +390,49 @@ const eslintConfigArray = augumentedTypegen([ }, }, - // == Import rules (Important) + // == React Rules { - languageOptions: { - parserOptions: eslintImportX.configs.react.parserOptions, + name: "zayne/@eslint-react", + plugins: { + ...eslintReact.configs["recommended-type-checked"].plugins, + "react-hooks": fixupPluginRules(eslintReactHooks), + }, + + rules: { + ...eslintReact.configs["recommended-type-checked"].rules, + "@eslint-react/avoid-shorthand-boolean": "error", + "@eslint-react/function-component-definition": "off", + "@eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks": "error", + "@eslint-react/hooks-extra/prefer-use-state-lazy-initialization": "error", + "@eslint-react/naming-convention/component-name": "warn", + "@eslint-react/naming-convention/use-state": "warn", + "@eslint-react/no-array-index-key": "error", + "@eslint-react/no-children-count": "off", + "@eslint-react/no-children-only": "off", + "@eslint-react/no-children-prop": "error", + "@eslint-react/no-children-to-array": "off", + "@eslint-react/no-clone-element": "off", + "@eslint-react/no-missing-component-display-name": "error", + "@eslint-react/prefer-destructuring-assignment": "error", + "@eslint-react/prefer-read-only-props": "off", + "@eslint-react/prefer-shorthand-fragment": "error", + + // Hook rules + "react-hooks/exhaustive-deps": "warn", + "react-hooks/rules-of-hooks": "error", }, + }, + + // == Import rules (Important) + { + ...eslintImportX.flatConfigs.recommended, + ...eslintImportX.flatConfigs.typescript, + name: "import-x/recommended", + }, + { name: "zayne/import-x", - plugins: { "import-x": eslintImportX }, rules: { - ...eslintImportX.configs.recommended.rules, - ...eslintImportX.configs.typescript.rules, "import-x/export": "error", "import-x/extensions": [ "error", @@ -418,10 +456,6 @@ const eslintConfigArray = augumentedTypegen([ "import-x/no-useless-path-segments": ["error", { commonjs: true }], "import-x/prefer-default-export": "off", }, - settings: { - ...eslintImportX.configs.typescript.settings, - ...eslintImportX.configs.react.settings, - }, }, // == Jsdoc rules (Nice to have) @@ -459,16 +493,6 @@ const eslintConfigArray = augumentedTypegen([ "unicorn/prevent-abbreviations": "off", }, }, - - // // == Sonarjs Rules (Optional) - // { ...eslintSonarJs.configs.recommended, name: "sonarjs/recommended" }, - // { - // name: "zayne/sonarjs", - // rules: { - // "sonarjs/no-duplicate-string": "off", - // "sonarjs/prefer-immediate-return": "off", - // }, - // }, ]); export default eslintConfigArray; diff --git a/package.json b/package.json index 8777219..631f29f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "test:attw": "attw --pack . --ignore-rules=cjs-resolves-to-esm", "test:release": "pkg-pr-new publish", "build": "tsup", - "build:dev": "tsup --watch", + "build:dev": "cross-env NODE_ENV=development tsup", "build:test": "concurrently --prefix-colors \"yellow.bold,#7da4f8.bold,magenta\" --names PUBLINT,TSUP,ATTW 'pnpm:test:publint' 'pnpm:build:dev'", "version-package": "changeset version", "release": "changeset publish", @@ -34,31 +34,37 @@ }, "devDependencies": { "@arethetypeswrong/cli": "^0.15.4", - "@changesets/cli": "^2.27.7", - "@total-typescript/ts-reset": "^0.5.1", + "@changesets/cli": "^2.27.8", + "@eslint-react/eslint-plugin": "^1.13.0", + "@eslint/compat": "^1.1.1", "@eslint/js": "^9.9.1", "@size-limit/esbuild-why": "^11.1.4", "@size-limit/preset-small-lib": "^11.1.4", "@stylistic/eslint-plugin": "^2.7.2", + "@total-typescript/ts-reset": "^0.6.1", + "@types/node": "^22.5.4", "@zayne-labs/tsconfig": "^0.1.1", "concurrently": "^8.2.2", + "cross-env": "^7.0.3", "eslint": "^9.9.1", - "eslint-plugin-import-x": "^4.1.1", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.2.1", "eslint-plugin-jsdoc": "^50.2.2", - "eslint-plugin-perfectionist": "^3.3.0", + "eslint-plugin-perfectionist": "^3.4.0", + "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-unicorn": "^55.0.0", "eslint-typegen": "^0.3.1", "globals": "^15.9.0", "husky": "^9.1.5", "lint-staged": "^15.2.10", - "pkg-pr-new": "^0.0.23", + "pkg-pr-new": "^0.0.24", "prettier": "^3.3.3", "publint": "^0.2.10", "size-limit": "^11.1.4", "terser": "^5.31.6", "tsup": "^8.2.4", "typescript": "5.5.4", - "typescript-eslint": "^8.3.0" + "typescript-eslint": "^8.4.0" }, "peerDependencies": { "@types/react": ">=18.0.0", @@ -91,15 +97,15 @@ ], "size-limit": [ { - "path": "./src/core/index.ts", + "path": "./dist/min/core/index.js", "limit": "3 kb" }, { - "path": "./src/react/index.ts", + "path": "./dist/min/react/index.js", "limit": "5 kb" }, { - "path": "./src/type-helpers/index.ts", + "path": "./dist/min/type-helpers/index.js", "limit": "500 b" } ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1cd7d38..0a5e8e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,14 @@ importers: specifier: ^0.15.4 version: 0.15.4 '@changesets/cli': - specifier: ^2.27.7 - version: 2.27.7 + specifier: ^2.27.8 + version: 2.27.8 + '@eslint-react/eslint-plugin': + specifier: ^1.13.0 + version: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 '@eslint/js': specifier: ^9.9.1 version: 9.9.1 @@ -37,26 +43,38 @@ importers: specifier: ^2.7.2 version: 2.7.2(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) '@total-typescript/ts-reset': - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^0.6.1 + version: 0.6.1 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 '@zayne-labs/tsconfig': specifier: ^0.1.1 version: 0.1.1 concurrently: specifier: ^8.2.2 version: 8.2.2 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 eslint: specifier: ^9.9.1 version: 9.9.1(jiti@1.21.6) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-import-x: - specifier: ^4.1.1 - version: 4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + specifier: ^4.2.1 + version: 4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) eslint-plugin-jsdoc: specifier: ^50.2.2 version: 50.2.2(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-perfectionist: - specifier: ^3.3.0 - version: 3.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@1.21.6))) + specifier: ^3.4.0 + version: 3.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@1.21.6))) + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-unicorn: specifier: ^55.0.0 version: 55.0.0(eslint@9.9.1(jiti@1.21.6)) @@ -73,8 +91,8 @@ importers: specifier: ^15.2.10 version: 15.2.10 pkg-pr-new: - specifier: ^0.0.23 - version: 0.0.23 + specifier: ^0.0.24 + version: 0.0.24 prettier: specifier: ^3.3.3 version: 3.3.3 @@ -89,13 +107,13 @@ importers: version: 5.31.6 tsup: specifier: ^8.2.4 - version: 8.2.4(jiti@1.21.6)(typescript@5.5.4)(yaml@2.5.0) + version: 8.2.4(jiti@1.21.6)(typescript@5.5.4)(yaml@2.5.1) typescript: specifier: 5.5.4 version: 5.5.4 typescript-eslint: - specifier: ^8.3.0 - version: 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + specifier: ^8.4.0 + version: 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) packages: @@ -131,51 +149,51 @@ packages: resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} - '@changesets/apply-release-plan@7.0.4': - resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} + '@changesets/apply-release-plan@7.0.5': + resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} - '@changesets/assemble-release-plan@6.0.3': - resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} + '@changesets/assemble-release-plan@6.0.4': + resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} '@changesets/changelog-git@0.2.0': resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - '@changesets/cli@2.27.7': - resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} + '@changesets/cli@2.27.8': + resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} hasBin: true - '@changesets/config@3.0.2': - resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} + '@changesets/config@3.0.3': + resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.1': - resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} + '@changesets/get-dependents-graph@2.1.2': + resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} - '@changesets/get-release-plan@4.0.3': - resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} + '@changesets/get-release-plan@4.0.4': + resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - '@changesets/git@3.0.0': - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + '@changesets/git@3.0.1': + resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} - '@changesets/logger@0.1.0': - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} '@changesets/parse@0.4.0': resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - '@changesets/pre@2.0.0': - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + '@changesets/pre@2.0.1': + resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} - '@changesets/read@0.6.0': - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + '@changesets/read@0.6.1': + resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} - '@changesets/should-skip-package@0.1.0': - resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + '@changesets/should-skip-package@0.1.1': + resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} @@ -183,8 +201,8 @@ packages: '@changesets/types@6.0.0': resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - '@changesets/write@0.3.1': - resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + '@changesets/write@0.3.2': + resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -486,6 +504,41 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-react/ast@1.13.0': + resolution: {integrity: sha512-xHXPwnomD3CCOuuTVYQzKngW1jJtU7vUcvO31zkdG2LrHOY8Sr5RSgH30bXDNgNDykW2BKB3XQZ8e5hTFv8Iyg==} + + '@eslint-react/core@1.13.0': + resolution: {integrity: sha512-UzaDnUAvT13Kfu2pCRzISDu+k8/imfE3hH9BjN6A0hmA2C5/hqZrpPxO4KDpx6U3VhEF7WVv8TmKa1ttpxnmoA==} + + '@eslint-react/eslint-plugin@1.13.0': + resolution: {integrity: sha512-RO2bX3rtR57tGI6CF2UQ57v3lcV/d36WMiQH6XPEYTJ3Pp3N0zo70B1HX0TzLBsJTdaygI1TIAmwbnJ+m3UCQA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + '@eslint-react/jsx@1.13.0': + resolution: {integrity: sha512-FTHYHtc7vYfoGv++/dj5Gsvwj8rsQ3R8znXuAA/76poSRLBYb9WVtc6um062NJcBv00xBBORNz6IGdGlFP2cDA==} + + '@eslint-react/shared@1.13.0': + resolution: {integrity: sha512-CVr3iKeFo+oDPoLB39mSRfZirUs5DY+4QaXfx01FNGqZGHlPCsW3NxYiWbgxc/1dkH7LDf2HA1/2TKVaf6zvlQ==} + + '@eslint-react/tools@1.13.0': + resolution: {integrity: sha512-KPiuuZVSCKDDGJX+ktrTYBcKQLXrEGaqDYbtBpS9m5qEQpV0C9wtFWDoZh92Bxw6K7hS9uBhT90w4enGH+wgNA==} + + '@eslint-react/types@1.13.0': + resolution: {integrity: sha512-Of1WmYWExaX9PoZOn7o8EVFYy/4J+lekr6DmF8GXupkKetlSquBfpDmqKbTi9E8XMWo0hHTYQhpDY1IbQCEF4w==} + + '@eslint-react/var@1.13.0': + resolution: {integrity: sha512-clZ7/uU5m5r1htjDECAv7RDDtj2UmP1/roUabtq/eqwT5vqvNNfQzH2AmttD4R476QrnKVJ51cQGK0a87mKyTA==} + + '@eslint/compat@1.1.1': + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -560,6 +613,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@octokit/action@6.1.0': resolution: {integrity: sha512-lo+nHx8kAV86bxvOVOI3vFjX3gXPd/L7guAUbvs3pUvnR2KC+R7yjBkA1uACt4gYhs4LcWP3AXSGQzsbeN2XXw==} engines: {node: '>= 18'} @@ -741,8 +798,8 @@ packages: peerDependencies: eslint: '>=8.40.0' - '@total-typescript/ts-reset@0.5.1': - resolution: {integrity: sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ==} + '@total-typescript/ts-reset@0.6.1': + resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==} '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} @@ -756,6 +813,9 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -768,8 +828,8 @@ packages: '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@typescript-eslint/eslint-plugin@8.3.0': - resolution: {integrity: sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==} + '@typescript-eslint/eslint-plugin@8.4.0': + resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -779,8 +839,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.3.0': - resolution: {integrity: sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==} + '@typescript-eslint/parser@8.4.0': + resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -789,12 +849,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.3.0': - resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} + '@typescript-eslint/scope-manager@8.4.0': + resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.3.0': - resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} + '@typescript-eslint/type-utils@8.4.0': + resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -802,12 +862,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.3.0': - resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} + '@typescript-eslint/types@8.4.0': + resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.3.0': - resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} + '@typescript-eslint/typescript-estree@8.4.0': + resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -815,14 +875,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.3.0': - resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} + '@typescript-eslint/utils@8.4.0': + resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.3.0': - resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} + '@typescript-eslint/visitor-keys@8.4.0': + resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@zayne-labs/tsconfig@0.1.1': @@ -904,6 +964,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birecord@0.1.1: + resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -951,8 +1014,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001655: - resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==} + caniuse-lite@1.0.30001658: + resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1066,6 +1129,11 @@ packages: core-js-compat@3.38.1: resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} @@ -1088,8 +1156,8 @@ packages: supports-color: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1138,8 +1206,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.13: - resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} + electron-to-chromium@1.5.17: + resolution: {integrity: sha512-Q6Q+04tjC2KJ8qsSOSgovvhWcv5t+SmpH6/YfAWmhpE5/r+zw6KQy1/yWVFFNyEBvy68twTTXr2d5eLfCq7QIw==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -1153,6 +1221,10 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -1197,8 +1269,42 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@4.1.1: - resolution: {integrity: sha512-dBEM8fACIFNt4H7GoOaRmnH6evJW6JSTJTYYgmRd3vI4geBTjgDM/JyUDKUwIw0HDSyI+u7Vs3vFRXUo/BOAtA==} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import-x@4.2.1: + resolution: {integrity: sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1209,8 +1315,8 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-perfectionist@3.3.0: - resolution: {integrity: sha512-sGgShkEqDBqIZ3WlenGHwLe1cl3vHKTfeh9b1XXAamaxSC7AY4Os0jdNCXnGJW4l0TlpismT5t2r7CXY7sfKlw==} + eslint-plugin-perfectionist@3.4.0: + resolution: {integrity: sha512-vXyd1sFg3H/7aKgBUie62bA6E0EN3Dh0LCD5r4vR/IYtTljxOnyckI1AV0Arw4eYjC/W9T1X04Pl2mdLsdWtMA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: astro-eslint-parser: ^1.0.2 @@ -1228,6 +1334,72 @@ packages: vue-eslint-parser: optional: true + eslint-plugin-react-debug@1.13.0: + resolution: {integrity: sha512-K+xhQ7SITeRUM+4exfzLuci11i13rLAB70zlinDuABB9YwhBQy+qXZFI1POrcvdrbjeLK0e86MrmUGTj4keSwQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-dom@1.13.0: + resolution: {integrity: sha512-tQelrWWOzVx5rYstPr9+jaqtdtG1bq/L6BBCiIKqSr3/FkrOqxfvAYbo0vMFZaOnNe38zJ/nDFrgkpf8Yuv9AQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-hooks-extra@1.13.0: + resolution: {integrity: sha512-hS46MAlqanqpfEmW6RwQjAl54Ympu3SSTK3TQte1UHAXxIIiuUKwcKkXNmdrElk5u6ZiXr81g8TEdEvtZ0MSZA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-naming-convention@1.13.0: + resolution: {integrity: sha512-82ydc4qGP8KxmmMxtazbUjd0ZwMYmoclZF7WcV0QT+JQyZkVrtnDrg7F5hS6RiM7recahR/PnXecIKFR7uPeMA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-web-api@1.13.0: + resolution: {integrity: sha512-kY0iICIhqZfSYOEPPl+coErzPoiExVhdhpGb9KobAZuS6io1DkUAwRQVpxdF+Ky0fkw9r0XzqKvHBYTYmLB9Uw==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-x@1.13.0: + resolution: {integrity: sha512-bqKXtCC4q/6xjUmjAbf+7a6rt/CWy2q7f01WINt7UY+xellRr6i2bXipIEWqGc0RtbTG339WjFjMgcvR+Uo8EA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + eslint-plugin-unicorn@55.0.0: resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} engines: {node: '>=18.18'} @@ -1359,9 +1531,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -1526,6 +1695,9 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-bun-module@1.1.0: + resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==} + is-core-module@2.15.1: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} @@ -1560,6 +1732,12 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-immutable-type@5.0.0: + resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} + peerDependencies: + eslint: '*' + typescript: '>=4.7.4' + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -1684,10 +1862,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -1786,9 +1960,6 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1919,6 +2090,9 @@ packages: package-manager-detector@0.1.2: resolution: {integrity: sha512-iePyefLTOm2gEzbaZKSW+eBMjg+UYsQvUKxmvGXAQ987K16efBg10MxIjZs08iyX+DY2/owKY9DIdu193kX33w==} + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1970,8 +2144,8 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -1994,12 +2168,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-pr-new@0.0.23: - resolution: {integrity: sha512-C+nrtIPEOfgTFrhPudcXP9ji9ZcHfZ2ma8FXFbY0YaGO2JvopGnFzKi2Yh9/8cuqnMwv84tRvkmzdaGTgKp24w==} + pkg-pr-new@0.0.24: + resolution: {integrity: sha512-jzHuU0HLHEh3jNHQD7yZhxXM8CV8W+qdR0Ii5cxwm+t73kAvyZ9DkcDP4X1ZarX6DGnoibuuSOgWKYtQbjWsRQ==} hasBin: true pkg-types@1.2.0: @@ -2027,10 +2197,6 @@ packages: yaml: optional: true - preferred-pm@3.1.4: - resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} - engines: {node: '>=10'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2191,6 +2357,10 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + short-unique-id@5.2.0: + resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} + hasBin: true + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2278,6 +2448,9 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-ts@2.2.0: + resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2347,6 +2520,10 @@ packages: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -2391,12 +2568,20 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-declaration-location@1.0.4: + resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} + peerDependencies: + typescript: '>=4.0.0' + ts-expose-internals-conditionally@1.0.0-empty.0: resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-pattern@5.3.1: + resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} + tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -2435,8 +2620,8 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - typescript-eslint@8.3.0: - resolution: {integrity: sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA==} + typescript-eslint@8.4.0: + resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2457,6 +2642,9 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici@6.19.8: resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} engines: {node: '>=18.17'} @@ -2508,10 +2696,6 @@ packages: whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which-pm@2.2.0: - resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} - engines: {node: '>=8.15'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -2547,8 +2731,8 @@ packages: yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} hasBin: true @@ -2611,7 +2795,7 @@ snapshots: '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + picocolors: 1.1.0 '@babel/helper-validator-identifier@7.24.7': {} @@ -2620,19 +2804,18 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 - '@changesets/apply-release-plan@7.0.4': + '@changesets/apply-release-plan@7.0.5': dependencies: - '@babel/runtime': 7.25.6 - '@changesets/config': 3.0.2 + '@changesets/config': 3.0.3 '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/should-skip-package': 0.1.0 + '@changesets/git': 3.0.1 + '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 @@ -2643,12 +2826,11 @@ snapshots: resolve-from: 5.0.0 semver: 7.6.3 - '@changesets/assemble-release-plan@6.0.3': + '@changesets/assemble-release-plan@6.0.4': dependencies: - '@babel/runtime': 7.25.6 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.1 - '@changesets/should-skip-package': 0.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.6.3 @@ -2657,46 +2839,44 @@ snapshots: dependencies: '@changesets/types': 6.0.0 - '@changesets/cli@2.27.7': + '@changesets/cli@2.27.8': dependencies: - '@babel/runtime': 7.25.6 - '@changesets/apply-release-plan': 7.0.4 - '@changesets/assemble-release-plan': 6.0.3 + '@changesets/apply-release-plan': 7.0.5 + '@changesets/assemble-release-plan': 6.0.4 '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.2 + '@changesets/config': 3.0.3 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.1 - '@changesets/get-release-plan': 4.0.3 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/should-skip-package': 0.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/get-release-plan': 4.0.4 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 + '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 - '@changesets/write': 0.3.1 + '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 '@types/semver': 7.5.8 ansi-colors: 4.1.3 - chalk: 2.4.2 ci-info: 3.9.0 enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 - human-id: 1.0.2 mri: 1.2.0 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.4 + package-manager-detector: 0.2.0 + picocolors: 1.1.0 resolve-from: 5.0.0 semver: 7.6.3 spawndamnit: 2.0.0 term-size: 2.2.1 - '@changesets/config@3.0.2': + '@changesets/config@3.0.3': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.1 - '@changesets/logger': 0.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/logger': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 @@ -2706,67 +2886,60 @@ snapshots: dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.1': + '@changesets/get-dependents-graph@2.1.2': dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 + picocolors: 1.1.0 semver: 7.6.3 - '@changesets/get-release-plan@4.0.3': + '@changesets/get-release-plan@4.0.4': dependencies: - '@babel/runtime': 7.25.6 - '@changesets/assemble-release-plan': 6.0.3 - '@changesets/config': 3.0.2 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 + '@changesets/assemble-release-plan': 6.0.4 + '@changesets/config': 3.0.3 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 '@changesets/get-version-range-type@0.4.0': {} - '@changesets/git@3.0.0': + '@changesets/git@3.0.1': dependencies: - '@babel/runtime': 7.25.6 '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.8 spawndamnit: 2.0.0 - '@changesets/logger@0.1.0': + '@changesets/logger@0.1.1': dependencies: - chalk: 2.4.2 + picocolors: 1.1.0 '@changesets/parse@0.4.0': dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 - '@changesets/pre@2.0.0': + '@changesets/pre@2.0.1': dependencies: - '@babel/runtime': 7.25.6 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.0': + '@changesets/read@0.6.1': dependencies: - '@babel/runtime': 7.25.6 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 '@changesets/parse': 0.4.0 '@changesets/types': 6.0.0 - chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 + picocolors: 1.1.0 - '@changesets/should-skip-package@0.1.0': + '@changesets/should-skip-package@0.1.1': dependencies: - '@babel/runtime': 7.25.6 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -2774,9 +2947,8 @@ snapshots: '@changesets/types@6.0.0': {} - '@changesets/write@0.3.1': + '@changesets/write@0.3.2': dependencies: - '@babel/runtime': 7.25.6 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -2939,10 +3111,119 @@ snapshots: '@eslint-community/regexpp@4.11.0': {} + '@eslint-react/ast@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + birecord: 0.1.1 + string-ts: 2.2.0 + ts-pattern: 5.3.1 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/core@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + birecord: 0.1.1 + short-unique-id: 5.2.0 + ts-pattern: 5.3.1 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/eslint-plugin@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + eslint-plugin-react-debug: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-react-dom: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-react-hooks-extra: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-react-naming-convention: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-react-web-api: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-react-x: 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@eslint-react/jsx@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + ts-pattern: 5.3.1 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/shared@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/tools': 1.13.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + picomatch: 4.0.2 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/tools@1.13.0': {} + + '@eslint-react/types@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/tools': 1.13.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/var@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + ts-pattern: 5.3.1 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint/compat@1.1.1': {} + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.6 + debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2950,7 +3231,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.6 + debug: 4.3.7 espree: 10.1.0 globals: 14.0.0 ignore: 5.3.2 @@ -3037,6 +3318,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@nolyfill/is-core-module@1.0.39': {} + '@octokit/action@6.1.0': dependencies: '@octokit/auth-action': 4.1.0 @@ -3191,7 +3474,7 @@ snapshots: '@stylistic/eslint-plugin@2.7.2(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@types/eslint': 9.6.1 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) eslint: 9.9.1(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 @@ -3201,7 +3484,7 @@ snapshots: - supports-color - typescript - '@total-typescript/ts-reset@0.5.1': {} + '@total-typescript/ts-reset@0.6.1': {} '@types/eslint@9.6.1': dependencies: @@ -3214,6 +3497,10 @@ snapshots: '@types/node@12.20.55': {} + '@types/node@22.5.4': + dependencies: + undici-types: 6.19.8 + '@types/normalize-package-data@2.4.4': {} '@types/prop-types@15.7.12': {} @@ -3225,14 +3512,14 @@ snapshots: '@types/semver@7.5.8': {} - '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.3.0 + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.4.0 eslint: 9.9.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 @@ -3243,29 +3530,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.3.0 - debug: 4.3.6 + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.4.0 + debug: 4.3.7 eslint: 9.9.1(jiti@1.21.6) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.3.0': + '@typescript-eslint/scope-manager@8.4.0': dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/visitor-keys': 8.3.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - debug: 4.3.6 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 @@ -3273,13 +3560,13 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@8.3.0': {} + '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/visitor-keys': 8.3.0 - debug: 4.3.6 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 + debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 @@ -3290,20 +3577,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) eslint: 9.9.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.3.0': + '@typescript-eslint/visitor-keys@8.4.0': dependencies: - '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 '@zayne-labs/tsconfig@0.1.1': {} @@ -3368,6 +3655,8 @@ snapshots: binary-extensions@2.3.0: {} + birecord@0.1.1: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -3383,8 +3672,8 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001655 - electron-to-chromium: 1.5.13 + caniuse-lite: 1.0.30001658 + electron-to-chromium: 1.5.17 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -3409,7 +3698,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001655: {} + caniuse-lite@1.0.30001658: {} chalk@2.4.2: dependencies: @@ -3530,6 +3819,10 @@ snapshots: dependencies: browserslist: 4.23.3 + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 @@ -3552,9 +3845,9 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.6: + debug@4.3.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 decode-uri-component@0.4.1: {} @@ -3585,7 +3878,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.13: {} + electron-to-chromium@1.5.17: {} emoji-regex@10.4.0: {} @@ -3595,6 +3888,11 @@ snapshots: emojilib@2.4.0: {} + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -3681,11 +3979,39 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)): dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - debug: 4.3.6 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.7 + enhanced-resolve: 5.17.1 + eslint: 9.9.1(jiti@1.21.6) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6)) + fast-glob: 3.3.2 + get-tsconfig: 4.8.0 + is-bun-module: 1.1.0 + is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import-x: 4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import-x@4.2.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + debug: 4.3.7 doctrine: 3.0.0 eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 @@ -3704,7 +4030,7 @@ snapshots: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.6 + debug: 4.3.7 escape-string-regexp: 4.0.0 eslint: 9.9.1(jiti@1.21.6) espree: 10.1.0 @@ -3716,12 +4042,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-perfectionist@3.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@1.21.6))): + eslint-plugin-perfectionist@3.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@1.21.6))): dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) eslint: 9.9.1(jiti@1.21.6) - minimatch: 10.0.1 + minimatch: 9.0.5 natural-compare-lite: 1.4.0 optionalDependencies: vue-eslint-parser: 9.4.3(eslint@9.9.1(jiti@1.21.6)) @@ -3729,6 +4055,130 @@ snapshots: - supports-color - typescript + eslint-plugin-react-debug@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/core': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + string-ts: 2.2.0 + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-dom@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/core': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks-extra@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/core': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks@4.6.2(eslint@9.9.1(jiti@1.21.6)): + dependencies: + eslint: 9.9.1(jiti@1.21.6) + + eslint-plugin-react-naming-convention@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/core': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-web-api@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/core': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + birecord: 0.1.1 + eslint: 9.9.1(jiti@1.21.6) + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-x@1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@eslint-react/ast': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/core': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/jsx': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/shared': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/tools': 1.13.0 + '@eslint-react/types': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@eslint-react/var': 1.13.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + eslint-plugin-unicorn@55.0.0(eslint@9.9.1(jiti@1.21.6)): dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -3784,7 +4234,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.6 + debug: 4.3.7 escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 @@ -3917,11 +4367,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.8 - pkg-dir: 4.2.0 - flat-cache@4.0.1: dependencies: flatted: 3.3.1 @@ -4072,6 +4517,10 @@ snapshots: dependencies: builtin-modules: 3.3.0 + is-bun-module@1.1.0: + dependencies: + semver: 7.6.3 + is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -4094,6 +4543,16 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + dependencies: + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + ts-api-utils: 1.3.0(typescript@5.5.4) + ts-declaration-location: 1.0.4(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -4185,14 +4644,14 @@ snapshots: dependencies: chalk: 5.3.0 commander: 12.1.0 - debug: 4.3.6 + debug: 4.3.7 execa: 8.0.1 lilconfig: 3.1.2 listr2: 8.2.4 micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.5.0 + yaml: 2.5.1 transitivePeerDependencies: - supports-color @@ -4207,13 +4666,6 @@ snapshots: load-tsconfig@0.2.5: {} - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -4305,8 +4757,6 @@ snapshots: mri@1.2.0: {} - ms@2.1.2: {} - ms@2.1.3: {} mz@2.7.0: @@ -4319,7 +4769,7 @@ snapshots: nanospinner@1.1.0: dependencies: - picocolors: 1.0.1 + picocolors: 1.1.0 natural-compare-lite@1.4.0: {} @@ -4438,6 +4888,8 @@ snapshots: package-manager-detector@0.1.2: {} + package-manager-detector@0.2.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -4481,7 +4933,7 @@ snapshots: pathe@1.1.2: {} - picocolors@1.0.1: {} + picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -4493,11 +4945,7 @@ snapshots: pirates@4.0.6: {} - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - pkg-pr-new@0.0.23: + pkg-pr-new@0.0.24: dependencies: '@jsdevtools/ez-spawn': 3.0.4 '@octokit/action': 6.1.0 @@ -4516,19 +4964,12 @@ snapshots: pluralize@8.0.0: {} - postcss-load-config@6.0.1(jiti@1.21.6)(yaml@2.5.0): + postcss-load-config@6.0.1(jiti@1.21.6)(yaml@2.5.1): dependencies: lilconfig: 3.1.2 optionalDependencies: jiti: 1.21.6 - yaml: 2.5.0 - - preferred-pm@3.1.4: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.2.0 + yaml: 2.5.1 prelude-ls@1.2.1: {} @@ -4541,7 +4982,7 @@ snapshots: publint@0.2.10: dependencies: npm-packlist: 5.1.3 - picocolors: 1.0.1 + picocolors: 1.1.0 sade: 1.8.1 punycode@2.3.1: {} @@ -4690,6 +5131,8 @@ snapshots: shell-quote@1.8.1: {} + short-unique-id@5.2.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -4702,7 +5145,7 @@ snapshots: jiti: 1.21.6 lilconfig: 3.1.2 nanospinner: 1.1.0 - picocolors: 1.0.1 + picocolors: 1.1.0 skin-tone@2.0.0: dependencies: @@ -4774,6 +5217,8 @@ snapshots: string-argv@0.3.2: {} + string-ts@2.2.0: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -4846,6 +5291,8 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.7.0 + tapable@2.2.1: {} + term-size@2.2.1: {} terser@5.31.6: @@ -4888,25 +5335,32 @@ snapshots: dependencies: typescript: 5.5.4 + ts-declaration-location@1.0.4(typescript@5.5.4): + dependencies: + minimatch: 10.0.1 + typescript: 5.5.4 + ts-expose-internals-conditionally@1.0.0-empty.0: {} ts-interface-checker@0.1.13: {} + ts-pattern@5.3.1: {} + tslib@2.7.0: {} - tsup@8.2.4(jiti@1.21.6)(typescript@5.5.4)(yaml@2.5.0): + tsup@8.2.4(jiti@1.21.6)(typescript@5.5.4)(yaml@2.5.1): dependencies: bundle-require: 5.0.0(esbuild@0.23.1) cac: 6.7.14 chokidar: 3.6.0 consola: 3.2.3 - debug: 4.3.6 + debug: 4.3.7 esbuild: 0.23.1 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.6)(yaml@2.5.0) + picocolors: 1.1.0 + postcss-load-config: 6.0.1(jiti@1.21.6)(yaml@2.5.1) resolve-from: 5.0.0 rollup: 4.21.2 source-map: 0.8.0-beta.0 @@ -4930,11 +5384,11 @@ snapshots: type-fest@0.8.1: {} - typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): + typescript-eslint@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4): dependencies: - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -4947,6 +5401,8 @@ snapshots: ufo@1.5.4: {} + undici-types@6.19.8: {} + undici@6.19.8: {} unicode-emoji-modifier-base@1.0.0: {} @@ -4961,7 +5417,7 @@ snapshots: dependencies: browserslist: 4.23.3 escalade: 3.2.0 - picocolors: 1.0.1 + picocolors: 1.1.0 uri-js@4.4.1: dependencies: @@ -4978,7 +5434,7 @@ snapshots: vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@1.21.6)): dependencies: - debug: 4.3.6 + debug: 4.3.7 eslint: 9.9.1(jiti@1.21.6) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -4998,11 +5454,6 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 - which-pm@2.2.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -5037,7 +5488,7 @@ snapshots: yallist@2.1.2: {} - yaml@2.5.0: {} + yaml@2.5.1: {} yargs-parser@20.2.9: {} diff --git a/src/core/createLocationStore.ts b/src/core/createLocationStore.ts index b88c541..a371683 100644 --- a/src/core/createLocationStore.ts +++ b/src/core/createLocationStore.ts @@ -20,8 +20,12 @@ const createLocationStore = (options: LocationSt state: isBrowser() ? (window.history.state as LocationState["state"]) : null, }; + const initialState = locationState; + const getState = () => locationState; + const getInitialState = () => initialState; + const { equalityFn = Object.is } = options; const push = (url: string | URL, state: unknown = null) => { @@ -92,6 +96,7 @@ const createLocationStore = (options: LocationSt }; const locationStore = { + getInitialState, getState, push, replace, diff --git a/src/react/hooks/effects/useAfterMountEffect.ts b/src/react/hooks/effects/useAfterMountEffect.ts index 4336a7c..b49dbf3 100644 --- a/src/react/hooks/effects/useAfterMountEffect.ts +++ b/src/react/hooks/effects/useAfterMountEffect.ts @@ -3,7 +3,7 @@ import { useCallbackRef } from "../useCallbackRef"; const useAfterMountEffect: typeof useEffect = (callBackFn, deps) => { const isFirstMount = useRef(true); - const savedCallback = useCallbackRef(callBackFn); + const stableCallback = useCallbackRef(callBackFn); useEffect(() => { if (isFirstMount.current) { @@ -11,7 +11,8 @@ const useAfterMountEffect: typeof useEffect = (callBackFn, deps) => { return; } - savedCallback(); + stableCallback(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); }; export { useAfterMountEffect }; diff --git a/src/react/hooks/effects/useEffectOnce.ts b/src/react/hooks/effects/useEffectOnce.ts index 6d0d275..1cde003 100644 --- a/src/react/hooks/effects/useEffectOnce.ts +++ b/src/react/hooks/effects/useEffectOnce.ts @@ -2,10 +2,11 @@ import { useEffect } from "react"; import { useCallbackRef } from "../useCallbackRef"; const useEffectOnce = (callBackFn: React.EffectCallback) => { - const savedCallback = useCallbackRef(callBackFn); + const stableCallback = useCallbackRef(callBackFn); // == savedCallback is always stable so no worries about re-execution of this effect - useEffect(savedCallback, [savedCallback]); + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(stableCallback, []); }; export { useEffectOnce }; diff --git a/src/react/hooks/effects/useLifeCycle.ts b/src/react/hooks/effects/useLifeCycle.ts index 731a4cd..10e57ae 100644 --- a/src/react/hooks/effects/useLifeCycle.ts +++ b/src/react/hooks/effects/useLifeCycle.ts @@ -1,22 +1,23 @@ import { useEffect } from "react"; import { useCallbackRef } from "../useCallbackRef"; +export type Destructor = ReturnType; + type LifeCycleOptions = { - onMount: () => void; - onUnmount?: () => void; + onMount?: () => void; + onUnmount?: Destructor; }; const useLifeCycle = ({ onMount, onUnmount }: LifeCycleOptions) => { - const savedOnMount = useCallbackRef(onMount); - const savedOnUnmount = useCallbackRef(onUnmount); + const stableOnMount = useCallbackRef(onMount); + const stableOnUnmount = useCallbackRef(onUnmount); useEffect(() => { - savedOnMount(); + stableOnMount(); - return () => { - savedOnUnmount(); - }; - }, [savedOnMount, savedOnUnmount]); + return stableOnUnmount; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); }; export { useLifeCycle }; diff --git a/src/react/hooks/effects/useOnMountEffect.ts b/src/react/hooks/effects/useOnMountEffect.ts index ef54b3b..7168fea 100644 --- a/src/react/hooks/effects/useOnMountEffect.ts +++ b/src/react/hooks/effects/useOnMountEffect.ts @@ -1,9 +1,7 @@ -import { useEffectOnce } from "./useEffectOnce"; +import { useLifeCycle } from "./useLifeCycle"; const useMountEffect = (callBackFn: () => void) => { - useEffectOnce(() => { - callBackFn(); - }); + useLifeCycle({ onMount: callBackFn }); }; export { useMountEffect }; diff --git a/src/react/hooks/effects/useOnUnMountEffect.ts b/src/react/hooks/effects/useOnUnMountEffect.ts index 0d6684e..ef0dd24 100644 --- a/src/react/hooks/effects/useOnUnMountEffect.ts +++ b/src/react/hooks/effects/useOnUnMountEffect.ts @@ -1,7 +1,5 @@ -import { useEffectOnce } from "./useEffectOnce"; +import { type Destructor, useLifeCycle } from "./useLifeCycle"; -type Destructor = ReturnType; - -const useOnUnmountEffect = (cleanUpFn: Destructor) => useEffectOnce(() => cleanUpFn); +const useOnUnmountEffect = (cleanUpFn: Destructor) => useLifeCycle({ onUnmount: cleanUpFn }); export { useOnUnmountEffect }; diff --git a/src/react/hooks/useAnimateElementRefs.ts b/src/react/hooks/useAnimateElementRefs.ts new file mode 100644 index 0000000..81a7984 --- /dev/null +++ b/src/react/hooks/useAnimateElementRefs.ts @@ -0,0 +1,76 @@ +import { on } from "@/core"; +import { type NonEmptyArray, isArray } from "@/type-helpers"; +import { useCallback, useRef } from "react"; +import { useCallbackRef } from "./useCallbackRef"; + +type ElementsInfoArray = NonEmptyArray<{ + animationClass: string; + targetElement: TTargetElement; +}>; + +const removeClass = (target: HTMLElement, className: string) => () => target.classList.remove(className); + +/** + * This is a custom React hook that adds and removes animation classes to specified HTML elements. + * @param elementsInfoArray - An array of objects that contain information about the animation class and the target HTML element. + * @returns - An object containing the refs of the animated elements and a function to handle the initiation and removal animation. + */ + +const useAnimateElementRefs = ( + elementsInfoArray: ElementsInfoArray +) => { + const elementsRef = useRef>({} as never); + + const addAnimationClasses = useCallbackRef(() => { + if (!isArray(elementsInfoArray)) { + console.error("elementsInfo is not an Array"); + return; + } + + for (const { animationClass, targetElement } of elementsInfoArray) { + if (!elementsRef.current[targetElement]) { + console.error("ElementError", `"${targetElement}" element does not exist`); + return; + } + + elementsRef.current[targetElement].classList.add(animationClass); + } + }); + + const removeAnimationClasses = useCallbackRef(() => { + if (!isArray(elementsInfoArray)) { + console.error("elementsInfo is not an Array"); + return; + } + + for (const { animationClass, targetElement } of elementsInfoArray) { + if (!elementsRef.current[targetElement]) { + console.error("ElementError", `"${targetElement}" element does not exist`); + return; + } + + on( + "transitionend", + elementsRef.current[targetElement], + removeClass(elementsRef.current[targetElement], animationClass) + ); + + on( + "animationend", + elementsRef.current[targetElement], + removeClass(elementsRef.current[targetElement], animationClass) + ); + } + }); + + // Add animation classes to elements and remove them after the animation ends + const handleElementsAnimation = useCallback(() => { + addAnimationClasses(); + + removeAnimationClasses(); + }, [addAnimationClasses, removeAnimationClasses]); + + return { animatedElements: elementsRef.current, handleElementsAnimation }; +}; + +export { useAnimateElementRefs }; diff --git a/src/react/hooks/useAnimationInterval.ts b/src/react/hooks/useAnimationInterval.ts index fb54ba0..bc4d28d 100644 --- a/src/react/hooks/useAnimationInterval.ts +++ b/src/react/hooks/useAnimationInterval.ts @@ -22,6 +22,7 @@ const useAnimationInterval = (options: AnimationOptions) => { start(); return stop; + // eslint-disable-next-line react-hooks/exhaustive-deps }, [intervalDuration]); return { start, stop }; diff --git a/src/react/hooks/useCallbackRef.ts b/src/react/hooks/useCallbackRef.ts index 402b2d2..2d8dd68 100644 --- a/src/react/hooks/useCallbackRef.ts +++ b/src/react/hooks/useCallbackRef.ts @@ -7,7 +7,7 @@ import { useCallback, useLayoutEffect, useRef } from "react"; * @returns a stable function that always points to the latest version of the callback function */ -const useCallbackRef = (callbackFn: TCallback | undefined) => { +const useCallbackRef = (callbackFn: TCallback | undefined) => { const callbackRef = useRef(callbackFn); useLayoutEffect(() => { @@ -15,8 +15,9 @@ const useCallbackRef = (callbackFn: TCallback | u callbackRef.current = callbackFn; }, [callbackFn]); + /* eslint-disable @typescript-eslint/no-unnecessary-condition */ const savedCallback = useCallback( - (...params: Parameters) => callbackRef.current?.(...params) as unknown, + (...params: unknown[]) => (callbackRef.current as AnyFunction)?.(...params) as unknown, [] ); diff --git a/src/react/hooks/useDragScroll.ts b/src/react/hooks/useDragScroll.ts index 7972bf2..1bc04a9 100644 --- a/src/react/hooks/useDragScroll.ts +++ b/src/react/hooks/useDragScroll.ts @@ -101,7 +101,8 @@ const useDragScroll = (options: DragScrollOptions const cleanup = on("mousedown", dragContainerRef.current, handleMouseDown); - return () => cleanup(); + return cleanup; + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const dragScrollProps = { diff --git a/src/react/hooks/useLocation.ts b/src/react/hooks/useLocation.ts index 4e1568c..a1cee1d 100644 --- a/src/react/hooks/useLocation.ts +++ b/src/react/hooks/useLocation.ts @@ -1,21 +1,17 @@ import { type LocationState, createLocationStore } from "@/core/createLocationStore"; import type { SelectorFn } from "@/type-helpers"; -import { useSyncExternalStore } from "react"; import { useConstant } from "./useConstant"; +import { useStore } from "./useStore"; const useLocation = ( selector: SelectorFn = (store) => store as TSlice ) => { const locationStore = useConstant(() => createLocationStore()); - const stateSlice = useSyncExternalStore( - locationStore.subscribe, - () => selector(locationStore.getState()), - () => selector(locationStore.getState()) - ); + const stateSlice = useStore(locationStore as never, selector); return [stateSlice, { push: locationStore.push, replace: locationStore.replace }] as [ - state: typeof stateSlice, + state: TSlice, setState: { push: typeof locationStore.push; replace: typeof locationStore.replace }, ]; }; diff --git a/src/react/hooks/usePresence/useAnimationPresence.ts b/src/react/hooks/usePresence/useAnimationPresence.ts index e04bea2..e47f3ac 100644 --- a/src/react/hooks/usePresence/useAnimationPresence.ts +++ b/src/react/hooks/usePresence/useAnimationPresence.ts @@ -18,6 +18,7 @@ const useAnimationPresence: UseSpecificPresence = (defaultValue = true, options useEffect(() => { !isMounted && stableOnExitComplete(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [isMounted]); const handleIsMountedWithoutRef = (value: boolean) => { diff --git a/src/react/hooks/usePresence/useTransitionPresence.ts b/src/react/hooks/usePresence/useTransitionPresence.ts index a3f8a2f..23adc99 100644 --- a/src/react/hooks/usePresence/useTransitionPresence.ts +++ b/src/react/hooks/usePresence/useTransitionPresence.ts @@ -51,6 +51,7 @@ const useTransitionPresence: UseSpecificPresence = (defaultValue = true, options useEffect(() => { !isMounted && stableOnExitComplete(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [isMounted]); return { diff --git a/src/react/hooks/useStorageState.ts b/src/react/hooks/useStorageState.ts index ff45558..a4d6b32 100644 --- a/src/react/hooks/useStorageState.ts +++ b/src/react/hooks/useStorageState.ts @@ -1,7 +1,4 @@ -import { - type StorageOptions, - createExternalStorageStore, -} from "@/core/createExternalStore/new-implementation"; +import { type StorageOptions, createExternalStorageStore } from "@/core/createExternalStore"; import type { SelectorFn } from "@/type-helpers"; import { useConstant } from "./useConstant"; import { useStore } from "./useStore"; diff --git a/src/react/hooks/useStore.ts b/src/react/hooks/useStore.ts index f1449f2..b111aa6 100644 --- a/src/react/hooks/useStore.ts +++ b/src/react/hooks/useStore.ts @@ -3,7 +3,7 @@ import type { SelectorFn } from "@/type-helpers"; import { useDebugValue, useSyncExternalStore } from "react"; const useStore = ( - store: NoInfer>, + store: StoreApi, selector: SelectorFn ) => { const slice = useSyncExternalStore( diff --git a/src/type-helpers/types/polymorphism.ts b/src/type-helpers/types/polymorphism.ts index c23b7e2..2cdd495 100644 --- a/src/type-helpers/types/polymorphism.ts +++ b/src/type-helpers/types/polymorphism.ts @@ -1,4 +1,4 @@ -type AsProp = { as?: TElement }; +export type AsProp = { as?: TElement }; // == Return the prop object if it already contains the "as" prop, else merge it with the "as" prop type PropsWithOptionalAs = "as" extends keyof TProps diff --git a/tsup.config.ts b/tsup.config.ts index e54f3c3..25ea4a0 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,33 +1,31 @@ import { type Options, defineConfig } from "tsup"; -export default defineConfig((options) => { - const isDevMode = options.watch; +const isDevMode = process.env.NODE_ENV === "development"; - const sharedOptions = { - clean: true, // clean up dist folder, - dts: true, // generate d.ts - entry: ["src/core/index.ts", "src/react/index.ts", "src/type-helpers/index.ts"], - format: ["esm"], - platform: "browser", - sourcemap: !isDevMode, - splitting: true, - target: "esnext", - treeshake: true, - tsconfig: "tsconfig.json", - } satisfies Options; +const sharedOptions = { + clean: true, // clean up dist folder, + dts: true, // generate d.ts + entry: ["src/core/index.ts", "src/react/index.ts", "src/type-helpers/index.ts"], + format: ["esm"], + platform: "browser", + sourcemap: !isDevMode, + splitting: true, + target: "esnext", + treeshake: true, + tsconfig: "tsconfig.json", +} satisfies Options; - return [ - { - ...sharedOptions, - name: "ESM", - outDir: "./dist", - }, +export default defineConfig([ + { + ...sharedOptions, + name: "ESM", + outDir: "./dist/raw", + }, - { - ...sharedOptions, - minify: "terser", - name: "ESM-MIN", - outDir: "./dist/min", - }, - ]; -}); + { + ...sharedOptions, + minify: "terser", + name: "ESM-MIN", + outDir: "./dist/min", + }, +]);