{"_id":"use-good-hooks","_rev":"44-428713123645f8b7580d9c5e164e4d2e","name":"use-good-hooks","dist-tags":{"latest":"1.0.43"},"versions":{"1.0.0":{"name":"use-good-hooks","version":"1.0.0","_id":"use-good-hooks@1.0.0","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"a541f29a0d5087809e1e856a6b8fc9c15d179a2f","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.0.tgz","fileCount":4,"integrity":"sha512-R023RgBdWzp3p/yjxJX/Zpla1c9Vfp6w4Or+YNfQ/7WHRuDRWliH8gyiawiLqZOchaM4nJc3QV3VBQTr7in89A==","signatures":[{"sig":"MEYCIQCMsoG3OGyB/WEsBkyEeFjk7S0cS1yKM9/euOiK6yUbjgIhAId7phhdck8mRomgUXXCIbUrEzL70TQ2VUiqTQjSJcPS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15443},"main":"dist-export/index.js","type":"module","types":"./dist-export/index.d.ts","module":"index.ts","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"vite build","build:export":"yarn lint && yarn build --outDir ./dist-export --mode export"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"_npmVersion":"10.9.0","description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_nodeVersion":"22.11.0","dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.0_1741092205966_0.7002471848844778","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"use-good-hooks","version":"1.0.1","license":"MIT*","_id":"use-good-hooks@1.0.1","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"43c1e1b690e5d7104968d0c070715710bb294723","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.1.tgz","fileCount":6,"integrity":"sha512-VxOWLyJspxYUpnou88wycUv22jhryuv5qzY4hBXgpu5qO30HizEGwxrDT6yNYep37D+7TBFeazOnlzJqIGbsvQ==","signatures":[{"sig":"MEYCIQCWdh7AmVuDBjtslbhyg9yQFv31INKKWDa46KaOcAHJxgIhAPx3WLnOxcpeMndTQ1od57viShp6mJeHKjX8AheYf8hU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76084},"main":"dist/index.js","type":"module","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.1_1741093759022_0.5687353855766382","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"use-good-hooks","version":"1.0.2","license":"MIT*","_id":"use-good-hooks@1.0.2","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"8c004233aa8a45f554b7d071324cbf48615373bf","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.2.tgz","fileCount":6,"integrity":"sha512-vqrEzMZpFm+z5Hg4qfdVIe0xusG6mzUCMYDJw8dgUmNUn4BEV3GyAvABrLMLS+lYnXbX35bVBAOihi+z3BOqhg==","signatures":[{"sig":"MEUCIBXTHz8KVFzS6YVwbt24KZi9YKC2tX3DW3bWYrkjSiamAiEAs0TNL+7Aou44Bnr7nssPn//YEQAokkkZVaVUxGNpgA4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76065},"main":"dist/index.js","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.2_1741094539764_0.5509241236885352","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"use-good-hooks","version":"1.0.3","license":"MIT*","_id":"use-good-hooks@1.0.3","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"c22d7bb254e25526437a6fa705fecf19a9359cb7","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.3.tgz","fileCount":6,"integrity":"sha512-7hgWl6fnUI2cIhQWXq9G5q+Lp7o24PlLKY/kAUH28XKRuce8IK25XnjkTLXS3deYIeb8/lFPYUf/MF3NRr0rTw==","signatures":[{"sig":"MEQCIALfwZUQzhckoppkQ+ItgASgpy3UnlR6qICmEos3iloWAiAQX4gBozbtvCw8IIsUUUdDjUMGTLMqS++ME125mfUJeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76065},"main":"dist/index.js","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.3_1741094583375_0.31388379394921984","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"use-good-hooks","version":"1.0.4","license":"MIT*","_id":"use-good-hooks@1.0.4","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"fc9677824dc732081fbbef520c3c8e1f9ad9bf92","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.4.tgz","fileCount":7,"integrity":"sha512-2G/uqoaUEzlYULlIm6BluYFa2TDuQxHOdoR6tqa5Ooi/yQ7+S601YCvNMEuahh3WhQCtyIcK39OzHtCsPyr3dA==","signatures":[{"sig":"MEUCIHytQzNIztrxQyeXyEz2BS6zQqKRbLOHVrw3ZuhYotx2AiEA1YE0k4U1e2mhV3pVaXNnvSrPLbXozGaWFngeaLAR3kI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120787},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.4_1741094915127_0.6402087465268822","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"use-good-hooks","version":"1.0.5","license":"MIT*","_id":"use-good-hooks@1.0.5","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"529d179ee2ce65f2ccdfe669eb79de3c064da8ee","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.5.tgz","fileCount":6,"integrity":"sha512-xAeZJqj2SsWtFaLHTRdrU0H22uxAd8Q3EAEzEEPw5p9YQ38FT1a2qdYEBBTjUFGL9eil3xkjaVigv3ERLVdBzg==","signatures":[{"sig":"MEYCIQCZjrA4zsDbh38ixe5nvLIC89jVeX0b0idjGG+qCPnV9gIhAL1CVM31GkdckPoWTAcjCp1iLu0oQiQ0rI+AG2hEjuGT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76244},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.5_1741095383711_0.8404250021329005","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"use-good-hooks","version":"1.0.6","license":"MIT*","_id":"use-good-hooks@1.0.6","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"57b6c4c64c5cb4a241b89ef2f82b7a7282f0d52f","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.6.tgz","fileCount":6,"integrity":"sha512-h99Fbo3gQDqi3fSEPdMxjCm8GC7+eeVLWind+gcJzAp7WPcuzu58gh95nh3/IQadCMNz2wgo5lM9M/zZqgWKVg==","signatures":[{"sig":"MEUCIQCjqq/c4yHE/TmCyUE3tQvic0ez0qQrjJyNiHmhHbUSCAIgEwiDSuMVYlQj1Nem1fZFbxY7vizjF2/5iZJ+p+zgqYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76147},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.6_1741095510735_0.6806256286343475","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"use-good-hooks","version":"1.0.7","license":"MIT*","_id":"use-good-hooks@1.0.7","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"18a440500fffdc65439628b4bac2a817f8c71f32","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.7.tgz","fileCount":6,"integrity":"sha512-uKv0U+1BouUoPz1DAw+JeYRNEp0JwmSZANYa34OxuoTcOdbBCJoVLtljRkayd6SrAR8ECMxx/FHdf1/Tcc8jXA==","signatures":[{"sig":"MEUCIQCuxi7ScE/WT5EV0fAwXmQc8t6u7Gj6Yh3wOYuKOTLkhQIgXUuTzOXNs6Kfe0BnE2dIKpj6rCScgqj5b/ZlYG2aq3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.7_1741095767171_0.10312989190036159","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"use-good-hooks","version":"1.0.8","license":"MIT*","_id":"use-good-hooks@1.0.8","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"d79903a5985ad4ee3202316a8d9b92dc5a8b64b9","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.8.tgz","fileCount":6,"integrity":"sha512-pOB2XsIvSRYipCbnmzVUYSS91VQir5iy3fFEgy+Km36Kwc3QInAZfeKG4OHPiNQ4F5eWJC4rqCJEBVqFa2YlIw==","signatures":[{"sig":"MEUCIBJzs/BSDEvpYfeI/CnMfKyiHAOxSIlIKbpsnJRth5+AAiEAgz+KVxRtTAv/d7Ts1lW6IqhNivBqF//wTDVtff+p7sI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15998},"main":"./dist/index.js","scripts":{"dev":"vite","lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.8_1741099220676_0.7798153117102233","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"use-good-hooks","version":"1.0.9","license":"MIT*","_id":"use-good-hooks@1.0.9","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"9e9d8728828137067a00e92aa1fa9c606b466eaa","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.9.tgz","fileCount":6,"integrity":"sha512-WzfUOcVBWaNPeDqRqyDfXKyXVVGthgTXs8vYzIf+r+bd/3AB9IU/8MZh6UIvcRi7iImfddlp2RLgk7lwqGzKig==","signatures":[{"sig":"MEQCIARqM7QFaKNhnbJ2W96teSzhe2NouMbnwd1EqhxPSbkwAiBgl8VLCYwxzOdoe5KPsSzU9X1PkZibQwNiwmJiUgm59Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16005},"main":"./dist/index.js","scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.9_1741102550252_0.3940229818424257","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"use-good-hooks","version":"1.0.10","license":"MIT*","_id":"use-good-hooks@1.0.10","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"40ca68b3ae6c5d07dfef0561bb5d8ecbc2ea4b6a","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.10.tgz","fileCount":6,"integrity":"sha512-2qSTxyTTGPLOLcL0k1qzSEtCePXuwes3vLHPcTDpB6ZSxQy72Mr3muCwfUDJUyV+Jr1PtG3JQgxibRep/LR6zw==","signatures":[{"sig":"MEUCIQDpENzKbupnrMgjxpUrmtJP8uWlONddK4B+0ris+AvHiQIgRoWEDcPCcBeb5p8dMYixiYbOCShp1pc/yxGRUbf0ZZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17241},"main":"./dist/index.js","scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.10_1744936251899_0.8853447638070382","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"use-good-hooks","version":"1.0.11","license":"MIT*","_id":"use-good-hooks@1.0.11","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"d7130499a89f2bd09bbe19a102d1214eee1d42c9","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.11.tgz","fileCount":6,"integrity":"sha512-eRID+PzW0O+ytIGgkgXpLquOy3KNU69RbdSTi6trDJgTFEkH3q7knPxDpBJE1ZCSMu2olWjKlRjfcsrp2cUpQA==","signatures":[{"sig":"MEQCIFis1wrvyYApGPrAcqnt3adiaQAjv+4DOfvyGFAGfp5LAiAc0i9kslI/5txW/Lq8HIYOY0Ov3v1LJcVjkLTs/MJTmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19508},"main":"./dist/index.js","scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.11_1744974711702_0.7629681892761677","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"use-good-hooks","version":"1.0.12","license":"MIT*","_id":"use-good-hooks@1.0.12","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"5d7b75b47cedf357ac7e567ff4da70448ccd2a05","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.12.tgz","fileCount":19,"integrity":"sha512-Swy6n8M7EAAkv8xn9B6Q9zL/42Kdf86aywPpJ0KdMhHxu5CoLd9q9Jk9GdOm+287mzVeS6mnxQxkK2IZ2WVlEw==","signatures":[{"sig":"MEYCIQDad1pic9OZI4rGI39TzI4q8dE8Y216lc0+4kON7HWiyAIhAN3LVzcD+D9v/5YXuSVZYgHOqhCARsGS0e8irWY+jp09","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21957},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.12_1745945342931_0.6586709468405636","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"use-good-hooks","version":"1.0.13","license":"MIT*","_id":"use-good-hooks@1.0.13","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"e87864953f202f3661ffc3ef85c7f892ef50429c","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.13.tgz","fileCount":21,"integrity":"sha512-LwPYRXd7hnmpm7LO1ejjbCGbUZvNo6xDnT/uSJhoI+/ZvOH1myTTJx7eyfGVmTUVPiHTTMXhj1oThNiXDtIKyA==","signatures":[{"sig":"MEUCIFBKx0I+1S8bd9Mw3BIk5S8EYDfQhw4gHZw+1cfdgCSUAiEAhPUwgPBz+sOhyiR538ANgno2bv+t3vBVIYCRNmzswVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22292},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.13_1745945514738_0.9748426840681776","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"use-good-hooks","version":"1.0.14","license":"MIT*","_id":"use-good-hooks@1.0.14","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"1a29a36570e8afa0612327d736fb7304caa172a4","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.14.tgz","fileCount":21,"integrity":"sha512-Vcz38fWkYGgIqV8qF62q8KCtP88CESdM4cVQp0ohavrnq+RHMFyOlnzeqpcr7Md93jW5VyURpt/5BM7QxPY+2g==","signatures":[{"sig":"MEUCIBop9ggtBe7ncjvnqFq7AOgWFvHIqyqOCAsIf52umlcCAiEAk1R+p6T8VNj0DPqbzQYOEqNpAg0fnqq9CaNn/8wXx14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22292},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.14_1745957353809_0.2774961101511255","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"use-good-hooks","version":"1.0.15","license":"MIT*","_id":"use-good-hooks@1.0.15","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"bb7f48c435512ed7a3f67d2557cbc71f240bd15d","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.15.tgz","fileCount":21,"integrity":"sha512-b5YpGFwTl8Jubd6Q7mjmLa/c83NgCFShAvfyb8otzwt4XJf1RS1TcmhLphgJUE/Xj7ZbXPss98i7fTU3bsacGg==","signatures":[{"sig":"MEUCIDThQbtKKgRdxG7kU/QJ3Deq2asLU5VPZdVRl7AhkiD+AiEAk/3K8R7Z3seem3DMoQV3D98P2dnQ/9nBXvA+2HtRaow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22292},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.15_1746018002827_0.6095340845306783","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"use-good-hooks","version":"1.0.16","license":"MIT*","_id":"use-good-hooks@1.0.16","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"2d8846c915dba93f7d9f6e91b2c572a5b23b1466","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.16.tgz","fileCount":23,"integrity":"sha512-PoBXgsxwzAYXWjrVBEaSwnv26Pmyxf7iZ+m/3xtIbsXgFD9FkVHwjAafFEgGYrAYoVVnRHv9PrzevLOr3llSQg==","signatures":[{"sig":"MEUCIQC9f3m+ULm9BeYi1G6wZPbhYbjfyv2EtfeSlqcJsvcPwgIgY8MoqE1F1jxo51stYsJYdG4qMvb25p0xkISLS1bG8jI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22843},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.16_1746018025325_0.979045926789363","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"use-good-hooks","version":"1.0.17","license":"MIT*","_id":"use-good-hooks@1.0.17","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"fd4b9414f7438156116d40dd84ef81e5c75aebdf","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.17.tgz","fileCount":23,"integrity":"sha512-iLMfqyI35tbySKfLBa4OKYcQxMHYetGOGoeS+VdM6UQZo1EMGNRqx41OJRWDOsJhItnJECxg/0NvjQLnNLraXg==","signatures":[{"sig":"MEUCIExUKgEDZEnkhkc8tM95wljeaYWz7LUy7qyjUnn/Yz2gAiEAyzBf8/pdQFWHaYV9EAymzA4ybu/z9Jh09uc0GASIjeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23568},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.17_1746018161901_0.21832691019342598","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"use-good-hooks","version":"1.0.18","license":"MIT*","_id":"use-good-hooks@1.0.18","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"dd4ab165572a96ad84df16a5191e4a5f508e0cab","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.18.tgz","fileCount":23,"integrity":"sha512-0g3aOGPSKsvi2i2gsPob9dVouzjsfbjjz30Y8Vr/SjQW12TthZuHhuLNS+XWH7NMxy9+/4xd6tuvgXV+iKzDgQ==","signatures":[{"sig":"MEYCIQCj3qDmLGfGlJgd0lK3UGUO6GpBmcPZc6vVQvG8Yb6GyAIhAIPRMR/2/PaNyZHHd98cIiXg8FM18LApRoi4qfGFFaDE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23574},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.18_1746018299110_0.9796470380580475","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"use-good-hooks","version":"1.0.19","license":"MIT*","_id":"use-good-hooks@1.0.19","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"a2d290c6cfadb6ecd094d88a6c220110d464f06d","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.19.tgz","fileCount":23,"integrity":"sha512-zW2xGZ3MhCeXolEVmcfgec0/9BolRogTAS/fkO98ekx1pj7Um+kHIUWDihCEeRABzLh2cUhp18uE6iguts/TgA==","signatures":[{"sig":"MEUCIQDlxKFB/K/qCOYnSLTq3QMRtWGvBEexaR74Iqqb7BwvigIgIkAtdiZU1mA6bhI7RyJIxBKJK1ZzkaY0Wt+ttCt29u4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23607},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.19_1746394449726_0.5647136523563663","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"use-good-hooks","version":"1.0.20","license":"MIT*","_id":"use-good-hooks@1.0.20","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"847503c5040b35c4599972236b92ce0f33a1736c","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.20.tgz","fileCount":23,"integrity":"sha512-5D50e+RMLdy1loKpWMlr7yglx1VbQ7pVgJIbQSSr7Wv8mKOJP0N5c+OjOM10EJLoQyT0RBLaidwsCa8rHyJ29A==","signatures":[{"sig":"MEQCIHH+sM97fGH0CDI4oMZvgUe9xtqmYSIdXNc7vg3RT3g2AiA5QDwxAfve55+RVyfR3FjUSNhD2YJR6Esfs8PB/jBtLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23623},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.20_1746394508681_0.6713894987728402","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"use-good-hooks","version":"1.0.21","license":"MIT*","_id":"use-good-hooks@1.0.21","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"f56d7caf52beb0a2490ac12c19023c788f65dba8","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.21.tgz","fileCount":23,"integrity":"sha512-0tGp3pM1Igct0LWPzQZCbP7evvbKCq/p/AVZ0KQQpx7XJVzienlyIXSJ/+m3HBe7rcniAc77+WGMzaGlWZhmqw==","signatures":[{"sig":"MEQCIGQArYeT5VhmeLrKkW50MsPJP2iPI5jMi7JjK+IcEeQSAiAU71DKMJUS7dUXG7Dmml8E+CRHMvyZpVO9Fn5JRCiLVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23568},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.21_1746395524008_0.5597929859327822","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"use-good-hooks","version":"1.0.22","license":"MIT*","_id":"use-good-hooks@1.0.22","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"0bfe74b08fa78c17cccf13d5966e46ff4a601e18","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.22.tgz","fileCount":23,"integrity":"sha512-dQ9jj5jsmU32FWXREqF0rQKv8RVoF+UFqOVgb13cIv3ipvF8VAJRX/5PY98GFMHZEQ3oZuWD4YL/MxJoo7c5iw==","signatures":[{"sig":"MEQCIA3nlq6Ajkm5CzHaeWL5RUpaCy3m/fSvgzrHSYSSo8qtAiAoVP77/jTSE5OmEP7QISUy5Ewc2mlTUdNHRoQVlxQYDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23606},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.22_1746404346829_0.9765831625348973","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"use-good-hooks","version":"1.0.23","license":"MIT*","_id":"use-good-hooks@1.0.23","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"68cf5f1c432b929fc033b5e4d4138f1676afeb4b","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.23.tgz","fileCount":23,"integrity":"sha512-bwAHnWFrUGQEJYwPFeAtyaLc1bOcLU7mNIQOtEuQv6R4QCkeQe62QFOZz6mgBoQ5cZa0p4hISKOwjEQGwAoPvg==","signatures":[{"sig":"MEYCIQCZQvrEjdTb+YH0YgCczHhsftcsZTBBDeW9/qh/naNPvgIhAPj34BIkLKXEwpp1DZ2EDCZ3Z5TsNQ2aofWiHR22WcAN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23606},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.23_1747341525646_0.9562407032524545","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"use-good-hooks","version":"1.0.24","license":"MIT*","_id":"use-good-hooks@1.0.24","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"c08a04ad4e7dd056d144677f405c5bd16f7d10a1","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.24.tgz","fileCount":23,"integrity":"sha512-0UpSf8hz6jOq4vXbG2j0DiLpdaXTlmLin7fz8ZKCuQLkvNJhT+MnWsVPGIxWOOxfei3JwLrlJMX1Xpihn1fv4g==","signatures":[{"sig":"MEYCIQCMLoJOmPUaWJkvUEM7vDJBDjGZumFKFxg0BX5eBPlnWQIhAOyWIsHKci7WD2EH9rXH2VGMVxK62drosaPCyGUievaN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27197},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.24_1750086375172_0.2186875144926319","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"use-good-hooks","version":"1.0.25","license":"MIT*","_id":"use-good-hooks@1.0.25","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"4953b1bc8edd61af9a1fa1d3f947a8e21e84e9fa","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.25.tgz","fileCount":23,"integrity":"sha512-FwPm4OapM11+EmI0qytUkm4PGypWYi/+0lbCUxFAq8o1C7IjpmjmZN8tk+nPKNm2OQDt4lnqlDoQZvqddtXGPw==","signatures":[{"sig":"MEUCIQDk/kBrJX5/aiCYNeiI5X1T1OjtWGbhoMcRZWsLwgEnWgIgFC/gVkhtuVAb9+cP/lnsyfuvvkMmfGczcdOSx9j7zCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27173},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","actor":{"name":"feliperohdee","type":"user","email":"feliperohdee@gmail.com"},"email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.25_1750192666063_0.856253562444939","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"use-good-hooks","version":"1.0.26","license":"MIT*","_id":"use-good-hooks@1.0.26","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"db3560df46e7a180d68a692c44ffd5f86164952b","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.26.tgz","fileCount":23,"integrity":"sha512-Bx5m0Zgcc3qg4FXSdlQl2sz8o59n1/RRjOhcWffu8wdZJZw8WbGoUbaM5/U4Jb67a5CpLfJkxzszfC1PX3Ougw==","signatures":[{"sig":"MEUCIHXL8Za4IH2ALH7t09jLwi3c4dCae/iOGRSCfNWbm+ocAiEA0TlTecZlydJy9hpuKYVhWnD+ndOFnIBKTViLhtr61O8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27173},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","actor":{"name":"feliperohdee","type":"user","email":"feliperohdee@gmail.com"},"email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.26_1750193637372_0.38895914592288605","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"use-good-hooks","version":"1.0.27","license":"MIT*","_id":"use-good-hooks@1.0.27","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"fb7acb2e4b9ed5efe5783dadf4bcf1425bafb4c9","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.27.tgz","fileCount":23,"integrity":"sha512-khiEj+yFk6Bo+L5WeGirGG82c0QdZDvPZYk6WbnfANTdF29OXY9v3B9ZFsf47hDL5qSS2c6iuAnlbtQztdtGrg==","signatures":[{"sig":"MEUCIC7pWlwjtI9iC9rt1T2ZQo4rtJiM0aZjo8Oc/QkPlm5oAiEAkXBfiCZQjZHhzaJXzQBuWjBCgbd5n6R87nYwDSnXIWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27133},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","actor":{"name":"feliperohdee","type":"user","email":"feliperohdee@gmail.com"},"email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.27_1750193794327_0.6604904828418183","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"use-good-hooks","version":"1.0.28","license":"MIT*","_id":"use-good-hooks@1.0.28","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"5d1ac11608a6b5be774c10f1db54e6dbcceb2f0f","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.28.tgz","fileCount":29,"integrity":"sha512-wzsU/ERTGOeJk7I2OUrhSycbTtUdmN8+cdtFfn+ByUGPuq4mWQq0B87yrRtjULRj8tYjcKQNxVIKj+hT+LkMkg==","signatures":[{"sig":"MEUCIESZEYawwfudRgYeaNWmAoCcLkGl/A7pDK56Y9SD5ijiAiEAozEe2Y4+9kYVNy94DrkrfKrb5CyKxYX2wQaiGyUPFsg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32292},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","actor":{"name":"feliperohdee","type":"user","email":"feliperohdee@gmail.com"},"email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.28_1750194145540_0.6083819984697223","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"use-good-hooks","version":"1.0.29","license":"MIT*","_id":"use-good-hooks@1.0.29","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"45a1f2a1c5bbbd48ce5c66ba29134bc7db1c2b0f","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.29.tgz","fileCount":29,"integrity":"sha512-xzs0jo75w07Ju35kzN5+SoUqx4QmVDE6qF3FUgcII8zdcf+PwVLDX4PljRX8CPwDnTBTtmaBIMWzhMmnOZ+8Aw==","signatures":[{"sig":"MEUCICZZqnPjse1JoqsaXFuNyB0wawXYP8kH7cJU51b9XCAFAiEAl8lz4W+oGR9KRfnJSmJF4fSkg45LWhEclYWH4aP/IVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32325},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm-publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","actor":{"name":"feliperohdee","type":"user","email":"feliperohdee@gmail.com"},"email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"dependencies":{"use-qs":"^1.0.4","use-json":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.29_1750194981077_0.706356496765485","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"use-good-hooks","version":"1.0.30","license":"MIT*","_id":"use-good-hooks@1.0.30","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"cb222de1f3c13dd555f16ce3785699349b4ba9ad","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.30.tgz","fileCount":29,"integrity":"sha512-uoTA57SFN0sTCMwVGpKgf0o0wAJhDcjtGYRjwADIjKzV8ZuR5AISqy8ihYuB9qU9EKQuGpkr9q+sUIWPUUtbcg==","signatures":[{"sig":"MEUCIGpDreJLt0+UMwOKkq5mq4at9xQQSjUmoAZ4dTjQzfIZAiEA3MXJf5iOdd8Vs9HfMna+7TlUvRYGh2X7FLlhH5QjG0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32349},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest","build":"yarn lint && vite build --mode export","npm:publish":"yarn test --run && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.30_1755286475800_0.16491181588666093","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"use-good-hooks","version":"1.0.31","license":"MIT*","_id":"use-good-hooks@1.0.31","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"17ac21009bdea7bca0d9e9739de282b936c7c864","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.31.tgz","fileCount":29,"integrity":"sha512-ySRc7GYddKl/nQ5WvwMvEtaMJl3Q190j8gGuCRbiM+PpddZJrWVga6bo06Ux0WkCPXMGLk3NderWrA7ILr4hbg==","signatures":[{"sig":"MEQCIHzvz+zApaIU1tF3XLRqvam2pEsFSdRAXhanzfOKUJLAAiAPSuDz1tjsEYCazgPQg4qESL+P+6AupEHN/Rxq4OoC4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33276},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.31_1756069340547_0.734089411895805","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"use-good-hooks","version":"1.0.32","license":"MIT*","_id":"use-good-hooks@1.0.32","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"4f1405a386597eaa78ea14535c5f91b3ca16c271","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.32.tgz","fileCount":29,"integrity":"sha512-l8YgvlqOM0hm79cYZIPAp5GFuz5r3uzPMQE1KmKkCQB+qPJGuFKQKS496R6H9x6ShHucW1X59TAP8hKPYqtMQQ==","signatures":[{"sig":"MEUCIQCuA4gs+K5Rlc6rni+jlAVL7nczYNt7eSMQmuoVhDeXYwIgBhD5ssJsV9FdC9v9TufP6SWHpWX7kMGyg/zUrPzpcrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33219},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.32_1756071582648_0.6576162021333096","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"use-good-hooks","version":"1.0.33","license":"MIT*","_id":"use-good-hooks@1.0.33","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"80239ff3bf97f4091cfc6f29cb411e2e4926659f","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.33.tgz","fileCount":29,"integrity":"sha512-EOI9zmWQPUBulSOigN33gfn3HlUYbGoQ24kBvn40vOZbBJeAXgOvFxfWftv0mpofz+KjnJrZyF8UycX1b/OSdQ==","signatures":[{"sig":"MEUCIQDGePto7pbZFiYojb1NAjofyBqwSDk5+46lA9DlteetJwIgG0oZjMJ2WFqUAX8EcLDv8mM+JWv+Iynh8r46fk6ZtLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33945},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.33_1756071971968_0.9809527691893334","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"use-good-hooks","version":"1.0.34","license":"MIT*","_id":"use-good-hooks@1.0.34","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"8ef15aa604f2645c278cf81ca0cb266e3c429dc0","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.34.tgz","fileCount":29,"integrity":"sha512-JZAQkhAjmDmqHg1su0gJUs/MyZsE9yflyH30NwJBVDpx3mYoO+XVPOlTlesRe+29GHJj4jJbEw8FJYVaMAYjug==","signatures":[{"sig":"MEUCIBdU9Uk0z3tHontHQ34rpm3zU/X3BBVq+OGBQ5E6PwV1AiEAwk6CBnpL+8DXrDGG/0JsNjbV809Bkl+EYVyqUNx+ZYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34631},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.34_1756074368912_0.5927762200066331","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"use-good-hooks","version":"1.0.35","license":"MIT*","_id":"use-good-hooks@1.0.35","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"ef63e1538dc3620a7859acc86d874b7835d155e5","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.35.tgz","fileCount":29,"integrity":"sha512-G1vSuuCCBJccFHiPJXQxBadCoy89C5xVJ6Yie9AWKJOb+rg2H90clU+5Biygd3DsXpZumzJ9A7YVJa6JXQW4GA==","signatures":[{"sig":"MEYCIQCq3vNiAgUq+0uDSNmn94gmzVcgPRdoCRLEpZ5y2YvJGAIhAJj6onIEYbBGTwyqOnkXXrVs2/ra2g63tghyTSBG3lvZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34609},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.35_1757505688673_0.08843586202788223","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"use-good-hooks","version":"1.0.36","license":"MIT*","_id":"use-good-hooks@1.0.36","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"5fe4492b1c3eb0b778f2f60729f03e671bee6153","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.36.tgz","fileCount":29,"integrity":"sha512-wUiFx6j5d3h+No8bzUBibcMdvt+D6oRKjPOA83oCJJE+sKAiedaadY29s7V6XYKwebnjy4Y0IZpp4oo2J5E4Iw==","signatures":[{"sig":"MEQCIA3EnvNzdIztJYe+ZyGN20fznf33YxzDMVlYC4yCLf9QAiAZ5B2ooDq6F3BPHE5qZ+X64lLgzz2dxd1RM7s97nN49g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36162},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.36_1757505914675_0.18109105097980782","host":"s3://npm-registry-packages-npm-production"}},"1.0.37":{"name":"use-good-hooks","version":"1.0.37","license":"MIT*","_id":"use-good-hooks@1.0.37","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"14d139d30988f1142a9610a8cffade371886fc91","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.37.tgz","fileCount":31,"integrity":"sha512-yf2OjHKN3PppK5KH2s/sVZTZTEK4aL/0xVhrH5e6AjFTUBCi4dcUhdEoXST9O/nj5nnw9NqlCjDe0XnnzGA8Sg==","signatures":[{"sig":"MEUCIQDGk2l50LF7VF3LKT9x7CiTEeGqeFojXmkK2DcljdJcLwIgaWWZg67c1qATB0LF1wPnf/LziqpmxKW+b3dROAjkHo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36938},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.37_1757506085087_0.5686775222203557","host":"s3://npm-registry-packages-npm-production"}},"1.0.38":{"name":"use-good-hooks","version":"1.0.38","license":"MIT*","_id":"use-good-hooks@1.0.38","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"6d7f1359acd0c8531828b00e5183d6cabef05de9","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.38.tgz","fileCount":31,"integrity":"sha512-pF6MUuO20FdUnH5Na1R4ZI5kVNwn0OAuTOTeTM4/f72xMzAGe9ByP4JxWRluPCC9d54DsW3PEV9gzBTFQlq7/w==","signatures":[{"sig":"MEYCIQDBYASRnyQWNvWs3R85Rl1sA9b9fSbYilQklfTIuc8k1gIhAOznBpDtNzBRywkpY/gQ1YXU7p4f3VJRgh+uEYTHwM7g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36928},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.38_1764342987143_0.5461525639611926","host":"s3://npm-registry-packages-npm-production"}},"1.0.39":{"name":"use-good-hooks","version":"1.0.39","license":"MIT*","_id":"use-good-hooks@1.0.39","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"062bc82f7b9e9bdf142e81f9bb389273e3fa99b5","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.39.tgz","fileCount":31,"integrity":"sha512-uLhRBW1lKMlxbimr7L0yO9dPW+gqAh3YV/4BjlcM8M/LJUQ3MIogX5TcVW9OGDj/2e0oc+SNTS/3cJhAKfzKRg==","signatures":[{"sig":"MEYCIQDUUzZeBJfeLLhPLzLelRCUpkFU1q0jtEWMGuRO/X9esQIhAOMtiU9XSfiqPjklLUeWPCDc2bHiYVC+fguTM3P9MYK0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37259},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.39_1764346659075_0.42574118687225804","host":"s3://npm-registry-packages-npm-production"}},"1.0.40":{"name":"use-good-hooks","version":"1.0.40","license":"MIT*","_id":"use-good-hooks@1.0.40","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"a91984d68986745045941f446ccffe425a00e25b","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.40.tgz","fileCount":31,"integrity":"sha512-aghq9UA9FGlS2nuaTUNMJJyyNr/UOYmuQXmxvsvOzW/HmIWFczxSHJOhDD78LYRD2cHbwFz3BlKWrFUYHEqzng==","signatures":[{"sig":"MEUCIQDbWpj0ugMW3OdDuJ30fMzxWYgjugocDEpL7VNBUUjkfwIgeTFxN7E7mVaCCMY5joHamytygcZ2mHVr9CtuxOUiQbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38790},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.40_1764589836845_0.7998696641748526","host":"s3://npm-registry-packages-npm-production"}},"1.0.41":{"name":"use-good-hooks","version":"1.0.41","license":"MIT*","_id":"use-good-hooks@1.0.41","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"1d5e96645be18f7a325bf54581c8025d12cb120b","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.41.tgz","fileCount":31,"integrity":"sha512-lXLUxaCY7SQbj21DLD3r4SJMUY0KMS+6SZ1Hjy0fFaKNTvjLNE3UiPbYS1/OXH8rZE0UWs0tLnuYPgNuqkXwpQ==","signatures":[{"sig":"MEUCIQCsHLzmw5u00U5absOjDqVzGZ7PbqNByV9USYfOPnmhngIgFkDG0fakXsGz+BsK0lE5lz0CJknIb6CEcMKlztnciK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38784},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.41_1764627426761_0.745672447459951","host":"s3://npm-registry-packages-npm-production"}},"1.0.42":{"name":"use-good-hooks","version":"1.0.42","license":"MIT*","_id":"use-good-hooks@1.0.42","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"dist":{"shasum":"38b11fc89c3088c48ed1d8eeb89a8e5270fea5c2","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.42.tgz","fileCount":31,"integrity":"sha512-+uzGiy5An++a0I5fiNLzKLWQ4FqK+h6ZV+/nb1pNP/b1yTTTi8qSwEi0kFzHZGmVy74GyYJZq9CoFmZXP1cYMQ==","signatures":[{"sig":"MEUCICOpssKeU75CHdc5pt1raWMbwnia5Y9HjVcEXPPp9M/XAiEAnLm37P5eUE9td5C76172X6sZAilJ8ZX6fofTHba8fhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38511},"exports":{"./*":"./dist/*.js"},"scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/use-good-hooks_1.0.42_1764628933722_0.5141500951587081","host":"s3://npm-registry-packages-npm-production"}},"1.0.43":{"_id":"use-good-hooks@1.0.43","dist":{"shasum":"6a615f0af2c0521ad6338578df51fbf7b110e2df","tarball":"https://registry.npmjs.org/use-good-hooks/-/use-good-hooks-1.0.43.tgz","fileCount":33,"integrity":"sha512-FPa+5qYEmcI6qGHESx7xPOpxZfTqoRaBzXgyV9pqNzrXl24HNIgEQIqMrkwi6PHu8acQbILAMiAQy/ZGzmneAg==","signatures":[{"sig":"MEYCIQCjW1J0MasQgTNZKhpjSrwiHiRiXFmDtL9i1llwETympgIhAKnCO2BTP7rCBaa0xk8LSe64BCFqNyEkZkIKQRU20bSG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/ckSuz7quMJoPU5zOU3nClxUM2LoOqjK3VexmfWnPWQIhANjbDQmoRsUS6WDXW7GGqnErDQCxF9gh4OWDSDI4lcF8"}],"unpackedSize":39823},"name":"use-good-hooks","exports":{"./*":"./dist/*.js"},"license":"MIT*","scripts":{"lint":"prettier --write . && eslint .","test":"vitest --run","build":"yarn lint && vite build --mode export","test:watch":"vitest","npm:publish":"yarn test && yarn build && yarn version --patch --no-git-tag-version && yarn publish --non-interactive","test:coverage":"vitest --coverage --run"},"version":"1.0.43","_npmUser":{"name":"feliperohdee","email":"feliperohdee@gmail.com"},"description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","directories":{},"maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"_hasShrinkwrap":false,"devDependencies":{"clsx":"^2.1.1","vite":"^6.2.0","jsdom":"^26.0.0","react":"^19.0.0","eslint":"^9.19.0","lodash":"^4.17.21","use-qs":"^1.0.4","vitest":"^3.0.7","globals":"^16.0.0","prettier":"^3.4.2","use-json":"^1.0.1","react-dom":"^19.0.0","@eslint/js":"^9.19.0","typescript":"~5.8.2","@types/node":"^22.13.1","@types/react":"^19.0.8","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.0.3","typescript-eslint":"^8.22.0","@vitest/coverage-v8":"3.0.7","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.18"},"peerDependencies":{"react":"^19.0.0","lodash":"^4.17.21","use-qs":"^1.0.4","use-json":"^1.0.1","react-dom":"^19.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/use-good-hooks_1.0.43_1789699610576_0.36956395929108843"}}},"time":{"created":"2025-03-04T12:43:25.965Z","modified":"2026-09-18T02:46:50.816Z","1.0.0":"2025-03-04T12:43:26.142Z","1.0.1":"2025-03-04T13:09:19.206Z","1.0.2":"2025-03-04T13:22:19.982Z","1.0.3":"2025-03-04T13:23:03.586Z","1.0.4":"2025-03-04T13:28:35.356Z","1.0.5":"2025-03-04T13:36:23.953Z","1.0.6":"2025-03-04T13:38:30.939Z","1.0.7":"2025-03-04T13:42:47.345Z","1.0.8":"2025-03-04T14:40:20.889Z","1.0.9":"2025-03-04T15:35:50.446Z","1.0.10":"2025-04-18T00:30:52.072Z","1.0.11":"2025-04-18T11:11:51.879Z","1.0.12":"2025-04-29T16:49:03.109Z","1.0.13":"2025-04-29T16:51:54.920Z","1.0.14":"2025-04-29T20:09:14.020Z","1.0.15":"2025-04-30T13:00:03.046Z","1.0.16":"2025-04-30T13:00:25.501Z","1.0.17":"2025-04-30T13:02:42.087Z","1.0.18":"2025-04-30T13:04:59.303Z","1.0.19":"2025-05-04T21:34:09.921Z","1.0.20":"2025-05-04T21:35:08.841Z","1.0.21":"2025-05-04T21:52:04.203Z","1.0.22":"2025-05-05T00:19:07.017Z","1.0.23":"2025-05-15T20:38:45.905Z","1.0.24":"2025-06-16T15:06:15.347Z","1.0.25":"2025-06-17T20:37:46.267Z","1.0.26":"2025-06-17T20:53:57.583Z","1.0.27":"2025-06-17T20:56:34.506Z","1.0.28":"2025-06-17T21:02:25.705Z","1.0.29":"2025-06-17T21:16:21.250Z","1.0.30":"2025-08-15T19:34:35.989Z","1.0.31":"2025-08-24T21:02:20.782Z","1.0.32":"2025-08-24T21:39:42.824Z","1.0.33":"2025-08-24T21:46:12.162Z","1.0.34":"2025-08-24T22:26:09.105Z","1.0.35":"2025-09-10T12:01:28.850Z","1.0.36":"2025-09-10T12:05:14.873Z","1.0.37":"2025-09-10T12:08:05.264Z","1.0.38":"2025-11-28T15:16:27.338Z","1.0.39":"2025-11-28T16:17:39.258Z","1.0.40":"2025-12-01T11:50:37.036Z","1.0.41":"2025-12-01T22:17:06.964Z","1.0.42":"2025-12-01T22:42:13.909Z","1.0.43":"2026-09-18T02:46:50.648Z"},"license":"MIT*","description":"![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Vite](https://img.shields.io/ba","maintainers":[{"name":"feliperohdee","email":"feliperohdee@gmail.com"}],"readme":"# 🪝 use-good-hooks\n\n![React](https://img.shields.io/badge/React-19.0.0+-61DAFB?style=flat-square&logo=react&logoColor=white)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-3178C6?style=flat-square&logo=typescript&logoColor=white)\n![Vite](https://img.shields.io/badge/Vite-6.2.0+-646CFF?style=flat-square&logo=vite&logoColor=white)\n![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)\n[![Vitest](https://img.shields.io/badge/-Vitest-729B1B?style=flat-square&logo=vitest&logoColor=white)](https://vitest.dev/)\n\nA collection of well-tested, performance-optimized React hooks for common web application patterns. These hooks help manage state, UI interactions, and browser features with clean, reusable abstractions.\n\n## 📦 Installation\n\n```bash\n# Using npm\nnpm install use-good-hooks\n\n# Using yarn\nyarn add use-good-hooks\n\n# Using pnpm\npnpm add use-good-hooks\n```\n\n## 🔌 Requirements\n\n- React 19.0.0+\n- Lodash 4.17.21+\n\n## 🧰 Available Hooks\n\n### `useDebounce`\n\nDebounces value changes to prevent rapid updates. Useful for search inputs, form validation, and other scenarios where you want to delay state updates until after a user has stopped changing the input.\n\n```typescript\nimport useDebounce from 'use-good-hooks/use-debounce';\n\nconst SearchComponent = () => {\n  const [searchTerm, setSearchTerm] = useState('');\n  const debouncedSearchTerm = useDebounce(searchTerm, 500); // 500ms delay\n\n  // API call will only happen 500ms after the user stops typing\n  useEffect(() => {\n    if (debouncedSearchTerm) {\n      searchAPI(debouncedSearchTerm);\n    }\n  }, [debouncedSearchTerm]);\n\n  return (\n    <input\n      type=\"text\"\n      value={searchTerm}\n      onChange={(e) => setSearchTerm(e.target.value)}\n      placeholder=\"Search...\"\n    />\n  );\n};\n```\n\n#### Parameters\n\n- `value`: The value to debounce\n- `delay`: (Optional) The delay in milliseconds (default: 300ms)\n\n#### Returns\n\n- The debounced value\n\n### `useDebounceFn`\n\nCreates a debounced version of a function. This hook ensures that a function is only executed after a specified period of inactivity, preventing it from being called too frequently. It's ideal for handling events like button clicks or API triggers that should not fire on every user action.\n\n```typescript\nimport useDebounceFn from 'use-good-hooks/use-debounce-fn';\n\nconst SaveButton = () => {\n  const [status, setStatus] = useState('Idle');\n\n  const debouncedSave = useDebounceFn(() => {\n    setStatus('Saving...');\n    // Simulate API call\n    setTimeout(() => setStatus('Saved!'), 1000);\n  }, 1000); // 1000ms delay\n\n  const handleClick = () => {\n    setStatus('Waiting...');\n    debouncedSave();\n  };\n\n  return (\n    <div>\n      <button onClick={handleClick}>Save Changes</button>\n      <p>Status: {status}</p>\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `fn`: The function to debounce\n- `delay`: (Optional) The delay in milliseconds (default: 300ms)\n\n#### Returns\n\n- The debounced function.\n\n### `useThrottle`\n\nLimits the rate at which a value can update. Useful for scroll events, window resizing, and other high-frequency events.\n\n```typescript\nimport useThrottle from 'use-good-hooks/use-throttle';\n\nconst ScrollTracker = () => {\n  const [scrollY, setScrollY] = useState(0);\n  const throttledScrollY = useThrottle(scrollY, 200); // 200ms throttle\n\n  useEffect(() => {\n    const handleScroll = () => {\n      setScrollY(window.scrollY);\n    };\n\n    window.addEventListener('scroll', handleScroll);\n    return () => window.removeEventListener('scroll', handleScroll);\n  }, []);\n\n  return <div>Throttled scroll position: {throttledScrollY}px</div>;\n};\n```\n\n#### Parameters\n\n- `value`: The value to throttle\n- `delay`: (Optional) The throttle interval in milliseconds (default: 300ms)\n\n#### Returns\n\n- The throttled value\n\n### `useThrottleFn`\n\nCreates a throttled version of a function, limiting its execution to at most once per specified interval. It is useful for performance-critical scenarios like handling mouse movements, scrolling, or window resizing events without overwhelming the browser.\n\n```typescript\nimport useThrottleFn from 'use-good-hooks/use-throttle-fn';\n\nconst MouseTracker = () => {\n  const [position, setPosition] = useState({ x: 0, y: 0 });\n\n  const throttledMouseMove = useThrottleFn((event) => {\n    setPosition({ x: event.clientX, y: event.clientY });\n  }, 300); // Update at most every 300ms\n\n  useEffect(() => {\n    window.addEventListener('mousemove', throttledMouseMove);\n    return () => window.removeEventListener('mousemove', throttledMouseMove);\n  }, [throttledMouseMove]);\n\n  return (\n    <div>\n      Throttled mouse position: X: {position.x}, Y: {position.y}\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `fn`: The function to throttle\n- `delay`: (Optional) The throttle interval in milliseconds (default: 300ms)\n\n#### Returns\n\n- The throttled function.\n\n### `usePrev`\n\nCaptures the previous value of a state or prop. Useful for comparing changes between renders.\n\n```typescript\nimport usePrev from 'use-good-hooks/use-prev';\n\nconst Counter = ({ count }) => {\n  const prevCount = usePrev(count);\n\n  return (\n    <div>\n      <p>Current count: {count}</p>\n      <p>Previous count: {prevCount ?? 'None'}</p>\n      <p>Direction: {count > prevCount ? 'Increasing' : count < prevCount ? 'Decreasing' : 'No change'}</p>\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `value`: The value to track\n\n#### Returns\n\n- The previous value (undefined on first render)\n\n### `useHistoryState`\n\nTracks the history of a state value, providing undo and redo capabilities. This is perfect for building editors, forms, or any UI where users might want to reverse their actions.\n\n```typescript\nimport useHistoryState from 'use-good-hooks/use-history-state';\n\nconst TextEditor = () => {\n  const [state, actions] = useHistoryState('', {\n    maxCapacity: 10,\n    debounceMs: 0 // Disable debouncing for immediate updates\n  });\n\n  return (\n    <div>\n      <textarea\n        value={state.present}\n        onChange={(e) => actions.set(e.target.value)}\n        rows={4}\n        cols={50}\n      />\n      <div>\n        <button onClick={actions.undo} disabled={!state.canUndo}>\n          Undo\n        </button>\n        <button onClick={actions.redo} disabled={!state.canRedo}>\n          Redo\n        </button>\n        <button onClick={actions.initial}>Initial State</button>\n      </div>\n      <p>Past states: {state.past.length}</p>\n      <p>Future states: {state.future.length}</p>\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `initialState`: The initial state value\n- `options`: (Optional) Configuration options:\n    - `debounceMs`: Time in milliseconds to debounce the state changes (default: 250)\n    - `debounceSettings`: Debounce settings object from Lodash\n    - `maxCapacity`: Maximum number of history entries to keep (default: 10)\n    - `onChange`: Function to call when the state changes, receives `{ action, state }`\n    - `paused`: Boolean indicating if the history is paused (default: false)\n\n#### Returns\n\nReturns a tuple `[historyState, historyActions]`:\n\n**historyState** (Object): - `canRedo`: Boolean indicating if redo is possible - `canUndo`: Boolean indicating if undo is possible - `future`: Array of future states (for redo) - `past`: Array of past states (for undo) - `paused`: Boolean indicating if the history is paused - `present`: The current state value\n\n**historyActions** (Object): - `initial`: Function to reset to initial state - `pause`: Function to pause history tracking (updates won't be recorded) - `redo`: Function to move to the next state (redo) - `replace`: Function to replace the state without adding to history - `resume`: Function to resume history tracking - `set`: Function to update the state and record history (debounced by default) - `setDirect`: Function to update the state immediately, bypassing debounce - `undo`: Function to move to the previous state (undo)\n\n#### Example with onChange callback\n\n```typescript\nconst Editor = () => {\n  const [state, actions] = useHistoryState('', {\n    onChange: ({ action, state }) => {\n      console.log(`Action: ${action}, State: ${state}`);\n      // Action can be: 'SET', 'UNDO', 'REDO', 'INITIAL', 'REPLACE'\n    }\n  });\n\n  return (\n    <textarea\n      value={state.present}\n      onChange={(e) => actions.set(e.target.value)}\n    />\n  );\n};\n```\n\n#### Example with pause/resume\n\n```typescript\nconst Form = () => {\n  const [state, actions] = useHistoryState({ name: '', email: '' });\n\n  const handleBulkUpdate = () => {\n    actions.pause(); // Pause history tracking\n    actions.set({ name: 'John', email: 'john@example.com' });\n    actions.set({ name: 'Jane', email: 'jane@example.com' });\n    actions.resume(); // Resume history tracking\n    // Only the final state will be in history\n  };\n\n  return (\n    <div>\n      <input\n        value={state.present.name}\n        onChange={(e) => actions.set({ ...state.present, name: e.target.value })}\n      />\n      <button onClick={handleBulkUpdate}>Bulk Update</button>\n    </div>\n  );\n};\n```\n\n### `useDistinct`\n\nDetects distinct changes in values with support for deep comparison and custom equality checks. Useful for tracking whether complex objects have actually changed.\n\n```typescript\nimport useDistinct from 'use-good-hooks/use-distinct';\n\nconst UserProfileForm = ({ user }) => {\n  const { distinct, value, prevValue } = useDistinct(user, { deep: true });\n\n  useEffect(() => {\n    if (distinct) {\n      console.log('User data changed from:', prevValue, 'to:', value);\n      // Perhaps save to backend or update UI\n    }\n  }, [distinct, prevValue, value]);\n\n  return (\n    <div>\n      <h2>Editing profile for: {user.name}</h2>\n      {distinct && <div className=\"alert\">Unsaved changes!</div>}\n      {/* Form inputs */}\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `inputValue`: The value to check for changes\n- `options`: (Optional) Configuration options:\n    - `deep`: Boolean to enable deep equality comparison (default: false)\n    - `compare`: Custom comparison function (a, b) => boolean\n    - `debounce`: Debounce time in milliseconds (default: 0)\n\n#### Returns\n\n- Object with:\n    - `distinct`: Boolean indicating if the value changed\n    - `prevValue`: The previous distinct value\n    - `value`: The current value\n\n### `useStorageState`\n\nPersists state to localStorage or sessionStorage with automatic serialization/deserialization.\n\n```typescript\nimport useStorageState from 'use-good-hooks/use-storage-state';\n\nconst ThemePreferences = () => {\n  const [preferences, setPreferences, { removeKey }] = useStorageState('theme-prefs', {\n    darkMode: false,\n    fontSize: 'medium',\n    compactView: true\n  });\n\n  return (\n    <div>\n      <h2>Theme Settings</h2>\n      <label>\n        <input\n          type=\"checkbox\"\n          checked={preferences.darkMode}\n          onChange={() => setPreferences({...preferences, darkMode: !preferences.darkMode})}\n        />\n        Dark Mode\n      </label>\n      {/* More settings */}\n      <button onClick={removeKey}>Reset to Defaults</button>\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `key`: Storage key name\n- `initialState`: Default state if no stored value exists\n- `options`: (Optional) Configuration options:\n    - `storage`: 'local' or 'session' (default: 'local')\n    - `debounce`: Debounce time in milliseconds (default: 500)\n    - `onError`: Error callback function\n    - `omitKeys`: Array of keys to omit from storage or function (value, key) => boolean\n    - `pickKeys`: Array of keys to include in storage or function (value, key) => boolean\n\n#### Returns\n\n- Array with:\n    - State value\n    - State setter function\n    - Object with utility functions:\n        - `removeKey`: Function to clear the storage key\n\n### `useUrlState`\n\nSynchronizes state with URL query parameters. Great for shareable UI states, filters, pagination, and search terms.\n\n```typescript\nimport useUrlState from 'use-good-hooks/use-url-state';\n\nconst ProductFilter = () => {\n  const [filters, setFilters] = useUrlState({\n    category: '',\n    minPrice: 0,\n    maxPrice: 1000,\n    sortBy: 'newest'\n  }, {\n    url: new URL(window.location.href),\n    kebabCase: true,\n    omitValues: ['', 0]\n  });\n\n  return (\n    <div>\n      <select\n        value={filters.category}\n        onChange={(e) => setFilters({...filters, category: e.target.value})}\n      >\n        <option value=\"\">All Categories</option>\n        <option value=\"electronics\">Electronics</option>\n        <option value=\"clothing\">Clothing</option>\n      </select>\n      {/* More filter controls */}\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `initialState`: Default state if URL has no parameters\n- `options`: Configuration options:\n    - `url`: URL object to use (required)\n    - `debounce`: Debounce time in milliseconds (default: 500)\n    - `kebabCase`: Convert camelCase keys to kebab-case in URL (default: true)\n    - `prefix`: Optional prefix for URL parameters\n    - `onError`: Error callback function\n    - `omitKeys`: Array of keys to omit from URL or function (value, key) => boolean\n    - `pickKeys`: Array of keys to include in URL or function (value, key) => boolean\n    - `omitValues`: Array of values to omit from URL or function (value, key) => boolean\n\n#### Returns\n\n- Array with:\n    - State value\n    - State setter function\n\n### `useGlobalState` and `createGlobalState`\n\nCreates and manages global state that can be shared across components with automatic synchronization.\n\n```typescript\nimport { createGlobalState, useGlobalState } from 'use-good-hooks/use-global-state';\n\n// Create a global state instance (typically in a separate file)\nconst counterState = createGlobalState({ count: 0 });\n\n// Component A\nconst CounterDisplay = () => {\n  const [counter, setCounter] = useGlobalState(counterState);\n\n  return (\n    <div>\n      <p>Count: {counter.count}</p>\n      <button onClick={() => setCounter({ count: counter.count + 1 })}>\n        Increment\n      </button>\n    </div>\n  );\n};\n\n// Component B (in a different part of your app)\nconst CounterActions = () => {\n  const [counter, setCounter] = useGlobalState(counterState);\n\n  return (\n    <div>\n      <button onClick={() => setCounter({ count: 0 })}>\n        Reset Count\n      </button>\n      <button onClick={() => setCounter(prev => ({ count: prev.count + 5 }))}>\n        Add 5\n      </button>\n    </div>\n  );\n};\n```\n\n#### Usage\n\n1. First, create a global state store:\n\n```typescript\n// state/counter.ts\nimport { createGlobalState } from 'use-good-hooks/use-global-state';\n\nexport const counterState = createGlobalState({ count: 0 });\n```\n\n2. Then use it in any component:\n\n```typescript\nimport { useGlobalState } from 'use-good-hooks/use-global-state';\nimport { counterState } from './state/counter';\n\nconst MyComponent = () => {\n\tconst [counter, setCounter] = useGlobalState(counterState);\n\t// ...\n};\n```\n\n#### `createGlobalState` Parameters\n\n- `initialState`: The initial state value\n\n#### `createGlobalState` Returns\n\n- Array with:\n    - `state`: The current state\n    - `setState`: Function to update state\n    - `store`: Object with utility methods:\n        - `getState()`: Function to get current state\n        - `subscribe(callback)`: Subscribe to state changes\n        - `resetState()`: Reset to initial state\n\n#### `useGlobalState` Parameters\n\n- `globalState`: The global state created with `createGlobalState`\n\n#### `useGlobalState` Returns\n\n- Array with:\n    - `state`: The component's local copy of the state\n    - `setState`: Function to update global state (accepts new value or update function)\n\n### `useTemporaryState`\n\nCreates a temporary state that resets after a specified timeout.\n\n```typescript\nimport useTemporaryState from 'use-good-hooks/use-temporary-state';\n\nconst [state, setState] = useTemporaryState('initial', 1000);\n\n// State will reset to 'initial' after 1 second\n```\n\n#### Parameters\n\n- `initialState`: The initial state value\n- `ms`: The timeout duration in milliseconds (default: 3000)\n\n#### Returns\n\n- Array with:\n    - `state`: The current state\n    - `setState`: Function to update state\n\n### `useLateState`\n\nDelays the update of a state value until a specified time has passed. This is useful for scenarios where you want to introduce a delay before a state change takes effect, such as showing a loading spinner for a minimum amount of time.\n\n```typescript\nimport useLateState from 'use-good-hooks/use-late-state';\n\nconst DelayedComponent = () => {\n  const [status, setStatus, cancelUpdate] = useLateState('Waiting...', 2000); // 2-second delay\n\n  const handleUpdate = () => {\n    setStatus('Updated!');\n  };\n\n  const handleImmediateUpdate = () => {\n    setStatus('Immediately Updated!', true);\n  };\n\n  const handleCancel = () => {\n    const wasCancelled = cancelUpdate();\n    if (wasCancelled) {\n      alert('Update cancelled!');\n    }\n  };\n\n  return (\n    <div>\n      <p>Status: {status}</p>\n      <button onClick={handleUpdate}>Update after 2s</button>\n      <button onClick={handleImmediateUpdate}>Update Immediately</button>\n      <button onClick={handleCancel}>Cancel Update</button>\n    </div>\n  );\n};\n```\n\n#### Parameters\n\n- `initial`: The initial value of the state.\n- `delay`: The delay in milliseconds before the state is updated.\n\n#### Returns\n\n- `value`: The current state value.\n- `setLate`: A function to update the state after the specified delay. It can also accept a second boolean argument to update the state immediately.\n- `cancel`: A function to cancel a pending state update.\n\n### `useUnmount`\n\nRuns a callback when the component unmounts for real. React's Strict Mode simulates an unmount right after mount (cleanup, then setup again on the same instance); a plain `useEffect` cleanup fires there too, which aborts in-flight requests or tears down subscriptions that the remount never rebuilds. `useUnmount` defers the callback by one microtask and cancels it if the effect is set up again, so only the real unmount reaches it. The latest callback is always the one called.\n\n```typescript\nimport useUnmount from 'use-good-hooks/use-unmount';\n\nconst Subscriber = ({ channel }) => {\n  const controller = useRef(new AbortController());\n\n  useUnmount(() => {\n    controller.current.abort();\n  });\n\n  return <p>Listening to {channel}</p>;\n};\n```\n\n#### Parameters\n\n- `fn`: The callback to run on unmount. It is called once, one microtask after the real unmount, and never on a Strict Mode remount.\n\n## 🧪 Running Tests\n\nThis library is thoroughly tested with Vitest and React Testing Library. To run the tests:\n\n```bash\n# Using npm\nnpm test\n\n# Using yarn\nyarn test\n\n# Using pnpm\npnpm test\n```\n\n## 🔄 How hooks update and optimize performance\n\nEach hook in this library is designed with performance in mind:\n\n1. `useDebounce` and `useThrottle` reduce unnecessary renders using Lodash's optimized implementations\n2. `useDistinct` avoids reference equality problems with optional deep comparison\n3. `useStorageState` batches storage updates to reduce expensive serialization/deserialization\n4. `useUrlState` efficiently handles URL synchronization with debouncing\n5. `useGlobalState` and `createGlobalState` provide a way to share state across components with automatic synchronization\n6. `useTemporaryState` allows for temporary state that resets after a timeout\n7. `useLateState` provides a mechanism to delay state updates, which can be useful for managing UI transitions and asynchronous operations.\n\n## 🛠️ Development\n\n```bash\n# Install dependencies\nyarn install\n\n# Start development server\nyarn dev\n\n# Run tests\nyarn test\n\n# Build the library\nyarn build\n\n# Lint and format the code\nyarn lint\n```\n\n## 🙏 Acknowledgements\n\nThis project was built with:\n\n- [React](https://reactjs.org/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [Vite](https://vitejs.dev/)\n- [Vitest](https://vitest.dev/)\n- [Lodash](https://lodash.com/)\n- [use-json](https://www.npmjs.com/package/use-json)\n- [use-qs](https://www.npmjs.com/package/use-qs)\n\n## 📝 License\n\nMIT © [Felipe Rohde](mailto:feliperohdee@gmail.com)\n\n## 👨‍💻 Author\n\n**Felipe Rohde**\n\n- Twitter: [@felipe_rohde](https://twitter.com/felipe_rohde)\n- Github: [@feliperohdee](https://github.com/feliperohdee)\n- Email: feliperohdee@gmail.com\n","readmeFilename":"README.md"}